iter emit-ir-staticlib: ail emit-ir --emit=staticlib (M1 fieldtest spec_gap#2)
Restores the Decision-5 IR-readability affordance for main-free
kernels: ail emit-ir gains --emit=staticlib, symmetric with
ail build, reusing the M1-audited Target::StaticLib path via a new
one-line lower_workspace_staticlib convenience. Zero-export guard
byte-identical to build_staticlib's. DESIGN.md widened (not
narrowed) + a pre-existing M1 synopsis omission corrected. 3 new
E2E tests; no fixture minted, no doc pin (E2E is the coverage).
Plan 03493c9.
This commit is contained in:
+7
-2
@@ -2301,6 +2301,11 @@ canonical M1 export shape:
|
||||
(app + state (app * sample sample))))
|
||||
```
|
||||
|
||||
`ail emit-ir <module> --emit=staticlib` prints this kernel's LLVM
|
||||
IR (the external `@<sym>` forwarders, no `@main`) instead of the
|
||||
executable-path `main`-required rejection — the Decision-5
|
||||
IR-readability affordance for a `main`-free kernel.
|
||||
|
||||
## Data model
|
||||
|
||||
The on-disk JSON-AST is what the toolchain hashes, typechecks, and
|
||||
@@ -2606,8 +2611,8 @@ ail workspace <entry.ail.json> — list all modules transitively reach
|
||||
`manifest --workspace` and `diff --workspace`
|
||||
extend single-module subcommands to workspaces)
|
||||
ail builtins — list built-in fns and effect ops
|
||||
ail emit-ir <module> — writes .ll
|
||||
ail build <module> — full pipeline → binary
|
||||
ail emit-ir <module> [--emit=staticlib] — writes .ll (staticlib: a main-free kernel's IR, no @main)
|
||||
ail build <module> [--emit=staticlib] — full pipeline → binary (staticlib: lib<entry>.a + libailang_rt.a)
|
||||
ail run <module> — build + execute (tempdir), passthrough exit code
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user