From 6b60b5063187c14be634c774887188412c19a4c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Sat, 19 Sep 2026 12:47:45 +0200 Subject: [PATCH 1/3] ci: register the two unclassified perry-codegen suites `e2e-scoped` has been red on every PR since merge train 218 (v0.5.1596), failing at "Compute e2e suite scope" in ~16s: ci_e2e_scope: these crates/perry-codegen/tests/*.rs suites are in neither SOURCE_SUITE_MAP nor SUITE_EXCLUSIONS: error_subclass_field_init, typed_collection_receiver_guard Both suites arrived in 6925754a7d (#10443/#10446, train 218) and nobody classified them, which is exactly the condition #7708 added this assertion for. The failure is content-independent, so it reddens PRs that cannot possibly have caused it -- #10721 (a Python script) and #10722 (a .ts fixture) both carry it. Mapped rather than excluded: both are cheap in-process suites of the shape SOURCE_SUITE_MAP exists for, and both passed when train 218 ran them as diff-named suites (2 and 3 tests, 0.01s each). Excluding them would have hidden working coverage; SUITE_EXCLUSIONS is for a named failing test with an issue number, which neither has. Verified discriminating, not merely present: with either entry deleted `--self-test` exits 1 naming the suite, and exits 0 with both. --- scripts/ci_e2e_scope.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/ci_e2e_scope.py b/scripts/ci_e2e_scope.py index 419f23dbe0..ddafab015c 100755 --- a/scripts/ci_e2e_scope.py +++ b/scripts/ci_e2e_scope.py @@ -120,6 +120,7 @@ "class_keys_gc_root", "constructor_recursion", "destructure_call_location", + "error_subclass_field_init", "export_function_alias_identity", "generated_inline_budget", "i64_spec_ternary_recursion", @@ -133,6 +134,7 @@ "padding_single_evaluation", "shadow_slot_hygiene", "size_function_attributes", + "typed_collection_receiver_guard", "typed_feedback", # #7506/#7245: held out until its one failing test was triaged. The # composition it guards had drifted from three named callees to three From 742dd257a4d4d737d34cc55e6f5be5969e0c0820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Sat, 19 Sep 2026 12:48:26 +0200 Subject: [PATCH 2/3] docs(changelog): fragment for #10723 --- .../10723-e2e-scope-unregistered-suites.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 changelog.d/10723-e2e-scope-unregistered-suites.md diff --git a/changelog.d/10723-e2e-scope-unregistered-suites.md b/changelog.d/10723-e2e-scope-unregistered-suites.md new file mode 100644 index 0000000000..89aac9790c --- /dev/null +++ b/changelog.d/10723-e2e-scope-unregistered-suites.md @@ -0,0 +1,18 @@ +### Fixed + +- **CI: `e2e-scoped` was red on every PR since train 218.** `scripts/ci_e2e_scope.py` + asserts that every `crates/perry-codegen/tests/*.rs` suite is either in + `SOURCE_SUITE_MAP` or in `SUITE_EXCLUSIONS` (the property #7708 added, so that a + suite nobody classified fails instead of being silently invisible to per-PR CI). + Two suites arrived unclassified in `6925754a7d` (#10443/#10446) and the step has + failed in ~16s on every PR since, regardless of content — including PRs whose diff + is a single Python script or `.ts` fixture. + + Both are now mapped rather than excluded: `SUITE_EXCLUSIONS` is for a suite held + out with a named failing test and an issue number, and these have neither. They + are the cheap in-process shape the map exists for, and both passed when train 218 + ran them as diff-named suites (`error_subclass_field_init` 2 tests, + `typed_collection_receiver_guard` 3 tests, 0.01s each). + + Verified discriminating rather than merely green: deleting either entry makes + `--self-test` exit 1 naming the suite, and restoring it returns exit 0. From bd49ad4daa01dcdffe1279410b2369517fda3a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Sat, 19 Sep 2026 14:07:24 +0200 Subject: [PATCH 3/3] chore: release v0.5.1600 --- CLAUDE.md | 2 +- Cargo.lock | 160 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 2 +- 3 files changed, 82 insertions(+), 82 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 4cac7805fc..210632e697 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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.1599 +**Current Version:** 0.5.1600 ## TypeScript Parity Status diff --git a/Cargo.lock b/Cargo.lock index 26751c66d7..49239ff1af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5623,7 +5623,7 @@ checksum = "1473d470930ed48574515a25df34900f3af89c6fa422d903e019121312a9f13e" [[package]] name = "perry" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "base64 0.22.1", @@ -5687,7 +5687,7 @@ dependencies = [ [[package]] name = "perry-api-manifest" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-dispatch", "serde", @@ -5695,7 +5695,7 @@ dependencies = [ [[package]] name = "perry-audio-miniaudio" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "cc", "libc", @@ -5704,7 +5704,7 @@ dependencies = [ [[package]] name = "perry-codegen" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "aho-corasick", "anyhow", @@ -5721,7 +5721,7 @@ dependencies = [ [[package]] name = "perry-codegen-arkts" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "perry-hir", @@ -5729,7 +5729,7 @@ dependencies = [ [[package]] name = "perry-codegen-glance" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "perry-hir", @@ -5737,7 +5737,7 @@ dependencies = [ [[package]] name = "perry-codegen-js" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "perry-dispatch", @@ -5746,7 +5746,7 @@ dependencies = [ [[package]] name = "perry-codegen-swiftui" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "perry-hir", @@ -5754,7 +5754,7 @@ dependencies = [ [[package]] name = "perry-codegen-wasm" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "base64 0.22.1", @@ -5766,7 +5766,7 @@ dependencies = [ [[package]] name = "perry-codegen-wear-tiles" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "perry-hir", @@ -5774,7 +5774,7 @@ dependencies = [ [[package]] name = "perry-container-compose" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "async-trait", "clap", @@ -5798,14 +5798,14 @@ dependencies = [ [[package]] name = "perry-container-e2e" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", ] [[package]] name = "perry-diagnostics" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "serde", "serde_json", @@ -5813,7 +5813,7 @@ dependencies = [ [[package]] name = "perry-dispatch" -version = "0.5.1599" +version = "0.5.1600" [[package]] name = "perry-doc-fixture-my-bindings" @@ -5824,7 +5824,7 @@ dependencies = [ [[package]] name = "perry-doc-tests" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "clap", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "perry-ext-ads" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "block2", "objc2", @@ -5849,7 +5849,7 @@ dependencies = [ [[package]] name = "perry-ext-argon2" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "argon2", "perry-ffi", @@ -5858,7 +5858,7 @@ dependencies = [ [[package]] name = "perry-ext-axios" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "reqwest", @@ -5867,7 +5867,7 @@ dependencies = [ [[package]] name = "perry-ext-bcrypt" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "bcrypt", "perry-ffi", @@ -5875,7 +5875,7 @@ dependencies = [ [[package]] name = "perry-ext-better-sqlite3" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "rusqlite", @@ -5883,7 +5883,7 @@ dependencies = [ [[package]] name = "perry-ext-cheerio" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "scraper", @@ -5891,7 +5891,7 @@ dependencies = [ [[package]] name = "perry-ext-commander" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "perry-runtime", @@ -5899,7 +5899,7 @@ dependencies = [ [[package]] name = "perry-ext-cron" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "chrono", "cron", @@ -5909,7 +5909,7 @@ dependencies = [ [[package]] name = "perry-ext-dayjs" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "chrono", "perry-ffi", @@ -5917,7 +5917,7 @@ dependencies = [ [[package]] name = "perry-ext-decimal" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "rust_decimal", @@ -5925,7 +5925,7 @@ dependencies = [ [[package]] name = "perry-ext-dotenv" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "serde_json", @@ -5933,7 +5933,7 @@ dependencies = [ [[package]] name = "perry-ext-ethers" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "rand 0.10.2", @@ -5941,7 +5941,7 @@ dependencies = [ [[package]] name = "perry-ext-events" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "perry-runtime", @@ -5949,14 +5949,14 @@ dependencies = [ [[package]] name = "perry-ext-exponential-backoff" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", ] [[package]] name = "perry-ext-fastify" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "bytes", "http-body-util", @@ -5973,7 +5973,7 @@ dependencies = [ [[package]] name = "perry-ext-fetch" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "bytes", "lazy_static", @@ -5986,7 +5986,7 @@ dependencies = [ [[package]] name = "perry-ext-http" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "base64 0.22.1", "bytes", @@ -6018,7 +6018,7 @@ dependencies = [ [[package]] name = "perry-ext-ioredis" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "lazy_static", "perry-ffi", @@ -6028,7 +6028,7 @@ dependencies = [ [[package]] name = "perry-ext-lru-cache" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "lru", "perry-ffi", @@ -6037,7 +6037,7 @@ dependencies = [ [[package]] name = "perry-ext-moment" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "chrono", "perry-ffi", @@ -6045,7 +6045,7 @@ dependencies = [ [[package]] name = "perry-ext-mongodb" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "bson", "futures-util", @@ -6057,7 +6057,7 @@ dependencies = [ [[package]] name = "perry-ext-mysql2" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "chrono", "perry-ffi", @@ -6069,7 +6069,7 @@ dependencies = [ [[package]] name = "perry-ext-nanoid" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "nanoid", "perry-ffi", @@ -6078,7 +6078,7 @@ dependencies = [ [[package]] name = "perry-ext-net" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "bytes", "perry-ffi", @@ -6093,7 +6093,7 @@ dependencies = [ [[package]] name = "perry-ext-node-forge" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "const-oid 0.10.2", "der 0.8.2", @@ -6112,7 +6112,7 @@ dependencies = [ [[package]] name = "perry-ext-nodemailer" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "lettre", "perry-ffi", @@ -6122,7 +6122,7 @@ dependencies = [ [[package]] name = "perry-ext-parcel-watcher" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "notify", "perry-ffi", @@ -6134,7 +6134,7 @@ dependencies = [ [[package]] name = "perry-ext-pdf" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "printpdf", @@ -6142,7 +6142,7 @@ dependencies = [ [[package]] name = "perry-ext-pg" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "sqlx", @@ -6151,7 +6151,7 @@ dependencies = [ [[package]] name = "perry-ext-qs" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "perry-runtime", @@ -6160,7 +6160,7 @@ dependencies = [ [[package]] name = "perry-ext-ratelimit" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "governor", "perry-ffi", @@ -6168,7 +6168,7 @@ dependencies = [ [[package]] name = "perry-ext-sharp" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "fast_image_resize", "image", @@ -6179,7 +6179,7 @@ dependencies = [ [[package]] name = "perry-ext-streams" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "lazy_static", "perry-ffi", @@ -6188,7 +6188,7 @@ dependencies = [ [[package]] name = "perry-ext-typescript" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "perry-ffi", @@ -6208,7 +6208,7 @@ dependencies = [ [[package]] name = "perry-ext-undici" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "perry-runtime", @@ -6217,7 +6217,7 @@ dependencies = [ [[package]] name = "perry-ext-uuid" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "uuid", @@ -6225,7 +6225,7 @@ dependencies = [ [[package]] name = "perry-ext-validator" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-ffi", "perry-validation", @@ -6234,7 +6234,7 @@ dependencies = [ [[package]] name = "perry-ext-ws" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "futures-util", "lazy_static", @@ -6247,7 +6247,7 @@ dependencies = [ [[package]] name = "perry-ext-zlib" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "brotli", "flate2", @@ -6257,7 +6257,7 @@ dependencies = [ [[package]] name = "perry-ffi" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "dashmap 6.2.1", "once_cell", @@ -6267,7 +6267,7 @@ dependencies = [ [[package]] name = "perry-hir" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "perry-api-manifest", @@ -6287,11 +6287,11 @@ dependencies = [ [[package]] name = "perry-native-registration" -version = "0.5.1599" +version = "0.5.1600" [[package]] name = "perry-parser" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "perry-diagnostics", @@ -6304,7 +6304,7 @@ dependencies = [ [[package]] name = "perry-perex" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perex", "regex", @@ -6312,7 +6312,7 @@ dependencies = [ [[package]] name = "perry-runtime" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "ahash", "base64 0.22.1", @@ -6370,14 +6370,14 @@ dependencies = [ [[package]] name = "perry-runtime-static" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-runtime", ] [[package]] name = "perry-stdlib" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "aes 0.8.4", "aes 0.9.1", @@ -6465,21 +6465,21 @@ dependencies = [ [[package]] name = "perry-stdlib-static" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-stdlib", ] [[package]] name = "perry-transform" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "perry-hir", ] [[package]] name = "perry-ui" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "dirs", "perry-ffi", @@ -6489,7 +6489,7 @@ dependencies = [ [[package]] name = "perry-ui-android" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "base64 0.22.1", "jni", @@ -6504,7 +6504,7 @@ dependencies = [ [[package]] name = "perry-ui-geisterhand" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "rand 0.10.2", "serde", @@ -6514,7 +6514,7 @@ dependencies = [ [[package]] name = "perry-ui-gtk4" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "base64 0.22.1", "cairo-rs 0.22.9", @@ -6537,7 +6537,7 @@ dependencies = [ [[package]] name = "perry-ui-ios" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "base64 0.22.1", "block2", @@ -6554,7 +6554,7 @@ dependencies = [ [[package]] name = "perry-ui-macos" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "base64 0.22.1", "block2", @@ -6571,7 +6571,7 @@ dependencies = [ [[package]] name = "perry-ui-model" -version = "0.5.1599" +version = "0.5.1600" [[package]] name = "perry-ui-test" @@ -6582,11 +6582,11 @@ dependencies = [ [[package]] name = "perry-ui-testkit" -version = "0.5.1599" +version = "0.5.1600" [[package]] name = "perry-ui-tvos" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "base64 0.22.1", "block2", @@ -6603,7 +6603,7 @@ dependencies = [ [[package]] name = "perry-ui-visionos" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "base64 0.22.1", "block2", @@ -6620,7 +6620,7 @@ dependencies = [ [[package]] name = "perry-ui-watchos" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "block2", "libc", @@ -6634,7 +6634,7 @@ dependencies = [ [[package]] name = "perry-ui-windows" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "base64 0.22.1", "libc", @@ -6653,7 +6653,7 @@ dependencies = [ [[package]] name = "perry-ui-windows-winui" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "base64 0.22.1", "libc", @@ -6666,7 +6666,7 @@ dependencies = [ [[package]] name = "perry-updater" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "anyhow", "base64 0.22.1", @@ -6681,7 +6681,7 @@ dependencies = [ [[package]] name = "perry-validation" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "idna", "regex", @@ -6691,7 +6691,7 @@ dependencies = [ [[package]] name = "perry-wasm-host" -version = "0.5.1599" +version = "0.5.1600" dependencies = [ "wasmi", ] diff --git a/Cargo.toml b/Cargo.toml index 8f4a5a3a2b..19bc546af8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -337,7 +337,7 @@ codegen-units = 1 codegen-units = 1 [workspace.package] -version = "0.5.1599" +version = "0.5.1600" edition = "2021" license = "MIT" repository = "https://github.com/PerryTS/perry"