Rust frontend RTL — println!/format!/vec!/assert!/panic! runtime
- Type: feature — Track B
- Status: backlog
- Owner: —
- Opened: 2026-07-03
- Umbrella: [[feature-rust-frontend]] — sub-ticket 12/12. Depends on [[feature-rust-macro-rules]] (intrinsic recognition, Track A side) and [[feature-rust-misc-semantics]] (format-string parser, Track A side).
What it does
RTL-side bodies backing the builtin-macro intrinsics parsed by [[feature-rust-macro-rules]]:
println!/eprintln!/format!— call the format-string parser ([[feature-rust-misc-semantics]]) then write to stdout/stderr/build aString, respectively.vec!— literal-array-ctor overVec<T>([[feature-rust-rtl-core-types]]).assert!/assert_eq!/debug_assert!— condition check +panic!with a formatted message on failure.panic!— formatted message + abort. Per [[feature-rust-drop-move-tracking]]'s non-goals:~/nextlevel'sCargo.tomlsetspanic="abort", so this maps straight to existingHalt/exception machinery — no unwind-and-run-Drop-along-the-stack behavior needed for that target. A future program that doesn't setpanic="abort"would need real unwinding — explicitly not this ticket.
Acceptance
- All 6 macros produce correct runtime behavior against the format-string
and
Vecsub-tickets once those land. panic!aborts with the formatted message printed, matchingpanic="abort"semantics exactly (no partial unwind, no Drop calls during the abort — consistent with the non-goal above).
Log
-
2026-07-09 — println!/print! landed on master (ports-back pass, commit bbd15a52) as parser intrinsics over the shared write machinery — no RTL involved. format!/vec!/assert!/panic! remain open (need string values / dynarrays / halt wiring respectively).
-
2026-07-03 — split from [[feature-rust-frontend]] umbrella at ticket-craft time. No code written yet.