v0.3.0 — now available

Systems programming with
compile-time memory safety

Ferrum-language gives you C's familiar syntax and LLVM-compiled performance, with Rust-style ownership and borrow checking — no garbage collector, no runtime, no data races.

borrows.fe
// Compile-time memory safety — no runtime cost
#include <stdio.h>

int main() {
    int x = 10;

    {
        int& reader = &x;          // immutable borrow
        printf("read: %d\n", *reader);
    }   // borrow released here

    int&mut writer = &mut x;   // mutable borrow — safe
    *writer = 99;
    printf("after write: %d\n", x);

    return 0;
}

Why Ferrum-language?

Modern systems programming should not force you to choose between memory safety and a familiar syntax. Ferrum-language gives you both.

🔒

Compile-time memory safety

Ownership, borrow checking, and move semantics catch use-after-free, dangling pointers, and data races before your program ever runs.

Zero-cost abstractions

No garbage collector, no reference counting, no runtime. Safety guarantees are enforced entirely at compile time — zero overhead at runtime.

🧠

Familiar C syntax

If you know C, you already know most of Ferrum. Structs, pointers, functions — same syntax, safer semantics. No steep learning curve.

🏗️

LLVM 18 backend

Compiles to native machine code via LLVM 18. Full optimization pipeline — the same backend used by Clang and Rust.

🔀

Ownership & move semantics

Resources have a single owner. Transfer ownership with move(), heap-allocate with new. Memory is freed automatically at scope end.

🚧

Opt-in unsafe

Need raw pointer arithmetic or FFI? Wrap it in an unsafe { } block. The borrow checker flags any unsafe operation outside of one.

🔗

C interoperability

Import any C header with #include. Call libc directly. Ferrum compiles to the same ABI, so mixing C and Ferrum is seamless.

📦

No hidden dependencies

A single ferrumc binary is all you need. Point it at a .fe file and get a native binary. No linker scripts, no build system required.

Download

Install Ferrum-language

Choose your operating system. All binaries are built from the same source and verified with SHA-256 checksums.

Linux
macOS
Windows
BSD

Direct download Recommended

Single static binary. Extract and run — no installation required.

Linux x86_64 (.tar.gz)   Linux aarch64 (.tar.gz)
tar -xzf ferrumc-*-linux-x86_64.tar.gz && sudo mv ferrumc /usr/local/bin/

Snap under review

Submission to the Snap Store is pending review. Will work on any distribution with snapd.

sudo snap install ferrumc # not yet available

Flatpak / Flathub under review

Submission to Flathub is pending review.

flatpak install flathub org.ferrum_lang.ferrumc # not yet available

NixOS / nix-env under review

A pull request to nixpkgs is open and under review.

nix-env -iA nixpkgs.ferrumc # not yet available

Debian / Ubuntu / Arch / Fedora / openSUSE coming soon

Native distribution packages (apt, dnf, pacman, zypper) are planned. For now, use the direct download below.

MacPorts under review

A port submission is open and under review.

sudo port install ferrumc # not yet available

Homebrew coming soon

A Homebrew formula is planned.

Direct download binary

macOS arm64 — Apple Silicon   macOS x86_64 — Intel
tar -xzf ferrumc-*-macos-*.tar.gz && sudo mv ferrumc /usr/local/bin/

winget under review

A manifest has been submitted to the winget-pkgs repository and is under review.

winget install FerumLanguage.ferrumc # not yet available

Chocolatey under review

Package submission is under human review.

choco install ferrumc # not yet available

Direct download binary

Windows x86_64 (.zip)

Extract and add the folder to your PATH, or run ferrumc.exe directly.

FreeBSD — Ports under review

A port submission is open in the FreeBSD ports tree and under review.

cd /usr/ports/lang/ferrumc && make install clean # not yet available

OpenBSD — pkg_add coming soon

A port submission to ports@openbsd.org is in progress.

NetBSD / pkgsrc — DragonFly BSD coming soon

Ports for NetBSD pkgsrc and DragonFly BSD dports are planned.

Direct download binary

FreeBSD x86_64 (.tar.gz)
tar -xzf ferrumc-*-freebsd-x86_64.tar.gz && install -m 755 ferrumc /usr/local/bin/