剛剛!TypeScript之父宣佈一重大好訊息

3 月 11 日,TypeScript + C# + Delphi 之父 Anders Hejlsberg 在微軟開發者官方部落格發了一篇的文章,其中提到:TypeScript 編譯器以及工具鏈將移植到 Go 語言,效能提升高達 10 倍!
這訊息在 Hacker News 引發熱議,TypeScript 團隊的兩個核心開發者在 HN 回應了程式設計師們的各種提問。
以下是譯文:

10 倍速的 TypeScript

今天,我懷著激動的心情宣佈我們即將採取的下一步行動,以從根本上提升 TypeScript 的效能。
TypeScript 的核心價值在於提供卓越的開發體驗。隨著程式碼庫的增長,TypeScript 的價值也隨之提升,但在許多情況下,TypeScript 尚未能很好地應對超大型程式碼庫的挑戰。在大型專案中,開發者可能會遇到載入和檢查時間過長的問題,不得不在合理的編輯器啟動時間和完整的原始碼檢視之間做出選擇。

TypeScript + C# + Delphi 的「爸爸」
我們知道,開發者喜歡能夠自信地重新命名變數、查詢特定函式的所有引用、輕鬆導航程式碼庫,並且所有這些操作都能毫無延遲地完成。由 AI 驅動的新體驗依賴於大範圍的語義資訊視窗,而這些資訊需要在更嚴格的延遲約束下可用。我們還希望快速進行命令列構建,以確保整個程式碼庫處於良好狀態。
為了實現這些目標,我們已開始著手對 TypeScript 編譯器及其工具進行原生移植。原生實現將大幅提升編輯器啟動速度,將大多數構建時間縮短 10 倍,並顯著減少記憶體使用量。透過移植當前程式碼庫,我們預計到 2025 年年中能夠預覽支援命令列型別檢查的 tsc 原生實現,並在年底前推出支援專案構建和語言服務的完整功能解決方案。
你可以從我們的新工作倉庫中構建並執行 Go 程式碼,該倉庫與現有 TypeScript 程式碼庫採用相同的許可證。請檢視 README 檔案,瞭解如何構建和執行 tsc 及語言伺服器,並檢視目前已實現功能的摘要。隨著新功能可供測試,我們將定期釋出更新。
https://github.com/microsoft/typescript-go

有多快?

我們的原生實現已經能夠載入許多流行的 TypeScript 專案,包括 TypeScript 編譯器本身。以下是在 GitHub 上一些不同規模的流行程式碼庫中執行 tsc 的時間:
儘管我們尚未實現完整功能,但這些數字代表了你在檢查大多數程式碼庫時將看到的數量級效能提升。
我們對這一巨大速度提升帶來的機會感到無比興奮。曾經看似遙不可及的功能如今觸手可及。這個原生移植將能夠提供整個專案的即時、全面的錯誤列表,支援更高階的重構,並實現以前因計算成本過高而無法獲得的更深入的洞察。這一新基礎超越了當前的開發體驗,並將推動下一代 AI 工具增強開發,賦能能夠學習、適應並改善編碼體驗的新工具。

編輯器速度

開發者的大部分時間都花在編輯器上,因此在這裡效能最為重要。我們希望編輯器能夠快速載入大型專案,並在所有情況下快速響應。像 Visual Studio 和 Visual Studio Code 這樣的現代編輯器,只要底層語言服務也足夠快,就能表現出色。透過我們的原生實現,我們將能夠提供極其快速的編輯器體驗。
再次以 Visual Studio Code 程式碼庫為基準,當前在快速計算機上載入整個專案的時間約為 9.6 秒。使用原生語言服務後,這一時間降至約 1.2 秒,編輯器場景中的專案載入時間提升了 8 倍。這意味著從你開啟編輯器到在 TypeScript 程式碼庫中敲下第一個字元的時間將大大縮短。我們預計所有專案在載入時間上都會看到這種級別的改進。
總體記憶體使用量也大約是當前實現的一半,儘管我們尚未積極研究最佳化這一點,並期望進一步改進。所有語言服務操作(包括補全列表、快速資訊、跳轉到定義和查詢所有引用)的編輯器響應速度也將顯著提升。我們還將遷移到語言伺服器協議(LSP),這是一項長期的基礎設施工作,旨在更好地將我們的實現與其他語言對齊。

版本路線圖

我們最新的 TypeScript 版本是 TypeScript 5.8,TypeScript 5.9 即將釋出。基於 JS 的程式碼庫將繼續開發到 6.x 系列,TypeScript 6.0 將引入一些棄用和破壞性更改,以與即將推出的原生程式碼庫保持一致。
當原生程式碼庫與當前 TypeScript 達到足夠的一致性時,我們將以 TypeScript 7.0 的形式釋出它。這仍在開發中,我們將在達到穩定性和功能里程碑時進行宣佈。
為了清晰起見,我們將簡單地將它們稱為 TypeScript 6(JS)和 TypeScript 7(原生),因為這將是未來可預見的命名方式。在內部討論或程式碼註釋中,你可能還會看到我們提到“Strada”(TypeScript 的原始代號)和“Corsa”(此工作的代號)。
雖然一些專案可能能夠在釋出後切換到 TypeScript 7,但其他專案可能依賴於某些 API 功能、遺留配置或其他約束,這些可能需要繼續使用 TypeScript 6。認識到 TypeScript 在 JS 開發生態系統中的關鍵作用,我們仍將在 6.x 系列中維護 JS 程式碼庫,直到 TypeScript 7+ 達到足夠的成熟度和採用率。
我們的長期目標是儘可能保持這些版本的緊密對齊,以便你可以在 TypeScript 7 滿足你的要求時儘快升級,或在必要時回退到 TypeScript 6。
  • https://news.ycombinator.com/item?id=43332830
  • https://devblogs.microsoft.com/typescript/typescript-native-port/

相關文章