基于 Rust 編寫的 Turbopack 比 Webpack 快 700 倍,竟然比 Vite 還要快!

10 月 26 日,Vercel 公司正式宣布推出新的打包工具 Turbopack。Webpack 創(chuàng)建者 Tobias Koppers 于 2021 年 4 月加入該公司,牽頭了該項目。
Turbopack 是 Vercel 公司之前一些工作的延續(xù)。在此之前,他們用基于 Rust 的 SWC 替換基于 JavaScript 的轉(zhuǎn)譯器 Babel,速度提升了 17 倍。他們還替換了 Terser,壓縮的速度提高了 6 倍,從而減少了加載時間和帶寬的使用。
“Webpack 已被下載超過 30 億次。它已成為 Web 構(gòu)建不可或缺的一部分。但就像 Babel 和 Terser 一樣,是時候全力以赴了。我加入了 Vercel,組建了一個團(tuán)隊來構(gòu)建 Web 下一代的打包工具?!盩obias 說。
據(jù) Vercel 首席執(zhí)行官 Guillermo Rauch 介紹,與 Webpack 一樣,Turbopack 也是開源的。

Vercel 聲稱 Turbopack 在大型應(yīng)用中,展示出了 10 倍于 Vite 的速度,700 倍于 Webpack 的速度。在更大的應(yīng)用中,差異更加巨大 —— 通常比 Vite 快 20 倍。而且啟動速度飛快,在一個 3000 個模塊的應(yīng)用里,Turbopack 只花了 1.8 秒啟動,Vite 花了 11.4 秒。
Rauch 說,性能改進(jìn)不僅是因為基于 Rust ,還在于“基于增量計算思想的架構(gòu)”。該團(tuán)隊借鑒了谷歌 Bazel 構(gòu)建系統(tǒng)中的一些想法,該系統(tǒng)適用于大型項目。增量方法意味著避免做重復(fù)的工作,“如果你創(chuàng)建一個增量圖,開發(fā)人員在其中進(jìn)行更改,只有受影響的圖部分會被重新計算?!?/p>
Turbopack——目前處于 alpha 預(yù)覽階段——是“一種更好的架構(gòu),我認(rèn)為 Rust 和正確架構(gòu)相結(jié)合意味著我們至少在 10 年內(nèi)不需要改變,”Rauch 表示。
Turbopack 是怎么來的?“Next.js 早在 2016 年就開始使用 Webpack 作為組件,”他說。“我們可能是 Webpack 的最大用戶。我們在開始時和 Webpack 創(chuàng)建者 Tobias 聊了很多,因為當(dāng)時我們有像沃爾瑪這樣的客戶,有超過 250 名工程師在 Next.js 代碼庫上工作,分享一些關(guān)于編譯過程的反饋。我們意識到 JavaScript 和 TypeScript 代碼的數(shù)量增長如此之快,以至于超出了基于 JavaScript 的工具和架構(gòu)的能力。Tobias 也從未想過該工具會得到如此廣泛的采用。”
Webpack 面向單頁應(yīng)用程序 (SPA) ,“但我們不是,因此我們改變了 Webpack 的默認(rèn)設(shè)置。”當(dāng) Koppers 加入 Vercel 時,“他帶來了 10 年的專業(yè)知識,見證了這件事情的發(fā)展,”Rauch 說?!八庾R到架構(gòu)和運行時的所有缺陷。因此,Tobias 成為了 Rust 專家?!盩urbopack 一個有趣的特性是,多虧了 Rust,它可以編譯成 WebAssembly 并在瀏覽器中運行。
“Turbopack 旨在成為 Webpack 的直接替代品,Next.js 是它的第一個客戶,”Vercel 首席技術(shù)官 Malte Ubl 說,“隨著時間的推移,我們計劃針對所有開發(fā)者用例繼續(xù)迭代和改進(jìn) Turbopack?!?/p>
