Mirror repository — this repo is automatically mirrored from aheinze/ScriptLite for PHP PIE installation. All development, issues, and pull requests happen in the main repository.
High-performance PHP extension for the ScriptLite ECMAScript interpreter. Replaces the PHP bytecode VM with a C implementation using computed-goto dispatch, delivering ~180x speedup.
The extension ships with a native C parser only (no PHP parser fallback), so no Composer autoloader or external PHP parser runtime is required at runtime.
pie install aheinze/scriptlite-extPrerequisites: PHP 8.3+ dev headers, phpize, C11 compiler, libpcre2-dev, make.
phpize
./configure --enable-scriptlite
make -j"$(nproc)"
make installThen enable:
extension=scriptlitephp -r "var_dump(extension_loaded('scriptlite'));"
# bool(true)
php -r "echo (new ScriptLiteExt\Engine())->eval('1 + 2');"
# 3$engine = new ScriptLiteExt\Engine();
$result = $engine->eval('Math.max(1, 2, 3)');
echo $result; // 3When installed alongside aheinze/ScriptLite, the PHP Engine class automatically delegates to the C extension — no code changes needed.
$engine = new ScriptLite\Engine();
$result = $engine->eval('Math.max(1, 2, 3)'); // uses C extension transparently| Method | Description |
|---|---|
eval(string $code, array $globals = []): mixed |
Evaluate JS code and return the result |
compile(string $code): CompiledScript |
Compile JS to bytecode |
run(CompiledScript $script, array $globals = []): mixed |
Execute compiled bytecode |
transpile(string $code): string |
Transpile JS to PHP code |
getOutput(): string |
Get captured console.log output |
| Method | Description |
|---|---|
compile(Program $ast): CompiledScript |
Compile an AST to bytecode |
| Method | Description |
|---|---|
execute(CompiledScript $script, array $globals = []): mixed |
Execute compiled bytecode |
getOutput(): string |
Get captured console.log output |
MIT