DEV Community

COMMENTERTHE9
COMMENTERTHE9

Posted on • Originally published at cx-lang.com

Cx Dev Log — 2026-04-08

Thirteen days and counting. That’s how long our submain branch has been sitting without a merge into main. We've got five solid commits tested and ready, yet they continue to loom over our work on Cx — haunting our 0.1 milestone with their unmerged status. It’s frustrating. It’s blocking. And it’s the heart of the current situation.

The Submain Standoffs

Let's break down why this merge gap is such a big deal. Those commits aren’t window-dressing. They tie up four hard blockers that are crucial for the 0.1 release. For instance, the move from saturating to wrapping arithmetic doesn’t just tick a box — it handles those tricky i128::MIN edge cases that could catch developers off guard. Then there's the Phase 10 while loop lowering, shifting to a cleaner CFG pattern with support for loop-carried SSA and backedge insertion. We’ve locked down our UTF-8 decision, ensuring consistency across the board with no Latin-1 fallback, and finally, our semicolon rule is established — optional except where it helps in expression statements for clarity. Add to that a basic test runner packing assert, assert_eq, and a neat --test mode, and it’s clear that these merged bits represent a meaningful slice of progress.

A quick glance at the diff between main and submain shows substantial activity — 24 files modified, 367 insertions, and 501 deletions across critical components like main.rs, runtime.rs, and the spec itself (cx_syntax.md). These aren’t superficial updates. They are pivotal changes dragging their feet in the review queue.

Branch Backlog Buildup

Our woes don’t stop with submain. We’ve also got eight daily-log branches hanging around, starting with daily-log-2026-03-29 through daily-log-2026-04-07. While these don’t carry the same weight as the five on submain, they do clutter our workflow. Some contain roadmap updates alongside daily changes, and the longer we let them accumulate, the more we risk avoidable conflicts when they’re finally addressed.

Stuck Roadmap

Our trusty roadmap still reflects main accurately, which is both strategic and necessary. It’s a balancing act — representing the truth of what’s merged against the aspirations of what’s ready but pending. Items like the test runner, integer overflow handling, and semicolon integration aren’t checked off because, well, they’re not on main yet. The roadmap makes a small nod to the decided UTF-8 direction despite its yet-to-be-merged status on submain. Prematurely marking these as complete would only add to the confusion.

What Needs to Happen

The path forward is clear, even if it seems like groundhog day admitting it again. Merge submain into main. Those five commits, resolving four blockers, are primed and should be the immediate focus. No apparent source conflicts should impede this, apart from an expected nudge needed in the roadmap file.

Once submain sees the light of main, we need to address the next high-impact blocker — the error model implementation, with Result, Ok, Err, and the ? operator framework laid out in the spec. There's also the daunting yet essential task of tackling the := type inference quality gate, which has yet to kick off.

Today might feel static without new landings, but beneath the surface, the code is waiting, complete, and eager to push us forward if we can just make the merge.


Follow the Cx language project:

Originally published at https://cx-lang.com/blog/2026-04-08

Top comments (0)