From cd38de9f69fc00bbb8e5fcba4086860b4c03745a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Thu, 6 Aug 2026 23:36:15 +0200 Subject: [PATCH 1/4] perf(hir): type a for-initializer declaration instead of registering it as Any MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A declaration in a `for` initializer registered `Type::Any` — the annotation was discarded and the initializer was never inferred from. The cost is not the loop variable but everything computed from it: `base + j` infers Any once `j` is Any, so an object literal in the loop body mints an anon-shape class whose fields are all Any. Any is pointer-bearing, so `{v: number, w: number}` was handed to the collector as TWO TRACED POINTER SLOTS with an empty raw-f64 mask — no POINTER_FREE, no raw-f64 store path, and #7532's declare-at-allocation gate refused the shape. For-init declarators now route through the same `infer_decl_type` the ordinary let/const path uses. `var` is left alone: it is function-scoped and hoisted, so its assignment story differs. churn_alloc 1.60s -> 1.33s (1.20x), unmodified source. --- crates/perry-hir/src/destructuring/mod.rs | 1 + .../perry-hir/src/destructuring/var_decl.rs | 5 ++++ .../src/destructuring/var_decl/type_infer.rs | 25 +++++++++++++++++++ crates/perry-hir/src/lower_decl/body_stmt.rs | 16 +++++++++--- 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/crates/perry-hir/src/destructuring/mod.rs b/crates/perry-hir/src/destructuring/mod.rs index 75838bab52..550a15e43b 100644 --- a/crates/perry-hir/src/destructuring/mod.rs +++ b/crates/perry-hir/src/destructuring/mod.rs @@ -36,5 +36,6 @@ pub(crate) use assignment_stmt::{ }; pub(crate) use helpers::{ast_expr_contains_function_expr, rewrite_use_state_tuple}; pub(crate) use pattern_binding::lower_pattern_binding; +pub(crate) use var_decl::for_init_decl_type; pub(crate) use var_decl::lower_var_decl_with_destructuring; pub(crate) use var_decl_sources::resolvable_native_module_for_spec; diff --git a/crates/perry-hir/src/destructuring/var_decl.rs b/crates/perry-hir/src/destructuring/var_decl.rs index f29931ebcf..b16f38beef 100644 --- a/crates/perry-hir/src/destructuring/var_decl.rs +++ b/crates/perry-hir/src/destructuring/var_decl.rs @@ -9,6 +9,11 @@ mod binding_guards; mod native_fetch; mod native_new; pub(crate) mod type_infer; +/// #7547: for-init declarators reuse the ordinary declaration's type +/// computation instead of hardcoding `Type::Any`. #7544 fixed the +/// module-init path; this is the function-body path in +/// `lower_decl/body_stmt.rs`, which that change did not reach. +pub(crate) use type_infer::for_init_decl_type; use alias_tracking::track_decl_aliases; use binding_guards::apply_binding_guards; diff --git a/crates/perry-hir/src/destructuring/var_decl/type_infer.rs b/crates/perry-hir/src/destructuring/var_decl/type_infer.rs index 1f7e2dbd34..793010cb25 100644 --- a/crates/perry-hir/src/destructuring/var_decl/type_infer.rs +++ b/crates/perry-hir/src/destructuring/var_decl/type_infer.rs @@ -8,6 +8,31 @@ use swc_ecma_ast as ast; use crate::lower::LoweringContext; use crate::lower_types::{extract_ts_type, infer_type_from_expr}; +/// #7547: the type of a declaration in a **`for` initializer** +/// (`for (let j = 0; …)`). +/// +/// Every for-init declarator used to register `Type::Any` — the annotation was +/// discarded and the initializer was never inferred from. The cost is not the +/// loop variable itself but everything computed from it: `base + j` infers +/// `Any` once `j` is `Any`, so an object literal in the loop body mints an +/// anon-shape class whose fields are all `Any`. `Any` is pointer-bearing, so +/// `{v: number, w: number}` was handed to the collector as **two traced +/// pointer slots** with an empty raw-f64 mask — no `POINTER_FREE`, no raw-f64 +/// store path, and #7532's declare-at-allocation gate refused the shape. +/// Moving the identical annotation out of the for-initializer was worth 1.18× +/// on `churn_alloc`, which is what this recovers without the edit. +/// +/// Returns `Type::Any` for anything that is not a plain identifier binding; +/// destructuring for-init declarators are handled by the pattern path and +/// never reach here. +pub(crate) fn for_init_decl_type(ctx: &mut LoweringContext, decl: &ast::VarDeclarator) -> Type { + let ast::Pat::Ident(ident) = &decl.name else { + return Type::Any; + }; + let name = ident.id.sym.to_string(); + infer_decl_type(ctx, decl, ident, &name) +} + /// Computes the declared/inferred `Type` for the binding and records the /// `plain_object_locals` tag where applicable. Mirrors the original inline /// block verbatim. diff --git a/crates/perry-hir/src/lower_decl/body_stmt.rs b/crates/perry-hir/src/lower_decl/body_stmt.rs index 6644e34bee..9701f5ac8a 100644 --- a/crates/perry-hir/src/lower_decl/body_stmt.rs +++ b/crates/perry-hir/src/lower_decl/body_stmt.rs @@ -707,11 +707,14 @@ pub fn lower_body_stmt(ctx: &mut LoweringContext, stmt: &ast::Stmt) -> Result Result Date: Fri, 7 Aug 2026 00:06:15 +0200 Subject: [PATCH 2/4] docs(changelog): #7547 for-init local types --- changelog.d/7547-for-init-local-types.md | 86 ++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 changelog.d/7547-for-init-local-types.md diff --git a/changelog.d/7547-for-init-local-types.md b/changelog.d/7547-for-init-local-types.md new file mode 100644 index 0000000000..e22ca72bb4 --- /dev/null +++ b/changelog.d/7547-for-init-local-types.md @@ -0,0 +1,86 @@ +**A declaration in a `for` initializer is now typed like any other `let`/`const`, +instead of registering as `Any` (#7547).** + +`ctx.define_local(name, Type::Any)` at the for-init declarator sites discarded +both the annotation and the initializer. The cost was never the loop variable +itself — it was everything computed from it. `base + j` infers `Any` the moment +`j` is `Any`, so an object literal in the loop body minted an `__AnonShape_…` +class whose fields were all `Any`. + +`Any` is pointer-bearing (`typed_shape::type_is_pointer_bearing`), and that is +where it stops being a missed optimisation: + +- the raw-f64 mask came out **empty** and the pointer mask **full**, so a + `{v: number, w: number}` literal was handed to the collector as two traced + pointer slots — `GC_LAYOUT_SIDE_MASK`, never `POINTER_FREE`; +- there was no raw-f64 store path for the #5093 class-field fast path to engage; +- #7532's declare-at-allocation gate refused the shape, because it requires an + empty pointer mask. + +For-init declarators now route through the same `infer_decl_type` the ordinary +declaration path uses (annotation first, else the initializer's inferred type, +else the tsgo-resolved fallback). **`var` is deliberately left alone**: it is +function-scoped and hoisted, so it can be written before its declaration runs +and its assignment story is not the same one. + +## Measured + +Only three benchmarks compile to different code at all; the rest are +**byte-identical generated objects** across the two arms, so their ±2% is noise +by construction rather than by assertion. + +| bench | code | speedup | +|---|---|--:| +| `churn_alloc` | changed | **1.197×** | +| `churn` | changed | **1.122×** | +| `churn_read` | changed | 1.000× | +| `push_num`, `push_cls`, `push_cls_read`, `deeplist`, `tree` | identical | — | + +The mechanism is directly visible in the collector trace, not inferred: +`churn_alloc`'s `pointer_slots_read` falls **376,504 → 188,456** while +`pointer_free_slots_skipped` rises **0 → 188,048`. The literal's payload is now +skipped instead of scanned. Cycles (105), bytes copied (0.0036 GB), promoted +bytes (64) and peak RSS (24.2 MB) are unchanged. + +## GC ratchet + +All 12 probes: `correctness` identical to the baseline arm. Every metric that +moved beyond ±5% moved in the improving direction, except one `wall_ms` on a +host at load 33: + +| probe | metric | change | +|---|---|--:| +| `03_cross_gen_writes` | `heap_used_bytes` | −48.9% | +| `04_dead_after_deep_stack` | `copied_bytes` | −93.3% | +| `04_dead_after_deep_stack` | `rss_bytes` | −18.6% | +| `03_cross_gen_writes` | `rss_bytes` | −17.1% | + +**One thing the ratchet owner should look at rather than bank.** +`03_cross_gen_writes` now promotes **zero** bytes (was 210,700 / 4,752 objects), +and a probe with no old generation has fewer old→young edges to remember. The +probe's *mutator* subject is provably still live — `remembered_set_insert_attempts` +is **491,520 on both arms, identical** — and its correctness assertion still +passes, so this is not a silently vacuous gate. But `remembered_set_marking` +drops 1,344 → 866, so its coverage of the remembered set is genuinely reduced, +and the probe may want a change that forces promotion to keep measuring what it +was written to measure. + +## Blast radius + +This is a "more type visibility" change and #6377 is the standing lesson for +that class — registering `Number` where `Any` was assumed un-gates latent fast +paths that have never run on the shape before. So the testing is behavioural, +not just compile-level: + +- 67 `test-files/` programs spread deterministically across the corpus, compiled + and run under both arms: **identical output**, and identical again under + `PERRY_GC_ZEAL=1 PERRY_GC_PROTECT_FROMSPACE=1`. (Three initial "diffs" were + thread ids inside a pre-existing panic message and are normalised out; they + differ run-to-run on the same binary.) +- `perry-hir` and `perry-runtime` suites green; `perry-codegen`'s failure set is + identical to `origin/main`'s. + +**Pre-existing, unrelated, and worth its own issue:** +`test-files/test_gap_webcrypto_async_threadpool.ts` crashes (`Bus error`, +rc=138) under `PERRY_GC_ZEAL=1 PERRY_GC_PROTECT_FROMSPACE=1` on **both** arms, +with nondeterministic output. Not introduced here. From e920eb18163d2ef78338973e966216b2cc62cf23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Fri, 7 Aug 2026 00:06:30 +0200 Subject: [PATCH 3/4] chore(changelog): rename to the PR number --- ...{7547-for-init-local-types.md => 7552-for-init-local-types.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changelog.d/{7547-for-init-local-types.md => 7552-for-init-local-types.md} (100%) diff --git a/changelog.d/7547-for-init-local-types.md b/changelog.d/7552-for-init-local-types.md similarity index 100% rename from changelog.d/7547-for-init-local-types.md rename to changelog.d/7552-for-init-local-types.md From 39f04feb44a839c80f1f3ef6dff751ba5726f4c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Fri, 7 Aug 2026 02:37:31 +0200 Subject: [PATCH 4/4] chore: bump version to 0.5.1314 --- CLAUDE.md | 2 +- Cargo.lock | 152 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 2 +- 3 files changed, 78 insertions(+), 78 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index e1579ae351..9ea94a0e4d 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.1313 +**Current Version:** 0.5.1314 ## TypeScript Parity Status diff --git a/Cargo.lock b/Cargo.lock index 0842a4470d..11a084e6d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5547,7 +5547,7 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "perry" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "base64", @@ -5607,14 +5607,14 @@ dependencies = [ [[package]] name = "perry-api-manifest" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "serde", ] [[package]] name = "perry-audio-miniaudio" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "cc", "libc", @@ -5622,7 +5622,7 @@ dependencies = [ [[package]] name = "perry-codegen" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "inkwell", @@ -5639,7 +5639,7 @@ dependencies = [ [[package]] name = "perry-codegen-arkts" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "perry-hir", @@ -5647,7 +5647,7 @@ dependencies = [ [[package]] name = "perry-codegen-glance" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "perry-hir", @@ -5655,7 +5655,7 @@ dependencies = [ [[package]] name = "perry-codegen-js" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "perry-dispatch", @@ -5664,7 +5664,7 @@ dependencies = [ [[package]] name = "perry-codegen-swiftui" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "perry-hir", @@ -5672,7 +5672,7 @@ dependencies = [ [[package]] name = "perry-codegen-wasm" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "base64", @@ -5684,7 +5684,7 @@ dependencies = [ [[package]] name = "perry-codegen-wear-tiles" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "perry-hir", @@ -5692,7 +5692,7 @@ dependencies = [ [[package]] name = "perry-container-compose" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "async-trait", @@ -5721,14 +5721,14 @@ dependencies = [ [[package]] name = "perry-container-e2e" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", ] [[package]] name = "perry-diagnostics" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "serde", "serde_json", @@ -5736,7 +5736,7 @@ dependencies = [ [[package]] name = "perry-dispatch" -version = "0.5.1313" +version = "0.5.1314" [[package]] name = "perry-doc-fixture-my-bindings" @@ -5747,7 +5747,7 @@ dependencies = [ [[package]] name = "perry-doc-tests" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "clap", @@ -5762,7 +5762,7 @@ dependencies = [ [[package]] name = "perry-ext-ads" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "block2", "objc2", @@ -5772,7 +5772,7 @@ dependencies = [ [[package]] name = "perry-ext-argon2" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "argon2", "perry-ffi", @@ -5780,7 +5780,7 @@ dependencies = [ [[package]] name = "perry-ext-axios" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "reqwest", @@ -5789,7 +5789,7 @@ dependencies = [ [[package]] name = "perry-ext-bcrypt" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "bcrypt", "perry-ffi", @@ -5797,7 +5797,7 @@ dependencies = [ [[package]] name = "perry-ext-better-sqlite3" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "rusqlite", @@ -5805,7 +5805,7 @@ dependencies = [ [[package]] name = "perry-ext-cheerio" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "scraper", @@ -5813,7 +5813,7 @@ dependencies = [ [[package]] name = "perry-ext-commander" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "perry-runtime", @@ -5821,7 +5821,7 @@ dependencies = [ [[package]] name = "perry-ext-cron" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "chrono", "cron", @@ -5831,7 +5831,7 @@ dependencies = [ [[package]] name = "perry-ext-dayjs" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "chrono", "perry-ffi", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "perry-ext-decimal" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "rust_decimal", @@ -5847,7 +5847,7 @@ dependencies = [ [[package]] name = "perry-ext-dotenv" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "serde_json", @@ -5855,7 +5855,7 @@ dependencies = [ [[package]] name = "perry-ext-ethers" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "rand 0.10.1", @@ -5863,7 +5863,7 @@ dependencies = [ [[package]] name = "perry-ext-events" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "perry-runtime", @@ -5871,14 +5871,14 @@ dependencies = [ [[package]] name = "perry-ext-exponential-backoff" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", ] [[package]] name = "perry-ext-fastify" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "bytes", "http-body-util", @@ -5896,7 +5896,7 @@ dependencies = [ [[package]] name = "perry-ext-fetch" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "bytes", "lazy_static", @@ -5909,7 +5909,7 @@ dependencies = [ [[package]] name = "perry-ext-http" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "bytes", "h2", @@ -5933,7 +5933,7 @@ dependencies = [ [[package]] name = "perry-ext-ioredis" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "lazy_static", "perry-ffi", @@ -5943,7 +5943,7 @@ dependencies = [ [[package]] name = "perry-ext-jsonwebtoken" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "base64", "jsonwebtoken", @@ -5954,7 +5954,7 @@ dependencies = [ [[package]] name = "perry-ext-lru-cache" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "lru", "perry-ffi", @@ -5963,7 +5963,7 @@ dependencies = [ [[package]] name = "perry-ext-moment" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "chrono", "perry-ffi", @@ -5971,7 +5971,7 @@ dependencies = [ [[package]] name = "perry-ext-mongodb" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "bson", "futures-util", @@ -5983,7 +5983,7 @@ dependencies = [ [[package]] name = "perry-ext-mysql2" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "chrono", "perry-ffi", @@ -5993,7 +5993,7 @@ dependencies = [ [[package]] name = "perry-ext-nanoid" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "nanoid", "perry-ffi", @@ -6002,7 +6002,7 @@ dependencies = [ [[package]] name = "perry-ext-net" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "bytes", "perry-ffi", @@ -6015,7 +6015,7 @@ dependencies = [ [[package]] name = "perry-ext-node-forge" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "const-oid 0.9.6", "der 0.7.10", @@ -6034,7 +6034,7 @@ dependencies = [ [[package]] name = "perry-ext-nodemailer" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "lettre", "perry-ffi", @@ -6044,7 +6044,7 @@ dependencies = [ [[package]] name = "perry-ext-pdf" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "printpdf", @@ -6052,7 +6052,7 @@ dependencies = [ [[package]] name = "perry-ext-pg" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "sqlx", @@ -6061,7 +6061,7 @@ dependencies = [ [[package]] name = "perry-ext-ratelimit" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "governor", "perry-ffi", @@ -6069,7 +6069,7 @@ dependencies = [ [[package]] name = "perry-ext-sharp" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "fast_image_resize", "image", @@ -6079,14 +6079,14 @@ dependencies = [ [[package]] name = "perry-ext-slugify" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", ] [[package]] name = "perry-ext-streams" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "lazy_static", "perry-ffi", @@ -6095,7 +6095,7 @@ dependencies = [ [[package]] name = "perry-ext-undici" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "perry-runtime", @@ -6104,7 +6104,7 @@ dependencies = [ [[package]] name = "perry-ext-uuid" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "uuid", @@ -6112,7 +6112,7 @@ dependencies = [ [[package]] name = "perry-ext-validator" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ffi", "regex", @@ -6122,7 +6122,7 @@ dependencies = [ [[package]] name = "perry-ext-ws" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "futures-util", "lazy_static", @@ -6135,7 +6135,7 @@ dependencies = [ [[package]] name = "perry-ext-zlib" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "brotli", "flate2", @@ -6145,7 +6145,7 @@ dependencies = [ [[package]] name = "perry-ffi" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "dashmap", "once_cell", @@ -6154,7 +6154,7 @@ dependencies = [ [[package]] name = "perry-hir" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "perry-api-manifest", @@ -6172,7 +6172,7 @@ dependencies = [ [[package]] name = "perry-parser" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "perry-diagnostics", @@ -6184,7 +6184,7 @@ dependencies = [ [[package]] name = "perry-runtime" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "base64", @@ -6226,14 +6226,14 @@ dependencies = [ [[package]] name = "perry-runtime-static" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-runtime", ] [[package]] name = "perry-stdlib" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "aes 0.8.4", "aes 0.9.1", @@ -6328,14 +6328,14 @@ dependencies = [ [[package]] name = "perry-stdlib-static" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-stdlib", ] [[package]] name = "perry-transform" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "perry-hir", @@ -6344,14 +6344,14 @@ dependencies = [ [[package]] name = "perry-ui" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ui-model", ] [[package]] name = "perry-ui-android" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "base64", "itoa", @@ -6368,7 +6368,7 @@ dependencies = [ [[package]] name = "perry-ui-geisterhand" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "rand 0.10.1", "serde", @@ -6378,7 +6378,7 @@ dependencies = [ [[package]] name = "perry-ui-gtk4" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "base64", "cairo-rs 0.22.0", @@ -6401,7 +6401,7 @@ dependencies = [ [[package]] name = "perry-ui-ios" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "base64", "block2", @@ -6417,7 +6417,7 @@ dependencies = [ [[package]] name = "perry-ui-macos" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "base64", "block2", @@ -6432,7 +6432,7 @@ dependencies = [ [[package]] name = "perry-ui-model" -version = "0.5.1313" +version = "0.5.1314" [[package]] name = "perry-ui-test" @@ -6443,11 +6443,11 @@ dependencies = [ [[package]] name = "perry-ui-testkit" -version = "0.5.1313" +version = "0.5.1314" [[package]] name = "perry-ui-tvos" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "base64", "block2", @@ -6463,7 +6463,7 @@ dependencies = [ [[package]] name = "perry-ui-visionos" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "base64", "block2", @@ -6479,7 +6479,7 @@ dependencies = [ [[package]] name = "perry-ui-watchos" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "block2", "libc", @@ -6492,7 +6492,7 @@ dependencies = [ [[package]] name = "perry-ui-windows" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "base64", "libc", @@ -6509,14 +6509,14 @@ dependencies = [ [[package]] name = "perry-ui-windows-winui" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "perry-ui-windows", ] [[package]] name = "perry-updater" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "anyhow", "base64", @@ -6532,7 +6532,7 @@ dependencies = [ [[package]] name = "perry-wasm-host" -version = "0.5.1313" +version = "0.5.1314" dependencies = [ "wasmi", ] diff --git a/Cargo.toml b/Cargo.toml index dec544224b..bfb8438d52 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -315,7 +315,7 @@ codegen-units = 16 codegen-units = 16 [workspace.package] -version = "0.5.1313" +version = "0.5.1314" edition = "2021" license = "MIT" repository = "https://github.com/PerryTS/perry"