Unreleased
v0.3.0 - 2026-07-17
- Restore the required slice borrow for match-backed sparse field tables when decoder source metadata is enabled.
- Hide internal Rust-only helper types from ExDoc type-reference rendering.
- Add reusable prepared runtime schemas with indexed definition, message-field,
and enum lookup for repeated
SchemaInterpretercalls. - Replace the timer-loop codec benchmark with Benchee coverage for small and 256-field sparse/dense static and interpreted codecs, including allocation measurements.
- Clarify Rustler generator architecture docs now that compact decoder macros are RustQ-authored rather than raw Rust heredoc escape boundaries.
- Deduplicate Rustler generator skip descriptor selection and remove exact clone findings from the generator helper modules.
- Add optional
decoder_sourcesmetadata for RustQ-authored skip helpers. - Emit Rustler macro prelude helpers only for requested generator features.
- Add opt-in descriptor-backed sparse message generation with
sparse_messages: :descriptor. - Move sparse primitive value helpers, descriptor scanning, descriptor dispatch,
and sparse descriptor declarations into RustQ-authored
defrust/@typesupport. - Author the sparse message descriptor macro with item-generating
defrustmacroand compactrepeatmacro-template support. - Share descriptor field inventories between sparse and skip message decoders when both descriptor sparse and skip features are generated.
- Author sparse enum and sparse struct descriptor decoding with RustQ-authored
defrusthelpers and item-generatingdefrustmacro. - Avoid emitting raw match-backed sparse/skip message macros when decoder-source descriptor sparse generation does not use them.
- Author decoder-source skip struct decoders with RustQ-authored
defrusthelpers and item-generatingdefrustmacro. - Replace active shared sparse/skip descriptor
kiwi_skip_kind!token macro use with explicit descriptor metadata and RustQ-authored enum construction. - Move descriptor-backed skip message scanning into RustQ-authored
defrusthelpers with sorted field lookup. - Generate skip descriptor function, enum, and field declarations from RustQ type metadata when decoder sources are available.
- Collapse the separate sparse bytes descriptor mode into ordinary
onedescriptor mode.
v0.2.2 - 2026-06-28
- Centralize primitive Rustler decoder metadata.
- Compact generated skip decoders.
- Deduplicate sparse enum decoders when full enum decoders are generated.
- Compact generated enum decoders.
- Remove the unused Rustler decoder macro path.
- Update RustQ dependency to
~> 0.8.2.
v0.2.1 - 2026-06-26
- Generate Rustler decoders through shared Rust macros to reduce repeated generated source.
- Add generic Rustler sparse and skip decoder families for projection-oriented native backends.
v0.2.0 - 2026-06-26
- Delegate LEB128/ZigZag integer encoding to the
varintpackage while keeping Kiwi-specific range and error handling. - Replace vague
FieldProps/MessagePropsmodules withKiwiCodec.MetadataandKiwiCodec.Metadata.Field. - Rename the Kiwi variable-length float wire module to
KiwiCodec.Wire.VarFloat. - Rename generated module metadata API from
__kiwi_props__/0to__kiwi_metadata__/0. - Split Rustler generator naming, selection, helper splice, and decoder macro concerns into dedicated modules.
- Rename generated Elixir source rendering from
KiwiCodec.GeneratortoKiwiCodec.ModuleGenerator. - Clarify generated-codec and runtime helper names around definitions, wire fields, and wire types.
- Replace caller-owned Rustler templates with
KiwiCodec.RustlerGenerator.source/2for complete generated Rust source. - Centralize Kiwi primitive type metadata in
KiwiCodec.PrimitiveType. - Rename schema runtime interpretation to
KiwiCodec.SchemaInterpreter. - Split vague
KiwiCodec.Compilerresponsibilities intoKiwiCodec.ModuleCompilerandKiwiCodec.FileGenerator. - Split parsed schema members into
KiwiCodec.Schema.FieldwithidandKiwiCodec.Schema.EnumVariantwithvalue. - Replace overloaded parsed schema definitions with
KiwiCodec.Schema.Enum,KiwiCodec.Schema.Struct, andKiwiCodec.Schema.Message. - Extract compact binary schema type-reference encoding into
KiwiCodec.Schema.Binary.TypeIndex. - Split Rustler generator definition emission, field expressions, and entrypoints into dedicated modules.
- Split generated-module metadata, shape, and typespec emission out of
KiwiCodec.DSL. - Split schema tokenization and validation out of
KiwiCodec.Schema.Parser. - Group published HexDocs modules without hiding source documentation.
- Refresh README installation instructions for the latest released version.
- Infer Rustler generator entrypoint names and selected definitions from requested schema definitions.
- Render Rustler generator source prelude with RustQ AST imports instead of raw Rust strings.
- Infer Rustler generator entrypoints from matching exported NIF stub modules.
- Infer Rustler generator entrypoints from explicit NIF stub metadata modules without loading Rustler modules.
- Document inferred Rustler entrypoints and NIF stub metadata usage.
v0.1.1 - 2026-06-25
- Reject unexpected characters while parsing
.kiwischema text. - Normalize malformed binary schema failures to
KiwiCodec.DecodeError. - Document internal modules and Rustler generator template requirements.
- Reuse RustQ Rustler helper splices for generated native struct term construction.
v0.1.0 - 2026-06-25
- Initial Kiwi wire codec, schema parser, runtime interpreter, DSL, and code generator.