"When your Rust code breaks, look at unsafe blocks."
I initially parsed this as "consider adding unsafe blocks"! Turns out they meant "crashes are more likely to be caused by existing unsafe blocks". Phew.
miniblog.
Related Posts
One fun way of testing new AI models: take an existing codebase you have and just ask them to "review it and fix bugs".
In principle this should find more issues over time as models get smarter. I've found a few bugs this way at least.
Thinking more about the "auto eval definitions" approach, I think it breaks down when debugging. If I want to step through the existing definition, it'd be really awkward to re-evaluate the definition at my cursor.
What software designs require clean slate 'revolution' implementations, rather than evolution?
I can think of: borrow checking in a PL (existing code is unsafe), microkernels (architecture is too different from monokernels), and full REPLs (can't add type redefinition later).