Releases: rawphp/warp
Releases · rawphp/warp
Release list
v0.4.0
Fixed
- WARP_DB worker datadir teardown races (
Dirs::delete+ recycle/shutdown):
under parallel Pest withWARP_MODE+WARP_DB, InnoDB temp files
(#ib_redo*_tmpand similar) could disappear or reappear mid-walk during
worker datadir cleanup, so bareunlink/rmdirinDirs.phpbecame
Laravel testingErrorExceptions on otherwise green bystander tests.
Dirs::deleteis now race-safe (ENOENT ignored mid-walk; bounded retry on
"directory not empty"; non-ENOENT failures still surface). After
mysqldstop inrecycle()/shutdown(), a short settle runs before
datadir delete so the tree is quieter before cleanup.
Changed
- Release process is now scripted:
scripts/release.sh(and
composer release/composer release:dry) runs CHANGELOG + quality gates,
creates an annotated semver tag, and pushes tag only for Packagist.
Seedocs/RELEASES.mdand the project/releaseskill.
v0.3.0 — S3: per-test timing capture + duration-balanced CI sharding
Added
- S3 — per-test timing capture + duration-balanced CI sharding: a PHPUnit extension (
RawPHP\Warp\Timing\TimingExtension, engaged viaWARP_TIMINGS=1) records every test's duration with file attribution into a portable.warp/timingsartifact; the newwarpCLI packs CI shards to equal duration via deterministic LPT (warp shard <k>/<n>), collapsing count-based shard spread to the mean.warp timingsprints artifact stats. WarpMode::timingsEnabled(),WARP_TIMINGS_DIRenv override,bin/warpcomposer binary.bench/shard-spread.sh— S3 gate harness (count-based vs duration-balanced spread report from recorded timings).
Changed
warp shardnow exits 2 when discovery finds zero test files, keeping that error distinct from exit 3 legitimately empty shards.
This release also folds in an extensive hardening pass across the timing store, sharder, root/path resolution, and CLI boundaries (REQ-063–REQ-111).
Full Changelog: v0.2.0...v0.3.0
v0.2.0
Golden-snapshot DB provisioning (S2) — opt-in per-worker MySQL isolation for warm-mode test runs.
Highlights
- S2 — golden-snapshot DB provisioning (
WARP_DB=1): per-worker copy-on-write clones of a content-addressed golden MySQL datadir, served by throwawaymysqldinstances on private unix sockets. Replaces the ~14.4s per-worker migrate/seed fixed cost with a ~2s clone+boot; parallel-safe by construction. WarpMode::databaseEnabled(),SnapshotDatabaseManager(apply/recycle/shutdown),warpRecycleDatabase()test helper,warp.db.*config surface,WARP_DB_MYSQLD/WARP_DB_SNAPSHOT_DIR/WARP_DB_RUNTIME_DIRenv overrides.bench/db-provision.sh— S2 gate harness (fixed-cost delta + 4-way multi-mysqld PoC).
No breaking changes since v0.1.0.
See CHANGELOG.md for full details.
v0.1.0
First public release of rawphp/warp — a warm-worker test engine for Laravel + Pest that boots the app once per process and hands each test a sandboxed clone.
Highlights
- S1 warm-worker engine: warm application factory, reset manifest, hermeticity sentinel,
InteractsWithWarmApplicationtrait, benchmark + parity harness. - S1 gate: PASSED — Gate A 97.4× framework-tax reduction (53.57ms → 0.55ms), Gate B PARITY OK on 1,372 tests. See
docs/reports/2026-07-04-s1-gate.md. - Engage warm mode with
WARP_MODE=1(also acceptson/true). - PSR-4 namespace:
RawPHP\Warp\; Composer package:rawphp/warp(MIT).
See CHANGELOG.md for full details.