memory-model: reframe arenas as static frame layout (FORTRAN), not bump heap #38
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/038-memory-model-reframe-arenas-as-static-frame-la"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
memory-model: reframe arenas as static frame layout (FORTRAN), not bump heap
Along the way:
ckcon PATHckbinary →ckcTouches 44 files:
.claude/commands/orchestrate.md,README.md,current-state.md,docs/actors.md,docs/configuration.md,docs/editor.mdand 38 more.It said what I assumed. Reworded in
src/rust/crates/ck_driver/tests/actor_lifecycle.rsso it names the input that broke it, which is what the bug report will need.Happy with this. I ran the suite against the branch and it is green,
src/rust/crates/ck_driver/tests/actor_lifecycle.rsincluded.@ -147,3 +147,3 @@.arg(src).status().expect("spawn the `ck` binary");.expect("spawn the `ckc` binary");The expect message on
expectis the only thing a user sees if this fires. Does it say what they should do, or only what we assumed?, at src/rust/crates/ck_driver/tests/actor_lifecycle.rs:149.Looked through
src/rust/crates/ck_driver/tests/actor_lifecycle.rsas well. Fine by me.ckcon PATH a70f4792f4ckbinary →ckc52c8d12391An actor `spawn` body (and `fn main`) can now call a user-defined `fn` that takes and uses parameters, executing end-to-end through the native pipeline (HIR → Floor IR → Cranelift → binary → container). One uniform call path for n>=0 parameters (0 is just the n=0 case; no special parameterless path): a String param is the (ptr,len) pair, an Int one i64. The driver walks the entry body's transitive same-module user-fn callees, reads param types manifestly off the lifted signature (no inference), and lowers each callee to its own Linkage::Local Cranelift function (two-pass declare-then-define). Params bind via a LocalId->Values slot map; a Ref-to-local arm threads them. Compile-time DI now resolves over every user-fn body, not just the entry. Out of scope (later slices): recursion + E0901 bounds, lambdas, String concat, value-returning user fns (rejected with a clear error), cross-module callees. Files split to stay under the R3 LoC cap (ratchets worst-case down): ck_lower/codegen.rs 807, ck_driver/compile.rs 780; new modules codegen/{user_fn,strings}.rs, ck_driver/{user_fns,dispatch}.rs. This also cleared the pre-existing rustfmt drift in compile.rs/run.rs. Gates: cargo fmt --check clean; clippy --all-targets -D warnings 0/0; cargo test --workspace all pass; acceptance user_fn_call_run prints exactly `world` with the three-event Main lifecycle in the ckc container.