Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
18364ce
Add opt-in dlmalloc guest allocator
jotabulacios Jul 27, 2026
9f28a23
Use dlmalloc as the default guest allocator
jotabulacios Jul 27, 2026
c1f8cec
Merge branch 'main' into perf/dlmalloc-guest-allocator
jotabulacios Jul 27, 2026
79e5437
Merge branch 'main' into perf/dlmalloc-guest-allocator
diegokingston Jul 28, 2026
6901783
Merge branch 'main' into perf/dlmalloc-guest-allocator
jotabulacios Jul 29, 2026
b762a6b
Fix and test the dlmalloc bump provider
jotabulacios Jul 30, 2026
8936290
Regenerate guest program lockfiles
jotabulacios Jul 30, 2026
280ccda
Merge branch 'main' into perf/dlmalloc-guest-allocator
diegokingston Jul 30, 2026
7a35864
Default the guest allocator to bump
jotabulacios Jul 31, 2026
d069024
Merge branch 'main' into perf/dlmalloc-guest-allocator
jotabulacios Jul 31, 2026
2b0e4e1
Drop the TLSF guest allocator
jotabulacios Jul 31, 2026
1fcdff3
Regenerate the ethrex-tests lockfile
jotabulacios Jul 31, 2026
c9620b2
Merge remote-tracking branch 'origin/perf/dlmalloc-guest-allocator' i…
jotabulacios Jul 31, 2026
1372b39
Regenerate the guest lockfiles left stale by the ChaCha20 removal
jotabulacios Jul 31, 2026
590c340
Merge branch 'main' into perf/dlmalloc-guest-allocator
MauroToscano Aug 1, 2026
b525057
Merge branch 'main' into perf/dlmalloc-guest-allocator
MauroToscano Aug 3, 2026
7680647
docs
jotabulacios Aug 3, 2026
d62a74f
Merge branch 'main' into perf/dlmalloc-guest-allocator
jotabulacios Aug 3, 2026
3bb45e0
Merge branch 'main' into perf/dlmalloc-guest-allocator
jotabulacios Aug 4, 2026
2b0f470
Merge branch 'main' into perf/dlmalloc-guest-allocator
diegokingston Aug 4, 2026
35b45a7
Correct the guest allocator's documented claims
jotabulacios Aug 4, 2026
7d2614b
fix(syscalls): review follow-ups for the bump allocator default
MauroToscano Aug 4, 2026
b3699df
Grow the top bump block in place on realloc
jotabulacios Aug 4, 2026
44d0ffb
Merge pull request #900 from yetanotherco/fix/bump-allocator-review-f…
jotabulacios Aug 5, 2026
d30086a
Merge origin/perf/dlmalloc-guest-allocator
jotabulacios Aug 5, 2026
6158220
Trigger the hyperfine bench on syscalls changes
jotabulacios Aug 5, 2026
ccb5d77
Test the allocator init guard in both profiles
jotabulacios Aug 5, 2026
fc855ea
Replace the bump ceiling claim with measurements
jotabulacios Aug 6, 2026
a28f1c4
Merge main and keep both new test steps in the pr_main workflow, the…
nicole-graus Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/workflows/benchmark-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ on:
- 'executor/**'
- 'bin/cli/**'
- 'tooling/ethrex-fixtures/**'
# syscalls is linked into the guest ELF this job builds, so a change confined to
# it changes the bytes proven — a guest allocator swap moves cycles on every
# workload. Without it main's baseline would stay stale until some prover file
# happened to change, and the comparison guard would suppress the table until
# then. pr_main.yaml:99 already hashes 'syscalls/**' into the guest-ELF cache
# key; the two lists must agree on what rebuilds the guest.
- 'syscalls/**'
# A baseline is only valid for the workload it measured, and the Makefile is
# what defines that workload: it names the block and pins the URL and sha256
# of the .bin this job fetches. Without it a repointed block would leave
Expand All @@ -28,6 +35,7 @@ on:
# - 'crypto/**'
# - 'executor/**'
# - 'bin/cli/**'
# - 'syscalls/**'

permissions:
contents: read
Expand Down
9 changes: 7 additions & 2 deletions .github/workflows/hyperfine.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ on:
paths:
- 'executor/src/**'
- 'executor/Cargo.toml'
# syscalls is linked into the guest ELFs this job builds and measures, so a change
# confined to it moves cycles on every benchmark. The cache key below already
# hashes it; both lists must agree on what rebuilds the guest, or a syscalls-only
# change (a guest allocator swap, say) never gets benchmarked at all.
- 'syscalls/**'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down Expand Up @@ -35,7 +40,7 @@ jobs:
id: cache
with:
path: ${{ matrix.branch }}_programs/*.elf
key: benchmarks-${{ matrix.branch }}-${{ hashFiles( 'executor/programs/bench/**', 'syscalls/src/**' ) }}
key: benchmarks-${{ matrix.branch }}-${{ hashFiles( 'executor/programs/bench/**', 'syscalls/**' ) }}
restore-keys: benchmarks-${{ matrix.branch }}-

- name: Setup Rust Environment
Expand All @@ -51,7 +56,7 @@ jobs:

- name: Export benchmark hashes
id: export-hashes
run: echo "benchmark-hashes-${{ matrix.branch }}=${{ hashFiles( 'executor/programs/bench/**', 'syscalls/src/**' ) }}" >> "$GITHUB_OUTPUT"
run: echo "benchmark-hashes-${{ matrix.branch }}=${{ hashFiles( 'executor/programs/bench/**', 'syscalls/**' ) }}" >> "$GITHUB_OUTPUT"

build-binaries:
strategy:
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/pr_main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -175,9 +175,17 @@ jobs:
- name: Run CLI tests
run: cargo test -p cli

- name: Run syscalls host tests (keccak differential vs sha3)
- name: Run syscalls host tests (allocator + keccak differential vs sha3)
run: make test-syscalls

# The dlmalloc fallback is feature-selected, so nothing else in CI compiles it and it
# can rot silently. Its tests run here too.
- name: Test the dlmalloc guest allocator fallback
run: |
cd syscalls
cargo test --features dlmalloc-alloc
cargo test --release --features dlmalloc-alloc

- name: Run ethrex-crypto host tests (hint verify-then-fallback + ecrecover)
run: make test-ethrex-crypto

Expand Down
102 changes: 14 additions & 88 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -514,8 +514,12 @@ check-ethrex-fixture-checksums:
# differential tests (the keccak sponge vs sha3 reference). Run them explicitly
# in the crate dir; wired into `test` below and run as a dedicated step
# in CI's cli-test job (pr_main.yaml).
# Release too: the allocator's `init` guard degrades to an early return once
# `debug_assert!` is compiled out, which is the configuration guests are built in,
# and the test for that path is `#[cfg(not(debug_assertions))]`.
test-syscalls:
cd syscalls && cargo test
cd syscalls && cargo test --release

# ethrex-crypto is a detached workspace (excluded from the root members), so a
# root `cargo test` never runs it. Run it explicitly, like test-syscalls.
Expand Down
Loading
Loading