Glyph Runtime
The Glyph runtime provides an immutable-first virtual machine (VM) for executing Glyph programs with capability-based security.
Features
Immutable-First Design
- All values are immutable - operations create new values rather than modifying existing ones
- Variable bindings are immutable (no reassignment allowed)
- Collection operations (append, insert, etc.) return new collections
- Side effects only through capability-controlled intrinsics
Stack-Based Execution
- Efficient stack-based VM with configurable limits
- Support for nested function calls with proper frame management
- Automatic memory management with configurable limits
Capability-Based Security
- Programs must declare required capabilities upfront
- Fine-grained permission system for:
- Audio synthesis (
audio.speak) - Network access (
network.fetchwith URL patterns) - Display operations (
display.chart,display.image) - User interaction (
wait.confirm) - Memory limits
- Audio synthesis (
- Runtime enforcement prevents unauthorized operations
Comprehensive Instruction Set
- Arithmetic:
Add,Sub,Mul,Div,Mod,Pow - Comparison:
Eq,Ne,Lt,Le,Gt,Ge - Logical:
And,Or,Not - Stack manipulation:
Push,Pop,Dup,Swap,Rot3 - Control flow:
Jump,JumpIf,JumpIfNot,Call,Return - Data structures:
MakeList,MakeDict,ListAppend,DictInsert - Pattern matching:
Match,MatchValue,MatchType - Intrinsics:
CallIntrinsicfor built-in functions - Debugging:
TraceValue,RecordTelemetry
Usage
use ;
// Configure VM with capabilities
let mut config = default;
config.capabilities.grant;
// Create VM instance
let mut vm = VMnew;
// Load bytecode program
vm.load_bytecode;
// Execute program
match vm.execute
Architecture
VM Structure
VM
├── Stack (configurable size)
├── Call Frames (function contexts)
├── Global bindings (immutable)
├── Capability set (granted permissions)
├── Memory manager (tracks allocations)
└── Telemetry collector
Execution Model
- Instructions are fetched from bytecode
- Stack-based operations manipulate values
- Call frames manage function scope
- Capabilities are checked before intrinsics
- Memory limits are enforced continuously
Examples
See the examples/ directory for:
simple_vm.rs- Basic arithmetic and list operationscapability_demo.rs- Capability-based security demonstrationsvm_benchmark.rs- Performance benchmarks
Performance
The VM is designed for:
- Cold start: ≤ 150ms
- Arithmetic operations: > 4 ops/ms
- Memory efficiency: < 10MB for basic programs
- Deterministic execution with seed-based randomness