In this release, we've extended our native LLVM collections with Map<K, V> and extensive string methods like charAt, split, and substring.
keep m: Map<string, int> = Map::new();
m.set("score", 100);
for k in m { print(k); }
Stay up to date with the latest features, releases, and guides from the Ferrite core team.
Ferrite v3.2.0 brings Native Maps, rich String Manipulation, and a new `range()` builtin to make iteration and data structure usage incredibly powerful!
In this release, we've extended our native LLVM collections with Map<K, V> and extensive string methods like charAt, split, and substring.
keep m: Map<string, int> = Map::new();
m.set("score", 100);
for k in m { print(k); }
The massive v3.1.0 update transforms Ferrite into a fully expression-oriented language and introduces native dynamic collections powered by RAII memory management.
In our biggest syntax overhaul yet, if, match, and blocks now evaluate to values, completely changing how you assign states. We also eliminated the runtime Signal enum in favor of unified execution.
keep grade: string = if score >= 90 { "A" } else { "F" };
Finally, we introduced List<T> natively into the LLVM backend. Memory allocations are now cleaned up automatically using scope-based tracking!
Maintenance release focusing on project documentation. We have fully published the 21-chapter Engineering Knowledge Base (EKB) detailing the compiler architecture, memory models, and future MLIR roadmap.
Ferrite scales up! We've introduced a robust module system with import, from, take, and pub keywords, isolating scopes and enabling 100k+ line codebases without symbol pollution.
The Semantic Analyzer now uses a multi-pass DAG resolution system to enforce strict visibility boundaries across files.
import "math"
from "utils" take { helper as my_helper }
pub fun add(a: int, b: int) -> int { return a + b; }
The Ferrite compiler can now run entirely in your browser via WebAssembly! We embedded the standard library using include_str! to eliminate OS filesystem dependencies.
Our Windows installation experience has been rewritten. The setup wizard now properly publishes vendor parameters, configures environment paths, and resolves standard SDK files directly.
Ferrite's compiler type check has been hardened. We've introduced explicit interfaces called Traits, which can be custom-implemented on structural Groups to support clean code architectures.
Introduced the where clause for Trait and Shape bounds, allowing functions to enforce tensor dimensionalities natively during the unification pass.
The biggest update in Ferrite history. We discarded the Bytecode VM and transitioned to strict static typing, compiling directly to LLVM IR for bare-metal machine learning performance.
Ferrite now guarantees zero implicit type coercion. Shape mismatch bugs are caught entirely at compile-time.
Replaced the tree-walking interpreter with a custom Stack-Based Bytecode VM. Introduced lexical closures, enum guard clauses, and skip/stop loops control.
The first public release of the Ferrite language, running on a dynamic Tree-Walking Interpreter written in Rust.