v2.2.2
Patch release: a losslessness fix in nested-object flattening. No API changes; recommended for all users.
🐛 Fixes
- Losslessness: null nested objects are no longer dropped. A nested object that was an object in some records and
nullat an intermediate level in others (e.g.{"meta": {"owner": null}}) was being flattened, and on decode thenullreconstructed as a missing key instead ofnull, silently losing data. Such fields now fall back to the attachment encoding, which round-trips exactly. A top-levelnullstill flattens (it emits-and rebuilds via the all-null rule), so compression is unaffected for that case.
✅ Tests
- Added
test_flatten_roundtrip: aligned arrays whose shared fields are fixed-shape nested objects with a field or an intermediate level sometimes null/absent, the shape the prior scalar-only generator never produced. Verified failing on the pre-fix encoder and passing on the fix at 500k iterations.
This is a format-level bug, fixed identically across the GCF SDKs (TypeScript / Go / Python / Rust / Swift / Kotlin); it is locked in by shared conformance fixtures (flatten/017–019) that this SDK's conformance suite runs against the gcf spec repo.
Full Changelog: v2.2.1...v2.2.2