Releases: Eignex/kencode
Release list
v1.3.0
Toolchain refresh: Kotlin 2.3.20, Gradle 9.5.1, kbuild 1.2.1, with kotlinx-serialization now pinned via an auto-applied platform BOM.
- chore: bump kbuild to 1.2.1 with an auto-applied kbuild-platform BOM and drop the macosX64 target.
- chore: bump Kotlin and the kotlinx-serialization plugin to 2.3.20.
- fix: address typed-detekt findings from kbuild 1.2.1.
- ci: create a GitHub Release on tag push and run lintDocs in CI.
- docs: rework the README and add KDoc to satisfy UndocumentedPublic detekt rules.
- chore: add a pull request template.
Full Changelog: v1.2.4...v1.3.0
v1.2.4
CI-focused release that runs the full test suite on every build, uploads test reports, and renames Base64UrlSafe for consistency.
- refactor: rename Base64UrlSafe to Base64Url.
- ci: run allTests in CI and upload test reports as artifacts.
- ci: make the codecov upload step non-fatal.
Full Changelog: v1.2.3...v1.2.4
v1.2.3
Maintenance release with a BaseRadix correctness fix for very large power-of-two radixes, new alphabet abstractions, and build stability improvements.
- fix: correct BaseRadix for massive power-of-two bases.
- feat: add UnicodeRangeAlphabet and CharAlphabet interfaces for richer character encoding options.
- refactor: streamline encodeBlock logic in BaseRadix and add byte-handling helpers.
- perf: optimize buffer usage and simplify encodeBlock input handling.
- build: raise the Gradle JVM heap to avoid out-of-memory errors during builds.
Full Changelog: v1.2.2...v1.2.3
v1.2.2
Restructures the project as Kotlin Multiplatform with wasm and iOS targets, adds payload transforms (encryption, compact-zeros) in place of the checksum interface, and merges class and object bitmask headers for tighter output.
- build: migrate the project to a Kotlin Multiplatform structure.
- build: extend build configuration to include wasm and iOS targets.
- refactor: replace the Checksum interface with a PayloadTransform interface for payload processing.
- refactor: integrate CompactZeros as a PayloadTransform and remove the standalone compactZeros flag.
- feat: implement merged bitmask headers for classes and objects via a new PackedContext class.
- refactor: consolidate boolean and nullable bitmask handling into a ClassBitmask utility.
- refactor: streamline varint encoding and decoding in EncodedFormat.
- feat: allow configurable initial capacity for ByteOutput in EncodedFormat.
- ci: add a linter step to GitHub Actions and an .editorconfig.
- docs: add README examples and links for encryption and error correction extensions.
Full Changelog: v1.2.1...v1.2.2
v1.2.1
Internal cleanup release that unifies the CRC implementations behind a shared engine and tightens BaseRadix visibility.
- refactor: introduce a unified CrcEngine shared by CRC8, CRC16, and CRC32.
- test: simplify CRC test structure for better coverage and clarity.
- refactor: change encodeBlock and decodeBlock visibility to internal in BaseRadix.
Full Changelog: v1.2.0...v1.2.1
v1.2.0
Replaces the per-property VarInt/VarUInt annotations with a single PackedType annotation, consolidates integer encoding configuration, and tightens collection encoding and decoding.
- feat: replace VarInt and VarUInt annotations with a unified PackedType annotation.
- refactor: consolidate defaultVarInt and defaultZigZag into a single defaultEncoding property on PackedFormat.
- perf: optimize nullable collection handling and bitmask logic in PackedEncoder and PackedDecoder.
- test: add tests for boolean and nullable list encoding and truncation exceptions.
- feat: add an error message for checksum size violations during EncodedFormat decoding.
- fix: improve UTF-8 string handling and error reporting in readStringInline.
Full Changelog: v1.1.0...v1.2.0
v1.1.0
Adds a builder DSL for configuring EncodedFormat and PackedFormat, a FixedInt annotation for overriding default integer encoding, and assorted decoder fixes for nullable and polymorphic cases.
- feat: add builder DSL configuration for EncodedFormat and PackedFormat.
- feat: add the FixedInt annotation to force fixed-length integer encoding when defaults differ.
- fix: improve nullable element decoding and enforce structure constraints in PackedDecoder.
- test: add test coverage for polymorphic serialization, truncation, and nullable lists.
- docs: update the README to document the new DSL and Maven coordinates.
v1.0.0
Initial release of kencode, a Kotlin Multiplatform library for compact binary encoding with kotlinx.serialization integration, base-N text encodings, and CRC checksums.
- feat: provide a flexible BaseRadix encoder supporting arbitrary radixes.
- feat: include Base64 (standard and URL-safe) and Base85 implementations.
- feat: add CRC8, CRC16, and CRC32 checksum implementations with reflected variants.
- feat: introduce the PackedFormat for compact kotlinx.serialization output with bit packing.
- feat: introduce the EncodedFormat that pairs PackedFormat with byte encoding and checksums.
- feat: support nullable types, enums, UInt/ULong, and default object handling.
- feat: add varint, zigzag varuint, and fixed-width integer encoding helpers.
- docs: include example usages for protobuf-style and cipher-based serialization.
- build: ship GitHub Actions for build and release.