Sigil is a programming language where the type system tracks data provenance.
External data is marked `~` (reported). Validated data becomes `?` (uncertain).
Computed values are `!` (known). The type checker enforces these boundaries -
reported data can't satisfy a known requirement without explicit validation.
fn process(input~: str) -> Result! {
let validated? = input |validate!{ parse_int(_) }
let result! = validated * 2 // OK: computation produces known
result
}
This catches injection vulnerabilities at compile time and makes trust
boundaries explicit in function signatures.
Other features:
- Morpheme operators for pipelines: `data |τ{_ * 2} |φ{_ > 10} |Σ`
- Rust-like ownership and borrowing
- Self-hosting compiler (233/233 tests passing)
- Interpreter, JIT, and LLVM backends
Written in Rust. MIT/Apache-2.0.
https://github.com/Daemoniorum-LLC/sigil-lang0 comments