Skip to content

1.4.0

Choose a tag to compare

@behdad behdad released this 01 Mar 19:41
· 17 commits to master since this release

packTab 1.4.0 focuses on better sparse-prefix compression, clearer compression modes, and simpler generation logic.

Highlights

  • Added explicit compression endpoints.
    • --compression 0 now selects a flat / unsplit encoding.
    • --compression 10 now minimizes raw table bytes.
    • --compression 1..9 keep the historical heuristic behavior.
  • Added aligned leading-default culling.
    • Tables with large power-of-two-aligned default prefixes can now be rebased to the smallest dyadic interval covering the live range.
    • This preserves the recursive split structure while avoiding storage for removable all-default left branches.
  • Added exact leading-default culling for inlineable spans.
    • When trimming to the first non-default index makes the remaining flat span small enough to inline as a constant, packTab now tries that exact rebase too.
  • Removed the identity optimization.
    • This simplifies the model and code generation, and makes rebased sparse-prefix handling easier to reason about.
  • Improved generated C and Rust lookups for rebased spans.
    • Rebased lookups use a single unsigned range check, including safe wrapping arithmetic on Rust.

Other changes

  • Updated documentation for the new compression semantics and sparse-prefix behavior.
  • Expanded tests for compression endpoint selection, aligned prefix culling, and exact-inline prefix culling.

Validation

  • Full test suite passes: 204 tests.