Original Summary

tsv is a set of performance-focused language tools. Today it ships formatters and parsers for TypeScript&#x2F;JS, CSS, and Svelte, including a vscode&#x2F;openvsx extension. JSON and HTML are planned, maybe linting after. The readme has a loose roadmap - <a href="https:&#x2F;&#x2F;github.com&#x2F;fuzdev&#x2F;tsv" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;fuzdev&#x2F;tsv</a><p>tsv&#x27;s benchmarks show how the Web&#x27;s newer native tools have some performance left on the table. Formatting TypeScript, tsv is more than twice as fast as oxfmt, and is smaller and uses less memory - <a href="https:&#x2F;&#x2F;tsv.fuz.dev&#x2F;docs&#x2F;benchmarks" rel="nofollow">https:&#x2F;&#x2F;tsv.fuz.dev&#x2F;docs&#x2F;benchmarks</a><p>From the site:<p>- Formatting TypeScript, tsv is ~2.2x faster than Oxfmt (native-vs-native), ~36x faster than Prettier (native Rust vs Prettier&#x27;s JS; ~26x as wasm), and ~7.6x faster than Biome (wasm-vs-wasm)<p>- Formatting Svelte, tsv is ~79x faster than Prettier (~55x as wasm) and ~10x faster than Biome (wasm-vs-wasm)<p>- Formatting CSS, tsv is ~3.6x faster than Oxfmt (native-vs-native), ~111x faster than Prettier (~78x as wasm), and ~12x faster than Biome (wasm-vs-wasm)<p>tsv is focused on the Web and Svelte, and doesn&#x27;t support other nonstandard languages like JSX&#x2F;TSX and SCSS. This limits possible adoption, but it keeps the tool slim and simple, and there are plenty of other tools that offer a generic language platform - tsv isn&#x27;t trying to compete with them. Part of my motivation was being tired of slow tools and Svelte&#x27;s second-class status in this next generation.<p>Before starting the project, I had tried to build on Oxc and Biome, and ran into some discouraging edges. On the benchmarks&#x27; language support section, you&#x27;ll see Oxc doesn&#x27;t export its CSS parser (recently added, a fork of Raffia - <a href="https:&#x2F;&#x2F;github.com&#x2F;g-plane&#x2F;raffia" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;g-plane&#x2F;raffia</a>), and Biome doesn&#x27;t export its parsers. Also oxfmt doesn&#x27;t ship wasm to the browser yet, and tsv&#x27;s smaller footprint is useful there (Biome is 46.9 MB to tsv&#x27;s 2.2).<p>Parser conformance is as good or better than Oxc, Biome, and swc, except negative parser cases (errors), which are unfinished. <a href="https:&#x2F;&#x2F;tsv.fuz.dev&#x2F;docs&#x2F;conformance" rel="nofollow">https:&#x2F;&#x2F;tsv.fuz.dev&#x2F;docs&#x2F;conformance</a><p>The codebase turns 1 year old at the end of the month. It&#x27;s my first serious AI-generated project, built with Claude Code. I learned Rust in 2015, built some toys including an arcade action prototype, and followed its development over the years, but this is my first project since. tsv wouldn&#x27;t exist without LLMs - it requires far too much labor for a side project.<p>tsv leans heavily on Prettier, but doesn&#x27;t copy it. This is why this production release took almost a year, despite the silly fast coding part. I made some different stylistic choices, more for Svelte than TypeScript, and fixed numerous quirks and bugs and documented them. tsv also takes advantage of Svelte 5&#x27;s whitespace rules, which further diverged from HTML to trim leading whitespace in tags, fixing longstanding formatting warts - <a href="https:&#x2F;&#x2F;svelte.dev&#x2F;docs&#x2F;svelte&#x2F;v5-migration-guide#Whitespace-handling-changed" rel="nofollow">https:&#x2F;&#x2F;svelte.dev&#x2F;docs&#x2F;svelte&#x2F;v5-migration-guide#Whitespace...</a><p>The formatter takes no style config, and instead is hardcoded to Prettier&#x27;s style with Svelte&#x27;s config. (which has the uncommon trailingComma:none, but it&#x27;s good enough for the Svelte team, and I want to defer the choice to them) Supporting Prettier&#x27;s config would force significant costs on tsv for JS runtime integration, so instead I&#x27;m keeping the formatters simple and non-configurable instead of making all users pay those costs. One example of these costs can be see in the CLI benchmark (which is a fork of Oxc&#x27;s official bench-formatter) - when tsv&#x27;s binary is used directly instead of through Node, the single-repo CLI benchmark runs tsv 1.7x faster using less than half the memory.<p>Next I&#x27;m exploring rearchitecting to Zig-inspired data-oriented parsing - <a href="https:&#x2F;&#x2F;mitchellh.com&#x2F;zig&#x2F;parser" rel="nofollow">https:&#x2F;&#x2F;mitchellh.com&#x2F;zig&#x2F;parser</a> - which should get tsv closer to Yuku&#x27;s speed, measured on the site.<p>The vscode extension is fuzdev.tsv-format - <a href="https:&#x2F;&#x2F;marketplace.visualstudio.com&#x2F;items?itemName=fuzdev.tsv-format" rel="nofollow">https:&#x2F;&#x2F;marketplace.visualstudio.com&#x2F;items?itemName=fuzdev.t...</a> - and Open VSX - <a href="https:&#x2F;&#x2F;open-vsx.org&#x2F;extension&#x2F;fuzdev&#x2F;tsv-format" rel="nofollow">https:&#x2F;&#x2F;open-vsx.org&#x2F;extension&#x2F;fuzdev&#x2F;tsv-format</a><p>Repo: <a href="https:&#x2F;&#x2F;github.com&#x2F;fuzdev&#x2F;tsv" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;fuzdev&#x2F;tsv</a>


  • 情报分类:商业与市场研究
  • 分类依据:内容涉及商业、投资或市场动态
  • 信息来源:Hacker News 新项目
  • 发布时间:2026/10/14 18:57:04