kencode

Changelog

Synced from GitHub Releases.

  1. 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.

    What's Changed

    • chore: bump kbuild to 1.2.1 #8

    Full Changelog: https://github.com/Eignex/kencode/compare/v1.2.4...v1.3.0

  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.