Skip to content

Releases: charleskorn/kaml

0.8.0

09 Mar 21:20
Compare
Choose a tag to compare
0.8.0 Pre-release
Pre-release

What's changed

  • New: kaml now supports aliases and anchors

  • New: kaml now supports merging aliases into a map

  • New: kaml now supports Docker Compose-style extensions

    This allows users to define values used in multiple places once, and reference them throughout their document, for example:

    .build: &build Build tasks
    .test: &test Test tasks
    
    tasks:
      build-app:
        group: *build
        command: build.sh app
    
      build-lib:
        group: *build
        command: build.sh lib
    
      test-app:
        group: *test
        command: test.sh app
    
      test-lib:
        group: *test
        command: test.sh lib

    Specify the extension prefix (such as x- or .) by setting extensionDefinitionPrefix when creating an instance of Yaml.

    Extensions can only be defined at the top level of a document, and only if the top level element is a map or object. Any key starting with the extension prefix must have an anchor defined and will not be included in the deserialised value.

Upgrading

If you're using Gradle, reference kaml in your dependencies block like this:

implementation("com.charleskorn.kaml:kaml:0.8.0")

For other tools, refer to the Maven Central release page for more information.

0.7.0

02 Feb 11:27
Compare
Choose a tag to compare
0.7.0 Pre-release
Pre-release

What's changed

  • Updated: kaml is now compiled against kotlinx.serialization 0.10.0.

Upgrading

If you're using Gradle, reference kaml in your dependencies block like this:

implementation("com.charleskorn.kaml:kaml:0.7.0")

For other tools, refer to the Maven Central release page for more information.

0.6.0

23 Jan 23:36
Compare
Choose a tag to compare
0.6.0 Pre-release
Pre-release

What's changed

  • Updated: kaml is now compiled against Kotlin 1.3.20.
  • Changed: YamlInput is now publicly accessible, to allow custom serializers to access location information during deserialization, which is useful to include in error messages. This is a reversion of the change in 0.5.0.

Upgrading

If you're using Gradle, reference kaml in your dependencies block like this:

implementation("com.charleskorn.kaml:kaml:0.6.0")

For other tools, refer to the Maven Central release page for more information.

0.5.0

19 Jan 22:56
Compare
Choose a tag to compare
0.5.0 Pre-release
Pre-release

What's changed

  • New: kaml now supports serializing Kotlin objects to YAML. Call Yaml.default.serialize(serializer, input) to convert input to YAML using serializer.

Upgrading

If you're using Gradle, reference kaml in your dependencies block like this:

implementation("com.charleskorn.kaml:kaml:0.5.0")

For other tools, refer to the Maven Central release page for more information.

0.4.0

02 Jan 00:29
Compare
Choose a tag to compare
0.4.0 Pre-release
Pre-release

What's changed

  • New: kaml now supports providing custom serializers at runtime. See the kotlinx.serialization docs for more information.

    ⚠️ Breaking change: in order to support this, the Yaml object is no longer an object and is instead a class. To get the default Yaml instance, use Yaml.default instead.

Upgrading

If you're using Gradle, reference kaml in your dependencies block like this:

implementation("com.charleskorn.kaml:kaml:0.4.0")

For other tools, refer to the Maven Central release page for more information.

0.3.0

26 Dec 04:04
Compare
Choose a tag to compare
0.3.0 Pre-release
Pre-release

What's changed

  • Changed: YAML has been renamed to Yaml, in line with the recent kotlinx.serialization release (where JSON was renamed to Json).

  • Improved: kaml now uses snakeyaml-engine instead of dahgan internally to parse YAML. This means:

    • Error messages are significantly better - they are clearer and include context information of where something has gone wrong
    • Performance is significantly better - loading times no longer grow exponentially as the document increases in size

Upgrading

If you're using Gradle, reference kaml in your dependencies block like this:

implementation("com.charleskorn.kaml:kaml:0.3.0")

For other tools, refer to the Maven Central release page for more information.

0.2.1

23 Dec 23:21
Compare
Choose a tag to compare
0.2.1 Pre-release
Pre-release

What's changed

This release is identical to 0.2.0 but was re-released due to an issue deploying the artifacts to Maven Central.

Upgrading

If you're using Gradle, reference kaml in your dependencies block like this:

implementation("com.charleskorn.kaml:kaml:0.2.1")

For other tools, refer to the Maven Central release page for more information.

0.2.0

23 Dec 23:18
Compare
Choose a tag to compare
0.2.0 Pre-release
Pre-release

What's changed

  • New: when the value for a field in a map or object is invalid, the key will now be included in the error message. For example: Value for 'quantity' is invalid: Value 'abc' is not a valid integer value.

  • New: it's now possible for custom deserializers to access the location information of the current token, allowing them to include line and column numbers when reporting errors. In deserialize(), cast input to YamlInput and call getCurrentLocation().

  • Improved: specific exception types will now be thrown for common cases, making it easier to handle different issues. For example, an unknown object property will now throw a UnknownPropertyException. The full list of exceptions is available in the source.

  • Improved: the message for the exception thrown when attempting to deserialize a null value into a non-null field is now far clearer. It was previously class com.charleskorn.kaml.YamlNullInput can't retrieve untyped values, now it will be Unexpected null or empty value for non-null field.

Upgrading

Due to an issue uploading the artifacts to Maven Central, this release isn't available for use. Use version 0.2.1 instead, which is identical.

0.1.0

16 Dec 17:36
Compare
Choose a tag to compare
0.1.0 Pre-release
Pre-release

Initial release.

This is a very rough initial version:

  • Currently, only parsing YAML is supported. Emitting YAML will be added in a future version.
  • Many operations are not yet optimised for performance.
  • Only the JVM is supported, Kotlin/Native support will be added in a future version.

If you're using Gradle, reference it in your dependencies block like this:

implementation("com.charleskorn.kaml:kaml:0.1.0")

For other tools, refer to the Maven Central release page for more information.