feat(native): stabilize native value profile boundaries - #8720
Closed
proggeramlug wants to merge 2 commits into
Closed
feat(native): stabilize native value profile boundaries#8720proggeramlug wants to merge 2 commits into
proggeramlug wants to merge 2 commits into
Conversation
|
Warning Review limit reachedNext included review available in 12 minutes. View limit detailsLimit details: You’ve used all 8 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (24)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
proggeramlug
added a commit
that referenced
this pull request
Aug 24, 2026
…Intl worklist (#8723) Lands #8672, #8718, #8720 and #8659. #8672's blocker is resolved the way the evidence pointed. Its own `is_bound_native_method_closure_value` is gone; only main's `is_bound_native_constructor_closure_value` remains, and the branch that called it in `parent_static.rs` is deleted. That branch was unreachable under either predicate -- the `if let Some(..) = bound_native_callable_ module_and_method(..)` block directly above returns unconditionally, and both predicates require that same query to be `Some` -- so removing it is behaviour-preserving rather than a choice between two semantics. #8718 (closes #6620) routes `server.listen(path)`, `net.connect(path)` and the `{ path }` overloads through real Windows named pipes and Unix-domain sockets instead of falling back to TCP. #8720 stabilizes native value profile boundaries; #8659 completes the Intl 402 test262 worklist. One fix on top: a changelog fragment for #8718, which had neither one nor a skip-changelog label. #8719 is NOT in this batch -- it conflicts with #8672 on `lower_call/method_override.rs`, which both touch. No version bump. Co-authored-by: Ralph Küpper <ralph@skelpo.com>
Contributor
Author
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Completes the stable native value profile from RFC #6827: exact-width scalar ABI handling, source-linked POD contracts, nested POD values, and copy-safe managed/native boundaries. Ordinary TypeScript number behavior remains unchanged, while explicit native crossings now reject invalid or imprecise values.
Changes
i8,i16,i32,i64,isize,u8/byte,u16,u32,u64,usize,f32,f64,bool,handle_id) across manifest parsing, codegen, runtime checks, and documentation.i64/u64precision.source: "./module.ts#Export"POD declarations, derive layouts, and report exact manifest/source drift during compile andperry native validate.PodViewaliasing.Related issue
Closes #6827
Test plan
cargo build --release -p perry --bin perrycargo check -p perry --testscargo test -p perry-api-manifest exact_width_scalar_spellings_are_canonical_and_pod_safecargo test -p perry-hir native_profile::testscargo test -p perry-runtime scalar_guards_reject_incompatible_js_valuesi64/u64materialization, and native ABI returnscargo test -p perry-transform pod_value_parameters_preserve_the_call_copy_boundary./scripts/pre-tag-check.sh --quickperry run test-files/test_parity_native_value_profile.tstest-files/docs/src/Screenshots / output
The end-to-end parity test reports exact-width conversion results, all expected rejection flags, nested materialization, and independent POD copies across both local assignment and an ordinary function boundary.
Checklist