Skip to content

fix(runtime): permit catchable throw bridges to unwind - #8869

Merged
proggeramlug merged 1 commit into
mainfrom
fix/release-r20-throw-abi
Aug 26, 2026
Merged

fix(runtime): permit catchable throw bridges to unwind#8869
proggeramlug merged 1 commit into
mainfrom
fix/release-r20-throw-abi

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Release evidence

Release-candidate CI run 32988311861 reached issue_5253_construct_reference_source_location after the #5247 value-call tests passed. All four #5253 cases produced empty stdout because their child binaries aborted before the JavaScript catch handlers ran. Both failing runtime entry points were plain extern "C" even though they call js_throw; this applies the same direct-boundary fix validated by the preceding #5247 test.

Validation

  • cargo fmt --all -- --check
  • git diff --check
  • compile-time extern "C-unwind" ABI guards

Release blocker for v0.5.1519.

Summary by CodeRabbit

  • Bug Fixes
    • Improved error handling so constructor and unresolved-global errors can be caught reliably across runtime boundaries.
    • Enhanced test failure diagnostics with process status and captured output when compiled fixtures do not exit successfully.

@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9c94b121-20f8-4596-baec-8d0b722b228e

📥 Commits

Reviewing files that changed from the base of the PR and between 84ff806 and 746816f.

📒 Files selected for processing (3)
  • changelog.d/8869-release-throw-abi.md
  • crates/perry-runtime/src/error.rs
  • crates/perry/tests/issue_5253_construct_reference_source_location.rs

Included review availability: Your plan provides up to 8 included reviews per hour; 7 remain after this review.


📝 Walkthrough

Walkthrough

The runtime marks catchable unresolved-global and constructor errors as extern "C-unwind". Compile-time assertions verify both signatures. Fixture failures now include exit and process output diagnostics. A changelog entry documents the ABI behavior.

Changes

Runtime throw ABI

Layer / File(s) Summary
Enable unwinding across runtime boundaries
crates/perry-runtime/src/error.rs
The unresolved-global and not-a-constructor helpers use extern "C-unwind". Compile-time function-pointer assertions verify both signatures.
Validate fixture exits and document the change
crates/perry/tests/issue_5253_construct_reference_source_location.rs, changelog.d/8869-release-throw-abi.md
Fixture execution asserts successful exit status and reports status, stdout, and stderr on failure. The changelog records the ABI behavior.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 74681

The change allows specified runtime throw bridges to unwind catchably and strengthens regression-test failure reporting. No actionable merge-blocking risk remains beyond normal checks and review.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description explains the runtime fix, affected functions, regression evidence, validation steps, and release impact. It does not follow the required template because it omits the Changes, Related … Add the missing template sections. Include concrete changes under Changes, state an issue reference or "n/a" under Related issue, list verification commands and test results under Test plan, and complete the required Checklist.
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main runtime change: allowing catchable throw bridges to unwind.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains the runtime fix, affected functions, regression evidence, validation steps, and release impact. It does not follow the required template because it omits the Changes, Related issue, Test plan, and Checklist sections.

Full details: Docstring Coverage

Explanation

Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/release-r20-throw-abi

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 bcc1448 into main Aug 26, 2026
48 of 49 checks passed
@proggeramlug
proggeramlug deleted the fix/release-r20-throw-abi branch August 26, 2026 19:48
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