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 = newScriptLiteExt\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 = newScriptLite\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