Releases: Eignex/kencode
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.
- Fixes BaseRadix for massive power-of-two bases.
- Adds UnicodeRangeAlphabet and CharAlphabet interfaces for richer character encoding options.
- Streamlines encodeBlock logic in BaseRadix and adds byte-handling helpers.
- Optimizes buffer usage and simplifies encodeBlock input handling.
- Raises the Gradle JVM heap to avoid out-of-memory errors during builds.
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.
- Migrates the project to a Kotlin Multiplatform structure.
- Extends build configuration to include wasm and iOS targets.
- Replaces the Checksum interface with a PayloadTransform interface for payload processing.
- Integrates CompactZeros as a PayloadTransform and removes the standalone compactZeros flag.
- Implements merged bitmask headers for classes and objects via a new PackedContext class.
- Consolidates boolean and nullable bitmask handling into a ClassBitmask utility.
- Streamlines varint encoding and decoding in EncodedFormat.
- Allows configurable initial capacity for ByteOutput in EncodedFormat.
- Adds a linter step to GitHub Actions and an .editorconfig.
- Adds README examples and links for encryption and error correction extensions.
v1.2.1
Internal cleanup release that unifies the CRC implementations behind a shared engine and tightens BaseRadix visibility.
- Introduces a unified CrcEngine shared by CRC8, CRC16, and CRC32.
- Simplifies CRC test structure for better coverage and clarity.
- Changes encodeBlock and decodeBlock visibility to internal in BaseRadix.
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.
- Replaces VarInt and VarUInt annotations with a unified PackedType annotation.
- Consolidates defaultVarInt and defaultZigZag into a single defaultEncoding property on PackedFormat.
- Optimizes nullable collection handling and bitmask logic in PackedEncoder and PackedDecoder.
- Adds tests for boolean and nullable list encoding and truncation exceptions.
- Adds an error message for checksum size violations during EncodedFormat decoding.
- Improves UTF-8 string handling and error reporting in readStringInline.
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.
- Adds builder DSL configuration for EncodedFormat and PackedFormat.
- Adds the FixedInt annotation to force fixed-length integer encoding when defaults differ.
- Improves nullable element decoding and enforces structure constraints in PackedDecoder.
- Adds test coverage for polymorphic serialization, truncation, and nullable lists.
- Updates 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.
- Provides a flexible BaseRadix encoder supporting arbitrary radixes.
- Includes Base64 (standard and URL-safe) and Base85 implementations.
- Adds CRC8, CRC16, and CRC32 checksum implementations with reflected variants.
- Introduces the PackedFormat for compact kotlinx.serialization output with bit packing.
- Introduces the EncodedFormat that pairs PackedFormat with byte encoding and checksums.
- Supports nullable types, enums, UInt/ULong, and default object handling.
- Adds varint, zigzag varuint, and fixed-width integer encoding helpers.
- Includes example usages for protobuf-style and cipher-based serialization.
- Ships GitHub Actions for build and release.