Skip to content

Backward compatibility

From 1.0.0, the versions follow Semantic Versioning: a minor or a patch version does not break what this page covers. Until then, a minor version can, and the changelog says it, with BC break:.

What is covered

  • The build arguments: their names, and the values they take.
  • The extensions that are built by default: one can be added, not removed.
  • The files that a build gives: php-web.mjs, php-web.wasm, php-sw.js, php-node.mjs and php-node.wasm.
  • The JavaScript API: createPhp(), createPhpInWorker(), what they give, and their options.
  • What shows an application in a frame: serveInFrame(), keepCookies() and withCookies() of php-web.mjs, forwardToPhp() of php-sw.js, and their options. So is where a project puts its files, sw.js next to index.html, and the key of the cookies in localStorage: with another one, the visitors would lose their session.
  • Stack, Target, Opcache and IcuData, and the functions of src/functions.php: what a project uses, see Use it in your project.
  • node/run.mjs and node/fetch-files.mjs: their arguments, and what they do.

What is not

  • The versions that the Dockerfile pins: PHP, emscripten and the libraries move in any version. A project that needs one of them gives it as a build argument.
  • What PHP itself does, from a version to the next, and the size of what is built.
  • The limitations: one can go away in any version.
  • What only this repository uses: the tasks of castor.php, the stacks of stacks.php, the examples, the @internal functions of src/functions-internal.php, and everything else in docker/: its stages, run.c, and what the .wasm file exports.