Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
c67cc2b
feat(ffi): qualify native registration lifetimes
Sep 8, 2026
2c15847
chore: number receiver registration changeset
Sep 8, 2026
6125b4c
refactor(ffi): extract native registration core
Sep 8, 2026
9e1c6e5
chore: align registration package version
Sep 8, 2026
5e562d8
test(runtime): follow consolidated Common publisher
Sep 8, 2026
df2a2cd
Cover private-domain handle reservations in tick setup
Sep 8, 2026
800dbf1
Refresh native registration lock entry after rebase
Sep 8, 2026
cb94943
perf(array): sort rooted values through an adaptive index permutation
Sep 11, 2026
4897461
docs: key adaptive sort changeset to PR 10044
Sep 11, 2026
5868e32
chore: bump version to 0.5.1533
Sep 11, 2026
42e8ab9
docs: retain reproducible sort claims in train159
Sep 11, 2026
163b034
docs: exclude held own-function changes from train159 notes
Sep 11, 2026
efca18b
fix(child_process): retain pipe EOF for late async readers
Sep 11, 2026
1071f4a
docs: key child pipe EOF changeset to PR 10042
Sep 11, 2026
c14d68e
test: rely on diff selection for the perry child-output suite
Sep 11, 2026
f2ae42e
fix(child_process): finish output collectors after spawn failure
Sep 11, 2026
7af4b1c
fix(child_process): order failed-spawn close after error delivery
Sep 11, 2026
100f31b
fix(child_process): root event receivers across listener relocation
Sep 11, 2026
500b320
test(child_process): use trusted GC header accessor in relocation fix…
Sep 11, 2026
a6cc5d2
test(child_process): publish failed native compiler diagnostics
Sep 11, 2026
1650864
test(child_process): prepare coherent native providers before bounded…
Sep 11, 2026
e32b677
fix(runtime): honor closure own function method overrides
Sep 11, 2026
426b64c
docs: key own function dispatch changeset to PR 10046
Sep 11, 2026
dba67b8
fix(codegen): install native module before named import cell initiali…
Sep 11, 2026
544a1d2
fix(runtime): reject non-callable own function method overrides
Sep 11, 2026
678a7ff
fix(runtime): preserve receiver for proxy-valued own methods
Sep 11, 2026
0ca6c1e
test(runtime): cover receiver preservation for own proxy methods
Sep 11, 2026
e9cdf93
test: prepare coherent providers for own-bind integration suite
Sep 11, 2026
0393638
test(child_process): retain shared stream relocation witness in train159
Sep 11, 2026
ed6741d
perf: reduce generic dynamic-operation and sort callback overhead
Sep 11, 2026
bce2f8c
bench: record generic sort gains against Node with full validation
Sep 11, 2026
2acf416
fix(codegen): initialize preallocated cells on every continuation
Sep 11, 2026
0019390
docs: record generator continuation preallocation fix
Sep 11, 2026
832e192
fix(codegen): materialize missing cells in reused boxed declarations
Sep 11, 2026
5075ff4
test(codegen): isolate existing loop TDZ gap from generator controls
Sep 11, 2026
8d7a380
perf(json): return sparse cache hits before runtime rooting
Sep 11, 2026
cd7541b
test(json): correct growth helper and isolate existing lazy getter fa…
Sep 11, 2026
5ca2c37
test(json): avoid ambiguous hook helper in GC holder audit
Sep 11, 2026
7c09d27
test(json): keep cached-read witness outside raw TLS custody
Sep 11, 2026
1ddc584
perf(json): read materialized dense slots before opening roots
Sep 11, 2026
e99ebad
test(json): scope materialized descriptor handle reads
Sep 11, 2026
0fc8c5c
perf(json): outline cached reads from shared array dispatch
Sep 11, 2026
25544ed
bench(json): record outlined read gains and stringify tradeoffs
Sep 11, 2026
97dd1ee
chore: prepare cached JSON reads for PR 10050
Sep 11, 2026
ff54496
test(gc): keep packed property gets in moving-root audit coverage
Sep 11, 2026
2ced268
perf: resolve full property caches only after compact hits fail
Sep 11, 2026
5d1fae7
bench: record final cache-load comparison and Node results
Sep 11, 2026
f070db1
fix(audit): preserve cold-call exception edges and complete CI file s…
Sep 11, 2026
d46b31e
fix(runtime): return rooted array after indexed setter callback
Sep 11, 2026
ae0304b
test(codegen): isolate inherited block-function hoist gap
Sep 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
33 changes: 25 additions & 8 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,21 +110,25 @@ jobs:
persist-credentials: false

- name: Self-test the planner
run: python3 scripts/ci_plan.py --self-test
run: |
python3 scripts/ci_plan.py --self-test
python3 scripts/ci_pr_files.py --self-test

- name: List changed files (pull_request only)
if: github.event_name == 'pull_request'
env:
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
set -euo pipefail
# An API failure aborts here (set -e), which fails `plan` and with it
# the gate. It must NOT fall through to an empty list: ci_plan.py
# treats an empty listing as `core` for the same reason, but a
# loud failure is better than a silent full run.
gh api "repos/$REPOSITORY/pulls/$PR_NUMBER/files" --paginate --jq '.[].filename' > changed-files.txt
python3 scripts/ci_pr_files.py "$REPOSITORY" "$PR_NUMBER" \
--expected-head "$PR_HEAD_SHA" > changed-files.txt
echo "Changed files ($(wc -l < changed-files.txt)):"
sed 's/^/ /' changed-files.txt

Expand Down Expand Up @@ -242,6 +246,7 @@ jobs:
if: ${{ !cancelled() }}
run: |
python3 scripts/ci_plan.py --self-test
python3 scripts/ci_pr_files.py --self-test
python3 scripts/ci_cargo_test_shard.py --self-test
python3 scripts/ci_cargo_test_shard.py --package perry \
--total-shards "${{ fromJSON(needs.plan.outputs.plan).cargo_test_perry.total }}" \
Expand Down Expand Up @@ -1052,8 +1057,11 @@ jobs:
# test builds accumulated in target/debug.
CARGO_PROFILE_TEST_DEBUG: "0"
CARGO_PROFILE_DEV_DEBUG: "0"
# For `gh pr view` (PR changed-file list → affected-crate scope).
# Complete, expected-head-pinned PR changed-file list for crate scope.
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
(
while sleep 60; do
Expand All @@ -1070,8 +1078,8 @@ jobs:
# workflow_dispatch run the FULL workspace as the safety net. See
# scripts/ci_test_scope.py for the rules.
if [ "${{ fromJSON(needs.plan.outputs.plan).cargo_test_scope }}" = "pr" ]; then
changed_files="$(gh pr view "${{ github.event.pull_request.number }}" \
--json files --jq '.files[].path')"
changed_files="$(python3 scripts/ci_pr_files.py "$REPOSITORY" "$PR_NUMBER" \
--expected-head "$PR_HEAD_SHA")"
echo "Changed files in PR:"; printf '%s\n' "$changed_files"
scope="$(printf '%s\n' "$changed_files" | python3 scripts/ci_test_scope.py)"
else
Expand Down Expand Up @@ -1393,10 +1401,13 @@ jobs:
id: scope
env:
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
python3 scripts/ci_e2e_scope.py --self-test
changed_files="$(gh pr view "${{ github.event.pull_request.number }}" \
--json files --jq '.files[].path')"
changed_files="$(python3 scripts/ci_pr_files.py "$REPOSITORY" "$PR_NUMBER" \
--expected-head "$PR_HEAD_SHA")"
suites="$(printf '%s\n' "$changed_files" | python3 scripts/ci_e2e_scope.py)"
# #7708/#8266: selected suites skip held-out tests, while a separate
# scope-independent step below asserts every held-out test still
Expand Down Expand Up @@ -1457,6 +1468,12 @@ jobs:
if: steps.scope.outputs.rust_work == 'true'
run: rm -rf target/perry-auto-* target/debug/libperry_ext_*.a 2>/dev/null || true

- name: Install the pinned integration-test Node oracle
if: steps.scope.outputs.suites != ''
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version-file: .node-version

- name: Run scoped integration suites
if: steps.scope.outputs.suites != ''
env:
Expand All @@ -1480,7 +1497,7 @@ jobs:
# RFC-2945 abort guards that a JS throw trips — the opposite of the
# shipped semantics. See the longer note in `cargo-test`.
if printf '%s\n' "$SUITES" | grep -qE '^(perry|perry-stdlib) '; then
if printf '%s\n' "$SUITES" | grep -qE '^perry (bun_text_modules|import_meta_require_value) '; then
if printf '%s\n' "$SUITES" | grep -qE '^perry (bun_text_modules|import_meta_require_value|child_output_late_iterator|async_resource_own_bind) '; then
# Prepare all require providers in one graph, outside the fixture's
# timeout. A second perry-dev graph inside cargo test exceeded its
# ten-minute bound on fresh runners (#9989/#9990).
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

Perry is a native TypeScript compiler written in Rust that compiles TypeScript source code directly to native executables. It uses SWC for TypeScript parsing and LLVM for code generation.

**Current Version:** 0.5.1532
**Current Version:** 0.5.1533


## TypeScript Parity Status
Expand Down
Loading
Loading