智能体刷屏的背后,是 AI 应用拐点的来临?AICon 北京站议程重磅公布,50+ 硬核分享不容错过 了解详情
写点什么

微软宣布 Typescript 编译器原生版本,性能提升 10 倍

  • 2025-05-29
    北京
  • 本文字数:1270 字

    阅读完需:约 4 分钟

大小:652.16K时长:03:42
微软宣布Typescript编译器原生版本,性能提升10倍

微软 TypeScript 团队发布TypeScript 编译器(tsc)的实验性原生版本 tsc-go,旨在将构建时间缩短 10 倍,大幅减少编辑器冷启动时间,并显著改善内存使用情况。这一举措旨在探索在没有 Node.js 运行时开销的情况下运行编译器(用 Go 语言编写)。


TypeScript 项目首席架构师Anders Hejlsberg解释了开发原生版本的动机:


TypeScript 的核心价值主张是卓越的开发体验。随着代码库的增长,[...]在许多情况下,TypeScript 代码库没法扩展得很大。从事大型项目的开发人员[...]必须在合理的编辑器启动时间和获得完整的源代码视图之间做出选择[...]由 AI 驱动的新体验需要使用大量的语义信息窗口,因为有更严格的延迟约束。同时我们也希望,快捷的命令行构建可以验证你的整个代码库是否处于良好的状态。


在 Node.js 上运行的标准 tsc 编译器,在初始执行时会产生明显的启动时间,尤其是在大型项目或频繁的小构建中。这个新的实验性 TypeScript 编译器是用 Go 编写的,并编译成原生代码,无需 Node.js 启动开销即可运行。


博客公告提到,VS Code1 MLOC 代码库的类型检查时间从 77 秒减少到了 7.5 秒,即 10 倍的改进。他们在 Playwright 代码库(356000 LOC)上也观察到了相同的降幅,时间从 11 秒减少到了 1 秒。微软还报告说,在比较小的代码库上也是如此,RxJS(2100 LOC)的类型检查时间从 1.1 秒减少到了 0.1 秒。博客文章没有提供与增量构建相关的改进数据。


TypeScript 团队还报告说,在 Visual Studio 代码库的编辑器场景中,项目加载时间减少了 8 倍,并且说,这一比例在其他代码库上预计也将保持不变。开发体验有望得到改善,因为打开代码编辑器和完全加载代码库准备好输入之间的时间显著缩短。


这个原生版本(代号 Corsa)仍被视为实验性的,还缺少许多功能,包括增量构建(参见迄今为止的工作)。博客公告解释说,当原生代码库与当前的 TypeScript 达到足够的一致性时,它将作为 TypeScript 7.0 发布,并为以前的版本提供便捷的迁移路径:


我们还会继续维护 6.x 系列的 JS 代码库,直到 TypeScript 7+达到足够的成熟度和采用度。


RedditHacker News等平台上,开发者询问选择 Go 而不是 Rust 的理由。TypeScript 开发负责人Ryan Cavanaugh提供了一个详细的答案,并邀请开发者查看。下面是其中的一段:

 

归根结底,我们有两个选择——用 Rust 从头开始完全重写,这可能需要数年时间,并产生一个不兼容的 TypeScript 版本,没有人会实际使用,或者只是用 Go 进行移植,并在一年左右的时间里得到一些可用的东西,并且在语义上高度兼容,在性能上极具竞争力。


除了博客文章外,感兴趣的开发人员可以看下 Hejlsberg 在 YouTube 上介绍 TypeScript 当前移植工作的视频。开发人员还可以访问GitHub仓库,了解 TypeScript 原生移植的开发情况。npm 上提供了预览构建 @typescript/native-preview。VS Code 市场上提供了预览版VS Code扩展

 

该项目在 Apache License 2.0 协议下发布,并欢迎贡献和建议,详情请参阅贡献者许可协议。该项目遵循微软开源行为准则。要了解更多信息,请参阅行为准则FAQ


声明:本文为 InfoQ 翻译,未经许可禁止转载。


原文链接:https://www.infoq.com/news/2025/05/new-typescript-compiler-10x-fast/

2025-05-29 18:005846

评论

发布
暂无评论

【数据结构与算法】LeetCode面试真题,带你领略算法思想

Dream-Y.ocean

面试 队列 9月月更

HowTo:Pipy 如何修改请求和响应的内容

Flomesh

Service Mesh 服务网格

打印 Logger 日志时,需不需要再封装一下工具类?

程序员小航

Java 日志 slf4j

跟我学Python图像处理丨傅里叶变换之高通滤波和低通滤波

华为云开发者联盟

Python 人工智能 企业号九月金秋榜

【数据结构与算法】详解 “清华大学(考研)OJ题”_ 二叉树重要面试OJ题

Dream-Y.ocean

面试 算法 清华大学 9月月更

怎样提高报表呈现的性能

陈橘又青

sql 9月月更

跟着卷卷龙一起学Camera--内存池浅析06

卷卷龙

ISP 9月月更

大数据ELK(六):安装Elasticsearch

Lansonli

ES 9月月更

第一模块作业

lsf1227

「架构实战营」

Python语法之模块和包(1)

芯动大师

9月月更 Python语法 模块的创建

C++来时路 _ 重温经典之C++类和对象 | 三大特性之一 - 封装 | 腾讯面试题

Dream-Y.ocean

c++ 封装 底层 腾讯面试 9月月更

Python语法之类和对象(1)

芯动大师

Python 9月月更 类与对象

Python之类和对象(2)

芯动大师

属性 9月月更 子类的定义

【数据结构与算法】“堆”还能这样用_堆的应用

Dream-Y.ocean

面试 9月月更

【中秋特辑-代码解析月饼节】C++比C语言更加规范、方便?是因为增加了如下特性 | C++98 & C++11 | C++难学?带领大家一步一步深度剖析 | 简单易懂

Dream-Y.ocean

c++ 底层 细节 9月月更

【数据结构与算法】2道面试真题,带你领略算法思想【附思路、动图、源码】

Dream-Y.ocean

面试 链表 9月月更

从东南亚到中东,为什么社交类产品成为游戏出海的突破口?

融云 RongCloud

白皮书 社交网络 出海 社交娱乐

跟着卷卷龙一起学Camera--内存池浅析05

卷卷龙

ISP 9月月更

架构模块一作业

Diana S

架构实战营

前端三件套 HTML+CSS+JS基础知识内容笔记

明金同学

前端

前端工程师在面试时经常被问的闭包到底是什么?我用打包礼物的例子让你秒懂

wljslmz

JavaScript 闭包 9月月更

【数据结构与算法】一篇文章带你玩懂 “栈和队列”(增、删、查、改)的实现_【附源码、动图】

Dream-Y.ocean

队列 数据结构与算法 9月月更

【数据结构与算法】二叉树题目很难?一句”技巧“巧做基础二叉树题目

Dream-Y.ocean

二叉树 二叉树遍历 9月月更 技巧总结

深度剖析“八大排序”(上)_ 探寻一些不为人知的细节

Dream-Y.ocean

排序算法 9月月更

深度剖析“八大排序”(下)- 交换排序 | 快速排序 & 优化 | 非比较排序_探寻一些不为人知的细节

Dream-Y.ocean

排序算法 9月月更

读书笔记|择一城以定财富,择一行以定发展

宇宙之一粟

读书笔记 职业 个人感悟 9月月更

【数据结构与算法】粽子树?二叉树_关于堆你不知道的事情

Dream-Y.ocean

栈和队列 9月月更

【web开发基础】php开发基础快速入门(1)-PHP介绍及开发环境快速安装和基本使用介绍

迷彩

Web应用开发 php开源 9月月更 web开发基础

openjdk镜像的tag说明

程序员欣宸

Docker Docker 镜像 9月月更

企业服务中出场率最高的活动目录AD到底是什么?本文带您好好了解一下!

wljslmz

AD 9月月更 活动目录

rust语言写的贪吃蛇游戏

福大大架构师每日一题

rust 贪吃蛇 福大大

微软宣布Typescript编译器原生版本,性能提升10倍_软件工程_Bruno Couriol_InfoQ精选文章