github PerryTS/perry v0.5.164

latest releases: v0.5.1182, v0.5.1181, v0.5.1180...
2 months ago

Highlights

  • #140 SIMD autovectorization restored on pure-accumulator loops. loop_overhead 32→12 ms, math_intensive 48→14 ms, accumulate 97→24 ms — all matching the v0.5.22 baseline exactly. Perry now beats Rust/C++ 7–8× on loop_overhead, 3× on math_intensive, 4× on accumulate again.
  • V2.2 on-disk per-module object cache (.perry-cache/objects/<target>/<key>.o). Warm-cache builds are ~29% faster; the real win is perry dev's watch-loop hot path where only the edited module recompiles.

Fixes

  • #140 Scope the i32 shadow slot to locals actually used as array indices and refine the #74 asm sideeffect barrier to skip bodies with outer-scope writes — the two changes that had knocked the LLVM vectorizer off pure-accumulator reductions between v0.5.91 and v0.5.162 (v0.5.164, 83f05ff)
  • #136 sendToClient(handle, msg) and closeClient(handle) named imports from 'ws' were silently no-ops — the receiver-less native dispatch table was missing entries (v0.5.162, d81acb5)
  • #135 --target web hangs when break / continue is nested inside if / else / switch / try...catch inside a loop — WASM emitter was hardcoding Br(1) instead of consulting break_depth/loop_depth (v0.5.161, bf0a171)
  • PR #138 Windows vswhere discovery now requires VC tools (thanks @NicoAvanzDev) (9033dd4, 76f30c8)
  • winget submission now syncs the WINGET_PAT user's fork at runtime instead of hardcoding PerryTS's (v0.5.159, 58534df)

Features

  • V2.2 per-module on-disk object cache closing #131, building on PR #132 — opt-outs via --no-cache / PERRY_NO_CACHE=1; new perry cache info / perry cache clean subcommands; PERRY_DEV_VERBOSE=1 prints hit/miss ratios (v0.5.160, 1a12afe, 50d09ed)

Infrastructure

  • Cache-key audit hardening: hashed codegen env vars by value (not presence), .perry-cache/ added to .gitignore, BSD-grep-portable smoke test regex (v0.5.160, 1a12afe)
  • codegen-cache verbose output aligned with the #131 spec (de514d5)

Docs

  • Response to #139 benchmark scrutiny + cleanup of 32 stale bench_*.ts / test_inline*.ts / old benchmarks/results/*.txt scratchpads; README.md + benchmarks/polyglot/RESULTS.md updated with v0.5.164 numbers (v0.5.163, 5eb18ff + v0.5.164 doc updates in 83f05ff)

Don't miss a new perry release

NewReleases is sending notifications on new releases.