@kirigami/phpext-gmp
v0.1.1
Published
Kirigami PHP.wasm shared extension: gmp (JSPI side module, see @kirigami/php-wasm)
Maintainers
Readme
@kirigami/phpext-gmp
Arbitrary-precision math (gmp_*(), the GMP class) for Kirigami PHP.wasm — as a standalone, on-demand WASM side module.
Built for the Kirigami static site generator's PHP runtime, @kirigami/php-wasm.
Overview
@kirigami/phpext-gmp is PHP's own ext/gmp — unmodified upstream source,
straight from the PHP-8.5.11 tag — compiled independently of the core
php.wasm into a JSPI WASM side module (Kirigami's mode: shared
extension model). Install it and @kirigami/php-wasm picks it up
automatically at startup — no manual wiring, no core rebuild.
- ✅ Real
ext/gmp:gmp_add,gmp_mul,gmp_pow, theGMPobject API, the full documented PHP API — not a reimplementation - ✅ Linked against a vendored, Emscripten-cross-compiled GNU MP 6.3.0 (portable generic-C code path — no per-CPU hand-written assembly, which GMP's own build gracefully falls back to for an unrecognized target like wasm32)
- ✅ JSPI only, Node.js only — matches
@kirigami/php-wasm's own target
Built by php-wasm-compiler,
which also documents the full build pipeline and architecture decisions.
Part of the Kirigami project ecosystem.
Table of contents
Requirements
- Node.js
>= 24.0.0 @kirigami/php-wasm(peer — this package has nothing to load it into on its own)
Installation
npm install @kirigami/phpext-gmpThat's it — @kirigami/php-wasm scans its own dependencies for
@kirigami/phpext-* packages at startup and loads whatever it finds.
Usage
No JS-side API of its own — once installed, the extension is just there in PHP:
<?php
$a = gmp_init('123456789012345678901234567890');
$b = gmp_pow($a, 2);
echo gmp_strval($b);Extension details
| | |
| --- | --- |
| PHP extension | ext/gmp, unmodified, from the PHP-8.5.11 tag |
| PHP version(s) shipped | 8.5 |
| Native library | GNU MP 6.3.0 |
| Build mode | mode: shared (JSPI side module) — see @kirigami/php-wasm's mode: static core for the always-on extension set instead |
| Patches | None — ext/gmp's own PHP-facing API needed no changes |
Contents
*.so— one JSPI side module per PHP version listed above.manifest.json— extension metadata (name, per-version artifact paths, ini/env directives) consumed by@php-wasm/universal'sresolvePHPExtension().index.js(+index.d.ts) — default-exportsregister(phpVersion), resolving this package's artifact ready to feed into@php-wasm/universal'swithResolvedPHPExtensions(). This is what@kirigami/php-wasm's auto-loader calls — install the package and it's picked up automatically.package.json'skirigamifield —{ type: "extension", phpVersions, minVersion, vendorLib: { name, version }, buildHash }, mirroring the samekirigamimetadata convention every@kirigami/plugin-<name>package carries.minVersionis the exact PHP patch version this build was compiled/tested against (not a@kirigami/php-wasmsemver).
Compiled by php-wasm-compiler's
compile/cli.mjs compile-extension — see that repo's CLAUDE.md for the
full build/versioning story.
License
GPL-2.0-or-later, the license of php-wasm-compiler's build pipeline, which comes from WordPress Playground (see its NOTICE.md). The extension's own source, php-src's ext/gmp, is under the PHP License 3.01.
Author
Maxime Larrivée-Roy, 2026
