v1.0.0-rc.2
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.
- Fix comparison for cross representations in
Int
by @desaikd in #640 - Adds test for
PartialEq
ofSymbol
for&str
by @desaikd in #702 - Fix to support finding an IVM after a NOP in binary v1.0 by @zslayton in #706
- Broke integration tests into modules by @zslayton in #679
- Varuint optimization by @zslayton in #682
- Version bump to v1.0.0-rc.2 by @zslayton in #707
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.
- Introduces a new writer API by @zslayton in #680
- Adds sexp and struct writers to the
LazyRawTextWriter_1_0
by @zslayton in #684 - Binary 1.0 impl for new writer API by @zslayton in #686
Ion v1.1 prototype implementation
Text reader (incl. macro evaluation)
- Stub out types for RawTextReader_1_1 by @zslayton in #643
- Initial implementation of the Ion 1.1 text reader by @zslayton in #645
- Recursive macro expansion in TDL containers by @zslayton in #647
- Incorporates feedback from PR #645 by @zslayton in #652
- Fixes parsing of macro invocations in Lists and SExps and some cases … by @popematt in #654
- Adds integration testing for Ion 1.1 by @popematt in #673
- Evaluation of template macros by @zslayton in #674
- Constant time struct field access by @zslayton in #676
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