Two significant commits hit submain today, closing out the static string subset for the JIT. D2.3d brings print-time string interpolation and f64 print support, and D2.3c adds compile-time literal string concatenation and content equality. The commit sequence moved our parity numbers from 215/71/0 to 222/64/0 across 286 fixtures—submain is advancing fast.
D2.3d: print-time interpolation and f64
This is the heavyweight commit. We've got print("a {x} b") now breaking down into an inline print sequence during lowering. No runtime string construction here; we're passing literals and values through type-suited intrinsics and completing the statement with a cx_print_newline. The aim? Completely sidestep R6 by avoiding dynamic string allocation.
We diverged from the interpreter in a couple of nuanced areas: shadowed names after exiting inner blocks and handling use-before-declaration. Neither scenario is covered by current fixtures, so it's deliberate, not a silent ship. It's linked to an ongoing interpolation-scoping question we've been nudging down the road.
Five new host intrinsics are onboarded in HostBoundary— cx_print_str_inline, cx_printn_inline, cx_print_bool_inline, cx_print_f64_inline, and cx_print_newline. Normal print behavior remains unchanged.






