{"slug": "tsz", "name": "tsz", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 4, "warners": 1, "score": 1.803, "rising": -0.98, "first": "2026-05-06", "latest": "2026-05-29", "why": "This is way more important: https://tsz.dev/sound-mode/", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 0, "compare": 0, "warn": 1}, "spark": [0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "This is way more important: https://tsz.dev/sound-mode/", "kind": "", "icon": false, "domain": "tsz.dev", "github_repo": null, "official_url": "https://tsz.dev/", "pricing": "", "aliases": ["tsz"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 802748496, "item_id": 50171781, "url": "https://news.ycombinator.com/item?id=50171781", "by": "mohsen1", "date": "2026-10-20", "stance": "recommend", "quote": "Congrats to the team on getting this out", "excerpt": "I ran out of patience before models got good enough to get this done. https://tsz.dev Congrats to the team on getting this out", "context": "", "use_case": "", "switched_from": "", "story": "Tsrs: A Port of TypeScript to Rust"}, {"id": 773333328, "item_id": 48333333, "url": "https://news.ycombinator.com/item?id=48333333", "by": "satvikpendem", "date": "2026-05-29", "stance": "recommend", "quote": "such as this project which is converting tsgo to Rust, also with LLMs.", "excerpt": "A very interesting project because I always thought TypeScript or at least some subset of it should be natively compiled. It looks like others had a similar idea too, adding a \"sound mode\" to TypeScript, such as this project which is converting tsgo to Rust, also with LLMs. https://news.ycombinator.com/item?id=48189156#48189573 https://tsz.dev/", "context": "", "use_case": "TypeScript compiler", "switched_from": "", "story": "Perry Compiles TypeScript directly to executables using SWC and LLVM"}, {"id": 770507392, "item_id": 48156712, "url": "https://news.ycombinator.com/item?id=48156712", "by": "nextaccountic", "date": "2026-05-15", "stance": "recommend", "quote": "This is awesome.", "excerpt": "https://tsz.dev/sound-mode/ This is awesome. Typescript really needs more of this. I hope this gets more publicized and perhaps get adopted by Microsoft. I am not sure you should call it sound mode though. > It is not a mathematical proof of soundness, and it does not make third-party .d.ts files truthful. Here there are two completely unrelated things First, soundness is a mathematical thing (sorry). If something is", "context": "", "use_case": "", "switched_from": "", "story": "Bun Rust rewrite: \"codebase fails basic miri checks, allows for UB in safe rust\""}, {"id": 769309568, "item_id": 48081848, "url": "https://news.ycombinator.com/item?id=48081848", "by": "mohsen1", "date": "2026-05-10", "stance": "recommend", "quote": "This is the philosophy of the Sound Mode in tsz.", "excerpt": "Full soundness in JavaScript is proven to be impossible. You can write code that no compiler can really follow the execution path. There has been attempts in the past (https://hegel.js.org) but I think TypeScript has been successful because it is prioritizing DX and ergonomics. In the age of LLMs, the compiler can be a lot more strict. JSON.parse should not return `any` just to make developer happy and keep moving. I", "context": "", "use_case": "TypeScript type checking", "switched_from": "", "story": "tsz: a performance-first TypeScript checker"}, {"id": 768662448, "item_id": 48041403, "url": "https://news.ycombinator.com/item?id=48041403", "by": "teaearlgraycold", "date": "2026-05-06", "stance": "recommend", "quote": "This is way more important: https://tsz.dev/sound-mode/", "excerpt": "This is way more important: https://tsz.dev/sound-mode/ But I want them to make TS fully sound, which they say they\u2019re not currently doing. Maybe one day?", "context": "", "use_case": "TypeScript type checking", "switched_from": "", "story": "tsz: a performance-first TypeScript checker"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 769321425, "item_id": 48082589, "url": "https://news.ycombinator.com/item?id=48082589", "by": "aapoalas", "date": "2026-05-10", "stance": "warn", "quote": "found it to be a deoptimisation", "excerpt": "Regarding the architecture documentation you have up on tsz.dev, one thing that jumped out to me was the use of the per node typed side pools. A semi-recent talk[0] had benchmarked this and found it to be a deoptimisation: he couldn't explain it, but an audience member suggested it is likely because an AST is not generally very type-homogenous in its visit order. After a CallExpr node the next node to visit is probab", "context": "", "use_case": "", "switched_from": "", "story": "Bun's experimental Rust rewrite hits 99.8% test compatibility on Linux x64 glibc"}]}], "who": [], "tags": [], "use_cases": ["typescript compiler", "typescript type checking"], "compared": [{"slug": "typescript-go", "name": "typescript-go", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "github-copilot", "name": "GitHub Copilot", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 777559280, "item_id": 48597455, "url": "https://news.ycombinator.com/item?id=48597455", "by": "mohsen1", "date": "2026-06-19", "stance": "recommend", "quote": "In my project I'm also getting good results (for now on single files)", "excerpt": "In the world of compilers there is a lot of wasted compute. In my project I'm also getting good results (for now on single files) https://tsz.dev/benchmarks/micro", "context": "", "use_case": "", "switched_from": "", "story": "Fable Converted Pylint to Rust"}, {"id": 776486928, "item_id": 48530433, "url": "https://news.ycombinator.com/item?id=48530433", "by": "mohsen1", "date": "2026-06-14", "stance": "recommend", "quote": "tsz's goal is to match tsc (tsgo) but perform better", "excerpt": "I'm making a TypeScript type checker in Rust. tsz is my main side project. Trying to learn from this for how to make software in fully automated fashion. tsz's goal is to match tsc (tsgo) but perform better. I am not passing all tsc's own test cases and working towards making it work on complex type packages. https://github.com/tsz-org/tsz", "context": "", "use_case": "TypeScript type checking", "switched_from": "", "story": "Ask HN: What are you working on? (June 2026)"}, {"id": 775597328, "item_id": 48474833, "url": "https://news.ycombinator.com/item?id=48474833", "by": "mohsen1", "date": "2026-06-10", "stance": "recommend", "quote": "I'm writing a TypeScript checker in Rust. It's not a port. I made this with a different architecture", "excerpt": "Shameless plug. I'm writing a TypeScript checker in Rust. It's not a port. I made this with a different architecture that hopefully once is done will be proven to be a better set of trade-off https://github.com/tsz-org/tsz", "context": "", "use_case": "TypeScript checker", "switched_from": "", "story": "Port React Compiler to Rust"}, {"id": 774925008, "item_id": 48432813, "url": "https://news.ycombinator.com/item?id=48432813", "by": "mohsen1", "date": "2026-06-07", "stance": "neutral", "quote": "My point of working on tsz is to learn how to do very big projects with AI.", "excerpt": "I've been doing the same experiment in tsz[1] for a while now (the same past five months in fact) and I have come to very similar conclusions. Lots of harness to enforce good architecture splits. Lots of tests and CI. My point of working on tsz is to learn how to do very big projects with AI. Eventually the same workflows and attitude can be leveraged to build customer product apps with UI as well. I see that OpenAI ", "context": "", "use_case": "experiment in AI-driven large projects", "switched_from": "", "story": "Harness engineering: Leveraging Codex in an agent-first world"}, {"id": 774372785, "item_id": 48398299, "url": "https://news.ycombinator.com/item?id=48398299", "by": "mohsen1", "date": "2026-06-04", "stance": "neutral", "quote": "In my project I let the agents communicate in GitHub issues", "excerpt": "In my project I let the agents communicate in GitHub issues and pull requests like humans do. I kinda stopped trying making orchestration frameworks. You can see the slop here https://github.com/mohsen1/tsz", "context": "", "use_case": "", "switched_from": "", "story": "Claude Code and Codex Can Have Real-Time Conversation via Git"}, {"id": 773346544, "item_id": 48334159, "url": "https://news.ycombinator.com/item?id=48334159", "by": "mohsen1", "date": "2026-05-30", "stance": "neutral", "quote": "Currently tsz passes nearly 100% of TypeScript tests", "excerpt": "I am taking this attitude to an extreme with tsz. I don't want to announce to the world that tsz is ready until I tested it really really well. Currently tsz passes nearly 100% of TypeScript tests but that is not enough. I want it to be able to type check complex things like type-challenges solutions or complex utility type packages. I'm stress testing it with a repo with 1.5 million lines of code. I'm constantly ass", "context": "", "use_case": "TypeScript type checking", "switched_from": "", "story": "Perry Compiles TypeScript directly to executables using SWC and LLVM"}], "threads": [{"url": "https://news.ycombinator.com/item?id=48150900", "title": "Bun Rust rewrite: \"codebase fails basic miri checks, allows for UB in safe rust\"", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=48332151", "title": "Perry Compiles TypeScript directly to executables using SWC and LLVM", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48132488", "title": "Rewrite Bun in Rust has been merged", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48085993", "title": "Ask HN: What Are You Working On? (May 2026)", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48073680", "title": "Bun's experimental Rust rewrite hits 99.8% test compatibility on Linux x64 glibc", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48041279", "title": "tsz: a performance-first TypeScript checker", "mentions": 2}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {"recommend": 3, "warn": 1}, "2026-06": {}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 802748496, "item_id": 50171781, "url": "https://news.ycombinator.com/item?id=50171781", "by": "mohsen1", "date": "2026-10-20", "stance": "recommend", "quote": "Congrats to the team on getting this out", "excerpt": "I ran out of patience before models got good enough to get this done. https://tsz.dev Congrats to the team on getting this out", "context": "", "use_case": "", "switched_from": "", "story": "Tsrs: A Port of TypeScript to Rust"}, {"id": 776673441, "item_id": 48542090, "url": "https://news.ycombinator.com/item?id=48542090", "by": "mohsen1", "date": "2026-06-15", "stance": "neutral", "quote": "now I'm trying it", "excerpt": "This is the right take. I wouldn't dare to write a TypeScript compiler a year ago but now I'm trying it and I have to say this has taught me so much about compilers, Rust and performance overall that wouldn't be possible before. It's a lot of fun to embrace the new technology and do bigger things. Doing this sort of project is giving me a glimpse of what it is going to be like managing software projects. As software ", "context": "", "use_case": "TypeScript compiler", "switched_from": "", "story": "It used to be hard"}, {"id": 773333328, "item_id": 48333333, "url": "https://news.ycombinator.com/item?id=48333333", "by": "satvikpendem", "date": "2026-05-29", "stance": "recommend", "quote": "such as this project which is converting tsgo to Rust, also with LLMs.", "excerpt": "A very interesting project because I always thought TypeScript or at least some subset of it should be natively compiled. It looks like others had a similar idea too, adding a \"sound mode\" to TypeScript, such as this project which is converting tsgo to Rust, also with LLMs. https://news.ycombinator.com/item?id=48189156#48189573 https://tsz.dev/", "context": "", "use_case": "TypeScript compiler", "switched_from": "", "story": "Perry Compiles TypeScript directly to executables using SWC and LLVM"}, {"id": 770507392, "item_id": 48156712, "url": "https://news.ycombinator.com/item?id=48156712", "by": "nextaccountic", "date": "2026-05-15", "stance": "recommend", "quote": "This is awesome.", "excerpt": "https://tsz.dev/sound-mode/ This is awesome. Typescript really needs more of this. I hope this gets more publicized and perhaps get adopted by Microsoft. I am not sure you should call it sound mode though. > It is not a mathematical proof of soundness, and it does not make third-party .d.ts files truthful. Here there are two completely unrelated things First, soundness is a mathematical thing (sorry). If something is", "context": "", "use_case": "", "switched_from": "", "story": "Bun Rust rewrite: \"codebase fails basic miri checks, allows for UB in safe rust\""}, {"id": 769321425, "item_id": 48082589, "url": "https://news.ycombinator.com/item?id=48082589", "by": "aapoalas", "date": "2026-05-10", "stance": "warn", "quote": "found it to be a deoptimisation", "excerpt": "Regarding the architecture documentation you have up on tsz.dev, one thing that jumped out to me was the use of the per node typed side pools. A semi-recent talk[0] had benchmarked this and found it to be a deoptimisation: he couldn't explain it, but an audience member suggested it is likely because an AST is not generally very type-homogenous in its visit order. After a CallExpr node the next node to visit is probab", "context": "", "use_case": "", "switched_from": "", "story": "Bun's experimental Rust rewrite hits 99.8% test compatibility on Linux x64 glibc"}, {"id": 769309568, "item_id": 48081848, "url": "https://news.ycombinator.com/item?id=48081848", "by": "mohsen1", "date": "2026-05-10", "stance": "recommend", "quote": "This is the philosophy of the Sound Mode in tsz.", "excerpt": "Full soundness in JavaScript is proven to be impossible. You can write code that no compiler can really follow the execution path. There has been attempts in the past (https://hegel.js.org) but I think TypeScript has been successful because it is prioritizing DX and ergonomics. In the age of LLMs, the compiler can be a lot more strict. JSON.parse should not return `any` just to make developer happy and keep moving. I", "context": "", "use_case": "TypeScript type checking", "switched_from": "", "story": "tsz: a performance-first TypeScript checker"}, {"id": 768662448, "item_id": 48041403, "url": "https://news.ycombinator.com/item?id=48041403", "by": "teaearlgraycold", "date": "2026-05-06", "stance": "recommend", "quote": "This is way more important: https://tsz.dev/sound-mode/", "excerpt": "This is way more important: https://tsz.dev/sound-mode/ But I want them to make TS fully sound, which they say they\u2019re not currently doing. Maybe one day?", "context": "", "use_case": "TypeScript type checking", "switched_from": "", "story": "tsz: a performance-first TypeScript checker"}]}