{"slug": "nilaway", "name": "NilAway", "category": "other", "category_name": "Other software", "description": "", "recommenders": 6, "commenters": 6, "warners": 0, "score": 5.215, "rising": -0.64, "first": "2025-11-14", "latest": "2026-09-15", "why": "That makes nilaway a decent tool to get feedback right away", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 6, "neutral": 0, "compare": 0, "warn": 0}, "spark": [3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "That makes nilaway a decent tool to get feedback right away", "kind": "", "icon": true, "domain": null, "github_repo": "github.com/uber-go/nilaway", "official_url": "https://github.com/uber-go/nilaway", "pricing": "", "aliases": ["NilAway", "nilaway"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 795490176, "item_id": 49718136, "url": "https://news.ycombinator.com/item?id=49718136", "by": "unscaled", "date": "2026-09-15", "version": null, "stance": "recommend", "quote": "it's also more ergonomic", "excerpt": "Sure it does: https://github.com/uber-go/nilaway Not exactly the same solution as JSpecify, since it doesn't rely on annotations, but it's also more ergonomic. I'm not comparing this to \"null-restricted types\", since that's a draft JEP that hasn't made it even into a preview feature. Go also had multiple proposals for explicit nilability in types, and while they probably have less prospect of ever seeing the light of", "context": "", "use_case": "Nil-safety checks for Go", "switched_from": "", "story": "Java 27"}, {"id": 777962688, "item_id": 48622668, "url": "https://news.ycombinator.com/item?id=48622668", "by": "jchw", "date": "2026-06-21", "version": null, "stance": "recommend", "quote": "This does exist, actually.", "excerpt": "This does exist, actually. https://github.com/uber-go/nilaway", "context": "", "use_case": "Nil pointer dereference detection", "switched_from": "", "story": "Excessive nil pointer checks in Go"}, {"id": 777961792, "item_id": 48622612, "url": "https://news.ycombinator.com/item?id=48622612", "by": "retrodaredevil", "date": "2026-06-21", "version": null, "stance": "recommend", "quote": "That makes nilaway a decent tool to get feedback right away", "excerpt": "The design of error handling in Go is interesting because they wanted to force people to actually handle errors by returning them as values, but then you as the programmer have to decide whether an error should be returned or a panic should be used. It reminds me of the original intention of checked exceptions in Java: checked exceptions are for things you force the caller to handle, unchecked exceptions are for \"you", "context": "", "use_case": "nil safety checking in Go", "switched_from": "", "story": "Excessive nil pointer checks in Go"}, {"id": 735014896, "item_id": 45938431, "url": "https://news.ycombinator.com/item?id=45938431", "by": "trenchpilgrim", "date": "2025-11-15", "version": null, "stance": "recommend", "quote": "In development: https://github.com/uber-go/nilaway", "excerpt": "> better nulability checks In development: https://github.com/uber-go/nilaway", "context": "", "use_case": "", "switched_from": "", "story": "Go's Sweet 16"}, {"id": 734935632, "item_id": 45933477, "url": "https://news.ycombinator.com/item?id=45933477", "by": "MichaelNolan", "date": "2025-11-14", "version": null, "stance": "recommend", "quote": "At work we use Uber\u2019s NillAway, so that helps bit.", "excerpt": "Go would probably be my favorite language if it just had a few more features around functional programming. Specifically around immutability and nullness, and maybe exhaustive switch statements. Then it just might be perfect. At work we use Uber\u2019s NillAway, so that helps bit. https://github.com/uber-go/nilaway Though actually having the type system handle it would be nicer.", "context": "", "use_case": "nil safety checking in Go", "switched_from": "", "story": "Go's Sweet 16"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["nil safety checking in go", "nil-safety checks for go", "nil pointer dereference detection", "nil-pointer checking in go"], "compared": [{"slug": "jspecify", "name": "JSpecify", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=45932962", "title": "Go's Sweet 16", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=48583407", "title": "Excessive nil pointer checks in Go", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49712041", "title": "Java 27", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 3}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {"recommend": 2}, "2026-07": {}, "2026-08": {}, "2026-09": {"recommend": 1}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 795490176, "item_id": 49718136, "url": "https://news.ycombinator.com/item?id=49718136", "by": "unscaled", "date": "2026-09-15", "version": null, "stance": "recommend", "quote": "it's also more ergonomic", "excerpt": "Sure it does: https://github.com/uber-go/nilaway Not exactly the same solution as JSpecify, since it doesn't rely on annotations, but it's also more ergonomic. I'm not comparing this to \"null-restricted types\", since that's a draft JEP that hasn't made it even into a preview feature. Go also had multiple proposals for explicit nilability in types, and while they probably have less prospect of ever seeing the light of", "context": "", "use_case": "Nil-safety checks for Go", "switched_from": "", "story": "Java 27"}, {"id": 777962688, "item_id": 48622668, "url": "https://news.ycombinator.com/item?id=48622668", "by": "jchw", "date": "2026-06-21", "version": null, "stance": "recommend", "quote": "This does exist, actually.", "excerpt": "This does exist, actually. https://github.com/uber-go/nilaway", "context": "", "use_case": "Nil pointer dereference detection", "switched_from": "", "story": "Excessive nil pointer checks in Go"}, {"id": 777961792, "item_id": 48622612, "url": "https://news.ycombinator.com/item?id=48622612", "by": "retrodaredevil", "date": "2026-06-21", "version": null, "stance": "recommend", "quote": "That makes nilaway a decent tool to get feedback right away", "excerpt": "The design of error handling in Go is interesting because they wanted to force people to actually handle errors by returning them as values, but then you as the programmer have to decide whether an error should be returned or a panic should be used. It reminds me of the original intention of checked exceptions in Java: checked exceptions are for things you force the caller to handle, unchecked exceptions are for \"you", "context": "", "use_case": "nil safety checking in Go", "switched_from": "", "story": "Excessive nil pointer checks in Go"}, {"id": 735014896, "item_id": 45938431, "url": "https://news.ycombinator.com/item?id=45938431", "by": "trenchpilgrim", "date": "2025-11-15", "version": null, "stance": "recommend", "quote": "In development: https://github.com/uber-go/nilaway", "excerpt": "> better nulability checks In development: https://github.com/uber-go/nilaway", "context": "", "use_case": "", "switched_from": "", "story": "Go's Sweet 16"}, {"id": 734999728, "item_id": 45937483, "url": "https://news.ycombinator.com/item?id=45937483", "by": "qouteall", "date": "2025-11-15", "version": null, "stance": "recommend", "quote": "", "excerpt": "There is borgo https://github.com/borgo-lang/borgo but it's not yet mature and not being actively developed", "context": "", "use_case": "Nil-pointer checking in Go", "switched_from": "", "story": "Go's Sweet 16"}, {"id": 734935632, "item_id": 45933477, "url": "https://news.ycombinator.com/item?id=45933477", "by": "MichaelNolan", "date": "2025-11-14", "version": null, "stance": "recommend", "quote": "At work we use Uber\u2019s NillAway, so that helps bit.", "excerpt": "Go would probably be my favorite language if it just had a few more features around functional programming. Specifically around immutability and nullness, and maybe exhaustive switch statements. Then it just might be perfect. At work we use Uber\u2019s NillAway, so that helps bit. https://github.com/uber-go/nilaway Though actually having the type system handle it would be nicer.", "context": "", "use_case": "nil safety checking in Go", "switched_from": "", "story": "Go's Sweet 16"}]}