Skip to content

v1.0.0-rc.2

Compare
Choose a tag to compare
@zslayton zslayton released this 08 Feb 17:20
· 123 commits to main since this release
9f9a494

Changes that affect users upgrading from v1.0.0-rc1

This release does not introduce any breaking changes for users of v1.0.0-rc1. However, it does include a variety of bug fixes and performance improvements.

Upcoming breaking changes

In order to support the upcoming Ion v1.1, the read_* and write_* methods in the Element API need to be able to specify additional options. For example: readers need to be able to specify a Catalog implementation to use and writers need to be able to specify which version of Ion to produce. @desaikd has been working on future-proof new WriteConfig and ReadConfig types that will be added to those methods as arguments in an upcoming rc3.

At this time, this is the only remaining API change to address before v1.0.0 can be cut.

  • Adds implementation of writer configuration by @desaikd in #685
  • Adds implementation for reader builder with catalog by @desaikd in #700

Experimental (feature gated) changes

Text impl of the Lazy Reader API

The lazy reader is now available for both text and binary Ion 1.0, offering a more ergonomic API that is both faster and exposes fewer
illegal states that could result in surprising errors. In the near future, the existing readers (which are themselves feature gated) will
be replaced by the lazy reader.

  • Initial raw lazy text reader (top-level nulls, bools, ints) by @zslayton in #609
  • Adds support for floats to the LazyRawTextReader by @zslayton in #612
  • Adds LazyRawTextReader support for comments by @zslayton in #613
  • Adds LazyRawTextReader support for reading strings by @zslayton in #614
  • Adds LazyRawTextReader support for reading symbols by @zslayton in #616
  • Adds LazyRawTextReader support for reading lists by @zslayton in #617
  • Adds LazyRawTextReader support for structs by @zslayton in #619
  • Adds LazyRawTextReader support for reading IVMs by @zslayton in #620
  • Initial impl of a LazyRawAnyReader by @zslayton in #621
  • Adds lazy reader support for reading annotations by @zslayton in #622
  • Adds lazy reader support for timestamps by @zslayton in #623
  • Lazy reader support for s-expressions by @zslayton in #627
  • Adds lazy reader support for decimals by @zslayton in #628
  • Adds lazy reader support for blobs by @zslayton in #629
  • Adds lazy reader support for long strings by @zslayton in #630
  • Adds lazy reader support for reading clobs by @zslayton in #638
  • Adds ion-tests integration for the lazy reader by @zslayton in #639
  • Incorporates pending feedback from lazy reader PRs by @zslayton in #642

"Lazy" writer

Work is underway to offer an improved writer API that has ergonomics and safety improvements that parallel the lazy reader.
The name is a placeholder; there's nothing especially lazy about the writer's implementation.

Ion v1.1 prototype implementation

Text reader (incl. macro evaluation)

Binary writer

  • Skeleton impl of binary 1.1 writer by @zslayton in #688
  • Implements reading/writing FlexInt, FlexUInt by @zslayton in #690
  • Implements reading/writing FixedInt/FixedUInt by @zslayton in #694
  • Implements writing v1.1 nulls, bools, ints, floats by @zslayton in #695
  • Implements writing v1.1 strings, symbols, and SIDs by @zslayton in #696
  • Implements writing v1.1 decimals by @zslayton in #697
  • Implements writing v1.1 timestamps by @zslayton in #699
  • Implements writing delimited and length-prefixed sequence types by @zslayton in #701
  • Implements writing blobs and clobs by @zslayton in #704

serde support

Full Changelog: v1.0.0-rc.1...v1.0.0-rc.2