Skip to content

chore: bump the pinned Perry to 23a211383 (lands #8948 — Linux throw/catch across modules) - #22

Merged
proggeramlug merged 1 commit into
mainfrom
chore/bump-perry-pin-8948
Aug 28, 2026
Merged

chore: bump the pinned Perry to 23a211383 (lands #8948 — Linux throw/catch across modules)#22
proggeramlug merged 1 commit into
mainfrom
chore/bump-perry-pin-8948

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Why

Two Linux-only Perry defects sat behind #8546 once the class-registry fix landed; both are on Perry main now:

Perry PR defect effect
#8942 promoted string constants named .str.N per module → strong GLOBAL duplicates across split modules under GNU ld (on macOS ld64 silently merged different modules' strings — a latent miscompile); Perry's Linux dylib link lacked -lm the fixture links
#8948 gc_map.rs's compact stack-map rewrite swallowed .hidden/.weak on DW.ref.perry_eh_personality; GNU ld kept one COMDAT group and dropped the other objects' references → 59/60 CIEs with junk personality pointers → every caught throw in a multi-module Linux program faulted in _Unwind_RaiseException the fixture initialises and serves

perry-main.lock: 50401330823a211383. Toolchain parity (nightly-2026-08-20) and rusqlite 0.39 unchanged.

Verification — Linux (Ubuntu 24.04, 16 cores, Perry built from 23a211383, production link flags, clean object cache)

Fixture compile 263 s. Harness as in #18/#19 (COOP_BENCH_REQUEST_PATH=/api/benchmark COOP_BENCH_EXPECT_BODY=checksum COOP_BENCH_EXECUTION_MODE=in_process):

run result
1 app 200
3 apps, preload_concurrency=1 200 / 200 / 200
3 apps, preload_concurrency=4 200 / 200 / 200
2 apps, PERRY_GC_SCHEDULE_SEED=12345 PERRY_GC_SCHEDULE_RATE=0.5 PERRY_GC_PROTECT_FROMSPACE=1 200 / 200, no fault

Every body: {"runtime":"next","iterations":100,"checksum":3726872593}. This is the first time the Next fixture has served on Linux at all.

Verification — macOS

Same pin, providers rebuilt with the ext-wrapper step, fixture compile 557 s (M1, host shared with other work):

run result
1 app 200
3 apps, preload_concurrency=1 200 / 200 / 200
3 apps, preload_concurrency=4 200 / 200 / 200
2 apps, from-space instrumented (seed 12345, rate 0.5) 200 / 200, no fault

Both platforms now agree, which closes perry#8546 end to end.

https://claude.ai/code/session_01UZJbhb2FTuakurTHPAKQgd

…catch across modules)

perry-main.lock: 504013308 -> 23a211383 (2026-08-28). Version string still
0.5.1519. In the range:

- #8942: module-unique names for promoted string constants (the ELF
  `multiple definition of .str.N` collision between split modules, and a
  latent ld64 merge of different modules' strings on macOS) and -lm/-lpthread
  /-ldl on Perry's own Linux dylib link.
- #8948: the compact stack-map rewrite kept the `.hidden`/`.weak` directives
  for `DW.ref.perry_eh_personality`; without them GNU ld dropped every
  object's personality reference but the first and any caught `throw` in a
  multi-module Linux program called a junk personality pointer.

With this pin the Next fixture compiles, links, loads and serves on Linux;
the three-app in_process table reads 200/200/200 on both platforms.

Claude-Session: https://claude.ai/code/session_01UZJbhb2FTuakurTHPAKQgd
@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • perry-main.lock is excluded by !**/*.lock

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: e900814f-7f92-4f2e-9b4f-8a2b12dda0f3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@proggeramlug
proggeramlug merged commit efa8ada into main Aug 28, 2026
3 checks passed
@proggeramlug
proggeramlug deleted the chore/bump-perry-pin-8948 branch August 28, 2026 13:18
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