Releases: amazon-ion/ion-java
v1.11.2
What's Changed
- Removes assertions in
IonReaderSystemTextX.stringValue()
. (#703) - Adds a
_Private_IonConstants.ARRAY_MAXIMUM_SIZE
. (#708) - Fixes a bug that allowed
NegativeArraySizeException
to be thrown fromIonReader.newBytes()
. (#705) - Allows the text reader to fail cleanly when the user attempts to recover after catching
IonException
, but recovery is not possible. (#709) - Fixes a bug that caused the binary reader not to fail cleanly when parsing incomplete containers in certain cases. (#710)
Note
This release does not include all commits present on the master
branch at the time of release. The following commits are excluded from 1.11.2 and will be included in a future release:
- Implements patch list as a single contiguous array of reusable PatchPoint instances. (#521)
- Remove the repeated logic of the method that overwrites the lower nibble of container type descriptor. (#548)
- Adds support for writing binary Ion 1.1 null, bool, int, and float binary encoding. (#612)
- Adds support for writing binary Ion 1.1 timestamps. (#618)
- Adds support for writing binary Ion 1.1 decimal binary encoding. (#636)
- Adds support for writing binary Ion 1.1 text and lob types and some annotations. (#637)
- Enable auto-flush and configurable block size in the binary writer. (#650, #651)
Full Changelog: v1.11.1...v1.11.2
v1.11.1
What's Changed
- Enables using Kotlin in Ion Java (#488)
- Refactors to standard layout (#555)
- Adds the ability to read a binary Ion int as a Java double, Decimal, or BigDecimal for consistency with the previous implementation. (#675)
- Handles the case where the binary reader unexpectedly encounters an oversized value, throwing IonException with a helpful message. (#680)
- Updates Proguard config to fix JDK 17 toolchain + Scala Build Tool compatibility issue. (#681)
- Ensures NullPointerException is not thrown from IonReader.getIntegerSize(). (#686)
- Adds checks for malformed data that overflows the binary reader's buffer. (#687)
- Adds Automatic-Module-Name and OSGi bundle attributes to manifest. (#688)
- Allows building with Java 8. (#690)
- Handles the case where InputStream.skip provides fewer bytes than requested by the binary reader before reaching EOF. (#689)
- Handles the case where a partially buffered nested value is skipped by the binary reader. (#692)
- Ensures that fully-buffered containers do not cause the binary cursor to enter unchecked mode unless stepped into. (#692)
- Sets binary reader buffers to null on close(). (#694)
- Ensures the binary reader throws when a value method that returns a primitive type is invoked on a null value. (#693)
Note
This release does not include all commits present on the master
branch at the time of release. The following commits are excluded from 1.11.1 and will be included in a future release:
- Implements patch list as a single contiguous array of reusable PatchPoint instances. (#521)
- Remove the repeated logic of the method that overwrites the lower nibble of container type descriptor. (#548)
- Adds support for writing binary Ion 1.1 null, bool, int, and float binary encoding. (#612)
- Adds support for writing binary Ion 1.1 timestamps. (#618)
- Adds support for writing binary Ion 1.1 decimal binary encoding. (#636)
- Adds support for writing binary Ion 1.1 text and lob types and some annotations. (#637)
- Enable auto-flush and configurable block size in the binary writer. (#650, #651)
Full Changelog: v1.11.0...v1.11.1
v1.11.0
What's Changed
- Optimize ion-java-regression-detection workflow to improve the accuracy. by @linlin-s in #603
- Swaps out the binary reader for a more performant implementation by @tgregg in #615. This change allows for binary read performance improvements of up to 40%, depending on the size and shape of the data, with no code changes required.
- Fixes a bug that caused concurrent field access of cloned, read-only structs with more than 5 members to be non-deterministic. by @tgregg in #630
Full Changelog: v1.10.5...v1.11.0
v1.10.5
This release adds several performance improvements for scenarios working with the ion-java DOM (IonValue
etc.) and unifies IonValue.toString()
representations with the IonTextWriter
output
Fixes
- Fixes GHSA-264p-99wq-f4j6 (CVE-2024-21634)
Performance Improvements
IonValue.hashCode
: up to 57% fasterIonValue.clone
: up to 41% fasterIonStruct.cloneAndRemove
: up to 76% fasterIonStruct.cloneAndRetain
: up to 43% fasterIonLoader.load
: up to 17% fasterIonValue.writeTo
: up to 32% faster
What's Changed
- Restores previous behavior when IonValue.writeTo is called with a writer that has annotations set. by @tgregg in #569
- Fixes a bug in that prevented the correct IonContext from being copied via IonStruct.cloneAndRemove and IonStruct.cloneAndRetain. by @tgregg in #571
- Fix NPE in IonStructLite.doClone() by @popematt in #570
- Restores previous behavior that allowed IonValue.toString to print symbol tokens with unknown text. by @tgregg in #572
- Fix inconsistent equals and hashcode when annotations are cleared by @popematt in #573
- Fix NPE in IonRawBinaryWriter by @popematt in #574
- Add an OSSF Scorecard action by @jobarr-amzn in #576
- Add gradle wrapper validation by @jobarr-amzn in #577
Full Changelog: v1.10.4...v1.10.5
v1.10.4
v1.10.3
What's Changed
- Bumps version to 1.10.3-SNAPSHOT by @popematt in #537
- Removes patch buffer and writes the patch length to the outputStream directly. by @linlin-s in #518
- Remove unnecessary PR-content-check workflow by @popematt in #541
- Save SpotBugs reports with GHA runs by @gliptak in #544
- Use https links in CONTRIBUTING.md by @popematt in #554
- Refactor ion-java-cli to standard layout by @gliptak in #545
- Iteratively writes values in IonValue.writeTo. by @tgregg in #542
- Iteratively writes values in IonValue.toString. by @tgregg in #543
- Iteratively traverses the document during IonValue.hashCode; improves IonValue.writeTo performance. by @tgregg in #546
- Iteratively traverses the document during IonValue.makeReadOnly by @desaikd in #549
- Makes IonValue.clone iterative and improves clone performance. by @tgregg in #557
- Adds a configurable maximum comparison depth to Equivalence. by @tgregg in #558
- Prepare v1.10.3 release by @popematt in #563
New Contributors
Full Changelog: v1.10.2...v1.10.3
v1.10.2
v1.10.1
v1.10.0
What's Changed
- Set the default preallocation mode of binary IonWriter to 1. by @linlin-s in #481
- Fix signing task
onlyIf
restriction by @jobarr-amzn in #483 - Updates ion-test-driver workflow to run on ubuntu-latest by @popematt in #489
- Fix release artifact upload workflow by @popematt in #490
- Adds build support for Java 20, removes uses of deprecated code by @zslayton in #498
- Removes redundant AllTests suite. by @tgregg in #501
- Fixes concurrency stress test to avoid spurious failures. by @tgregg in #502
- Makes IonSystemLite load values iteratively, not recursively by @zslayton in #499
- Removes support for reading decimal values as BigInteger by @popematt in #527
Full Changelog: v1.9.6...v1.10.0
v1.9.6
What's Changed
- Fix Annotated Dot in Sexp Parser Error by @rmarrowstone in #440
- Use Gradle build system by @popematt in #461
- Adds Software BOM to releases by @popematt in #463
- Fixing Ion Cookbook url by @dhireshjain in #464
- Update all references to the GitHub organization: amzn -> amazon-ion by @popematt in #468
- Add a concurrency stress test by @jobarr-amzn in #469
- Add SpotBugs with baseline and baseline generation by @jobarr-amzn in #471
- make BigInteger serialization faster on long-sized numbers by @camilo-amzn in #475
- Target Java 8 by @jobarr-amzn in #477
- Use JUnit 5 by @jobarr-amzn in #478
New Contributors
- @rmarrowstone made their first contribution in #440
- @dhireshjain made their first contribution in #464
- @camilo-amzn made their first contribution in #475
Full Changelog: v1.9.5...v1.9.6