Skip to content

Releases: melentev-av/opmin

v0.4.0

Choose a tag to compare

@opmin-release opmin-release released this 11 Oct 03:42
6c185bc

0.4.0 (2026-10-11)

Features

  • project: everything opmin writes lies in .opmin/, kept out of git (db7c29b)
  • report: the report of every run also lies in .opmin/ as report_<ts>.md (82e0475)

v0.3.1

Choose a tag to compare

@opmin-release opmin-release released this 11 Oct 02:26
2e8e687

0.3.1 (2026-10-11)

Bug Fixes

  • php: list the internal symbols of php.binary with startup noise out of stdout (ded8d15)

v0.3.0

Choose a tag to compare

@opmin-release opmin-release released this 10 Oct 16:49
05b9b3e

0.3.0 (2026-10-10)

Features

  • config: cache.driver memory keeps counts and references for one run (#17) (4c08fd5)
  • config: cache.driver sqlite, used automatically when pdo_sqlite is loaded (d0d0815), closes #9
  • config: cache.recreate_corrupt deletes a corrupt SQLite cache and starts anew (421a2f5)
  • config: the commands that analyze a project need opmin.yaml (fc34ebc)
  • optimize: stop when the project's tests fail on the original code (add2ac9)
  • optimize: the git clean check is off by default and covers only the run's files (#15) (70f2daf), closes #12
  • report: explain every section, column and reason of report.md (7bc7a5b)

Bug Fixes

  • analysis: index files with names that are not utf-8 (cd06802)
  • analysis: keep hidden directories out of the reference index (#19) (9bf9746), closes #18
  • config: resolve a relative cache.dir next to the config in use (#16) (b7f3f81)
  • count: an arrow function ends on the line of the next token (f6bea2b)
  • count: anonymous classes the compiler drops have no block in the dump (#23) (c8b7925)
  • count: closures of frameless calls are dumped twice (8a100be)
  • count: closures the compiler drops have no block in the dump (591342e)
  • docker: intl and bcmath in the image (a7ab7a5)
  • harness: no deadlock between a long request and output of the worker (bdd5321)
  • harness: read the tail of stderr before reporting a crash (#22) (447b440)
  • harness: talk to the worker over sockets on Windows (#11) (f4afaec), closes #10
  • init: take the code paths from the autoload of composer.json (708a116)
  • package: keep the download cache of composer between runs (346a75e)
  • package: ship harness/ in the composer dist archive (#13) (ecf5975)
  • package: show why composer install of a package failed (56e6432)
  • project: keep the config's directory as the root of a monorepo package (#14) (4e04ea9)
  • project: skip test files next to the code by default (38ebac1)
  • rector: let a call of a known pure built-in function count as pure (#21) (d2737a1), closes #20
  • self-update: end the process right after the file is replaced (06e0ebc)
  • skill: opcode-minimize — unrendered version, run branch, patterns in PATTERNS.md (#7) (9d7e5e8)
  • tests: a filter of thousands of tests fits into the command line (c7cf4b0)
  • tests: read junit and coverage reports without ext-dom (ea0eea5)

Documentation

  • readme: results on real packages, their tests without network (827cf27)
  • readme: smoke results from CI with php.binary 8.1 and 8.5 (dfb4f6e)

v0.2.0

Choose a tag to compare

@opmin-release opmin-release released this 08 Oct 09:26
c627a3b

0.2.0 (2026-10-08)

Features

  • analysis: flag dynamic constructs per function and write the flags to count (81aa32e)
  • analysis: index the functions and constants that shadow global ones (f72a5a0)
  • baseline: write opmin.baseline.json with the opcode counts (2455071)
  • check: fail ci when opcodes grow compared to the baseline (f5d5b43)
  • count: count opcodes per function under php.binary, compare reports with diff (cf32dbb)
  • docker: image with the static binary and the php of production (2756494)
  • doctor: check php.binary, opcache, the harness, tests and phpstan (3e66b00)
  • harness: add the PHP 8.1 worker that calls one version of a function (7ce4e06)
  • ignore: add the Opmin\Ignore attribute class and plain comment marks (d51589b)
  • init: detect php target, paths, test runner, formatter and phpstan (0efb58e)
  • llm: add apply-candidate and the LLM session commands (3ed9f56)
  • opcode counting, verification, optimization, ci guard and delivery (m1–m7) (543506a)
  • optimize: add --review with declined changes in opmin.baseline.yaml (2ac89f7)
  • optimize: allow a dirty git tree with --dry-run (abcfb1e)
  • optimize: apply Rector rules one by one with counting and verification (9267772)
  • optimize: resume interrupted runs and stop cleanly on signals (c7d81ad)
  • package: optimize a git package by url in docker (08ba2b1)
  • phar: composer package of the phar and a test in a project with other rector (8c51eb7)
  • rector: add ExtractRepeatedArrayDimFetchRector and HoistLoopInvariantCountRector (fdbe92e)
  • rector: add ExtractRepeatedPropertyFetchRector (98aa2d6)
  • rector: add FullyQualifyGlobalCallsRector (0c3cb09)
  • release: pin the opmin version per project and hand over to a local opmin (db8e6af)
  • report: write report.md and a versioned report.json for every run (919a120)
  • self-update: signed releases, self-update and install.sh (def0f09)
  • skill: ship the Claude Code skill opcode-minimize (1e52b7d)
  • tests: add test runner adapters, the static check and counterexample tests (4f36568)
  • tests: check coverage maps live, make Pest filter by its descriptions (cf940dd)
  • verification: compare call results and keep harness workers alive (6842f1b)
  • verification: drive property-testing-core through a thin runner adapter (375f12e)
  • verification: generate inputs, measure coverage and diff-test a function (cf986cd)
  • verification: leave branches PHPStan proves dead out of the coverage (1aec0be)
  • verifier: roll back slower changes with --guard-perf (66af8ce)
  • verify: verify a changed file on all three levels (632643d)

Bug Fixes

  • count: sort php versions with a typed callback, psalm on php 8.3 rejected version_compare (adc6f31)
  • harness: extract the harness from the phar and the static binary (a21a40a)
  • harness: keep fuzzed code from writing into the project (f285ec0)
  • infection: create the report directories before the first write (bdbce89)
  • optimize: describe a step of an executed-gain rule without a static gain (fd9adba)
  • optimize: give every Rector rule a cache of its own (d975542)
  • optimize: replace files through a rename and report why a file is not counted (1816ee1)
  • phar: run rector and phpstan from the phar and the static binary (0054cab)
  • playground: wait for Docker Desktop to see files rewritten just now (f1400b8)
  • rector: let arithmetic between repeated reads count as pure (6ca4d12)
  • release: cache key of static-php-cli without commas (eee39f3)
  • release: no external php in the smoke tests of the macos intel binary (724bb8d)
  • release: php 8.4 as php.binary of the macos smoke tests (5c1d04b)
  • report: show no coverage for functions the differential test did not run (55cdc4c)
  • tests: run PHPStan as a bare PHAR in the dead-branch test (d93cb41)
  • verification: repair bugs that mutation testing brought out (444055c)
  • verify: accept absolute paths outside the current directory (968f618)

Documentation

  • readme: ci guard with github actions and gitlab ci examples (f2de34a)
  • readme: describe the Rector stage of optimize (c73c987)
  • readme: installation, quick start, git packages, verifying a release (ace945a)
  • rector: measure the standard Rector rules and keep only those that save opcodes (52f7622)
  • testing: describe the tests of the rules and of the optimize pipeline (a67a1ea)

Code Refactoring

  • analysis: recognize ignore marks on functions and classes in one place (ed8776e)
  • project: resolve target paths and globs for every command (8f9d517)
  • verification: drop an always-true condition of the string shrinker (0a1dec4)
  • verification: verify the files of one step together ([dd...
Read more

v0.1.0

Choose a tag to compare

@opmin-release opmin-release released this 06 Oct 16:45
582549f

0.1.0 (2026-10-06)

Features

  • cli: register placeholders for all planned commands (5339941)
  • config: yaml configuration with strict validation and json schema (57adc5f)
  • m0 project skeleton (674daea)
  • playground: seeds and bin/playground scenarios (5e3ac1f)

Documentation

  • add project brief (ecad7e3)
  • document commit message rules checked by commitlint (5211111)
  • readme, changelog and agent guidelines (375338c)