Briefing

Cx Language Project: Major Merge and IR Lowering Sprint Completed

competitors
by COMMENTERTHE9 ·

Review the new IR lowering changes and update your build scripts to accommodate the added struct and array support.

What to do now

Review the new IR lowering changes and update your build scripts accordingly.

Summary

On May 4, 2026 the Cx language project completed a major merge that closed a 37‑day divergence between the main and submain branches. The test matrix exploded from 78 to 117 tests, and an 11‑commit sprint in IR lowering added full struct and array support. PR #57 unlocked nine blockade issues, updated the error model, enforced integer overflow rules, refined semicolon behavior, fixed parser body handling, ensured struct field overflow handling, streamlined recursive types, and sealed memory soundness. The IR lowering sprint introduced CX‑7 through CX‑17, adding direct function call lowering, struct literal lowering with IrInst::PtrOffset, struct field reads via DotAccess, void function call lowering to emit IrInst::Call with dst None, struct field writes for Assign and CompoundAssign, and array lowering for type, literal, and element access. Design decisions settled on a single memory model using IrType::Ptr for stack‑allocated storage, compile‑time PtrOffset for field accesses, and runtime PtrAdd for array elements. Immediate next steps include merging CX‑18 and CX‑19, targeting method call lowering, and eventually lowering the when block while keeping branches from drifting 37 days apart.

Key changes

  • Test matrix increased from 78 to 117 tests, all passing.
  • PR #57 unlocked nine blockade issues and updated the error model, integer overflow rules, semicolon behavior, parser body handling, struct field overflow handling, recursive types, and memory soundness.
  • CX‑7 added direct function call lowering with 193 new lines in lower.rs.
  • CX‑9 introduced struct literal lowering using IrInst::PtrOffset for compile‑time pointer arithmetic.
  • CX‑10 enabled struct field reads via DotAccess with layout table lookups and PtrOffset, adding six new tests.
  • CX‑13 streamlined void function call lowering to emit IrInst::Call { dst: None, return_ty: None } at statement level.
  • CX‑16/17 added array lowering for type, literal, and element access, increasing codebase by 475 lines and six tests.

Affects

none

Customer impact

Analyzing matches…

Ask about this story

Impact on an agency? Which customers? Compare historically Risks of waiting