Releases: ledocorp/fxlang
Release list
fx 0.9.6 - honesty freeze (argv, platforms, vendor pin)
fx 0.9.6 — honesty freeze (argv · platforms · vendor pin)
Language package for ledocorp/fxlang
Tag: v0.9.6
Docs: ledocorp.org/fx
On 0.9.5: no new language features — a thin honesty cut so strangers can trust the speech about argv, platforms, and fx mod.
Highlights
| Area | What is now frozen loudly |
|---|---|
| Argv | fx run does not forward program arguments. Product CLIs use --scaffold cli / --host + host/cli. |
| Platforms | Prebuilt compilers: Windows + Linux x86_64 only. No macOS binary in this package. |
| Vendor pin | fx mod vendor / verify + fx.sum = checksum integrity. Compile still resolves import std/… via std/ / FX_STD_ROOT (not vendor/). |
| Docs | CLI / START_HERE / SURFACE / PACKAGE aligned; stale version strings fixed. |
Ship configs: unchanged from 0.9.5 — IR-native (Linux QBE + Windows qbe.exe when staged) · emit-C first-class · host-linked CLI / guest / concur.
Install
fx doctor
fx version # expect v0.9.6
fx new hello && cd hello && fx run main.fx
fx new mytool --scaffold cli
See CLI.md · START_HERE.md · SURFACE.md · SCAFFOLDS.md.
Honesty bounds
Still not in this tag (same refuse shelf as 0.9.5, plus the freezes above):
- Soft / dynamic heap that erases region physics
- Package registry (vendor /
fx.sumpin only; not vendor-first compile) - TLS / full network stack as language product
- Lexer keywords
nursery/spawn/await/Task<T>(usespawn_i32/await_i32) - Generic
Chan<T>/ Send typeck as a finished dialect claim - DAP / integrated debugger product
- Language-wide formal certification claims
- Calling this release v1.0
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0
SQLite · public domain amalgamation · llhttp © Node.js contributors — MIT · QBE © Quentin Carbonneaux — MIT
fx 0.9.5 - production std, concurrency, capability regions
fx 0.9.5 — production std, concurrency, capability regions
Language package for ledocorp/fxlang
Tag: v0.9.5
Docs: ledocorp.org/fx
On 0.9.2: four production surfaces — native testing culture, structured concurrency, stronger std packs, and capability / guest regions with IR dual-path — plus vendor checksum foothold.
Highlights
| Area | What users get |
|---|---|
| Native test culture | fx test / fx fuzz, std/testing + std/proptest, assure dogfoods under examples/assure/ |
| Structured concurrency | std/nursery, std/chan, std/select, std/mailbox, std/supervise + host/concur (emit-C and IR when linked) |
| Spawn / await API | nursery.spawn_i32 / await_i32 (keyword sugar later) |
| Std packs | path / string / encoding / fs copy / walk / log / json / sqlite / time / env / http parse / sync |
| Capability regions | guest begin / nested / caps / std/io_cap / dynamic region sugar — emit-C and IR |
| NetCap dial | std/net TCP dial under allowlist; TLS refused |
| SQLite file + FsCap | File DB open only under allowlisted paths; :memory: unchanged |
| Vendor foothold | fx mod vendor · tidy · verify with fx.sum (offline std pin; not a registry) |
Ship configs: ir-native (Linux QBE + Windows qbe.exe when staged) · emit-C first-class · host-linked CLI / guest / concur.
Install
fx doctor
fx version # expect v0.9.5
fx new hello && cd hello && fx run main.fx
fx new mytool --scaffold cli
fx new sandbox --scaffold guest
fx test examples/assure --backend both
See CLI.md · STD.md · REGIONS.md · SURFACE.md · LIBRARIES.md.
Honesty bounds
Still not in this tag:
- Soft / dynamic heap that erases region physics
- Package registry (vendor /
fx.sumonly) - TLS / full network stack as language product
- Lexer keywords
nursery/spawn/await/Task<T>(usespawn_i32/await_i32) - Generic
Chan<T>/ Send typeck as a finished dialect claim - DAP / integrated debugger product
- Language-wide formal certification claims
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0
SQLite · public domain amalgamation · llhttp © Node.js contributors — MIT · QBE © Quentin Carbonneaux — MIT
fx 0.9.2 - host spine, wraps, scaffolds
fx 0.9.2 — host spine, wraps, scaffolds
Language package for ledocorp/fxlang
Tag: v0.9.2
Docs: ledocorp.org/fx
On 0.9.1: packageable host spine, NetCap foothold, SQLite / llhttp WRAP demos, and CLI / guest scaffolds.
Highlights
| Area | What users get |
|---|---|
| Host spine | Shared host/cap (guest session + caps) and host/cli (argv / exit helpers) as the package SoT |
| Nested guests | Parent guest sessions can own nested children; ending a parent ends children and revokes caps |
| NetCap | Host-minted network allowlist (host + port); allow / deny / revoke — no dial |
| SQLite WRAP | Amalgamation foothold (examples/wrap_sqlite) — :memory: open / exec / query → exit 42 |
| llhttp WRAP | Parse-only foothold (examples/wrap_llhttp) — Content-Length → 42; optional NetCap allow demo |
| Scaffolds | fx new --scaffold cli and --scaffold guest for argv tools and caps-shaped guests |
Capability regions from 0.9.0 (FsCap / OutCap, std/io_cap, std/guest) and Windows QBE from 0.9.1 remain.
Ship configs: ir-native (Linux QBE + Windows qbe.exe when staged) · emit-c-win / emit-C first-class · host-linked CLI / guest.
Install
fx doctor
fx version # expect v0.9.2
fx new hello && cd hello && fx run main.fx
fx new mytool --scaffold cli
fx new sandbox --scaffold guest
See CLI.md · SCAFFOLDS.md · COMPOSITION.md · LIBRARIES.md.
Honesty bounds
Still not in this tag:
- Soft / dynamic heap that erases region physics
- Package manager / registry
- Network dial / TLS as language product
- SQLite file-path + FsCap deepen (beyond
:memory:foothold) - DAP / integrated debugger product
- Language-wide formal certification claims
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0
SQLite · public domain amalgamation · llhttp © Node.js contributors — MIT · QBE © Quentin Carbonneaux — MIT
fx 0.9.1 - native Windows QBE
fx 0.9.1 — native Windows QBE
Language package for ledocorp/fxlang
Tag: v0.9.1
Docs: ledocorp.org/fx
Patch on 0.9.0: ship native Windows IR beside Linux QBE, with honest docs.
Highlights
| Area | What users get |
|---|---|
| Windows QBE | Package may include third_party/qbe/windows/qbe.exe for IR → PE (amd64_win) |
| Parity | Same everyday differential IR set as Linux when that binary is present |
| Fallback | Without qbe.exe, use --emit-c — emit-C stays first-class |
| Docs | Start / CLI / package notes describe Windows vs Linux IR clearly (no WSL requirement) |
Language surface from 0.9.0 (capability regions, guest sessions, composition) is unchanged.
Install
fx doctor
fx version # expect v0.9.1
fx new hello && cd hello && fx run main.fx
On Windows, if third_party/qbe/windows/qbe.exe is in the package, fx run uses native PE IR. Otherwise pass --emit-c. See CLI.md.
Honesty bounds
Still not in this tag:
- Soft / dynamic heap that erases region physics
- Package manager / registry
- DAP / integrated debugger product
- Language-wide formal certification claims
- Claiming every repo example outside the everyday IR set on PE
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0
QBE © Quentin Carbonneaux — MIT (third_party/qbe/LICENSE)
fx 0.9.0 - capability regions
fx 0.9.0 — capability regions
Language package for ledocorp/fxlang
Tag: v0.9.0
Docs: ledocorp.org/fx
Capability-region release on 0.8.5: one fx dialect for apps, scripting, embedded guests, and extensions — host-minted authority, same region and slot-mut physics.
Highlights
| Area | What users get |
|---|---|
| Capabilities | FsCap / OutCap in std/cap; cap-required I/O in std/io_cap |
| Guest session | std/guest + host fx_guest_begin / mint_* / end — teardown revokes caps |
| Scripting / extensions | Host mints caps; guest cannot ambient-open outside the allowlist (deny is loud) |
| Embedded | Caps lower as opaque handles in emit-C ABI — host remains the trust boundary |
| Composition | SoA / pools / vec_set story unchanged — caps add authority, not a soft dialect |
See COMPOSITION.md for the capability-region recipe and examples cap_regions_* / cap_guest_ctx.
Install
fx doctor
fx version # expect v0.9.0
fx new hello && cd hello && fx run main.fx
Honesty bounds
Still not in this tag:
- Soft / dynamic heap that erases region physics
- Package manager / registry
- DAP / integrated debugger product
AllocCap/ linear-only caps- Language-wide formal certification claims
Windows IR (package note): When the package includes third_party/qbe/windows/qbe.exe, Windows uses native PE IR (amd64_win) for the same everyday differential set as Linux. Linux still ships third_party/qbe/obj/qbe. If qbe.exe is missing from a build, use --emit-c. See CLI.md.
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0
QBE © Quentin Carbonneaux — MIT (third_party/qbe/LICENSE)
fx 0.8.5 - polish, editor surface, host authority
fx 0.8.5 — polish, editor surface, host authority
Language package for ledocorp/fxlang
Tag: v0.8.5
Docs: ledocorp.org/fx
Polish release on 0.8.1: make the adoptable story visible in the public package — editor loop, SoA composition, host-minted I/O, lean agent day-one — without new language sugar or a mega-IDE.
Highlights
| Area | What users get |
|---|---|
| Editor | Day-one fx lsp + tree-sitter notes (EDITOR.md); #line/gdb (DEBUG.md) |
| Agent loop | check → locate → run → emit-c + lean fx mcp (AGENT.md) |
| Composition | SoA / id-pool guidance + host-minted I/O example (COMPOSITION.md, examples/cap_host_smoke/) |
| IR toolchain | Unchanged from 0.8.1 — QBE ships in the package |
Install
fx doctor
fx version # expect v0.8.5
fx new hello && cd hello && fx run main.fx
fx check main.fx
fx run main.fx --emit-c
Honesty bounds
Still not in this tag:
- DAP / integrated debugger product
- Package manager / registry
- Soft / dynamic regions or mut sugar on growable
Vec - In-language typed capability values (host-boundary recipe is the story today)
- Language-wide formal certification
Windows IR still needs WSL (or use --emit-c).
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0
QBE © Quentin Carbonneaux — MIT (third_party/qbe/LICENSE)
fx 0.8.1 - public IR toolchain (shipped QBE)
fx 0.8.1 — public IR toolchain
Language package for ledocorp/fxlang
Tag: v0.8.1
Docs: ledocorp.org/fx
Hotfix on top of 0.8.0: the language package now ships the QBE binary so default fx run (IR → native) works outside the private monorepo.
Highlights
| Area | What users get |
|---|---|
| Shipped QBE | third_party/qbe/obj/qbe (Linux ELF) + MIT license |
| Package discovery | Compiler finds QBE next to bin/ (same pattern as zspec) — no fx-compiler/ tree required |
| Native Linux IR | On Linux, IR links via bash + gcc directly (no WSL) |
| Windows IR | Still uses WSL + the shipped Linux QBE; CI smoke uses --emit-c on Windows runners without WSL |
Install
fx doctor
fx version # expect v0.8.1
fx new hello && cd hello && fx run main.fx
fx run main.fx --emit-c # still first-class
Honesty bounds
Unchanged from 0.8.0. Windows IR continues to need WSL (or use --emit-c). macOS prebuilt binary still out.
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0
QBE © Quentin Carbonneaux — MIT (third_party/qbe/LICENSE)
fx 0.8.0 - IR by default, dual paths, real tools
fx 0.8.0 — IR by default, dual paths, real tools
Language package for ledocorp/fxlang
Tag: v0.8.0
Docs: ledocorp.org/fx · start · surface · composition
0.8.0 is the first package that leads with IR → native as the everyday run path, keeps readable C emission first-class, and ships the writeable-fx dogfood apps as proof that real tools fit the language method.
Why this release matters
| Pillar | What you get |
|---|---|
| IR → native by default | fx run / fx build lower through IR and link a native binary. That is the normal path. |
| Emit-C stays first-class | fx run --emit-c, fx emit-c, annotate comments, .fxmap + #line, fx locate — audit, embed, or debug via C when you want. |
| Self-hosted compiler surface | Lexer / parse / emit live as inspectable fx under compiler-source/ (read-only; not a rebuild SDK). |
| Composition under regions | Ids, pools, vec_set, Map accumulate, teaching patterns — how to build without mut sugar or an unsafe dialect. |
| Dogfood tools | CHIP‑8, JSON (wrap + pure), line-LCS textdiff — small real programs with clear exit contracts. |
| Adoption polish | Clearer compiler diagnostics on stderr, shared thin C CLI-host recipe, wilder JSON (\uXXXX) on the pure-fx path. |
Nothing here removes the C exit ramp. Dual paths are the product.
Highlights (detail)
1. Run path: IR first
fx run main.fx # IR → native (default)
fx build main.fx # same backends; link only
fx run main.fx --emit-c # emit-C → native
fx emit-c main.fx -o out_c # inspect .c / .h only
Everyday scaffolds, week-two tools, composition examples, and dogfood apps are meant to stay green on both paths. Prefer the default IR path for day-to-day work; use emit-C when you need readable lowering, host/link recipes, or C-side debugging.
2. Dual-emit tracking
Default emit annotates generated C with /* fx: … */ comments. Debug source mode adds a .fxmap sidecar and #line directives so gcc/clang diagnostics and debuggers can point back at .fx spans. fx locate turns a C file/line into the fx origin.
3. Language & std (carried forward, still honest)
Full programming surface from the 0.7.x line, including:
- Named regions + effects (
alloc/mut/io) Result/?, structs, enums,match, modules,extern "c"Vec/ arrays / slices /Buf/Bytes/Map(string→i32 and string→string) /StrBuilder- Grow by reassignment (
v = vec_push(v, x)); slot writes viavec_set(nov[i] = xon growableVec) - Typed pool
Id,map_add_i32, composition examples (composition_tally,composition_reach)
→ SURFACE.md · COMPOSITION.md · STD.md
4. Dogfood apps (in the package)
| App | Folder | What it is |
|---|---|---|
| 1 | examples/dogfood_chip8/ |
Headless CHIP‑8 interpreter (composition at scale) |
| 2 | examples/dogfood_jsonget/ |
JSON path CLI via careful cJSON wrap + thin C host |
| 3 | examples/dogfood_chip8_ui/ |
Same machine with a raylib-class visual host |
| 4 | examples/dogfood_fxjson/ |
Same product shape in pure fx (parse/DOM/path); \uXXXX escapes; wild fixtures |
| 5 | examples/dogfood_textdiff/ |
Line-split + LCS edit-script CLI (not Myers / GNU hunks) |
Product CLIs that need argv/stdio still use a thin C main; fx owns the logic. Shared host helpers live beside the apps (see WRAP.md).
5. Adoption quality
- Compiler diagnostics go to stderr; Result /
?paths get actionable help where it matters - Shared CLI host recipe for argv tools (Apps 2 / 4 / 5 style)
- App 4 JSON deepened for messier real input, including JSON
\uXXXX(invalid sequences fail closed)
6. C wrap / bind
fx bind for inspectable Level‑1 stubs; hand-written Level‑2 wrappers where ownership policy matters. Landed wrap examples include JSON path helpers and xxHash. Priority list: LIBRARIES.md.
7. Tooling in the binary
fx doctor · fx new · fx check · fx run / build · fx emit-c · fx cc · fx locate · basic fx lsp · lean fx mcp (check / locate / run).
Install
Requirements: this package · a C toolchain on PATH (gcc default) · Windows or Linux x86_64 prebuilt.
# put package bin/ on PATH
fx doctor
fx version # expect v0.8.0
fx new hello
cd hello
fx run main.fx # exit 42
fx run main.fx --emit-c # optional second path
Windows without PATH: .\bin\fx.exe … · Linux: ./bin/fx …
Package layout: PACKAGE.md · five-minute path: START_HERE.md
Try (sample commands)
fx run examples/composition_tally/main.fx
fx run examples/composition_reach/main.fx
fx run examples/pattern_pool/main.fx
fx run examples/dogfood_chip8/main.fx
fx run examples/dogfood_fxjson/fxjson_lib.fx --host examples/dogfood_fxjson/host_cli.c
fx emit-c examples/tool_result/main.fx -o out_c --debug-source
fx locate --c-file out_c/main.c --line 42
Exact host/link lines live in each example’s README.
Honesty bounds (0.8.0)
Still out of this package unless listed above:
- Unsafe dialect / Soft-fx sandbox story
- Growable-
Vecindex-assign sugar (v[i] = x) - Traits, closures,
Option, full genericMap<K,V> - Package manager / registry
- Advanced fx Runtime (devices / capability sandboxes) — design may exist; not shipped
- macOS prebuilt binary
- Whole compiler rewritten solely as IR (emit-C remains a first-class product path)
Quality habits for users: QUALITY.md. What’s next (product-facing): NEXT.md.
Upgrade notes (from 0.7.5)
- Expect
fx version→v0.8.0 - Treat IR → native as the default story in docs and muscle memory; keep
--emit-cfor audit and host workflows - Prefer dual-path confidence on any tool you publish
- Dogfood folders under
examples/dogfood_*are the reference shapes for small CLIs
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0
fx 0.7.5 - composition power
fx 0.7.5 — composition power
Language package for ledocorp/fxlang
Docs: ledocorp.org/fx · composition · surface
Pack closeout on the 0.7.4 composition method. Tag: v0.7.5.
Highlights
| Area | What landed |
|---|---|
Typed pool Id |
std/pool / lib/id_pool — bare i32 at get/set is a type error |
| Map accumulate | map_add_i32 / std/map.add_i32 (slot add or insert) |
| Non-toy programs | examples/composition_tally, examples/composition_reach |
| Native emit | map_add_i32 in live sh_* CallExpr (FX-SH-NAT-9) |
| Docs / llms | SURFACE + COMPOSITION + site parity for Horizon A |
| Honesty | No unsafe dialect; module-default effects (A4) skipped |
Install
fx doctor
fx version # expect v0.7.5
fx new hello && cd hello && fx run main.fx # exit 42
Try
fx run examples/composition_tally/main.fx
fx run examples/composition_reach/main.fx
fx run examples/pattern_pool/main.fx
fx run examples/tool_tally/main.fx
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0
fx 0.7.4 - composition under regions
fx 0.7.4 — composition under regions
Language package for ledocorp/fxlang
Docs: ledocorp.org/fx · composition · tracking
Composition-under-regions pack closeout. Tag: v0.7.4.
Highlights
| Area | What landed |
|---|---|
| Composition method | docs/COMPOSITION.md — ids/pools, local mut, grow/freeze discipline |
| Dual-emit tracking | docs/TRACKING.md — annotate / .fxmap / #line / fx locate |
| Pool / ids | std/pool + lib/id_pool (make/alloc/get/set/len) |
| Slot mut | vec_set(v, i, x) (needs mut) — stable slot write; still no v[i]=x |
| Patterns | examples/pattern_{ids,mut_table,grow_freeze,ring,pool} |
| Native emit | vec_set in live sh_* CallExpr (FX-SH-NAT-8) |
| Honesty | No unsafe dialect; phase types / convenience helper skipped |
Install
fx doctor
fx version # expect v0.7.4
fx new hello && cd hello && fx run main.fx # exit 42
Try
fx run examples/pattern_pool/main.fx
fx run examples/pattern_ids/main.fx
fx run examples/tool_result/main.fx
Honesty bounds
Still out: full generic Map<K,V>, &mut Vec as slice, mut sub-slices, Vec index assign sugar, traits/closures/Option, package manager, advanced fx Runtime, Neuton. No unsafe path.
Thanks
Stewarded by Shawn Londono / LedoCorp · Apache-2.0