Member-only story
Nine Months, Two Phantom Problems, and a Decision to Finally Ship
Devlog #0.5
“The perfect is the enemy of the good. But perfectionism dressed up as rigor? That’s the enemy of ever shipping anything at all.”
Other Articles in the Series
- Building a Custom ECS in Rust — From Idea to Open Source (Devlog #0.1)
- Entities and Components — The Heart of Any ECS (Devlog #0.2)
- Systems: Where ECS Logic Comes Alive (Devlog #0.3)
- Query System: The Bridge Between Data and Logic (Devlog #0.4)
My last commit to this project was nine months ago.
Not because life got in the way — though it did, I became a dad in the meantime, which helps explain the nine months. But the honest reason I stopped was because I became convinced that my ECS had a fundamental correctness bug. A double-borrow iterator invalidation: if you iterated over the world with a query and, inside the filter closure, called world.get_component(), you'd have two simultaneous borrows of the same data. Rust's borrow checker would miss it. Silent data corruption. Wrong counts. Unpredictable behavior.
Nine months later, I opened it again. What I found surprised me.










