Current section
Files
Jump to
Current section
Files
CHANGELOG.md
# Changelog
All notable changes to this project are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Changed
- **Breaking:** the binary encoding is denser and incompatible with binaries
built by 0.1.0. An edge's two flag bits are packed into the same bytes as
its child offset instead of a padded trailing byte, and all nodes without
outgoing edges share a single sentinel slot at offset 0 rather than each
occupying a placeholder edge. Consequently `offset_width` must now satisfy
`rem(offset_width + 2, 8) == 0` (6, 14, 22, …) instead of being a multiple
of 8, and the default is 14 — 3 bytes per edge with room for 16_384 edges,
down from 16 — 4 bytes per edge with room for 65_536.
## [0.1.0] - 2026-08-11
### Added
- `DawgEx.from_list/2` — builds a minimal DAWG from a list of binaries and
encodes it as a flat binary. Takes an optional `offset_width` (a positive
multiple of 8, defaulting to 16) that sets how many bits each edge spends
addressing its child, trading encoded size against the number of edges the
automaton can hold. Raises `ArgumentError` rather than emitting a binary
whose offsets wrap when the width is too narrow for the word list.
- `DawgEx.member?/2` — set-membership query directly against the encoded
binary, with no intermediate decoding step. Reads the offset width from the
binary's header, so the build-time width does not have to be threaded back in.
[Unreleased]: https://github.com/realglebivanov/dawg_ex/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/realglebivanov/dawg_ex/releases/tag/v0.1.0