Skip to content

Merge train 186r: #10223 #10234 #10235 #10237 #10238 #10239 #10240 - #10247

Merged
proggeramlug merged 13 commits into
mainfrom
train186r
Sep 14, 2026
Merged

proggeramlug merged 13 commits into
mainfrom
train186r

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Merge train 186r — seven audited PRs cherry-picked onto main (9fda98d), plus one train fix and the version bump to 0.5.1564.

PR Change Closes
#10223 fix(gc): trace large arrays by allocation bounds #10215
#10234 fix(ui): macOS button and label padding #10159
#10235 fix: preserve loop lexical TDZ and retained closure cells #10051
#10237 fix(gc): report actual restore coverage inputs and slot work #9877
#10238 fix(http): preserve listen arguments in dynamic server dispatch #10137
#10239 fix: resolve awaited Worker path helpers and return unions #10236
#10240 fix(macos): emit app bundles for local UI builds #10078

Train commit:

  • fix(compile): fix(macos): emit app bundles for local UI builds #10240's emit_sandbox_sidecar takes exe_path but only the macOS arm uses it, so its PR CI failed -D warnings (cargo check -p perry --bins) on Linux with unused variable: exe_path. The non-macOS arm now consumes it.

Validation (macOS, release, one target pool; per-PR CI attributed for the full gap/gc-stress/cargo-test tiers):

  • Per-PR CI vs main's baseline logs: identical failing steps/tests/gap sets for every PR, except fix(macos): emit app bundles for local UI builds #10240's Linux warning (fixed above) and a SIGSEGV in its debug perry-runtime --lib run — fix(macos): emit app bundles for local UI builds #10240 changes no runtime code, and the local runtime suite is clean. fix(http): preserve listen arguments in dynamic server dispatch #10238's run turns test_gap_gc_http2_pending_event_callback_rooting green.
  • scripts/run_lint_gates.sh: 80/83, the same three steps that fail on main. Raw-handle (bare + --no-raise-vs), runtime-root holders (full + self-test), shape census, store-site inventory, test registration pass; check_thread_locals.py reports only main's regex/perex_owner.rs.
  • cargo test --release: perry-codegen 2031 passed; perry-hir pass; perry-runtime 3796 passed + main's release-only heap_generation::a_free_or_move_outside_every_scope_is_caught_in_debug_builds (includes the new large_array_slots and restore_coverage tests); perry-ext-http 89 passed; perry --bin perry 1113 passed; perry-ui-macos incl. native_widget_padding.
  • Integration: loop_lexical_tdz, issue_10236_worker_path_await_helper, issue_9744_static_worker_helpers, issue_6185_thread_worker_closure_guards, issue_worker_threads_cross_thread_delivery, macos_app_bundle; scripts/test-loop-lexical-tdz.mjs oracle pass.
  • Root dominance (shadow lowering corpus, CI flags incl. --seeded-violations 40 and --unrooted-allocas): pass.
  • Gap filters tdz, lexical, loop, closure: pass.

Summary by CodeRabbit

  • New Features

    • macOS UI builds now create signed .app bundles with metadata, assets, localization, and supported sidecars.
    • Worker creation supports multiple compile-time-resolved paths and runtime selection.
    • macOS buttons, text labels, and attributed-text labels now support padding and intrinsic sizing.
  • Bug Fixes

    • Improved HTTP server listen() argument handling across HTTP, HTTPS, and HTTP/2.
    • Fixed large-array garbage collection and lexical binding behavior across loop iterations.
    • Improved launching and attestation for macOS app bundles.
  • Documentation

    • Updated macOS app-bundle and padding guidance.
  • Chores

    • Version updated to 0.5.1564.

@proggeramlug
proggeramlug merged commit eb13fa1 into main Sep 14, 2026
23 of 27 checks passed
@proggeramlug
proggeramlug deleted the train186r branch September 14, 2026 03:57
@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 76d4fbf7-0ce2-40f0-8192-0dc2277f6b79

📥 Commits

Reviewing files that changed from the base of the PR and between 9fda98d and 314ce07.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (62)
  • .github/workflows/test.yml
  • CLAUDE.md
  • Cargo.toml
  • changelog.d/10223-large-array-tracing.md
  • changelog.d/10234-macos-leaf-padding.md
  • changelog.d/10235-loop-lexical-tdz.md
  • changelog.d/10236-worker-path-await-helper.md
  • changelog.d/10237-restore-coverage-metrics.md
  • changelog.d/10238-http-listen-arguments.md
  • changelog.d/10240-macos-app-bundles.md
  • crates/perry-codegen/src/expr/dyn_extern_i18n.rs
  • crates/perry-codegen/src/expr/worker_new.rs
  • crates/perry-codegen/src/stmt/mod.rs
  • crates/perry-codegen/src/stmt/prealloc_tdz_path_tests.rs
  • crates/perry-ext-http/src/server/bun_server.rs
  • crates/perry-ext-http/src/server/handle_dispatch.rs
  • crates/perry-ext-http/src/server/http2_server.rs
  • crates/perry-ext-http/src/server/https_server.rs
  • crates/perry-ext-http/src/server/server.rs
  • crates/perry-ext-http/src/server/types.rs
  • crates/perry-hir/src/dynamic_import/worker_paths.rs
  • crates/perry-hir/src/dynamic_import/worker_paths/tests.rs
  • crates/perry-hir/src/ir/stmt.rs
  • crates/perry-hir/src/lower/expr_function.rs
  • crates/perry-hir/src/lower/lowering_context.rs
  • crates/perry-hir/src/lower/stmt.rs
  • crates/perry-hir/src/lower_decl/block.rs
  • crates/perry-hir/src/lower_decl/body_stmt.rs
  • crates/perry-hir/tests/loop_lexical_tdz.rs
  • crates/perry-runtime/src/array/header_gc_slots.rs
  • crates/perry-runtime/src/gc/tests/layout_trace.rs
  • crates/perry-runtime/src/gc/tests/layout_trace/large_array_slots.rs
  • crates/perry-runtime/src/gc/tests/mod.rs
  • crates/perry-runtime/src/gc/tests/restore_coverage.rs
  • crates/perry-runtime/src/gc/verify.rs
  • crates/perry-ui-macos/Cargo.toml
  • crates/perry-ui-macos/src/drag_drop.rs
  • crates/perry-ui-macos/src/widgets/attributed_text.rs
  • crates/perry-ui-macos/src/widgets/padding.rs
  • crates/perry-ui-macos/src/widgets/padding/button.rs
  • crates/perry-ui-macos/src/widgets/text.rs
  • crates/perry-ui-macos/tests/native_widget_padding.rs
  • crates/perry-ui-macos/tests/native_widget_padding/drag_drop.rs
  • crates/perry/src/commands/attest.rs
  • crates/perry/src/commands/compile.rs
  • crates/perry/src/commands/compile/bundle_macos.rs
  • crates/perry/src/commands/compile/collect_modules.rs
  • crates/perry/src/commands/compile/collect_modules/worker.rs
  • crates/perry/src/commands/compile/link/build_and_run.rs
  • crates/perry/src/commands/compile/post_link.rs
  • crates/perry/src/commands/compile/run_pipeline.rs
  • crates/perry/src/commands/mod.rs
  • crates/perry/src/commands/run/launch.rs
  • crates/perry/src/commands/sandbox_profile.rs
  • crates/perry/src/commands/sidecar.rs
  • crates/perry/tests/issue_10236_worker_path_await_helper.rs
  • crates/perry/tests/loop_lexical_tdz.rs
  • crates/perry/tests/macos_app_bundle.rs
  • docs/src/ui/overview.md
  • docs/src/ui/styling.md
  • scripts/test-loop-lexical-tdz.mjs
  • test-files/test_gap_10051_loop_lexical_tdz.ts

📝 Walkthrough

Walkthrough

The pull request updates worker resolution, lexical TDZ allocation, HTTP listen parsing, garbage-collection tracing diagnostics, macOS application bundles, native widget padding, release metadata, documentation, and regression coverage.

Changes

Worker path resolution

Layer / File(s) Summary
Worker helper analysis
crates/perry-hir/src/dynamic_import/*
Worker helpers now support awaited values, conditional returns, URL candidates, and async functions while retaining validation limits.
Worker compilation and dispatch
crates/perry/src/commands/compile/*, crates/perry-codegen/src/expr/*
Compilation resolves multiple worker candidates and generated code dispatches by runtime filename or URL.
Worker regression coverage
crates/perry/tests/issue_10236_worker_path_await_helper.rs
Integration tests cover valid candidates, missing candidates, runtime selection, opaque calls, and recursion.

Lexical TDZ allocation

Layer / File(s) Summary
TDZ lowering and code generation
crates/perry-hir/src/lower/*, crates/perry-codegen/src/stmt/*
Nested forward-captured bindings receive fresh block-entry cells, including switch, loop, hoisted-function, and copied finally paths.
TDZ regression coverage
crates/perry-hir/tests/*, scripts/test-loop-lexical-tdz.mjs, test-files/*
Tests cover HIR allocation, retained closures, switch fallthrough, exceptions, GC modes, and optimization levels.

HTTP listen parsing

Layer / File(s) Summary
Shared listen parsing and dispatch
crates/perry-ext-http/src/server/*
HTTP, HTTPS, HTTP/2, and Bun server paths now share parsed listen values instead of fabricated managed-array storage. Tests cover borrowed values and shifted arrays.

Garbage collection

Layer / File(s) Summary
Array tracing and restore diagnostics
crates/perry-runtime/src/array/*, crates/perry-runtime/src/gc/*
Large-array tracing uses physical allocation bounds. Restore diagnostics now report separate input and traversal counters. Regression tests cover both paths.

macOS bundles and widgets

Layer / File(s) Summary
Application bundles
crates/perry/src/commands/compile/*, crates/perry/src/commands/run/*, crates/perry/src/commands/{attest.rs,sidecar.rs,sandbox_profile.rs}
macOS UI builds create signed .app bundles with resources, metadata, and external sidecars. perry run launches the bundle executable.
Native widget padding
crates/perry-ui-macos/src/*, crates/perry-ui-macos/tests/*
Buttons, text labels, and attributed-text labels support native padding with intrinsic-size, rendering, and drag-and-drop tests.

Release and documentation updates

Layer / File(s) Summary
Release metadata and documentation
Cargo.toml, CLAUDE.md, .github/workflows/test.yml, docs/src/ui/*, changelog.d/*
The workspace version, CI checks, UI documentation, and changelog fragments were updated.

Estimated code review effort: 5 (Critical) | ~90 minutes

Change: Other · Severity of issue fixed: Medium

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch train186r

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.

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