Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 22 Aug 08:55
· 144 commits to main since this release
2cfc6a5

What's Changed

  • docs: repo is public; main protection active and enforced by @orieg in #2
  • feat(ci): post benchmark results as a PR comment with base deltas by @orieg in #4
  • fix(strmap): iterative teardown and removal — no stack overflow on long keys, plus the coverage to see it by @orieg in #7
  • eval(bench): cache-pressure arm — does our layout hold when it stops fitting in cache? by @orieg in #5
  • perf: monomorphize immed_find, word-wise pop0, class-sized root leaves by @orieg in #6
  • bench(instrument): same-shape vs-stock arms, symbols bound in setup by @orieg in #8
  • fix(strmap): iterative ordered navigation by @orieg in #9
  • fix(ci): per-commit concurrency group so main runs are never evicted by @orieg in #10
  • perf(types): inline the tag decode by @orieg in #11
  • docs(bench): collapse B2 to a single authoritative baseline by @orieg in #12
  • perf(types): force-inline the tag decode — first arm below stock libjudy by @orieg in #13
  • perf(alloc): per-kind alignment — raw byte storage off the memalign path by @orieg in #14
  • perf(get): match the leaf path's compare idiom in immed_find by @orieg in #15
  • perf(get): locate_slot scans immediates in place, like descend by @orieg in #16
  • bench(churn): steady-state mixed arm in both harnesses by @orieg in #17
  • perf(map): direct copy for class-crossing leaf resizes by @orieg in #18
  • perf(bits): runtime popcnt dispatch for the bitmap rank operations by @orieg in #19
  • docs(readme): status as scannable tables by @orieg in #21
  • perf(set): direct copy for class-crossing leaf resizes — the set twin of #18 by @orieg in #20
  • perf(mutate): scratch-free bitmap-leaf build (scope cut to the measured win) by @orieg in #22
  • perf(mutate): in-place node allocation and loop-folding same-level re-entries (#24) by @orieg in #28
  • perf(alloc): transition NodeAlloc to layout-rounded bytes/key accounting (#25) by @orieg in #29
  • feat(validate): defensive trie validator, stats collection, and navigation benchmarks (#26) by @orieg in #30
  • chore: panic=abort release profile, glibc-hwcaps recipes, and doc cleanup (#27) by @orieg in #31
  • perf(ci): side-by-side x86-64-v3 modern architecture benchmark reporting and hwcaps docs by @orieg in #34
  • perf(leaf): O(log N) binary search probe for dense linear leaves (#32) by @orieg in #35
  • perf(mutate): monotonic ascending append fast-path for linear leaves (#32) by @orieg in #36
  • perf(leaf): branchless pop <= 2 unrolling in lower_bound_fixed (#32) by @orieg in #37
  • docs: update benchmark table, algorithm reference, and interactive visualizer (#32) by @orieg in #38
  • perf(leaf): AVX2/SSE2 128-bit vector search and lower_bound scans for linear leaves (#32) by @orieg in #39
  • perf(root): monotonic append fast-path for root leaf in ExpanseSet and ExpanseMap (#32) by @orieg in #40
  • bench: add linear_leaf distribution to instructions benchmark matrix (#32) by @orieg in #41
  • docs: clarify benchmark arms catalog, SIMD vector kernels, and visualizer (#32) by @orieg in #42
  • perf(trie): multi-level sequential run bypass for ExpanseSet and ExpanseMap by @orieg in #43
  • docs(visualizer): add interactive Structural Hierarchy DAG, Growth Lifecycle DAG, and Baseline Comparison mode by @orieg in #44
  • perf(cursor): record InsertPath bottom-up to eliminate descent store overhead on random inserts by @orieg in #45
  • docs(visualizer): embed ground-truth code & benchmark data, streamline into 2 unified views by @orieg in #46
  • feat(visualizer): 15-milestone 1M population scaling, custom slider styling & automated zero-drift sync test by @orieg in #47
  • docs: visualizer architecture, data sync protocol & developer workflow guidelines by @orieg in #48
  • fix(visualizer): close unclosed comment in architecture_visualizer.html & add JS syntax unit test by @orieg in #49
  • feat(visualizer): multi-level trie depth scaling, subarray cascade loops & 8-byte digit breakdown by @orieg in #50
  • fix(visualizer): connect Branch U to Bitmap Leaf and illuminate dynamic active traversal paths by @orieg in #51
  • feat(visualizer): add multi-factorial workload dynamics, 10M keys scaling milestone, and OCC/mutation pipeline tracing by @orieg in #52
  • refactor(visualizer): rename 10M milestone from Enterprise to 8-Lvl Dense by @orieg in #53
  • feat(visualizer): add drop-in C-compat ABI benchmark matrix vs stock libjudy by @orieg in #54
  • feat(visualizer): clean up View 2 table alignments and sync exact PR CI benchmark dataset by @orieg in #55
  • perf(mutate): defer ancestor pop0 increments during clustered and sequential runs by @orieg in #56
  • perf(bits): vectorize and unroll 8-byte branch header search by @orieg in #57
  • perf(leaf): unroll lower_bound and search for pop <= 4 by @orieg in #58
  • perf(capi): direct inlined fast paths for Judy1Test and JudyLGet by @orieg in #59
  • perf(bits): fast fused test_and_subexpanse_rank and 32-bit subexpanse count by @orieg in #60
  • perf(leaf): fast single-instruction packed key reads and writes for 1, 2, and 4 byte widths by @orieg in #61
  • perf(clustered): optimize leaf insert/realloc copies, fast handle access, and CI regression guard by @orieg in #62
  • docs: add comprehensive CI architecture & regression guard guide in docs/CI.md by @orieg in #63
  • ci: add docs-only fast path for heavy jobs (#64) by @orieg in #67
  • perf(set): fast-track LeafB1 bypass terminal_pop and flush on navigation by @orieg in #68
  • perf(alloc): slab block freelist recycling for fast steady-state allocations by @orieg in #69
  • perf(simd): vectorized SIMD leaf lower_bound and search for 8-byte and 16-byte spans by @orieg in #71
  • docs: update performance table and recent optimizations in README by @orieg in #72
  • docs: clarify standard baseline vs x86-64-v3 compilation in performance section by @orieg in #74
  • pkg(capi): enable crates.io publishing for expanse-capi by @orieg in #75
  • perf(get): elide decode_matches when level matches and add path cache to get_value_slot by @orieg in #76
  • perf: pure 64-bit SWAR find_byte_8 and root leaf delete hysteresis by @orieg in #77
  • perf: direct branch arm dispatch and level lookup in get traversal by @orieg in #79
  • fix(ci): format Regression Guard using GitHub Markdown alert syntax by @orieg in #80
  • ci: refine file-scope change detection for fuzz-smoke and heavy test jobs by @orieg in #81
  • perf: monomorphized linear leaf locate with fused match and bounds elimination by @orieg in #82
  • port: enable cargo test --workspace --all-targets on macOS and non-Linux platforms by @orieg in #85
  • feat(capi): add expanse_strmap_t ordered string map bindings to modern C API by @orieg in #83
  • perf: contiguous insert cursor linear leaf bypass for sequential runs (#32) by @orieg in #86
  • perf: OCC epoch freelist recycling to prevent allocator roundtrips (#1, #84) by @orieg in #87
  • perf: cross-chunk path compression in ExpanseStrMap (#84) by @orieg in #88
  • perf: BranchU descent unrolling, 32-bit subexpanse rank, and LeafB1 hysteresis (#32, #1) by @orieg in #89
  • perf: restore hardware bt, specialize linear leaf search, and streamline BranchU (#32, #1) by @orieg in #90
  • perf: eliminate demotion heap allocation and accelerate BranchL3/L7 navigation (#32, #1) by @orieg in #91
  • perf: unaligned arithmetic packed key access and FromIterator/Extend (#32, #1) by @orieg in #92
  • perf: monomorphize linear leaf packed key building (#32, #1) by @orieg in #93
  • perf: fast-path path cursor in get_value_slot (#32, #1) by @orieg in #94
  • perf: eliminate atomic CAS loop on single-writer NodeAlloc freelists (#32, #1) by @orieg in #97
  • perf: fast in-place immediate growth and lockless single-writer accounting by @orieg in #98
  • perf(mutate): guard branch empty and downgrade scans behind child-null checks in remove by @orieg in #99
  • docs: update README with Sprint 7/8 benchmark results and landed optimizations by @orieg in #100
  • perf(mutate): eliminate recursion in single-threaded mutation and close stock parity gaps (Sprint 9) by @orieg in #101
  • perf(trie): close sequential/clustered lookup and random insert gaps by @orieg in #102
  • docs(readme): update performance benchmark matrix and landed optimizations for sprint 10 by @orieg in #103
  • perf(get,mutate): specialize walk_set_impl and raw tag_byte dispatch for random parity by @orieg in #104
  • docs: update README benchmark table and recent optimizations for sprint 11 by @orieg in #105
  • feat(docs): modernize architecture visualizer with light/dark theme, responsive DAG, and deep dive cards by @orieg in #107
  • perf(leaf): specialize fixed-width leaf operations and direct c_int compat entry points by @orieg in #106
  • perf(leaf): vectorize 1-byte leaf search and clean README performance table by @orieg in #108
  • perf(get): outperform stock libjudy on random test and inline descent hot paths by @orieg in #111
  • perf(alloc): intrusive SlabPage freelist arena for micro-allocations by @orieg in #116
  • perf(branch): 16-bit presence bloom filter in BranchHeader and vectorized navigation by @orieg in #117
  • perf(alloc): zero-branch RAW_CLASS_TABLE lookup and streamlined freelist pop by @orieg in #119
  • perf(mutate): direct BranchL3 digit comparison and tag-specialized locate_fixed by @orieg in #121
  • docs: link comparative benchmarks, concurrency, and database subsystem issues by @orieg in #125
  • perf(mutate): eliminate branch overhead in descent to beat Stock Judy on random map inserts by @orieg in #126
  • docs: update status summary, complete milestone #110, and fix rustdoc links by @orieg in #127
  • feat(packaging): multi-architecture dynamic packaging with glibc-hwcaps (x86-64-v2, x86-64-v3, x86-64-v4) by @orieg in #130
  • ci(release): automated package publishing, crates.io trusted publishing, and distro packaging by @orieg in #131
  • docs: comprehensive release engineering and multi-channel distribution guide by @orieg in #132
  • Support 64-bit RISC-V (RV64) by @orieg in #133
  • Bench: Add comparative and multithreaded concurrency suites by @orieg in #134
  • docs(bench): microarchitecture scaling benchmark matrix (x86-64-v1 vs v2 vs v3 vs v4) by @orieg in #135
  • chore(release): bump version to v0.2.0 and expand multi-arch release pipeline by @orieg in #136
  • ci(release): automated GitHub Pages APT repository publishing by @orieg in #137
  • fix(ci): fix release.yml multiline indentation for Debian control block by @orieg in #138
  • ci(release): make crates.io publishing resilient and unblock binary artifact matrix by @orieg in #139
  • ci(release): robust archive packaging, debian control printf, and apt dependencies by @orieg in #140

New Contributors

  • @orieg made their first contribution in #2

Full Changelog: https://github.com/orieg/expanse/commits/v0.2.0