phprs 0.1.1

A PHP interpreter with build/package manager written in Rust
Documentation

phprs

A PHP interpreter written in Rust, migrated from the PHP C implementation.

Features

  • Memory Safe: Rust's ownership system prevents memory leaks and dangling pointers
  • Type Safe: Compile-time type checking with Rust enums
  • Thread Safe: Safe concurrent access with Mutex and OnceLock
  • Fast: Zero-cost abstractions, similar performance to C PHP

Quick Start

# Build
cargo build --release

# Run tests
cargo test

# Run a PHP file
cargo run -- run examples/01_hello_world.php

# Start web playground
cargo run -- serve
# Open http://localhost:3080

# Package manager
cargo run -- pkg init

Project Structure

phprs/
├── src/
│   ├── engine/       # Core engine: compiler, VM, types, memory
│   └── php/          # PHP runtime: streams, filesystem, SAPI
├── bin/
│   └── phprs         # Unified CLI (run, serve, pkg)
├── examples/       # PHP and Rust examples
└── tests/          # Comprehensive test suite

API Usage

use phprs::engine::compile;
use phprs::engine::vm;

// Compile PHP code
let op_array = compile_string("<?php echo 'Hello'; ?>", "inline.php")?;

// Execute
let mut exec_data = ExecuteData::new();
execute_ex(&mut exec_data, &op_array);

Status

  • ✅ Core engine (types, strings, hash tables, memory, GC)
  • ✅ PHP runtime (streams, filesystem, output)
  • ✅ Compiler (expressions, statements, functions, classes, traits, namespaces)
  • ✅ VM (64 opcodes, 40+ built-in functions)
  • ✅ PHP 8.0 features (match expressions, attributes, generators)
  • ✅ SAPI (CLI, built-in web server)
  • ✅ Package manager (composer.json, Packagist, dependency resolution)

Tests

cargo test                    # All tests
cargo test --lib             # Library only
cargo test --test php_examples # PHP examples

Documentation