日前,Vercel正式宣布推出新的包装工具Turbopack。Vercel声称这是用Rust编写的Webpack的继任者。在大型应用程序中,它的速度是Vite的10倍,是Webpack的700倍。维特的维护者对此表示怀疑。
Vercel发布新的开源工具Turbopack
Vercel是Next。js框架背后的企业也是围绕开源技术建立的资金最多的公司之一。在过去几年中,该公司通过四轮融资筹集了超过3亿美元。这笔钱用得很好。现在NextJs已经成为服务器端React渲染的“首选”解决方案。然而下一步js框架的开源特性以及公司提供的服务也吸引了越来越多的用户。Github软件工程总监Chiedo John曾对媒体表示,“Vercel进行的一些革命性工作大大改进了开发人员的开发方法。”
下一个js的成功也让前端领域更加活跃。其最大的竞争对手包括Hydrogen(Shopify开发的SSR框架)和Remix。其次,在商业模式方面,Js非常相似。它也是围绕开源技术开发的,最近被Shopify收购,后者成功获得了资金支持。
在资金支持下,Vercel最近聘请了一些JavaScript行业的知名人士,如Tobias Koppers(Webpack的创始人)、Jared Palmer(Formik和Turborepo的创始人)和Rich Harris(Svelte的创始人)。事实证明,Tobias Koppers不仅致力于优化Webpack,还参与了一种新的构建工具Turbopack的开发。
10月26日,在下一届Js Conf 22大会上,Vercel正式宣布推出Turbopack。Vercel声称Turbopack旨在成为Webpack的直接替代品,他还提供了Turbopack的一些数据:“在大型应用中,Turbopack的速度是Vite的10倍,是Webpack的700倍。在大型应用程序中,差异更大——通常比Vite快20倍。此外,启动速度也很快。在一个有3000个模块的应用中,Turbopack仅需1.8秒启动,而Vite仅需11.4秒。”
据报道,Webpack的创始人托比亚斯·科佩斯于2021 4月加入该公司,并领导该项目。Turbopack是Vercel之前的一些工作的延续。在此之前,他们用基于Rust的SWC替换了基于JavaScript的转换器Babel,这将速度提高了17倍。他们还取代了Terser,压缩速度提高了6倍,减少了加载时间和带宽的使用。所以他们再次使用Rust重写Webpack。
Vercel表示,性能改进不仅基于Rust,还“基于增量计算的架构”。该团队借鉴了谷歌Bazel建筑系统的一些想法,该系统适用于大型项目。增量方法意味着避免重复工作。如果您创建了一个增量图形,并且开发人员对其进行了更改,则只会重新计算受影响的图形部分
下一个Js自2016年以来一直在使用Webpack,这可能是Webpack的最大用户。然后他们意识到JavaScript和TypeScript代码的数量增长如此之快,以至于超过了基于JavaScript的工具和架构的能力。因此,Vercel邀请Koppers加入Webpack的转型。Vercel首席执行官吉列尔莫·劳赫(Guillermo Rauch)表示:“他带来了10年的专业知识,见证了这件事的发展。”。
基准测试中是否存在“不公平”的比较?
Turbopack的出现让业界拍手叫好。毕竟,这也是Koppers的“自我突破”,也向大家展示了Rust的巨大潜力。
10月31日,Vercel发布了一份关于如何获得“10x”和“700x”的详细基准报告。在报告中,他们表示,他们已经创建了一个测试生成器,以使应用程序具有可变数量的模块,并针对Nextjs 11、Next。js 12、下一步。带有Turbopack和Vite的Js 13给出了冷启动和代码更新的测试结果。
也就是说,在Vercel的测试中,基于1000个模块并使用“默认设置”,Turbopack的冷启动时间为1.1秒,Vite为4.8秒;Turbopack的代码更新时间为15毫秒,Vite的代码更新为87毫秒。在这种情况下,Turbopack比Vite快5.8倍,而不是广告中的“10倍”。
与此同时,在基准测试中,Vercel再次表示:
一旦应用扩展到超过30k个模块,Turbopack HMR的速度是Vite的10倍。随着模块数量的增加,这种效果更好,50k模块的显示速度提高了20倍。对于具有超过50k模块的大型应用程序,Turbopack HMR比基于Webpack的Next要好。js 11速度快700倍。
维特的辩护人埃文·尤(Evan You)也在10月28日质疑了维塞尔的说法,即它“比维特快10倍”。在维塞尔公布了具体的测试条件和结果后,埃文再次在Github上对其进行了反驳。他认为Vercel测试存在一些缺陷。其中之一是,双方使用的默认设置可能不是Vite的最佳解决方案:Vite使用默认的基于Babel的React插件,而不是RSC;此外,还有小数点选择的问题。Vercel将15秒舍入为0.01秒。
截图来源:https://github.com/yyx990803/vite-vs-next-turbo-hmr/discussions/8
维特的辩护人认为,这家“资金充足”的公司使用了“营销脚本”,这“令人失望”。在Evan You发表这些问题后,来自Hacker News和Reddit的大量在线评论开始指责Vercel的“商业营销”。
在回应Evan You在Github上的提问时,Vercel承认了基准文章中的舍入错误,并感谢他帮助指出了问题。然而,Vercel忽略了Evan的所有其他声明。
写在最后
对于这场非常热闹的争论,一些网友指出,在技术领域,说“一个比另一个快多少倍”是一种常见的技巧。例如,Mongo声称它比X SQL数据库快1000倍,Bun声称它比Deno快3倍。这些宣传效果很好,Mongo和Bun受到了很多关注。
此外,一些网友表示,讨论开源项目背后是否有风投资助的商业公司,这很奇怪。毕竟,我们也从营利性公司那里获得了很多好的开源工具。
围绕基准的辩论至关重要,这可以使双方以公开的方式更好地改进。但更重要的是,我们可以深入施工细节,拨开云雾,了解并关注技术领域的关键发展。
我相信改进后的Turbopack将是一个重要的新构建工具,不仅对NextJ有益,而且对整个社区都有好处。