dc6e0d45e1
Implements plans/01-see-introspection.md, all phases. - see.rs: feature-free IR pretty-printer (format_ir/format_ir_with), exhaustive over IrOp -- a new variant fails the build, not the output. - SEE-IR <name>: post-optimization IR view with resolved callee names, immediate/does> annotations; host-word and interpreter-token stubs. - SEE <name>: verbatim source capture for colon words (multi-line, comments preserved, EVALUATE-nesting safe, error-path wiped, MARKER/ REMEMBER/EMPTY roll word sources back too). Data definers (VARIABLE/ CONSTANT/CREATE/BUFFER:/2*/F*/SYNONYM) record synthesized one-liners at definition time; VALUE/2VALUE/FVALUE/DEFER synthesize at SEE time so current values and IS targets show. Fallback chain ends at IR dump or host-word stub -- SEE never dead-ends on a defined word. - HELP [<name>]: wordhelp.rs doc table with stack effect + one-line description for EVERY word in a fresh VM (300+ dictionary words plus all outer-interpreter tokens); a coverage test fails the build if a word is ever added undocumented. User words echo their leading ( ... -- ... ) comment. SEE/SEE-IR prepend the HELP line as a \ comment. Bare HELP prints usage. - boot.fth colon definitions get real sources for free (they flow through evaluate); INTERPRETER_TOKENS gained the missing ?DO. 524 unit + 11 compliance + 9 comparison + 5 crypto + 1 bench green; fmt/clippy clean; core still builds --no-default-features; web wasm-pack build unchanged.
45 lines
1.2 KiB
Rust
45 lines
1.2 KiB
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. **Optimizer** applies transformation passes (constant folding, inlining, etc.)
|
|
//! 3. **Codegen** translates optimized IR to WASM bytecode via `wasm-encoder`
|
|
|
|
pub mod codegen;
|
|
pub mod config;
|
|
#[cfg(feature = "crypto")]
|
|
pub mod crypto;
|
|
pub mod dictionary;
|
|
pub mod error;
|
|
pub mod ir;
|
|
pub mod memory;
|
|
pub mod optimizer;
|
|
pub mod runtime;
|
|
pub mod see;
|
|
pub mod wordhelp;
|
|
|
|
// Outer interpreter: runtime-agnostic, works with any Runtime impl
|
|
#[allow(trivial_numeric_casts, clippy::unnecessary_cast)]
|
|
pub mod outer;
|
|
|
|
// Modules requiring the native wasmtime runtime
|
|
#[cfg(feature = "native")]
|
|
pub mod consolidate;
|
|
#[cfg(feature = "native")]
|
|
pub mod export;
|
|
#[cfg(feature = "native")]
|
|
pub mod js_loader;
|
|
#[cfg(feature = "native")]
|
|
pub mod runner;
|
|
#[cfg(feature = "native")]
|
|
pub mod runtime_native;
|