Version: 0.7.1
Copyright © 2026 Shawn Londono · LedoCorp · http://www.ledocorp.org
License: Apache License 2.0 · NOTICE
fx is a systems language that refuses hidden control.
No garbage collector quietly rewriting your heap.
No implicit allocator.
No framework magic between what you wrote and what runs.
Every important decision (who allocates, who mutates, how long memory lives) is visible in the source.
fx is built for people who still live in the C universe (or need to) and want a sharper language on top of it, not a replacement religion:
| You care about… | fx’s answer |
|---|---|
| Predictable memory | Named regions + effects (alloc, mut) in the signature |
| Shipping beside C | Dual emission: run natively and emit readable C |
| Existing C libraries | Wrap / host: C owns main, fx owns the logic |
| Auditability | Lowering targets a small, explicit C substrate (zspec) |
| Humans and agents | Low-ceremony, local style: easy to read, easy to generate, hard to “accidentally GC” |
This repository is the full language package: compiler binary, standard library, scaffolds, docs, link materials, and optional inspectable compiler sources under compiler-source/. Clone it, put bin/ on your PATH, and write fx. To read how the frontend is expressed in fx, open compiler-source/ (that folder is not a rebuild SDK).
import std/vec;
fn main() -> i32 effects { alloc, mut } {
region r = arena(4096); // this heap lives here
let v: Vec<i32> = vec.new(0);
let v2: Vec<i32> = vec.push(v, 40);
let v3: Vec<i32> = vec.push(v2, 2);
return vec.get(v3, 0) + vec.get(v3, 1); // 42
}
When r ends, that arena is gone. The effects clause told you the function may allocate and mutate before you read the body. That is the product: locality of reasoning.
When you need the C world:
fx emit-c main.fx -o out_c # inspect the lowering
fx run lib.fx --host host.c # C main + fx library
Emitted C is not a dump of IR. It is meant to look like something a competent C programmer could maintain.
- Systems and embedded developers who want structure without surrendering the heap to a GC
- Teams wrapping mature C libraries who want a better language for new code, not a full rewrite
- People building with AI assistants who need a language that stays mechanical and explicit so generated code remains auditable
It is not trying to be a batteries-included application platform, a GC scripting language, or a marketing-site ecosystem. This release ships a serious core: language + compiler + std foothold + C interop.
Requirements: this repo · a C toolchain (gcc default) · Windows or Linux x86_64 (macOS binary comes later).
# put bin/ on PATH, then:
fx doctor # check gcc/clang/zig + zspec paths
fx version # v0.7.1
fx new hello
cd hello
fx run main.fx # exit 42
| OS | Binary |
|---|---|
| Windows | bin/fx.exe |
| Linux | bin/fx |
More: docs/START_HERE.md
fx new tiny --scaffold minimal
fx new firmware --scaffold embedded
| Path | Role |
|---|---|
bin/ |
Prebuilt fx compiler |
scaffolds/ |
Official fx new templates |
std/ |
Standard library (import std/vec, …) |
zspec/ + build/ |
Headers + libzspec for linking emitted C |
docs/ |
Language and tooling guides |
examples/ |
Optional demos (core + C-host wrap) |
compiler-source/ |
Read-only fx compiler modules (inspect; run bin/fx) |
Map: PACKAGE.md
fx treats C as a first-class destination, not an escape hatch:
fx run/fx build: emit, link with zspec, run or produce a binaryfx emit-c: generate.c/.hyou can read and own--host: keep your Cmain, link fx as the library
Demo:
fx run examples/showcase_wrap/compute.fx --host examples/showcase_wrap/host.c
Also on the web: https://www.ledocorp.org/fx/docs/
| Doc | Topic |
|---|---|
| docs/LANGUAGE.md | Language tour (types, Result, collections, modules, …) |
| docs/REFERENCE.md | Compact 0.7 surface reference |
| docs/REGIONS.md | Effects, region kinds, ownership / borrows |
| docs/STD.md | Standard library map and APIs |
| docs/WRAP.md | C host / extern "c" |
| docs/SCAFFOLDS.md | Project templates |
| docs/CLI.md | Full command surface (incl. fx doctor / fx lsp / fx mcp) |
| docs/START_HERE.md | Install and hello |
This package’s compiler includes:
fx doctor: check C toolchain + zspec pathsfx lsp: editor language serverfx mcp: lean MCP tools for agents (check/locate/run, …)
Same explicit language, usable from Cursor and friends once fx is on your PATH.
fx is stewarded by Shawn Londono / LedoCorp.
- GitHub pull requests are not accepted at this time.
- Issues are welcome for bugs.
See CONTRIBUTING.md and SECURITY.md.
0.7.1 is a usable language package: compiler, scaffolds, std foothold, Windows/Linux binaries, C wrap path, fx doctor, expanded language docs (aligned with ledocorp.org), and inspectable compiler-source/. The standard library is still small; macOS binaries will follow.
The thesis is not small: explicit systems programming with dual emission to readable C.