github PerryTS/perry v0.5.88
v0.5.88 — Test/CI/benchmark infrastructure

latest releases: v0.5.1167, v0.5.1166, v0.5.1159...
2 months ago

Test, CI, and benchmark-infrastructure release. No runtime or codegen changes — crates/ is untouched, 108 runtime tests and the gap-suite/parity baselines all reproduce identically.

Features

  • CI workflow (.github/workflows/test.yml) — five parallel jobs on macos-14 sharing a cached release build:
    • cargo-test runs the workspace test suite (excluding perry-ui-ios).
    • parity runs run_parity_tests.sh, gates on test-parity/threshold.json (currently 83% min parity), and diffs new failures against test-parity/known_failures.json.
    • compile-smoke requires every test-files/*.ts to compile cleanly.
    • binary-size tracks perry / libperry_runtime.a / libperry_stdlib.a sizes on main only.
  • Benchmark toolingbenchmarks/compare.sh is a regression detector with 15% speed / 25% memory thresholds vs benchmarks/baseline.json (writes JSON with git short-SHA + UTC timestamp; supports --update-baseline and --quick). benchmarks/quick.sh is a ~15s smoke over 5 benchmarks with Perry-vs-Node ratio and peak-RSS comparison.
  • Seven new .ts microbenchmarks in benchmarks/suite/: bench_array_grow, bench_buffer_readwrite, bench_gc_pressure, bench_int_arithmetic, bench_json_roundtrip, bench_object_property, bench_string_heavy — covering paths tuned in v0.5.67–v0.5.81.
  • Parity infrastructuretest-parity/known_failures.json (18 triaged entries) and test-parity/threshold.json (83% minimum) enable the new CI parity gate.
  • Coverage infrastructuretest-coverage/audit.sh scans #[no_mangle] pub extern "C" fn in perry-runtime + perry-stdlib and cross-references against test-files/. Current snapshot in test-coverage/COVERAGE.md: 1437 FFI functions, 615 covered (42.8%).

Tests

  • Five gap tests called out in the gap-suite header but not checked in: test_gap_buffer_ops, test_gap_closures, test_gap_map_set_extended, test_gap_typed_arrays, test_gap_typeof_instanceof.
  • Four issue-#63 regression tests guarding the array-literal scalar-replacement and inline-alloc paths from v0.5.69 / v0.5.73 / v0.5.74: test_issue63_arr, test_issue63_asm, test_issue63_correctness, test_issue63_escape.
  • Five stress tests: test_stress_buffer, test_stress_gc, test_stress_int_ops, test_stress_nanbox, test_stress_promises.
  • Cross-module stress under test-files/multi/test_stress_cross_module/ (two-file module resolution).

Docs

  • issue60_writeup.md — post-mortem for the 84×→4.5× dynamic-property-write speedup shipped in v0.5.51 / v0.5.55.

Don't miss a new perry release

NewReleases is sending notifications on new releases.