php-wasm

Changes

v0.1.0 - Aiming for the (GitHub) Stars

  • Rebuilt demo-web around Vite, reorganized it into pages, components, lib, and assets, and added the newer browser/e2e harnesses plus runtime path helpers for the worker and page builds.
  • Added Quickbus-backed browser messaging, a richer phpdbg bus session, and a VSCode debugger bridge for the demo app and debugger workflow.
  • Expanded runtime/build coverage across older targets, including phpdbg, SDL, and Vrzno support in PHP 8.0 builds. SDL now ships as the _sdl runtime variant instead of a separately loaded shared library.
  • Added version and variant support to php-tags, making it possible to select non-default runtimes from static HTML.
  • Standardized the maintained runtime sources on .mjs modules and expanded type/JSDoc coverage across php-wasm, php-cgi-wasm, php-cli-wasm, php-dbg-wasm, and the extension helper packages.
  • Reworked shared and dynamic extension loading so built-in support libraries, ICU payloads, OpenSSL, libxml/XML, DOM, SimpleXML, XMLReader, and XMLWriter behave consistently across Node, browser, demo, and docs/test harnesses.
  • Suppressed implicit libxml2.so loading when it is not provided in sharedLibs, which reduces startup download size for minimal runtime configurations.
  • Broadened verification with vendored php-wasm-site docs fixtures, split docs/CGI coverage suites, deeper CLI-node PHPT coverage, richer XML/intl/tidy/iconv/sqlite smoke tests, and browser-test race-condition fixes.
  • Added require() support and CJS harness coverage for the core Node runtimes, documented manual extension asset wiring for CommonJS consumers, standardized LIB_TYPE as the static/shared/dynamic selector, and left BUILD_TYPE as the JS/MJS wrapper-format selector.
  • Improved local workspace and release plumbing with symlink-aware package loading, action-artifact overlay support, and refreshed README/package docs around runtime defaults, versioned .wasm assets, extension wiring, interactive CLI/debugger behavior via waitline, and Cloudflare D1 setup through pdo_cfd1.

v0.0.9 - Here there be dragons

Version 0.0.9 is represented by a near endless stream of letter-tagged alpha releases and will be considered officially skipped. The changes in v0.1.0 mostly landed somewhere in this range, but since the API is not stable, here there be dragons.

  • Adding PHP-CGI support!
  • Runtime extension loading!
  • libicu, freetype, zlib, gd, libpng, libjpeg, openssl, & phar support.
  • php-wasm, php-cgi-wasm, & php-wasm-builder are now separate packages.
  • Vrzno now facilitates url fopen via the fetch() api.
  • pdo_cfd1 is now a separate extension from Vrzno.
  • pdo_pglite adds local Postgres support.
  • SQLite is now using version 3.46.
  • Demos for CodeIgniter, CakePHP, Laravel & Laminas.
  • Drupal & all other demos now use standard build + zip install.
  • Modules are now webpack-compatible out of the box.
  • Exposing FS methods w/queueing & locking to sync files between tabs & workers.
  • Fixed the bug with POST requests under Firefox.
  • Adding support for PHP 8.3.7 & 8.4.1.
  • Automatic CI testing for PHP 8.0, 8.1, 8.2, 8.3, & 8.4.

v0.0.8 - Preparing for Lift-off

  • Adding ESM & CDN Module support!
  • Adding stdin.
  • Buffering stdout/stderr in javascript.
  • Fixing <script type = "text/php"> support.
  • Adding fetch support for src on above.
  • Adding support for libzip, iconv, & html-tidy
  • Adding support for NodeFS & IDBFS.
  • Custom builds.
  • Updating PHP to 8.2.11
  • Building with Emscripten 3.1.43
  • Modularizing dependencies.
  • Compressing assets.

0.0.7 - Remodermizing

  • Updating PHP to 8.2.4
  • Updating SQLite to 3.41
  • Updating Drupal to 7.95
  • Correcting hiccups in the build process

0.0.6 - Ease

  • Correcting hiccups in the build process

0.0.5 - Alignment

  • Ensuring npm & github have matching tags
  • Ensuring Drupal re-builds correctly with no nested duplicate directory
  • Removing some extraneous files from example application
  • Separating php-web-drupal from php-web for real this time
  • Publishing php-web-drupal to npm

0.0.4 - Revisiting

  • Separated Drupal from standard php-web to save bandwidth
  • Running the build automatically on push in CircleCI
  • Getting the automatic build working for Drupal

0.0.3 - New Horizons

  • php.exec() may be used to evaluate a single php expression & return its result.
  • php may now access & traverse the dom and access nodes.
  • The querySelector method is available on dom nodes.
  • addEventListener/removeEventListener is also available on dom nodes.
  • sqlite3 v3.33 is now statically linked to php & the sqlite3 extension is enabled.
  • The following extensions are now enabled: sqlite3, pdo, & pdo-sqlite.
  • Totally revamped build process that tracks build artifact relationships.
  • Builds for web, node, shell, worker & webview.

0.0.2 - Gaining Momentum

  • php objects now have persistent memory, may be cleared with php.refresh();.
  • php code may now access Javascript (and thus, the DOM) via the VRZNO project. The extension is preinstalled with php-wasm.
  • <script type = "text/php"> tags are now supported, both inline and with src=.... Both require opening tags as of now.
  • Building of object files is now separated from building of binary files so multiple binaries may be built from the same set of objects.
  • License changed from MIT to Apache-2.0, which has similar terms, but USERS must have visibility of the attribution, rather that just DEVELOPERS.
  • Build dependencies are now expressed in the makefile
  • Project can be built in its entirety by running make.
  • Ensuring newlines in PHP output are respected.

0.0.1 - Humble Beginnings

  • Event-oriented interface added to php object.
  • Buildscript was slightly improved with a makefile