Initial commit: WAFER (WebAssembly Forth Engine in Rust)

Optimizing Forth 2012 compiler targeting WebAssembly with IR-based
compilation pipeline, multi-typed stack inference, subroutine threading,
and JIT/consolidation modes. Rust kernel with ~35 primitives and Forth
standard library for core/core-ext word sets.
This commit is contained in:
2026-03-29 22:14:53 +02:00
commit 683281363d
33 changed files with 5084 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
[package]
name = "wafer"
description = "WAFER: WebAssembly Forth Engine in Rust - CLI REPL and compiler"
version.workspace = true
edition.workspace = true
license.workspace = true
[dependencies]
wafer-core = { path = "../core" }
wasmtime = { workspace = true }
wasmtime-wasi = { workspace = true }
anyhow = { workspace = true }
clap = { version = "4", features = ["derive"] }
rustyline = "15"
+41
View File
@@ -0,0 +1,41 @@
//! WAFER CLI: Interactive REPL and AOT compiler for WAFER Forth.
use clap::Parser;
/// WAFER: WebAssembly Forth Engine in Rust
#[derive(Parser, Debug)]
#[command(name = "wafer", version, about)]
struct Cli {
/// Forth source file to execute
file: Option<String>,
/// Compile all words into a single optimized WASM module
#[arg(long)]
consolidate: bool,
/// Output file for consolidated WASM (requires --consolidate)
#[arg(short, long)]
output: Option<String>,
}
fn main() -> anyhow::Result<()> {
let cli = Cli::parse();
match cli.file {
Some(ref _file) => {
// TODO: Step 9 - Load and execute Forth file
eprintln!("WAFER: file execution not yet implemented");
}
None => {
// TODO: Step 9 - Interactive REPL
println!(
"WAFER v{} - WebAssembly Forth Engine in Rust",
env!("CARGO_PKG_VERSION")
);
println!("Type BYE to exit.");
eprintln!("REPL not yet implemented");
}
}
Ok(())
}