Skip to content

csskit_arena: Reuse reservations across arenas - #1430

Merged
keithamus merged 1 commit into
mainfrom
csskit-arena-reuse-reservations-across-arenas
Aug 22, 2026
Merged

csskit_arena: Reuse reservations across arenas#1430
keithamus merged 1 commit into
mainfrom
csskit-arena-reuse-reservations-across-arenas

Conversation

@keithamus

Copy link
Copy Markdown
Member

Reserving a region costs a pair of syscalls. Small parse steps pay a steep cost
for this if they're allocating a fresh arena, then dropping. A reservation could
outlives its arena, therefore amortizing this cost when a program resets and
renews an arena.

This change does just that - reservations go on a thread-local free list, keyed
by usable size, and the next arena of that size takes it.

Reserving a region costs a pair of syscalls. Small parse steps pay a steep cost
for this if they're allocating a fresh arena, then dropping. A reservation could
outlives its arena, therefore amortizing this cost when a program resets and
renews an arena.

This change does just that - reservations go on a thread-local free list, keyed
by usable size, and the next arena of that size takes it.
@keithamus
keithamus enabled auto-merge (squash) August 22, 2026 13:49
@github-actions

Copy link
Copy Markdown

✅ CI passed

Job Result
Build & Test (win32-x64, win32-arm64, linux-x64, linux-arm64, darwin-x64, darwin-arm64) ✅ success
Build & Test (default features) ✅ success
Build & Test (nightly) ✅ success
Build each library ✅ success
Build benches ✅ success
Acceptance Tests ✅ success
Fuzz Corpus Replay ✅ success

@keithamus
keithamus merged commit af7b535 into main Aug 22, 2026
19 checks passed
@keithamus
keithamus deleted the csskit-arena-reuse-reservations-across-arenas branch August 22, 2026 14:03
github-actions Bot pushed a commit that referenced this pull request Aug 22, 2026
## [0.0.30] - 2026-08-22

### Css_ast
- css_ast: Allow symbolic-counter-style in content syntax (#1419) ([#1419](#1419))
- css_ast: Boxup rare nodes to reduce allocation size (#1421) ([#1421](#1421))
- css_ast: Clean up & improve NodeWithMetadata derives, add value_kinds (#1422) ([#1422](#1422))
- csskit_transform: implement ReduceCharsetRule (#1427) ([#1427](#1427))
- css_ast: Add missing webkit pseudo elements (#1428) ([#1428](#1428))
- css_ast: Implement InitialLetterAlignStyleValue (#1429) ([#1429](#1429))
- css_ast: Allow prelude-less `@layer` (#1434) ([#1434](#1434))

### Css_lexer
- css_lexer/css_parse: Ensure parsed whitespace survives minification (#1420) ([#1420](#1420))

### Csskit
- chore(deps): update dependencies (patch) (#1407) ([#1407](#1407))

### Csskit_arena
- csskit_arena: Reuse reservations across arenas (#1430) ([#1430](#1430))
- csskit_arena: Clean up and consolidate allocation modes (#1431) ([#1431](#1431))
- csskit_arena: Add a detailed readme (#1433) ([#1433](#1433))

### Csskit_transform
- coverage: update css-minify-tests (#1423) ([#1423](#1423))
- csskit_transform: skip subtrees which don't match metadata (#1424) ([#1424](#1424))

### Csskit_vscode
- chore(deps): update dependency mocha to v11.8.0 (#1410) ([#1410](#1410))
- chore(deps): update dependency oxlint to v1.76.0 (#1411) ([#1411](#1411))
- chore(deps): update dependency oxlint to v1.78.0 (#1413) ([#1413](#1413))

### Derive_atom_set
- derive_atom_set: Don't case fold on punctuation. (#1426) ([#1426](#1426))
- derive_atom_set: Expand readme with more detail (#1432) ([#1432](#1432))

[forcebuild]
@keithamus keithamus mentioned this pull request Aug 22, 2026
github-actions Bot pushed a commit that referenced this pull request Aug 22, 2026
## [0.0.30] - 2026-08-22

### Css_ast
- css_ast: Allow symbolic-counter-style in content syntax (#1419) ([#1419](#1419))
- css_ast: Boxup rare nodes to reduce allocation size (#1421) ([#1421](#1421))
- css_ast: Clean up & improve NodeWithMetadata derives, add value_kinds (#1422) ([#1422](#1422))
- csskit_transform: implement ReduceCharsetRule (#1427) ([#1427](#1427))
- css_ast: Add missing webkit pseudo elements (#1428) ([#1428](#1428))
- css_ast: Implement InitialLetterAlignStyleValue (#1429) ([#1429](#1429))
- css_ast: Allow prelude-less `@layer` (#1434) ([#1434](#1434))

### Css_lexer
- css_lexer/css_parse: Ensure parsed whitespace survives minification (#1420) ([#1420](#1420))

### Csskit
- chore(deps): update dependencies (patch) (#1407) ([#1407](#1407))

### Csskit_arena
- csskit_arena: Reuse reservations across arenas (#1430) ([#1430](#1430))
- csskit_arena: Clean up and consolidate allocation modes (#1431) ([#1431](#1431))
- csskit_arena: Add a detailed readme (#1433) ([#1433](#1433))

### Csskit_transform
- coverage: update css-minify-tests (#1423) ([#1423](#1423))
- csskit_transform: skip subtrees which don't match metadata (#1424) ([#1424](#1424))

### Csskit_vscode
- chore(deps): update dependency mocha to v11.8.0 (#1410) ([#1410](#1410))
- chore(deps): update dependency oxlint to v1.76.0 (#1411) ([#1411](#1411))
- chore(deps): update dependency oxlint to v1.78.0 (#1413) ([#1413](#1413))

### Derive_atom_set
- derive_atom_set: Don't case fold on punctuation. (#1426) ([#1426](#1426))
- derive_atom_set: Expand readme with more detail (#1432) ([#1432](#1432))
keithamus added a commit that referenced this pull request Aug 23, 2026
- css_ast: Allow symbolic-counter-style in content syntax (#1419) ([#1419](#1419))
- css_ast: Boxup rare nodes to reduce allocation size (#1421) ([#1421](#1421))
- css_ast: Clean up & improve NodeWithMetadata derives, add value_kinds (#1422) ([#1422](#1422))
- csskit_transform: implement ReduceCharsetRule (#1427) ([#1427](#1427))
- css_ast: Add missing webkit pseudo elements (#1428) ([#1428](#1428))
- css_ast: Implement InitialLetterAlignStyleValue (#1429) ([#1429](#1429))
- css_ast: Allow prelude-less `@layer` (#1434) ([#1434](#1434))

- css_lexer/css_parse: Ensure parsed whitespace survives minification (#1420) ([#1420](#1420))

- chore(deps): update dependencies (patch) (#1407) ([#1407](#1407))

- csskit_arena: Reuse reservations across arenas (#1430) ([#1430](#1430))
- csskit_arena: Clean up and consolidate allocation modes (#1431) ([#1431](#1431))
- csskit_arena: Add a detailed readme (#1433) ([#1433](#1433))

- coverage: update css-minify-tests (#1423) ([#1423](#1423))
- csskit_transform: skip subtrees which don't match metadata (#1424) ([#1424](#1424))

- chore(deps): update dependency mocha to v11.8.0 (#1410) ([#1410](#1410))
- chore(deps): update dependency oxlint to v1.76.0 (#1411) ([#1411](#1411))
- chore(deps): update dependency oxlint to v1.78.0 (#1413) ([#1413](#1413))

- derive_atom_set: Don't case fold on punctuation. (#1426) ([#1426](#1426))
- derive_atom_set: Expand readme with more detail (#1432) ([#1432](#1432))

[forcebuild]
keithamus added a commit that referenced this pull request Aug 23, 2026
## [0.0.30] - 2026-08-22

### Css_ast
- css_ast: Allow symbolic-counter-style in content syntax (#1419)
([#1419](#1419))
- css_ast: Boxup rare nodes to reduce allocation size (#1421)
([#1421](#1421))
- css_ast: Clean up & improve NodeWithMetadata derives, add value_kinds
(#1422) ([#1422](#1422))
- csskit_transform: implement ReduceCharsetRule (#1427)
([#1427](#1427))
- css_ast: Add missing webkit pseudo elements (#1428)
([#1428](#1428))
- css_ast: Implement InitialLetterAlignStyleValue (#1429)
([#1429](#1429))
- css_ast: Allow prelude-less `@layer` (#1434)
([#1434](#1434))


### Css_lexer
- css_lexer/css_parse: Ensure parsed whitespace survives minification
(#1420) ([#1420](#1420))


### Csskit
- chore(deps): update dependencies (patch) (#1407)
([#1407](#1407))


### Csskit_arena
- csskit_arena: Reuse reservations across arenas (#1430)
([#1430](#1430))
- csskit_arena: Clean up and consolidate allocation modes (#1431)
([#1431](#1431))
- csskit_arena: Add a detailed readme (#1433)
([#1433](#1433))


### Csskit_transform
- coverage: update css-minify-tests (#1423)
([#1423](#1423))
- csskit_transform: skip subtrees which don't match metadata (#1424)
([#1424](#1424))


### Csskit_vscode
- chore(deps): update dependency mocha to v11.8.0 (#1410)
([#1410](#1410))
- chore(deps): update dependency oxlint to v1.76.0 (#1411)
([#1411](#1411))
- chore(deps): update dependency oxlint to v1.78.0 (#1413)
([#1413](#1413))


### Derive_atom_set
- derive_atom_set: Don't case fold on punctuation. (#1426)
([#1426](#1426))
- derive_atom_set: Expand readme with more detail (#1432)
([#1432](#1432))
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.

1 participant