Twenty worked Rust decisions

Twenty open-source projects, each run through the same four non-compensatory proof gates. Every report is self-contained, reads in English and 中文, and is pinned to a public commit you can re-measure.

8 APPROVE · 11 REJECT · 1 DEFER–MEASURE · all four scope words · source on GitHub

Desktop applications

Apps whose teams believed a Rust rewrite was the answer. Six of the ten already bet on Rust: two are dead, two have stalled, two are thriving. Same language, opposite outcomes.

remacs/remacsSTAY / REJECTthe experiment already ran; it ran out of people before it ran out of Cxi-editor/xi-editorEXTRACT / APPROVEtake the kernel that survived, not the architecture that didn'tlapce/lapceEXTRACT / APPROVEtake the kernel, rent the editorspacedriveapp/spacedriveSTAY / REJECTRust stays. The feature scope does not.zed-industries/zedMIGRATE / APPROVEthe deadline is measurable and the rewrite shipped; the mechanism is not the advertised onefish-shell/fish-shellMIGRATE / APPROVEthe one everybody talks about and almost nobody finishesghostty-org/ghosttySTAY / REJECTstay in Zig — the cheap fix has not been priced yetbitwarden/clients · apps/desktopSTAY / REJECTthe split it already has is the answersignalapp/Signal-DesktopSTAY / REJECTthe shell stays; the memory-unsafety is somewhere elsekeepassxreboot/keepassxcSTAY / REJECTstay native; the migration buys a new UI, not a safer parser

Systems and developer tooling

The projects people most often demand a rewrite of.

curl/curlEXTRACT / APPROVEkeep Rust at the backend seam curl already shipssqlite/sqliteSTAY / REJECTkeep the C engine; the verification programme is what actually shipsopenssl/opensslSTAY / DEFER–MEASUREstay while the one missing document gets producedFFmpeg/FFmpegPARTIAL / APPROVEreplace the layer attacker bytes reach firstredis/redisSTAY / REJECTkeep the store; the rewrite cannot deliver what it promisesevanw/esbuildSTAY / REJECTkeep the language that already delivered the winPyCQA/flake8STAY / REJECTthe rewrite already happened, and it was not yoursprisma/prisma-enginesSTAY / REJECTkeep query execution in the host languageuutils/coreutilsPARTIAL / APPROVEreplace one utility at a time, not the userland at onceoven-sh/bunMIGRATE / APPROVEthe migration that shipped, approved for the reason it actually had