94f6cb6941
WaferConfig: unified config controlling all optimizations individually. ForthVM::new_with_config(config) to create VMs with custom optimization settings. All 8 switchable optimizations: peephole, constant_fold, strength_reduce, dce, tail_call, inline (IR passes) + stack_to_local_promotion (codegen). Benchmark framework (crates/core/tests/benchmark_report.rs): - 7 Forth benchmarks: Fibonacci, Factorial, SumRecurse, NestedLoops, GCD, MemFill, Collatz - Correctness verification across all configs (runs in CI) - Full report with 128 optimization combinations (cargo test --ignored) - Measures execution time, compilation time, WASM module bytes - CONSOLIDATE impact comparison Key findings from benchmark report: - Inlining: -77% exec time on Fibonacci, -92% on Collatz - Stack-to-local promotion: -5.5% WASM module size - CONSOLIDATE: -72% exec time on Fibonacci (call_indirect -> direct call) - All optimizations combined: best overall performance
32 lines
951 B
Rust
32 lines
951 B
Rust
//! WAFER Core: WebAssembly Forth Engine in Rust
|
|
//!
|
|
//! This crate provides the core compiler and runtime for WAFER,
|
|
//! an optimizing Forth 2012 compiler targeting WebAssembly.
|
|
//!
|
|
//! # Architecture
|
|
//!
|
|
//! ```text
|
|
//! Forth Source -> Outer Interpreter -> IR -> Optimize -> WASM Codegen
|
|
//! ```
|
|
//!
|
|
//! The compilation pipeline:
|
|
//! 1. **Outer interpreter** tokenizes input and dispatches to interpret/compile mode
|
|
//! 2. **Compiler** builds an intermediate representation (IR) for each word definition
|
|
//! 3. **Type inference** annotates the IR with stack types
|
|
//! 4. **Optimizer** applies transformation passes (constant folding, inlining, etc.)
|
|
//! 5. **Codegen** translates optimized IR to WASM bytecode via `wasm-encoder`
|
|
|
|
pub mod codegen;
|
|
pub mod compiler;
|
|
pub mod config;
|
|
pub mod consolidate;
|
|
pub mod dictionary;
|
|
pub mod error;
|
|
pub mod ir;
|
|
pub mod memory;
|
|
pub mod optimizer;
|
|
pub mod outer;
|
|
pub mod primitives;
|
|
pub mod types;
|
|
pub mod words;
|