尤雨溪创办VoidZero,基于Rust打造下一代JS工具链

429 阅读7分钟

本文翻译自voidzero.dev/posts/annou…

TL;DR:我创立了 VoidZero Inc.,这是一家致力于为 JavaScript 生态系统构建开源、高性能和统一开发工具链的公司。我们已经筹集了 460 万美元的种子资金,由 Accel 领投。


15 年前,当我开始使用 JavaScript 构建应用程序时,它主要是一种基于浏览器的脚本语言。如今,它已发展成为世界上使用最广泛的语言,为从 Web 和移动应用程序到游戏开发甚至 IoT 的方方面面提供支持。

多年来,出现了许多优秀的工具来解决 JavaScript 应用程序日益增长的规模和复杂性。然而,生态系统一直是分散的:每个应用程序都依赖于无数的第三方依赖项,配置它们以更好地协同工作仍然是开发周期中最艰巨的任务之一。

作为使用最广泛的前端框架之一的作者,我花费了大量精力来研究 JavaScript 工具堆栈的每一层,组装数百个依赖项,并在它们之上设计复杂的抽象。我们的目标始终是为最终用户提供有凝聚力的、开箱即用的开发体验。这些努力最终导致了 Vite 在 2020 年的创建。

快进四年,Vite 现在是最受欢迎的 Web 开发构建工具之一,每周下载量超过 1500 万次,拥有庞大的生态系统。除了是使用 React 和 Vue 构建的单页应用程序的首选之外,Vite 还为 Remix、Nuxt、Astro、SvelteKit、SolidStart、Qwik、Redwood 等元框架提供支持。它显然已经将自己确立为下一代 Web 框架的共享基础设施层。

图片

自 2020 年以来,Vite 每周 NPM 下载量

社区对 Vite 的信任让我对它的未来进行了深刻的反思。虽然 Vite 极大地改善了高级开发人员的体验,但在内部,它仍然依赖于各种依赖项,通过抽象和解决方法来消除不一致。在性能方面,它仍然受到不同工具之间重复解析和序列化成本的瓶颈,并且由于功能限制和可定制的限制,它无法充分利用 esbuild 等原生工具。

我们开始设计一个新的打包器 Rolldown,为 Vite 的需求量身定制。但当我深入到打包器下面的层时,我意识到 Vite 面临的挑战反映了整个 JavaScript 生态系统:碎片化、不兼容和效率低下。要从根本上改变这种情况,需要一个统一的工具链。

想象一个工具链:

  • 统一:对所有任务(解析、转换、linting、格式化、捆绑、缩小、测试)使用相同的 AST、解析器和模块互操作,消除不一致并降低冗余解析成本。
  • 高性能:以编译为本机语言编写,专为提高速度而设计,具有最大的并行化和低开销 JS 插件支持。性能预算解锁了更雄心勃勃的功能,这些功能不仅可以改善开发人员体验,还可以改善最终用户体验。
  • 可组合:工具链的每个组件都是独立使用的,为高级定制提供构建块。
  • 运行时不可知性:不依赖于任何特定的 JavaScript 运行时,在所有环境中提供相同的开发人员体验。

这样的工具链不仅会增强 Vite,还会推动整个 JavaScript 生态系统的重大改进。这是一个雄心勃勃的愿景,要实现它需要一个全职、敬业的团队,这在我过去项目的独立可持续发展模式下是不可能的。这就是 VoidZero 成立的原因。

我很高兴地宣布,我们已经筹集了 460 万美元的种子资金来实现这一愿景。我们的种子轮由Accel领导,参与的有Amplify Partners、Preston-Werner Ventures、BGZ、Eric Simons(StackBlitz)、Paul Copplestone(Supabase)、David Cramer(Sentry)、Matt Biilmann和Christian Bach(Netlify)、Dafeng Guo(Strikingly)、Sebastien Chopin(NuxtLabs)、Johannes Schickling(Prisma)和Zeno Rocha(Resend)。

迄今为止的进展

在过去的一年里,我们建立了一支在 JavaScript 工具方面拥有深厚专业知识的团队,包括广泛采用的开源项目(如 Vite、Vitest、Oxc)的创建者和核心贡献者,以及 Rspack 的前核心贡献者。

我们一直在努力开发我们设想的工具链的基础元素。除了对 Vite 的持续改进外,我们还提供了:

  • 最快且最符合规范的 JavaScript 解析器 (oxc-parser),比 SWC 快 3 倍 - benchmark
  • 最快的 Node.js 兼容旋转变压器 (oxc-resolver),比 enhanced-resolve - benchmark 快 28 倍
  • 最快的 TypeScript / JSX 转换器 (oxc-transform),比 SWC 快 4 倍 - 基准测试
  • 最快的 linter (oxlint),比 ESLint 快 50-100 倍 - benchmark
  • 功能最齐全的 Web 应用程序测试运行程序 (Vitest)
  • 最快的打包器 (Rolldown),构建在 Oxc 之上。比 esbuild 和所有其他 Rust 打包器更快 - 基准测试(目前处于 alpha 阶段)

虽然仍处于早期阶段,但我们的开源项目已经被一些世界领先的工程团队使用,包括 OpenAI(ChatGPT Web 客户端)、Google、Apple、Microsoft、Visa、Shopify、Cloudflare、Atlassian、Reddit、HuggingFace、Linear 等。

 下一步

我们未来几个月的主要目标是稳定 Rolldown,并使其成为 Vite 在开发和生产中的统一打包器。我们已经取得了很大的进展,并计划在今年晚些时候发布由 Rolldown 提供支持的 Vite 的 alpha 版本。

2025 年,我们将继续完成 Oxc 的其他计划功能(缩小、格式化),并逐步将整个 Vite 生态迁移到 Rolldown 和 Oxc 的支持下。我们将与生态系统合作伙伴和利益相关者密切合作,以确保最终用户的平稳过渡。

我们开源的所有内容都将保持开源。除了我们的开源项目之外,我们还将提供专为满足企业环境的规模和安全要求而设计的端到端 JavaScript 工具解决方案。

 联系我们!

在 X 上关注我们,随时了解我们的进展。如果您对这些工具有大规模的需求,请与我们联系!如果您有兴趣为我们的项目做出贡献或基于我们的项目进行构建,请加入我们的 Discord 服务器(Vite、Vitest、Oxc、Rolldown)。最后,不要忘记收看本周的 ViteConf,我们将在那里分享有关我们的进展和未来计划的更多详细信息。


 常见问题

  • 这些开源项目和 VoidZero 之间有什么关系?

    Vite 和 Vitest 基于团队的治理与以前相同。两个核心团队都包括受雇于多个不同组织(VoidZero、StackBlitz、NuxtLabs、Astro)的成员。VoidZero Inc. 雇用/赞助了 Vite 和 Vitest 的多个核心贡献者。

    VoidZero Inc. 拥有版权,为开发提供资金,并控制 Oxc 和 Rolldown 的方向。

  •  Vue 呢?

    VoidZero 作为一个业务与 Vue 完全分开。Vue 将继续作为一个独立的项目,但将从 VoidZero 开发的新工具中获得一流的支持。

  • 为什么是 Oxc 而不是 SWC?

    我们的许多团队成员过去都为 SWC 做出了不小的贡献。除了原始性能优势之外,Oxc 与 SWC 还有一些基本的设计差异,这使其成为我们正在构建的端到端工具链的更好基础。我们将在未来的博客文章中分享有关此主题的更多技术见解。敬请期待!

  • 为什么 Rolldown 而不是 esbuild / Rollup?

    我们需要一个速度极快、非常适合应用程序捆绑、并与 Vite 的插件生态系统完全兼容的打包器。这在 Rolldown 文档中有详细讨论。在 Oxc 上构建 Rolldown 还可以解锁在打包阶段并行执行更多与 AST 相关的任务的能力,例如使用 isolatedDeclarations: true 发出和捆绑 dts。

  • 为什么这与以前创建统一 JS 工具链的尝试不同?

    统一工具链的最大挑战是 0 对 1 的问题:它需要获得指数级采用的临界质量,以证明持续开发的合理性,但在真正实现愿景之前很难跨越鸿沟。VoidZero 不存在这个问题,因为 Vite 已经是 JavaScript 生态中增长最快的工具链。