A statically typed, declarative DSL for Rust applications.
Parse .fv source. Get a fully type-resolved
IrModule back. Drive a UI framework,
generate code, configure a runtime; your backend, your call.
[dependencies] formalang = "0.0.2-beta" use formalang::compile_to_ir; let source = r#" pub struct User { name: String, age: I32 } "#; let module = compile_to_ir(source).unwrap(); println!("{}", module.structs[0].name);
Why FormaLang
Statically typed
Every type, name, and overload is settled at load time.
A broken .fv fails fast, not when
the user clicks the button that runs the bad branch.
Embeddable
Pure compiler frontend: no runtime, no I/O, no globals, no sandbox to maintain. The output is data; walk it, transform it, emit whatever you want.
Backend-agnostic
Drive a UI framework, generate code for any target, configure a runtime, layer custom IR passes. The compiler stops at the IR; you decide what comes next.