Skip to content

Installation

Debian / Ubuntu

Install from the .deb attached to the latest GitHub release (replace 1.X.X-1 with the current version):

bash
curl -LO https://github.com/AllanGallop/libphp_jsonfast/releases/latest/download/php-jsonfast_1.X.X-1_amd64.deb
sudo apt install ./php-jsonfast_1.X.X-1_amd64.deb

The package installs the shared library and drop-in configuration under /etc/php/... so the extension is enabled for CLI and FPM where supported.

TIP

Release artifacts target Linux x86_64 and PHP 8.3. Windows DLL and macOS builds may be added later.

Install manually (prebuilt)

Download the latest Linux build and load it without compiling from source.

  1. Download and extract:
bash
curl -LO https://github.com/AllanGallop/libphp_jsonfast/releases/latest/download/php_jsonfast-linux-x86_64-php83.zip
unzip php_jsonfast-linux-x86_64-php83.zip
  1. Copy the .so to your PHP extensions directory:
bash
sudo mkdir -p /usr/local/lib/php/extensions/no-debug-non-zts-20230831
sudo cp php_jsonfast-linux-x86_64-php83.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/

TIP

Adjust the destination directory to match your PHP API version. Run php -i | grep extension_dir to find the correct path.

  1. Enable in php.ini:
ini
extension=php_jsonfast-linux-x86_64-php83.so

Or reference the full path:

ini
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20230831/php_jsonfast-linux-x86_64-php83.so
  1. Restart PHP-FPM, Apache, or your CLI session if needed.

Load directly for a one-off command:

bash
php -d extension=./php_jsonfast-linux-x86_64-php83.so -r "var_dump(JsonFast::validate('{\"ok\":true}'));"

Build from source

Requirements:

  • Rust stable toolchain
  • PHP 8.x development headers
  • libclang (for bindgen on Linux/macOS/Windows)
bash
git clone https://github.com/AllanGallop/libphp_jsonfast.git
cd libphp_jsonfast
cargo build --release

Load the built extension:

ini
; Linux
extension=/path/to/libphp_jsonfast/target/release/libphp_jsonfast.so

; macOS
extension=/path/to/libphp_jsonfast/target/release/libphp_jsonfast.dylib

; Windows
extension=/path/to/libphp_jsonfast/target/release/php_jsonfast.dll

Generate PHP stubs:

bash
make stubs
# or
cargo php stubs --stdout > php_jsonfast.stub.php

Docker

Build and open a shell in the project container:

bash
docker compose build
docker compose run --rm php-rust bash

Inside the container:

bash
make test
make benchmark

Verify

bash
php -m | grep jsonfast
php -r "var_dump(class_exists('JsonFast'));"

Native tools, weird experiments, and practical performance work.