Skip to content

Releases: tschk/inauguration

v0.9.322

Choose a tag to compare

@undivisible undivisible released this 30 Oct 15:01

v0.9.322

Current compiler release for macOS ARM64 and Linux x86_64, replacing the much older v0.9.11 release.

Included

  • Native lowering and Linux compiler regression fixes, including executable generation and aggregate storage.
  • Linux executable-publication synchronization prevents ETXTBSY when unrelated threads fork during compilation, without retrying execution.
  • Linux native string concatenation preserves Unicode and NUL bytes, nested calls, operand effects, and empty strings.
  • Generated x86 ELF objects explicitly request a non-executable stack.
  • Rust frontend improvements: configuration filtering, lexical item-macro expansion, source-owned recursive Box storage, borrowed aggregates, and callable bounds.
  • Bare-metal verifier support for mem-fill64 and mem-copy64.

Verification

  • The tagged source passed 2,996 Cargo tests on macOS and 2,936 on Linux, with one existing ignored test on each platform. Strict Clippy, formatting, protocol regeneration, and all 119 conformance cases passed on both platforms.
  • The executable-publication regression passed ten additional runs. Removing only the lock handoff reproduced ETXTBSY while preserving executable permissions.
  • Release packaging passed checksum, single-member tarball, and version checks on both platforms. Each extracted compiler generated a native executable that exited 42.
  • Linux native-object linking emitted no GNU-stack warnings, and all four linked harnesses had non-executable stacks.
  • The release workflow requires formatting, strict Clippy, the full Cargo suite, protocol generation, and conformance on both platforms. Linux conformance is now blocking.
  • The complete two-platform, non-publishing release rehearsal passed. All four non-self-host CI jobs passed at the same commit.

Known limitations

Self-host is still failing. The compiler cannot yet compile its complete Rust source and dependencies. Both platforms stop at an unresolved generic trait contract in compact_rust_tokens<syn::Path>. The experimental self-host release check remains nonblocking. This is not a self-hosting compiler release.

For compile --json, automation must inspect success and the artifact. Compilation failures can return success: false with exit status 0.

Binary assets are provided for aarch64-apple-darwin and x86_64-unknown-linux-gnu, each with a .sha256 checksum file.

Full changes: v0.9.11...v0.9.322

v0.9.11

Choose a tag to compare

@undivisible undivisible released this 20 Sep 17:43
6576434

Bug fixes for dynamic linking surfaces:

  • owned-compile: SCI images keep every declared function (export tables are dynamic-linking surfaces, not entry-reachable subtrees); shared libraries whose entry the loader never calls no longer lose their exports.
  • boot emit: the kernel boot export table keeps export-only leaves (e.g. ticks-now, mem-heap-free) so dynamically linked apps resolve all their imports.

Full test suite: 1212 passed.

v0.9.10

Choose a tag to compare

@undivisible undivisible released this 20 Sep 13:38
1af71ab

Dynamic linking for Space

  • SCI v2 binary emitter: --emit sci now produces the 64-byte-manifest v2 format — export table (all defined functions), import table (extern call rel32 0 call sites), and a shared NUL-terminated name pool. A Space-style loader can bind imports at load time and register providers per domain.
  • Boot export table: --emit boot appends a kernel export table after the code and stores its address in boot-header [40..48], letting the running kernel register itself as a symbol provider for dynamically linked components.
  • Freestanding string ABI: SCI and boot artifacts now emit NUL-terminated C strings (value address = first byte); hosted JIT keeps the length-prefixed instring ABI.

Fixed

  • x86_64 ELF static-lib objects are lowered for real: the object backend previously emitted a canned mov eax, exit_code; ret stub and ignored the module. It now lowers the actual function bodies (entry exported globally, siblings omitted from the symbol table to avoid host link collisions), and extern calls carry R_X86_64_PLT32 relocations through the new .rela.text section. Modules requiring absolute globals/strings are refused rather than emitted with baked load addresses.

check-native-linkable-objects (link a C harness against a compiled .in object and assert the exit value) now passes.

v0.9.9

Choose a tag to compare

@undivisible undivisible released this 20 Sep 12:12
698f326

Language

  • Compound assignment operators += -= *= /= %= now parse and desugar to plain assignments (scalar, index, and field targets). Previously they silently parsed as expression statements, so loop counters never updated.

Fixes

  • Array codegen on the owned x86 path: array-literal locals now allocate one stack slot per element, element reads and writes address those slots, and dynamically indexed literals materialize at the use site. Constant propagation no longer inlines array literals (which produced unexecutable [1,2,3][i] forms) and counts arr[i] = v / s.f = v as mutations of their base.
  • in execute propagates nonzero JIT exit statuses instead of always exiting 0.
  • JIT runtime maps a data section and rebases global reference sites, so executed globals and struct-field globals hold real state.

Packaging

  • Crate metadata cleanup; CLI --about no longer hardcodes a stale version.

v0.9.8

Choose a tag to compare

@github-actions github-actions released this 16 Sep 02:17
00209c9
v0.9.8

v0.9.6

Choose a tag to compare

@github-actions github-actions released this 30 Jul 00:16
v0.9.6

v0.9.5

Choose a tag to compare

@github-actions github-actions released this 29 Jul 22:41
Release v0.9.5

v0.9.4

Choose a tag to compare

@github-actions github-actions released this 29 Jul 22:49
Release v0.9.4

v0.9.3

Choose a tag to compare

@github-actions github-actions released this 23 Jul 21:17
v0.9.3 - update tree-sitter-holyc and lockfile

v0.9.2

Choose a tag to compare

@github-actions github-actions released this 23 Jul 18:47
v0.9.2 - fix nested index parsing in .in