CONTRIBUTE

Pick a difference. Make it identical.

The most useful way to help phpr is to close a verifiable behavior: a .phpt test, a missing builtin, a documented divergence or tooling that speeds up comparison.

GOLDEN RULE

PHP 8.5.7 is the oracle.

A patch is complete when the target case produces the same output as the reference runtime and the full baseline keeps zero pass→fail regressions.

A concrete workflow

  1. 01

    Find

    Pick a failing test or a high-impact missing function.

  2. 02

    Reproduce

    Run the same case with PHP and phpr.

  3. 03

    Isolate

    Reduce the diff to the smallest semantic behavior.

  4. 04

    Fix

    Implement it without plausible stubs or silent shortcuts.

  5. 05

    Verify

    Run the target suite, Zend gate and relevant app tests.

Where contributions matter most

.phpt tests

Areas already near parity offer small, measurable patches.

Core builtins

Pure, deterministic functions used by frameworks have immediate leverage.

Targeted extensions

Drivers or APIs required by a real use case, with explicit contracts.

Fuzzing and robustness

Inputs reaching unwrap or panics should become typed VM errors.

Documentation

Reproducible recipes, divergence maps and architecture notes lower the entry cost.

Tooling

Runners, diffs, benchmarks and reports that expose the next important gap.