Cloudflare旗下VoidZero團隊,正與Owner.com工程師合作開發Rust版TypeScript編譯器tsrs。初步測試顯示,與微軟Go版TypeScript 7.0使用相同數量的型別檢查工作執行緒時,tsrs最高快8倍,記憶體用量約減少70%。目前已對外提供實驗版本,也能透過WebAssembly(Wasm)在瀏覽器執行型別檢查。
TypeScript是以JavaScript為基礎的程式語言,開發者可透過型別檢查提早找出錯誤。專案規模越大,需要檢查的檔案越多,所花時間和記憶體用量也可能增加。微軟先前已將TypeScript編譯器改以Go語言實作,大幅改善檢查速度,而tsrs則將Go版移植成Rust,希望在維持相同檢查結果的情況下,進一步減少資源消耗。
Rust對Wasm的支援,是tsrs的一項優勢,讓編譯器能在瀏覽器等環境執行。Go程式轉成Wasm時,還需包含負責自動管理記憶體的垃圾回收元件,Rust則不必加入相同機制,有助於減少記憶體負擔,而tsrs已提供Wasm套件,可直接在瀏覽器檢查TypeScript程式碼,並產生JavaScript與型別宣告檔案。tsrs的瀏覽器版本目前僅支援單一執行緒,尚未支援供編輯器使用的語言服務。
Cloudflare強調,tsrs會遵循微軟TypeScript團隊的設計決策,避免與官方版本出現不相容問題。團隊也已與微軟確認效能測試採用相同設定,部分tsrs的效能改進已納入Go版編譯器。現有實驗版本仍有部分差異,例如錯誤訊息的顯示順序尚未完全一致,開發團隊接下來計畫將tsrs與另一個Rust移植專案tsc-rs整合成單一套件,支援語言服務等功能。
近期也有其他團隊推出TypeScript相關工具,Bun在10月發布1.4.3版,新增移植自Go版TypeScript的型別檢查器bun check,可在執行程式前找出型別錯誤,但不負責輸出JavaScript。Vercel Labs則推出tsc-ts,將Go版編譯器重新以TypeScript實作,再透過自家工具scriptc轉換成可直接執行的原生程式,支援型別檢查及JavaScript輸出。
Comments (0)
Sign in to comment