Version: 1.0.0 · Release notes · GitHub
Copyright © 2026 Shawn Londono · LedoCorp · http://www.ledocorp.org License: GNU GPL v3 · NOTICE · third-party licenses
fx is a systems language with visible control.
Named regions + effects in signatures. Native-first fx run (the primary compiler path when the program fits; otherwise a built-in fallback engine inside bin/fx). IR → native on that fallback path when QBE is present. Emit-C stays first-class and readable. Wrap mature C libraries instead of rewriting them.
This repo is the language package: put bin/ on your PATH and write fx.
License: GNU GPL v3 — see LICENSE.
Needs: this repo · gcc (or clang/zig) · Windows or Linux x86_64 (no macOS prebuilt).
# put bin/ on PATH, then:
fx doctor
fx version # v1.0.0
fx new hello
cd hello
fx run main.fx # expect exit 42
Prove the package: ./scripts/verify-pack.sh (or .\scripts\verify-pack.ps1 on Windows) — docs/QUALITY.md.
| OS | Binary | IR (when staged) |
|---|---|---|
| Windows | bin/fx.exe |
third_party/qbe/windows/qbe.exe |
| Linux | bin/fx |
third_party/qbe/obj/qbe |
Without QBE, use fx run main.fx --emit-c. Layout: PACKAGE.md.
Argv: fx run does not forward program args — use --scaffold cli / --host.
Pins: fx new writes fx.mod. Optional fx mod vendor / verify → vendor/std + fx.sum;
compile prefers verified vendor/std, else the std/ beside your project (or FX_STD_ROOT).
import std/vec;
fn main() -> i32 effects { alloc, mut } {
region r = arena(4096);
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
}
fx run main.fx --emit-c
fx emit-c main.fx -o out_c
fx run lib.fx --host host.c
Also on the web: https://www.ledocorp.org/fx/docs/
| Step | Doc |
|---|---|
| 1 Install | docs/START_HERE.md |
| 2 Weekend path | docs/WEEKEND.md — hello → CLI → fxserve |
| 3 Backends | docs/DRIVERS.md — Auto / emit-C / IR / --driver sh |
| 4 Ship a tool | docs/SHIP.md — pins, --cli/--host, dual-path before claim |
| 5 C shape | docs/C_SHAPE.md — how regions / Result / Vec look in emit-C |
| 6 Patterns | docs/PATTERNS.md — SoA / Result / caps / wire recipes |
| 7 Language | docs/LANGUAGE.md |
| 8 Composition | docs/COMPOSITION.md |
| 9 Regions / caps | docs/REGIONS.md |
| 10 Wrap / C host | docs/WRAP.md |
| 11 CLI | docs/CLI.md |
| Map | docs/SURFACE.md — as-implemented cheatsheet |
| Tracking | docs/TRACKING.md |
| Std / Reference | docs/STD.md · docs/REFERENCE.md |
| Quality | docs/QUALITY.md — verify-pack |
| Never / may | docs/GAPS.md |
What’s next: docs/NEXT.md.
Install from GitHub Releases (Win + Linux x86_64). Requires fx 0.9.6+ (prefer 1.0.0+). GPL-3.0.
| Tool | Role | Repo |
|---|---|---|
| fxrun | Task runner (fxrun.toml) |
ledocorp/fxrun |
| fxql | SQLite one-shot + FsCap | ledocorp/fxql |
| fxlz4 | LZ4 pack/unpack | ledocorp/fxlz4 |
| fxblake3 | BLAKE3 file/tree hash | ledocorp/fxblake3 |
| fxfetch | HTTPS GET + NetCap | ledocorp/fxfetch |
| fxpipe | Parallel BLAKE3 + nursery | ledocorp/fxpipe |
| fxguest | Cap speech (allow/deny/fuel) | ledocorp/fxguest |
| fxserve | Local static HTTP(S) | ledocorp/fxserve |
Site index: https://www.ledocorp.org/fx/tools/ · Detail: docs/LIBRARIES.md.
- First stable promise — Path C + Balance, emit-C permanent, dual-path culture, Win+Linux x86_64
- Vendor-first — verified
vendor/stdwins over staged/FX_STD_ROOTforimport std/… - Trust / teach — C_SHAPE.md · SHIP.md · PATTERNS.md ·
scripts/verify-pack - Carry-forward: GPL-3.0, Auto
fx run,--emit-c, IR when QBE is present, tools as separate packs
Full notes: docs/releases/1.0.0.md. Prior: 0.9.75.
fx doctor·fx lsp·fx mcp(check / locate / run)- Editor day-one: docs/EDITOR.md
Maintained by Shawn Londono / LedoCorp. PRs not accepted; issues welcome for bugs. CONTRIBUTING.md · SECURITY.md
Newest first under docs/releases/. Latest: 1.0.0.