首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

刚刚!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/

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OispncAx07zlzmNV3R80pgJw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券