Skip to content

Releases: amazon-ion/ion-schema-kotlin

v1.8.0

15 Dec 18:16
bbab678
Compare
Choose a tag to compare

What's Changed

  • Add option to provide alternate regex implementation #298

Full Changelog: v1.7.0...v1.8.0

v1.7.0

13 Nov 23:31
92e0a25
Compare
Choose a tag to compare

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() and validate() APIs because of the improvements to the spec types and the removal of unnecessary cloning of IonValues
  • 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

21 Jun 21:42
20bd399
Compare
Choose a tag to compare

What's Changed

  • Fix (#278) ClassCastException in OneOf implementation in #279

Full Changelog: v1.6.0...v1.6.1

v1.6.0

07 Jun 19:42
404edb6
Compare
Choose a tag to compare

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 a schema_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

17 Mar 22:53
Compare
Choose a tag to compare

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

Full Changelog: v1.5.0...v1.5.1

v1.5.0

15 Mar 00:37
Compare
Choose a tag to compare

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

10 Nov 21:50
Compare
Choose a tag to compare

What's Changed

Features

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

02 Jul 00:39
7278b6c
Compare
Choose a tag to compare

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 and max by @popematt in #196
  • Fixes codepoint_length incorrectly counting multi-unit codepoints by @popematt in #197

Housekeeping

Full Changelog: v1.2.1...v1.3.0

v1.2.1

30 Nov 04:06
cf795c9
Compare
Choose a tag to compare

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

19 Nov 17:00
Compare
Choose a tag to compare

What's Changed

This release includes the following enhancements:

  • Provides graceful handling of circular imports (#157)
  • Two enhancements to existing constraints:
    • Adds a closed:: modifier for the annotations constraint (#159)
    • Ranges are can now be embedded in the list of values for valid_values (#163)
  • 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
    • ResourceAuthority (#173)
    • InMemoryMapAuthority (#180)
  • ion-schema-schemas is now bundled in the ion-schema-kotlin JAR and can be accessed using ResourceAuthority. (#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.

New Contributors

Full Changelog: v1.1.0...v1.2.0