惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
B
Blog RSS Feed
I
InfoQ
N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
H
Help Net Security
L
LangChain Blog
M
MIT News - Artificial intelligence
Y
Y Combinator Blog
aimingoo的专栏
aimingoo的专栏

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Cx Dev Log — 2026-04-30
COMMENTERTHE · 2026-05-04 · via DEV Community

COMMENTERTHE9

Phase 11 just introduced compound assign lowering on submain, pulling +=, -=, *=, /=, and %%= into the IR backend. All in all, 126 new lines in src/ir/lower.rs and three fresh tests. These operators mark their maiden voyage through the IR backend, and while main keeps its 78/78 green tests, submain stays ahead by 22 commits with a 33-day bridge to cross.

Compound Assign Lowering

Commit 9015aff on submain is the sentinel. Gone is the CompoundAssign stub that only returned an UnresolvedSemanticArtifact. Now, it has real weight with true lowering logic. For Binding LValues, it mirrors the plain assignment's SSA journey:

  1. Fetch the SSA value of the binding.
  2. Lower the right-hand argument.
  3. Emit a Binary instruction mapping to the op (Add for +=, Sub for -=, etc.).
  4. Re-bind via SsaBind and adjust the binding map.

For DotAccess LValues, things are different. Instead of silently bypassing, compound assigns for struct fields raise an intentional typed error. This mirrors the handling of other unsupported constructs and lays down a marker – struct field work needs pointer arithmetic, which isn't in the mix yet.

There are three tests now in play:

  • lowers_compound_assign_add ensures += lands as Binary::Add.
  • lowers_compound_assign_sub drives -= end-to-end through lower_and_validate.
  • rejects_compound_assign_dot_access makes sure DotAccess gets shown the door with the expected error.

Two older error-message checks refined their format, adopting "compound assign binding BindingId(N)" over the bland "CompoundAssign".

In summary, a plus of 126 lines with just 5 lines trimmed, all within src/ir/lower.rs.

The Pattern

This move exemplifies the piecemeal approach standing firm throughout Phase 11. Each parcel grabs one syntax category, works the lowering logic, wraps it in tailored tests, and writes stubs with explicit error signals for what can’t be reached yet. Think of unary expressions landing on April 26. Compound assigns line up now. What remains – ArrayLit, Index, MethodCall, and others, along with compound assign on DotAccess – are nailed down with typed errors, not panic.

The four-day pause from April 26 until now – noteworthy mainly because it broke a steady rhythm – doesn't reflect an existential challenge, but a continued expression lowering march.

Submain Divergence

The rift between main and submain hasn’t changed. Right now, it looms large. Submain's 22 commits are sitting pretty with a 33-day lead covering Phases 10 and 11, the error model (Result), integer overflows, optional semicolons, thorough audits, diagnostic sheen, and the roadmap to v5.0 with its 9 hard blockers checked off. Main is back at v4.8 still staring at those very same 9 blockers.

Merge day has been the linchpin priority forever, but here we are. Every spin in the submain-alone orbit means the merge becomes a bit more of a puzzle. The test gap right now? 39 tests wide (main’s 78 vs submain’s 117).

What's Next

The backend's immediate path is buffered through the remaining expression lowerings. Compound assign on DotAccess, particularly, hinges on struct field access revamps (pointer arithmetic and Load/Store), yet to make its landing.

Merging remains king. The daily-log PR bloat – nearly 30 stagnant branches stretching from March 29 through April 29 – stacks as maintenance debt going forward.


Follow the Cx language project:

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