FormaLang

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.

// Cargo.toml
[dependencies]
formalang = "0.0.2-beta"

// main.rs
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); // User

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.