Releases: orchestr7/ktoml
Release v0.5.2
Main
- K2 and 1.7.0 serialization support
- a new target: linux arm64
What's Changed
- Fix Serialization in readme to use encodeToString instead of wrong decodeFromString by @vlsi in #253
- Update dependency gradle to v8.6 by @renovate in #233
- Adding new Kotlin DefaultHierarchyTemplate by @orchestr7 in #257
- Enhancing publishing mechanism and adding snapshot releases by @orchestr7 in #258
- Primitive Char should be encoded with a single quote by @orchestr7 in #261
- Bump the github_actions group across 1 directory with 1 update by @dependabot in #262
- Update Kotlin core dependencies to v1.9.23 by @renovate in #263
- Update dependency gradle to v8.7 by @renovate in #265
- Update Kotlin core dependencies to v1.9.24 by @renovate in #268
- Update Kotlin core dependencies to v2 (major) by @renovate in #269
- Enable linux arm64 compilation by @zt64 in #270
- Update dependency io.github.gradle-nexus:publish-plugin to v2 by @renovate in #267
- Update dependency gradle to v8.8 by @renovate in #271
- Update all github actions (major) by @renovate in #247
New Contributors
- @vlsi made their first contribution in #253
- @dependabot made their first contribution in #262
- @zt64 made their first contribution in #270
Full Changelog: v0.5.1...v0.5.2
Release v0.5.1
Important
-
Updated Kotlin to version 1.9.22 in #250
-
A bunch of bug fixes, infra and logging enhancements.
-
Enhanced Map decoding: Now, you can decode key-value pairs and tables to Map without prior knowledge of their names.
@Serializable
data class MyClass(
val a: Map<String, Map<String, String>>
)
[a]
[a.innerTable]
d = 5
[a.otherInnerTable]
d = "String"
- Introduced encoding for value classes by @BOOMeranGG in #238:
@Serializable
@JvmInline
value class Test(val myTest: Info)
- Added support for empty inline tables by @BOOMeranGG in #240:
ACTIVITY_COMPOSE = {}
Enhancements
- Levenshtein distance calculation for the enhancement of the 'invalid enum' error by @akuleshov7 in #232
- Add trimming of the closing quote delimiter of multiline string by @akuleshov7 in #223
- Unify array of tables and primitive table by @NightEule5 in #215
- Initial Support for Simple Map decoding with unnamed toml keys by @akuleshov7 in #246
- Support for nested and inlined maps (inside other maps) by @akuleshov7 in #252
- Postrelease: updating readme and deprecating legacy methods by @akuleshov7 in #222
Bugfixes
- Fixes #226 TomlTable.write() throws NoSuchElementException by @thomasgalvin in #227
Infra
- Infra and build updates by @akuleshov7 in #228
- Set distribution to zulu for all setup-java by @nulls in #241
- Update all github actions (major) by @renovate in #203
- Update actions/checkout action to v4.1.0 by @renovate in #242
- Diktat 2.0 support by @akuleshov7 in #251
New Contributors
- @thomasgalvin made their first contribution in #227
Full Changelog: v0.5.0...v0.5.1
Release v0.5.0
Breaking changes
- In this release, we have made some changes to the library's API and removed old deprecated methods;
- For instance, we removed methods that used the deprecated
TomlConfig
and left only those that useTomlInputConfig
orTomlOutputConfig
; - Additionally, we have started to stream data during decoding and parsing, which should improve performance;
- However, this may affect the way you use some ktoml methods.
Changes that deserve your attention
- A significant change for streaming data and a new module, ktoml-source, for custom data sources (via okio Source) by @bishiboosh in #117;
- We have finally added support for multiline strings, including both literal and basic strings and multiline arrays, by @BOOMeranGG and @NightEule5 (#184, #183);
- Support for Kotlin 1.8.21, Kotlinx.serialization 1.5.0, and Gradle 8;
- Backward compatibility support for Java 8 by @akuleshov7 in #202;
❗ Now toml-file
is only one of the example for reading the data from source. For your particular case you can implement your own source provider based on okio.Source. For this purpose we have prepared toml-source
module and implemented an example with java streams for JVM target.
// add com.akuleshov7:ktoml-source to your project
import com.akuleshov7.ktoml.source
val resultFromString = TomlFileReader.decodeFromSource<MyClass>(serializer(), /* your source */)
val resultFromList = TomlFileReader.partiallyDecodeFromSource<MyClass>(serializer(), /* your source */, /* table name */)
What else is new
- We have added iosSimulatorArm64 target by @akuleshov7 in #186;
- Regexes have been replaced with functions to enhance performance and prevent input-related issues by @NightEule5 in #19;
- Extra information has been added to errors and exceptions by @akuleshov7 in #212;
Infrastructure changes
- Test to check regression #189 by @akuleshov7 in #192
- Configure Renovate by @renovate in #194
- Customizations for the renovate bot by @akuleshov7 in #199
- Adding an action-script for an automated update of yarn.lock by @akuleshov7 in #206
- Update dependency gradle to v8.1.1 by @renovate in #211
- Adding a test to validate line numbers and fix for multiline strings by @akuleshov7 in #217
Full Changelog: v0.4.1...v0.5.0
Release v0.4.1 (Minor to support JVM 1.8)
Release v0.4.0
Functional changes
- Support for multi-line arrays by @BOOMeranGG in #166
- Support for trailing comma in array by @BOOMeranGG in #169
- Support of a new Char type in a Kotlin manner (as an extension to TOML) by @akuleshov7 in #176
- Support LocalTime by @BOOMeranGG in #170
- Removing a Double restriction: float support by @akuleshov7 in #175
- Limitation for Long type finally removed: support for integer types by @akuleshov7 in #171
- Migration to a new 1.8 Kotlin by @akuleshov7 in #178
Fixes
- Support for "inf" and "nan" values by @akuleshov7 in #180
- Fix Double encoding on JS by @NightEule5 in #158
- Support for special symbols with Char type by @akuleshov7 in #179
- Fix bug with inline comment by @BOOMeranGG in #168
Internals
- Add README encoding examples by @NightEule5 in #159
- Classes that inherit sealed class should not be in a one file anymore by @akuleshov7 in #162
- Separate parsing from writing in node constructors by @NightEule5 in #165
- Quick POC at non-Long numerics (encoding and decoding) by @aSemy in #164
New Contributors
- @BOOMeranGG made their first contribution in #168
- @aSemy made their first contribution in #164
Full Changelog: v0.3.0...v0.4.0
Release v0.3.0
Awesome release with serialization, finally! 🤞 ❤️
Ktoml now supports it!
What's Changed
- Implement encoding by @NightEule5 in #153
- Adding test for required fields by @akuleshov7 in #152
- Upgraded version of kotlin and serialization by @nulls in #154
New Contributors
Full Changelog: v0.2.13...v0.3.0
Release v0.2.13
Minor release to add new targets and support new Kotlin version
What's Changed
- Added Ios and M1 targets by @Wavesonics in #148
- Updated Kotlin version to 1.7 by @akuleshov7 in #150
New Contributors
Full Changelog: v0.2.12...v0.2.13
Release v0.2.12
Technical release with refactoring, new fundamental logic and library migrations
Main functional features
- Add date-time handling
- Support unicode symbols in strings
- Supporting the decoding of value (inline) classes
- Partial support for custom serializers
- Handle commas in string for arrays.
Main technical features
- Kotlin updated to 1.6.21
- New configuration mechanism introduced instead of TomlConfig (it's now deprecated)
- New fundamentals for serialization logic were added. Encoding will be introduced in future releases
@bishiboosh @akuleshov7 @NightEule5 thank you for this outstanding contribution!
Release v0.2.11
Release v0.2.10
What's done:
- Huge refactoring and base mechanisms for the serialization; d953779 cc6e05a
- BREAKING: Renaming and deprecating several class, mostly focused on exceptions; cc6e05a
- Adding the support for empty TOML; 2295a74
- Creating the parser and the support in AST for ArrayOfTables; 0bf142f a76f5e8
- Support for inline tables with several limitations (excluding nested inlining). 0ef414b
- Minor fixes and updates;
Contributors to this release: @NightEule5 @Peanuuutz @vitusortner @akuleshov7