{"slug": "no-panic", "name": "no-panic", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 4, "warners": 0, "score": 2.789, "rising": -0.98, "first": "2025-11-18", "latest": "2026-08-15", "why": "no-panic: https://docs.rs/no-panic/latest/no_panic/", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 1, "compare": 0, "warn": 1}, "spark": [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "no-panic: https://docs.rs/no-panic/latest/no_panic/", "kind": "", "icon": true, "domain": null, "github_repo": "github.com/dtolnay/no-panic", "official_url": "https://github.com/dtolnay/no-panic", "pricing": "", "aliases": ["no-panic", "no_panic"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 756891664, "item_id": 47305729, "url": "https://news.ycombinator.com/item?id=47305729", "by": "chirsz", "date": "2026-03-09", "stance": "recommend", "quote": "no-panic: https://docs.rs/no-panic/latest/no_panic/", "excerpt": "You can see: * no-panic: https://docs.rs/no-panic/latest/no_panic/ * Safe Rust has no undefined behavior: https://news.ycombinator.com/item?id=39564755", "context": "", "use_case": "Enforcing no-panic guarantees", "switched_from": "", "story": "A Grand Vision for Rust"}, {"id": 746851377, "item_id": 46678211, "url": "https://news.ycombinator.com/item?id=46678211", "by": "aw1621107", "date": "2026-01-19", "stance": "recommend", "quote": "no_panic-like [0] technique", "excerpt": "I think it might be an interesting experiment to try to duplicate as much of the functionality of IKOS as possible in vanilla Rust using a no_panic-like [0] technique. My guess is that most of the checks are already done by Rust or can be covered by such a technique, albeit perhaps with more hand-holding than for IKOS. The pointer alignment and comparison checks are the ones I'm least certain about since Rust is rela", "context": "", "use_case": "Panic-free Rust checks", "switched_from": "", "story": "Fil-Qt: A Qt Base build with Fil-C experience"}, {"id": 737015792, "item_id": 46063487, "url": "https://news.ycombinator.com/item?id=46063487", "by": "fwip", "date": "2025-11-26", "stance": "recommend", "quote": "Does #[no_panic] do it for you?", "excerpt": "Does #[no_panic] do it for you? https://docs.rs/no-panic/latest/no_panic/", "context": "", "use_case": "", "switched_from": "", "story": "Cloudflare outage should not have happened"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 735617744, "item_id": 45976109, "url": "https://news.ycombinator.com/item?id=45976109", "by": "aw1621107", "date": "2025-11-18", "stance": "warn", "quote": "That has a bunch of caveats, though, and the ergonomics leave something to be desired", "excerpt": "I think the most common solution at the moment is dtolnay's no_panic [0]. That has a bunch of caveats, though, and the ergonomics leave something to be desired, so a first-party solution would probably be preferable. [0]: https://github.com/dtolnay/no-panic", "context": "", "use_case": "compile-time no-panic checks", "switched_from": "", "story": "Cloudflare outage on November 18, 2025 post mortem"}]}], "who": [], "tags": [], "use_cases": ["panic-freedom checking in rust", "enforcing no-panic guarantees", "panic-free rust checks", "compile-time no-panic checks"], "compared": [], "makers": [{"id": 756979216, "item_id": 47311201, "url": "https://news.ycombinator.com/item?id=47311201", "by": "dtolnay", "date": "2026-03-09", "stance": "recommend", "quote": "It was literally made for libraries.", "excerpt": "> It's not a good option for library crates, e.g. Author here. Yes, it is. It was literally made for libraries. Notably https://github.com/dtolnay/zmij and https://github.com/dtolnay/itoa use it to enforce that the libraries' public API is absent of panicking.", "context": "", "use_case": "proving Rust code can't panic", "switched_from": "", "story": "A Grand Vision for Rust"}], "threads": [{"url": "https://news.ycombinator.com/item?id=47256376", "title": "A Grand Vision for Rust", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49152023", "title": "Rust project goals: Immobile types and guaranteed destructors", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46646080", "title": "Fil-Qt: A Qt Base build with Fil-C experience", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46059227", "title": "Cloudflare outage should not have happened", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=45973709", "title": "Cloudflare outage on November 18, 2025 post mortem", "mentions": 1}], "sentiment_by_month": {"2025-11": {"warn": 1, "recommend": 1}, "2025-12": {}, "2026-01": {"recommend": 1}, "2026-02": {}, "2026-03": {"recommend": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {}, "2026-08": {"neutral": 1}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 789007056, "item_id": 49312941, "url": "https://news.ycombinator.com/item?id=49312941", "by": "ameliaquining", "date": "2026-08-15", "stance": "neutral", "quote": "no-panic relies on a linker hack because that's what's possible to do in stable Rust today", "excerpt": "no-panic relies on a linker hack because that's what's possible to do in stable Rust today; there's no API for adding an additional compiler pass that prohibits you from calling certain functions. Constants are well-defined in Rust; panicking operations like array indexing would be allowed within no-panic functions in const contexts (https://doc.rust-lang.org/reference/const_eval.html#const-context), but not otherwis", "context": "", "use_case": "Panic-freedom checking in Rust", "switched_from": "", "story": "Rust project goals: Immobile types and guaranteed destructors"}, {"id": 756891664, "item_id": 47305729, "url": "https://news.ycombinator.com/item?id=47305729", "by": "chirsz", "date": "2026-03-09", "stance": "recommend", "quote": "no-panic: https://docs.rs/no-panic/latest/no_panic/", "excerpt": "You can see: * no-panic: https://docs.rs/no-panic/latest/no_panic/ * Safe Rust has no undefined behavior: https://news.ycombinator.com/item?id=39564755", "context": "", "use_case": "Enforcing no-panic guarantees", "switched_from": "", "story": "A Grand Vision for Rust"}, {"id": 746851377, "item_id": 46678211, "url": "https://news.ycombinator.com/item?id=46678211", "by": "aw1621107", "date": "2026-01-19", "stance": "recommend", "quote": "no_panic-like [0] technique", "excerpt": "I think it might be an interesting experiment to try to duplicate as much of the functionality of IKOS as possible in vanilla Rust using a no_panic-like [0] technique. My guess is that most of the checks are already done by Rust or can be covered by such a technique, albeit perhaps with more hand-holding than for IKOS. The pointer alignment and comparison checks are the ones I'm least certain about since Rust is rela", "context": "", "use_case": "Panic-free Rust checks", "switched_from": "", "story": "Fil-Qt: A Qt Base build with Fil-C experience"}, {"id": 737015792, "item_id": 46063487, "url": "https://news.ycombinator.com/item?id=46063487", "by": "fwip", "date": "2025-11-26", "stance": "recommend", "quote": "Does #[no_panic] do it for you?", "excerpt": "Does #[no_panic] do it for you? https://docs.rs/no-panic/latest/no_panic/", "context": "", "use_case": "", "switched_from": "", "story": "Cloudflare outage should not have happened"}, {"id": 735617744, "item_id": 45976109, "url": "https://news.ycombinator.com/item?id=45976109", "by": "aw1621107", "date": "2025-11-18", "stance": "warn", "quote": "That has a bunch of caveats, though, and the ergonomics leave something to be desired", "excerpt": "I think the most common solution at the moment is dtolnay's no_panic [0]. That has a bunch of caveats, though, and the ergonomics leave something to be desired, so a first-party solution would probably be preferable. [0]: https://github.com/dtolnay/no-panic", "context": "", "use_case": "compile-time no-panic checks", "switched_from": "", "story": "Cloudflare outage on November 18, 2025 post mortem"}]}