Fifteen days. That’s the current wait time for five commits on submain, each resolving pivotal issues, yet none have made their way to main. This clean diff has sat idle, with zero visible source conflicts, only to stagnate for the third consecutive day. Our project has hit a standstill—a structural bottleneck—with merging submain to main as the sole hurdle.
The Submain Gap
Here's the current state of submain since March 28, featuring five critical commits:
-
Wrapping arithmetic enforcement (
d93582b): Transitioned from saturating to wrapping semantics, an essential shift for handling edge cases likei128::MIN. -
Phase 10 while loop lowering (
0fa06a6): Encompasses changes in header/body/exit CFG, loop-carried SSA, backedge handling, and the addition of three new tests. -
UTF-8 decision locked (
09ef2a3): Committed to strict UTF-8 enforcement, eliminating legacy encodings. -
Semicolon rule (
e214d15): Now optional, except in expression statements. -
Basic test runner (
762b188): Introducedassert,assert_eq, and--testmode, covering tests t77 through t80.
We're looking at 24 files with major changes—367 insertions and 501 deletions. This isn't hypothetical work; it's tested, validated, directly addressing the test runner, integer overflow, and semicolon blockers. But it all waits on submain, absent from main.
Branch Backlog
It's not just submain piling up; the daily-log branches have created a backlog—ten, to be exact: daily-log-2026-03-29 to daily-log-2026-04-09. While some simply adjust daily_log/, others affect docs/frontend/ROADMAP.md. The longer these remain unmerged, the greater their potential to generate merge conflicts, especially in the roadmap file, which has already forked across branches.
Though minor separately, these issues combine with the submain standoff to create a lingering merge debt, a cumulative pressure that grows with each idle day.
Roadmap Status
The current roadmap (docs/frontend/ROADMAP.md, v4.8, dated March 28) remains proportionately aligned with main. Still, it's outdated in terms of progress since the major blockers—the test runner, integer overflow, and semicolon acceptance—still show unchecked. Updating the roadmap without completing merging submain would paint an inaccurate picture, misleading stakeholders about real progress.
What Is Actually Next?
The forecast remains static:
Merge submain to main. This has been the call-to-action for fifteen consecutive days. We have five commits ready to clear four hard blockers. It's the most direct route to untangle our bottleneck.
Merge the daily-log backlog. With ten branches queued, a logical step is to tackle the oldest first, thereby minimizing any potential conflicts in subsequent ones.
Error model (Result). Once
submainmerges, this emerges as the next priority hard blocker. The syntax is set (Result,Ok,Err,?), yet the implementation is pending.:=type inference. While still unstarted, it's crucial and marked as strongly desired for version 0.1.
Three days of inaction, three days of the same necessities reiterated without progress. The submain merge is the nexus. It’s the lynchpin for all advancement, unblocking subsequent developments like error handling and type inference.
Follow the Cx language project:
- Website: cx-lang.com
- GitHub: github.com/COMMENTERTHE9/Cx_lang
- Dev.to: dev.to/commenterthe9
- Bluesky: thecomment.bsky.social
- Twitter/X: @commenterthe9
Originally published at https://cx-lang.com/blog/2026-04-10
Top comments (0)