Skip to content

chore: release v2.2.6 - #52

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
release-plz-2026-10-08T06-27-17Z
Open

github-actions[bot] wants to merge 1 commit into
mainfrom
release-plz-2026-10-08T06-27-17Z

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

🤖 New release

  • rusty_alloc: 2.2.5 -> 2.2.6 (✓ API compatible changes)
  • rusty_alloc-api: 2.2.5 -> 2.2.6 (✓ API compatible changes)
Changelog

rusty_alloc

2.2.6 - 2026-10-09

Other

  • (init) keep init.rs's CRLF line endings
  • vein census 3 -- nine deterministic wins from real-program profiles

Performance

Measured against 2.2.5 with callgrind, allocator instructions, outputs
identical: Endless Sky start-up -6.85 %, lua -2.23 %, perl -1.64 %, sqlite
-0.11 %; Rust GlobalAlloc workloads up to -4.24 % whole-program. Peak RSS
within +-0.4 %. Details: docs/opps.md, "Vein census 3".

  • Pages carve in growing batches. A page's first extension is still one
    4 KiB OS page; each later one carves as many blocks as the page already
    holds. Each extension costs a slow-path trip, and those trips, not the
    linking, were the cost. Thread start-up is unchanged.
  • A cross-thread free into a full page goes straight to its owner (the
    free/operator delete exports test the owner first). Rust's dealloc
    keeps the 2.2.5 order, which keeps __rust_dealloc inlinable into drop
    glue. Trade-off: a same-thread free of a large or huge block costs 2 more
    instructions (about 1.4 % of that path).
  • The slow path looks up a small size's bin from a table.
  • operator new's slow path has a smaller frame (malloc_or_with, a
    typed OOM handler).
  • A moving realloc resolves the block's page once, not twice.
  • Exited threads' heap boxes are reused, saving an mmap/munmap pair
    and a page fault per thread.
  • Rust: the natural-alignment arm of GlobalAlloc::alloc is out of line,
    and usable_size is inlinable.
  • MSVC builds with panic = "unwind" take back one of the three
    instructions per free that 2.2.5's fix cost them.

Added

  • alloc::malloc_or_with and the alloc::OnOom trait: malloc_or with the
    OOM handler as a type.
  • alloc::free_inline_flags_first: free_inline's body in the 2.2.5 test
    order, for Rust's GlobalAlloc::dealloc.

rusty_alloc-api

2.2.6 - 2026-10-09

Other

  • vein census 3 -- nine deterministic wins from real-program profiles

Performance

  • GlobalAlloc::alloc moves its natural-alignment arm out of line, so the
    inlined method carries one malloc fast path, not two (maps -0.33 %,
    overaligned -1.81 %); over-aligned realloc inlines its usable-size
    query (-2.06 %); dealloc uses free_inline_flags_first. The core's
    changelog has the rest.


This PR was generated with release-plz.

@github-actions
github-actions Bot force-pushed the release-plz-2026-10-08T06-27-17Z branch from 6165833 to d56f27c Compare October 9, 2026 13:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants