思否开源项目支持计划丨Tser:一个 TypeScript 虚拟机

开源项目名称:Tser
开源项目负责人:@Lanistor
开源项目简介:一个 TypeScript 虚拟机
开源项目类型:我的开源项目
项目建立时间:2019 年
GitHub 数据:231 Star,8 Fork
GitHub 地址: https://github.com/tser-project/tser

为何要创造 Tser?

TypeScript(TS)是一个伟大的发明,让咱们在复用 JS 生态的同时拥有了静态类型语言的开发体验。TS 本质是一门预编译语言,编译到 JS 后再使用 JS 虚拟机执行,因为强依赖于 JS,也所以没法摆脱 JS 的一些顽疾,好比执行效率。而 TS 自己是静态类型语言,拥有肯定的数据类型标记,只是在转义为 JS 时丢失了类型标记;若是咱们能直接执行 TS 程序,而不是先转义为 JS 再执行,这些数据类型标记能够为程序带来很大的性能提高。前端

咱们来看一组性能对比数据,仅对比fib(42)在各个虚拟机或语言中的性能表现(并不能彻底依此来做为性能评价标准;测试条件:同一设备同一状态,编译过程均未使用任何优化)。git

TS 技术发展很快,业界已经有愈来愈多的项目使用 TS 开发和重构;抛开眼下去看 TS 技术的发展,它的终点会在哪里?会一直停留在一个预编译语言上吗?当 TS 生态发展愈来愈健全,是否是还有必要彻底依托于 JS 的生态?业界会不会诞生一个真正的 TS 虚拟机(Deno 并非)?若是业界有一个稳定且高性能的 TS 虚拟机,对 TS 生态是否是一件好事,会不会将 TS 推向一个新的高度?github

TS 应该没法取代 JS 的生态,可是在某些领域,TS 能够脱离 JS 生态而独立存在;TS 虚拟机是独立 TS 生态的基石,可让 TS 在这些领域有明显优于 JS 的运行时表现,并为这些领域带来实际的业务收益。segmentfault

Tser 能作什么?

Tser 编译性能相对不高而运行时性能高,更适合独立后台服务、Serverless 等场景。若是语法支持完善,能够运行绝大部分现有的使用 TS 编写的后台服务时,这些服务能够所以得到很大的性能提高。后端

Tser 目前能作的事情还很是少,由于语法支持很不完善,仅能支持一些简单脚本的执行,好比应该可以支持一些简单的云函数场景。less

Tser技术原理

Tser 前端依托于 Antlr 来生成语法解析器,而后进行语法树的生成与遍历;后端依托于 LLVM 建设,将 TS 代码编译为 LLVM IR,并使用其 JIT 引擎当即执行 IR。函数

业界雷同产品: AssemblyScriptStaticScript性能


结语

在本文发布前,咱们和 Tser 做者聊了聊,他说:“Tser 这种平台底层的基础建设,初期都不会有什么产出,都是要投入若干年才会有。不过好在国内有几我的也在研究这个方向。”测试

抛开这种项目的开发难度,回归项目自己,Tser 能够运行绝大部分现有的使用 TS 编写的后台服务,帮助项目得到性能提高,下降成本,提升业务可用。优化

也许能够试试 Tser。


该项目已入选 「SFOSSP - 思否开源项目支持计划」,咱们但愿借助社区的资源对开源项目进行相关的宣传推广,并做为一个长期项目助力开源事业的发展,与广大开发者共建开源新生态。

有意向的开源项目负责人或团队成员,可经过邮箱(pr@segmentfault.com)提供相应的信息(开源项目地址、项目介绍、团队介绍、联系方式等),以便提高交流的效率。

clipboard.png

相关文章
相关标签/搜索