Skip to content

Releases: charleskorn/kaml

0.21.0

03 Sep 07:04
0.21.0
a4464df
Compare
Choose a tag to compare

What's changed

  • New: it is now possible to configure the style for emitted lists and sequences by setting YamlConfiguration.sequenceStyle (#40 - thanks to @knightzmc for the suggestion and PR)

    For example, for the list 1, 2, 3, block style (which was the previous behaviour and is still the default) would emit the list as:

    - 1
    - 2
    - 3

    And in flow style, it would be emitted as:

    [1, 2, 3]

Upgrading

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

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

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

0.20.0

30 Aug 06:03
0.20.0
6fbd643
Compare
Choose a tag to compare

What's changed

  • New: YamlMap now has get(key) and getScalar(key) methods that return the YAML node or scalar value (respectively) in the map for key (#32 - thanks to @Vampire for the suggestion)

  • New: it is now possible to change the indentation level and maximum scalar value width when encoding values to YAML (#33 - thanks to @Vampire for the suggestion)

    Set encodingIndentationSize or breakScalarsAt on YamlConfiguration to alter the default values (indent by two spaces, and split scalars onto a new line at 80 characters).

  • New: calling toString() on an exception now includes line and column numbers in the result, for example: com.charleskorn.kaml.YamlException at line 123, column 456: Something went wrong (#36 - thanks to @Vampire for the suggestion)

  • Changed: ⚠️ Potentially breaking change: Kotlin 1.4's explicit API mode has been enabled. Some internal APIs that were previously exposed are now correctly marked as internal.

    If you were relying on these previously public APIs, please file an issue explaining your use case.

Upgrading

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

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

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

0.19.0

18 Aug 10:12
0.19.0
938d250
Compare
Choose a tag to compare

What's changed

  • Updated: kaml is built against Kotlin 1.4 and kotlinx.serialization 1.0.0-RC.

    ⚠️ Potentially breaking change: Note that this introduces two breaking changes to maintain consistency with the built-in formats and the StringFormat interface:

    • Yaml.parse() is now Yaml.decodeFromString()
    • Yaml.stringify() is now Yaml.encodeToString()

Upgrading

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

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

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

0.18.1

19 Jul 04:19
0.18.1
897373b
Compare
Choose a tag to compare

What's changed

  • Fixed: using a contextual serializer as the top-level deserializer for an object could fail with errors like Expected an object, but got a list, or Can't decode YAML map into LIST

Upgrading

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

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

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

0.18.0

12 Jul 05:41
0.18.0
035ec2a
Compare
Choose a tag to compare

What's changed

  • New: kaml now supports working with polymorphic types where the type is specified as a type property in YAML (#11 - thanks to @gps for the suggestion).

    This means that there are now two styles available for working with polymorphic types (set YamlConfiguration.polymorphismStyle when creating an instance of Yaml):

    • using YAML tags to specify the type:

      servers:
        - !<frontend>
          hostname: a.mycompany.com
        - !<backend>
          database: db-1
    • using a type property to specify the type:

      servers:
        - type: frontend
          hostname: a.mycompany.com
        - type: backend
          database: db-1

    The fragments above could be generated with:

    @Serializable
    sealed class Server {
      @SerialName("frontend")
      @Serializable
      data class Frontend(val hostname: String)
    
      @SerialName("backend")
      @Serializable
      data class Backend(val database: String)
    }
    
    @Serializable
    data class Config(val servers: List<Server>)
    
    val config = Config(listOf(
      Frontend("a.mycompany.com"),
      Backend("db-1")
    ))
    
    val result = Yaml.default.stringify(Config.serializer(), config)
    
    println(result)
  • Updated: kaml is now built against Kotlin 1.3.72.

  • Changed: clearer exceptions will now be thrown in the following cases:

    • missing tag when deserializing a polymorphic type when using tags for polymorphic type information
    • unknown polymorphic type in tag or type property
    • missing required property for object

Upgrading

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

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

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

0.17.0

24 Mar 08:43
0.17.0
351e3e7
Compare
Choose a tag to compare

What's changed

  • Updated: kaml is now built against Kotlin 1.3.71.

Upgrading

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

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

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

0.16.1

07 Mar 03:58
0.16.1
bb27f4f
Compare
Choose a tag to compare

Note: version 0.16.0 was never released due to issues with the release process.

What's changed

  • Updated: kaml is now built against Kotlin 1.3.70 and kotlinx.serialization 0.20, and no longer depends on internal APIs from kotlinx.serialization (thanks to @EdwarDDay and @HeartPattern for the PRs)

Upgrading

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

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

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

0.15.0

21 Nov 09:23
0.15.0
db80199
Compare
Choose a tag to compare

What's changed

  • Updated: kaml is now built against Kotlin 1.3.60 and kotlinx.serialization 0.14.

Upgrading

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

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

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

0.14.0

29 Sep 10:25
0.14.0
65c03d3
Compare
Choose a tag to compare

What's changed

  • New: kaml now supports polymorphic serialization (#4, #7 and #10 - thanks to @frzme for the suggestion and to @EdwarDDay for the PRs to implement it)

Upgrading

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

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

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

0.13.0

31 Aug 07:46
0.13.0
f375bcf
Compare
Choose a tag to compare

What's changed

  • Fixed: The issue where parsing a nullable list, map or object would fail with a InvalidPropertyValueException has been fixed (#6 - thanks to @Will3333 for the issue report)
  • Updated: kaml is now built against Kotlin 1.3.50 and kotlinx.serialization 0.12.

Upgrading

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

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

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