Skip to content

v1.1.0

Latest

Choose a tag to compare

@popematt popematt released this 08 Oct 23:52
dd9e4c0

What's Changed

This release has smaller and faster in-memory representations for Timestamp, Decimal, Int, UInt, IonError, and Element annotations, plus faster text parsing and binary encoding. It also removes the incomplete Ion 1.1 implementation.

New Features

  • TimestampBuilder::localize_to_offset (#1055)
  • Experimental: is_inline on Int, UInt, Coefficient, and Decimal (#1068)
  • Experimental: managed writer instances can be reused (#1054)

Performance

  • Timestamp is now a 16-byte packed representation (#1041)
  • Decimal is now 24 bytes, backed by an overflowing-integer Coefficient (#1044, #1057)
  • Int and UInt are backed by the same overflowing-integer representation (#1064)
  • IonError is 32 bytes; large payloads are boxed (#1043)
  • Element annotations are packed into a single tagged pointer (#1053)
  • Struct fields are stored in a boxed slice with a lazily built index (#1048)
  • Faster binary VarUInt/VarInt writers and stack-encoded int/decimal magnitudes (#1047, #1049)
  • Reduced whitespace and field-name parsing overhead in the text reader (#1061)

Breaking change to experimental features

  • The experimental-ion-1-1 Cargo feature and the incomplete Ion 1.1 implementation behind it have been removed (#1056). Crates that enable experimental-ion-1-1 must remove it from their feature list to build with this release.

Other changes

  • The chrono dependency is now only pulled in by the experimental-chrono feature.
  • CI now checks the stable public API against a committed baseline (#1042).

New Contributors

Full Changelog: v1.0.1...v1.1.0