Changelog

Release notes for inauguration — the in CLI, the crates.io crate inauguration, and GitHub release binaries.

Install

cargo install inauguration
# or, from a checkout:
./install.sh

Prebuilt tarballs (Linux x86_64, macOS aarch64) and SHA-256 sidecars: GitHub Releases.

This page is written for humans and coding agents. Each version lists why it mattered, not every commit. Git history remains authoritative for drive-by tests and refactors.


0.9.8 — 2026-09-16

Current crates.io and GitHub release. Tag v0.9.8.

This is the first public ship after a long stretch of compiler work on master that never made it into 0.9.6 (July). Treat 0.9.8 as the real 0.9-line feature drop.

Compiler correctness (why v0.9.7 never shipped)

Dead-function elimination (remove_dead_functions) kept only kernel_entry / kernel-entry when --entry was omitted. On AArch64 hosts (macOS CI, native JIT), a module whose only function was fn main was emptied before lowering:

jit-lowering-failed: native-lower: module has no functions

Linux x86_64 CI does not take that AArch64 JIT path, so the bug hid until the GitHub Release prerelease gate on macos-latest. 0.9.8 keeps main as an implicit DCE root. Related earlier fix: unused let bindings whose initializer calls a function are no longer DCE'd (side-effecting calls must run).

Packages and integrity

Emit profiles and dual-emit

Three orthogonal profiles:

ProfileIntent
defaultConventional optimize + emit
hardenAnti-decomp: opaque predicates, junk pads, CFG dispatch-lite, MBA-ish pads. For samples, not the runtime artifact
leanAggressive inlining / shortest internal calls

--dual-emit / --harden-out writes a runtime artifact (default or lean) plus a separate harden sample. Combining --harden with dual-emit is rejected so the runnable binary is never the anti-decomp shape.

Polyglot fronts

JIT / native

Process spawn

.in process_run is argv-style (Command::new + args via external_guard). No /bin/sh -c. Preview daemon sockets use shorter names.

Docs site

Moonshine (Bun + Crepus IR) landing page at inauguration.tsc.hk. docs-gen turns repo docs/*.md into /docs/*.html. Cloudflare Pages deploy of docs-site/dist.

CI

Pull-request CI is permissions: contents: read. Checkouts use persist-credentials: false. Amp orb .agents/setup / .agents/resume install rustup + fetch in-cli lockfile.

Artifacts

Rollback: previous published crate is 0.9.6. Yank 0.9.8 with cargo yank inauguration --vers 0.9.8 if needed.


0.9.7 — skipped (2026-09-16)

Tag v0.9.7 was pushed. The Release workflow failed the macOS prerelease cargo test gate (see 0.9.8 DCE / main). No GitHub assets, no crates.io 0.9.7. Do not install this tag.


0.9.6 — 2026-07-30

Last published crate before 0.9.8.

Small patch; most compiler work after this landed only in 0.9.8.


0.9.5 — 2026-07-29

Lockfile / version bump on the 0.9 line. No user-facing compiler change vs 0.9.4.


0.9.4 — 2026-07-29


0.9.3 — 2026-07-23

tree-sitter-holyc 0.1.2 and lockfile refresh. HolyC remains an active (always-compiled) front.


0.9.2 — 2026-07-23

.in nested index expressions. Bracket-depth tracking in in_lang_parse so xs[i][j] is one index chain, not a truncated parse.


0.9.1 — 2026-07-23

Thumb lowerer decomposition and encoding fixes (follow-up to 0.9.0's Thumb feature set). Prefer 0.9.2+ if you emit thumbv8m.


0.9.0 — 2026-07-23

First 0.9 crate. Freestanding Thumb-2 (.in → thumbv8m.main-none-eabi) grew from a stub into a real lowerer:

Also in the 0.8 → 0.9 window (published as 0.9.0):

Docs: freestanding-thumbv8m.md, in-language.md.


0.8.0 — 2026-07-18

Self-host / lowering completeness wave. The Rust-on-Core-IR path moved from “parse only” toward emitting 0 for remaining unsupported patterns so self-host compile could proceed instead of hard-failing:

This release is the “make self-host not die on every stdlib shape” cut. 0.9.x then specialized Thumb and emit profiles.


0.7.13 — 2026-07-15


0.7.12 / 0.7.11 — 2026-07-15

Lockfile hygiene. 0.7.11 removed blake3 from the crate graph.


0.7.10 — 2026-07-14

inlang kebab-case identifiers (foo-bar instead of forcing foo_bar). Breaking for sources that relied on underscore-only names in the .in surface.


0.7.9 — 2026-07-13

Maintenance cut on the 0.7 native/vector line (see 0.7.8–0.7.4).


0.7.8 — 2026-07-08

Removed the v-native experiment. Testing tweaks. V remains a Tree-sitter front (--features extended), not a separate native backend.


0.7.7 — 2026-07-06

Release-gate fix: macOS native executables and the Linux job in the tag workflow. Needed so 0.7 binaries actually attached.


0.7.6 — 2026-07-06

Lockfile bump only.


0.7.5 — 2026-07-06

in --debug (and related flags) so default JIT runs stay quiet; verbose lowering/slop is opt-in.


0.7.4 — 2026-07-05

Docs-site became a real product:

Native/vector work in this era (0.7.4–0.7.10), still relevant:


Older than 0.7.4

Tags v0.7.3 … v0.7.0 and earlier exist on GitHub for archaeology. The public site and crates.io story starts in practice at 0.7.4 (docs + tsc.hk) and 0.9.0 (Thumb + 0.9 crate line).

Prefer 0.9.8 for current in.