Releases: amazon-ion/ion-schema-kotlin
Releases · amazon-ion/ion-schema-kotlin
v1.8.0
v1.7.0
What's Changed
- Adds utility to get all symbol text declared in one or more schemas in #282
- Improves performance of annotations constraint in #287
- Add optimization to fail-fast on annotations in #285
- Improves validation performance of types defined in the spec in #286
- Minor improvements to Ion Schema Model in #288
- Adds a writer for the Ion Schema Model in #289, #290, #291, #292, #293, #294
- Update reader APIs in #295
- Remove extraneous clones in TypeNamed and ViolationChild in #296
- Release v1.7.0 in #297
More Details
- You can expect a significant performance improvement for the
isValid()
andvalidate()
APIs because of the improvements to the spec types and the removal of unnecessary cloning ofIonValue
s - If you use Ion annotations for tagging types, there is a opt-in feature that will speed up the validation performance and reduce noise in the violations output. For more information, see the documentation for
IonSchemaSystemBuilder.failFastOnInvalidAnnotations()
.
Full Changelog: v1.6.1...v1.7.0
v1.6.1
v1.6.0
Quick Hits
- Adds a model for Ion Schema that can be used for programmatically introspecting, constructing, or otherwise manipulating schemas and type definitions. This model is currently marked as experimental and subject to potentially breaking changes. This release includes reader/deserializer for Ion Schema 2.0, and a writer/serializer is to come in a future release.
- Adds CLI tool for fixing transitive imports—see the launch announcement for details
- The
schema_footer
is now optional regardless of whether or not aschema_header
is present, and can be used to delimit the end of a schema document in a larger stream of Ion. - Adds ISL Commons—an Ion Schema library containing type definitions for things that are common to other programming languages. It includes types such as
uint8
,int32
,float32
,date
. See also amazon-ion/ion-schema-schemas#13.
What's Changed
- Adds ISL model by @popematt in #251
- Refactor ValidateCommand to allow re-use of CLI options by @popematt in #253
- Adds the framework pieces for an Ion Schema reader that uses the ISL model by @popematt in #252
- Updates the model by @popematt in #255
- Adds readers for field_names, ieee754_float, and regex by @popematt in #257
- Adds CLI tool for fixing transitive imports by @popematt in #254
- Adds impl of IonSchemaReaderV2_0 and ion-schema-tests for readers by @popematt in #259
- Upgrade to Gradle 8 and use kover for code coverage by @popematt in #261
- Adds readers for exponent, precision, and __length constraints by @popematt in #258
- Adds readers for element and logic constraints by @popematt in #260
- Adds readers for ordered_elements and fields constraints by @popematt in #263
- Adds reader for valid_values by @popematt in #265
- Adds reader for timestamp_offset and timestamp_precision by @popematt in #266
- Make schema_footer optional by @popematt in #268
- Add readers for annotations and contains constraints by @popematt in #267
- Adds readers for schema headers and footers by @popematt in #271
- Fixes the way TimestampPrecisionValue is modeled by @popematt in #272
- Adds changes to read full schema document by @popematt in #273
- Ease-of-use improvements for ISL model by @popematt in #274
- Moves ion-schema-schemas to resource directory and updates to latest commit by @popematt in #275
- Release v1.6.0 by @popematt in #276
Full Changelog: v1.5.1...v1.6.0
v1.5.1
What's Changed
- Fix multiple bugs related to nullability annotations #247
- Fixes a regression in v1.5.0 that prevented
nullable::
from working for any imported types - Fixes a bug that allowed
nullable::
and$null_or::
to be present on variably occurring types
- Fixes a regression in v1.5.0 that prevented
Full Changelog: v1.5.0...v1.5.1
v1.5.0
Highlights
- Adds useful violation messages for
ordered_elements
constraint (see #228) - Fixes missing validation in
user_reserved_fields
declaration (#237) - Fixes resolution of cyclical imports (#209)
What's Changed
- Add
validate
command to CLI #224 - Adds support for reading from stdin #225
- Fix default version of Ion Schema used by
ion-schema-cli validate
#226 - Make workflow run on pull requests #230
- Update all references to the GitHub organization: amzn -> amazon-ion #229
- Adds useful violation messages for ordered_elements #228
- Multiple clean up tasks #231
- Adds DeferredReferenceManager and SchemaContentCache #234
- Consolidates version marker detection logic in IonSchemaVersion #235
- Wires the DeferredReferenceManager through all of the existing code #236
- Fixes cyclical import resolution for SchemaImpl_2_0 header imports #238
- Fixes cyclical import resolution for SchemaImpl_1_0 header imports #240
- Fixes cyclical import resolution for inline imports #241
- Stop allowing illegal fields in user_reserved_fields declaration #242
- Updates ion-schema-schemas submodule and ISL for ISL tests to include ISL 2.0 #243
- Release v1.5.0 #244
Full Changelog: v1.4.0...v1.5.0
v1.4.0
What's Changed
Features
- Adds support for Ion Schema 2.0.
Fixes
- Adds early-exit logic to
any_of
implementation (#202) - Fixes incorrect fast-fail evaluation of timestamps with unknown offset (#203)
- Updates annotations and valid_values constraints w.r.t. documents (#204)
- Fixes timestamp ranges incorrectly rejecting timestamps with unknown offsets (#206)
Full Changelog: v1.3.0...v1.4.0
v1.3.0
What's Changed
Bug Fixes
- Adds check to make sure ISL version marker is valid by @popematt in #189
- Fix implementation of
ordered_elements
by @popematt in #195 - Fix timestamp precision ranges to allow
min
andmax
by @popematt in #196 - Fixes
codepoint_length
incorrectly counting multi-unit codepoints by @popematt in #197
Housekeeping
- Adds Gradle subprojects and scaffolding for a CLI by @popematt in #191
- Updates tests to junit 5 by @popematt in #194
- Adds code coverage report by @popematt in #198
Full Changelog: v1.2.1...v1.3.0
v1.2.1
What's Changed
- Fixes git submodule reference to point to the latest commit in ion-schema-tests #183
- Updates the dokka gradle plugin to a stable release version #185
- Fixes a bug in ResourceAuthority that prevents it from actually loading any resources #186
Full Changelog: v1.2.0...v1.2.1
Release 1.2.0
What's Changed
This release includes the following enhancements:
- Provides graceful handling of circular imports (#157)
- Two enhancements to existing constraints:
- A new constraint (
utf8_byte_length
) for validating the number of bytes required to encode a string or symbol in utf8 (#162) - Two new
Authority
implementations ion-schema-schemas
is now bundled in theion-schema-kotlin
JAR and can be accessed usingResourceAuthority
. (#173)- Builder option to provide a callback for non-fatal warnings from the IonSchemaSystem (#180)
Additionally, the following bugs have been fixed:
- Imports where the schemaId is an Ion symbol rather than an Ion string no longer results in an error. (#158)
- Declaring two type definitions with the same name in a single schema will result in an error rather than silently discarding one of them. (#171)
- Imports are no longer resolved transitively. WARNING—this is a potentially breaking change, so you must explicitly opt into this fix using the
allowTransitiveImports(false)
builder option. (#180)- This change will become the default behavior in
ion-schema-kotlin-2.0.0
. - It is strongly recommended that you use the
withWarningMessageCallback
builder option to help determine if and where your application would be affected by this change even if you do not enable this fix.
- This change will become the default behavior in
New Contributors
- @tgregg made their first contribution in #152
- @scb01 made their first contribution in #151
- @desaikd made their first contribution in #158
- @popematt made their first contribution in #167
Full Changelog: v1.1.0...v1.2.0