Skip to content

Releases: ledocorp/fxlang

fx 0.9.6 - honesty freeze (argv, platforms, vendor pin)

Choose a tag to compare

@shawnlondono shawnlondono released this 10 Aug 22:50

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.sum pin only; not vendor-first compile)
  • TLS / full network stack as language product
  • Lexer keywords nursery / spawn / await / Task<T> (use spawn_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

Choose a tag to compare

@shawnlondono shawnlondono released this 10 Aug 12:46

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.sum only)
  • TLS / full network stack as language product
  • Lexer keywords nursery / spawn / await / Task<T> (use spawn_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

Choose a tag to compare

@shawnlondono shawnlondono released this 09 Aug 04:56

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

Choose a tag to compare

@shawnlondono shawnlondono released this 08 Aug 23:51

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

Choose a tag to compare

@shawnlondono shawnlondono released this 08 Aug 03:28

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

Choose a tag to compare

@shawnlondono shawnlondono released this 07 Aug 21:03

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)

Choose a tag to compare

@shawnlondono shawnlondono released this 06 Aug 15:24

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

Choose a tag to compare

@shawnlondono shawnlondono released this 06 Aug 14:59

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.

TRACKING.md

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 via vec_set (no v[i] = x on growable Vec)
  • 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).

DOGFOOD.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-Vec index-assign sugar (v[i] = x)
  • Traits, closures, Option, full generic Map<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 versionv0.8.0
  • Treat IR → native as the default story in docs and muscle memory; keep --emit-c for 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

Choose a tag to compare

@shawnlondono shawnlondono released this 02 Aug 18:27

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

Choose a tag to compare

@shawnlondono shawnlondono released this 31 Jul 19:10

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