Skip to content

Releases: rawphp/warp

v0.4.0

Choose a tag to compare

@rawphp rawphp released this 29 Jul 06:56
83976a2

Fixed

  • WARP_DB worker datadir teardown races (Dirs::delete + recycle/shutdown):
    under parallel Pest with WARP_MODE + WARP_DB, InnoDB temp files
    (#ib_redo*_tmp and similar) could disappear or reappear mid-walk during
    worker datadir cleanup, so bare unlink/rmdir in Dirs.php became
    Laravel testing ErrorExceptions on otherwise green bystander tests.
    Dirs::delete is now race-safe (ENOENT ignored mid-walk; bounded retry on
    "directory not empty"; non-ENOENT failures still surface). After
    mysqld stop in recycle()/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.
    See docs/RELEASES.md and the project /release skill.

v0.3.0 — S3: per-test timing capture + duration-balanced CI sharding

Choose a tag to compare

@rawphp rawphp released this 10 Jul 12:20

Added

  • S3 — per-test timing capture + duration-balanced CI sharding: a PHPUnit extension (RawPHP\Warp\Timing\TimingExtension, engaged via WARP_TIMINGS=1) records every test's duration with file attribution into a portable .warp/timings artifact; the new warp CLI packs CI shards to equal duration via deterministic LPT (warp shard <k>/<n>), collapsing count-based shard spread to the mean. warp timings prints artifact stats.
  • WarpMode::timingsEnabled(), WARP_TIMINGS_DIR env override, bin/warp composer binary.
  • bench/shard-spread.sh — S3 gate harness (count-based vs duration-balanced spread report from recorded timings).

Changed

  • warp shard now 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

Choose a tag to compare

@rawphp rawphp released this 08 Jul 13:04

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 throwaway mysqld instances 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_DIR env 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

Choose a tag to compare

@rawphp rawphp released this 05 Jul 09:25

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, InteractsWithWarmApplication trait, 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 accepts on / true).
  • PSR-4 namespace: RawPHP\Warp\; Composer package: rawphp/warp (MIT).

See CHANGELOG.md for full details.