Reference
Release notes
Selected release notes and upcoming improvements, with links to the complete published release history.++PHP ships on a quarterly train, with shared documentation for each train. This page covers upcoming improvements and the first candidate. For every published version and its provenance, see the official release history.
The latest published candidate is 2026.3.1-rc-2. Its release page contains the changes, upgrade guidance, and assets. The RC-1 notes below describe that earlier release, not the latest candidate.
Unreleased
Lower memory use in Composer projects
The development branch defers unused token streams and releases dependency implementation bodies after discovery. Small mixed Composer projects are regression-tested with a 128M PHP memory limit for cold and cached checks and builds, plus unsaved editor diagnostics. The PHPStan subprocess inherits the compiler's configured memory limit instead of receiving a separate 1G allowance. Larger source and dependency graphs can still need more memory.
These changes are merged in compiler commit def46c0, but have not been released. They are not included in published 2026.3.1-rc-2. No new release version has been assigned.
2026.3.1-rc-1
Published on September 3, 2026 as a release candidate. The package, tag, release page, schema, manifest, notes, third-party notices, and checksums were published together.
What it brings to PHP
++PHP gives PHP developers a stronger source contract while keeping PHP as the runtime. A project may contain ordinary .php files alongside .ppphp files. The compiler checks both, compiles .ppphp into ordinary PHP, copies selected .php files byte-for-byte, and produces one application tree in build/ppphp.
The candidate includes:
- Explicit typed local variables and
readonlylocal storage - Typed loop declarations that carry list and map element types into the loop body
- Strict checks for parameters, properties, returns, calls, members, assignments, and nullability
- Union, intersection, and disjunctive normal form type contracts
- Erased generics for reusable classes, interfaces, traits, functions, and methods
array<T>lists andarray<K, V>maps with ordinary PHP array behavior at runtime- Checked errors declared with
throws, requiring callers to catch or declare recoverable failures whenexpressions whose branches may perform useful work before returning a result- Focused and complete project checks with stable diagnostic codes and machine-readable JSON
- Atomic mixed builds, source maps, deterministic manifests, and maintained Composer runtime mappings
Generic and error relationships become compatible PHPDoc in generated output. Existing packages, native PHP types, PHPDoc, Composer autoloading, and configured stubs all contribute useful declarations during checking.
Requirements and limits
The compiler requires PHP 8.4 or newer and Composer 2. This candidate's original setup guidance called for at least 512 MiB of memory for compiler commands; that historical guidance is not a universal minimum for ++PHP. Generated applications target PHP 8.4.
Some deeper checks inside ordinary PHP function bodies still use the bundled PHPStan pass. This candidate does not include a formatter or a standalone language server. Behavior may change before the first Stable release as real projects expose bugs and rough edges.
Installation
Composer does not select prereleases by default, so require the exact version:
composer require --dev atatusoft-ltd/ppphp-src:2026.3.1-rc-1
vendor/bin/ppphp --version
See Installation for initialization, the configuration schema, Composer mapping, checking, building, and running the generated PHP.
Assets
The canonical tagged release provides these immutable locations:
- Release:
https://github.com/atatusoft-ltd/ppphp-src/releases/tag/2026.3.1-rc-1 - Schema:
https://github.com/atatusoft-ltd/ppphp-src/releases/download/2026.3.1-rc-1/ppphp.schema.json - Manifest:
https://github.com/atatusoft-ltd/ppphp-src/releases/download/2026.3.1-rc-1/ppphp-release.json - Checksums:
https://github.com/atatusoft-ltd/ppphp-src/releases/download/2026.3.1-rc-1/SHA256SUMS
GitHub's tagged release is the canonical source for those files; the website does not mirror them. See Verify downloads before relying on a downloaded asset.
Feedback and security
Report bugs through GitHub Issues with the compiler version, platform, a small reproduction, and the expected and observed behavior.
Do not put vulnerability details in a public issue. Follow the private security reporting process so a fix and disclosure can be coordinated safely.