乐趣区

关于sfossp:思否开源项目支持计划丨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) 在各个虚拟机或语言中的性能体现(并不能齐全依此来作为性能评估规范;测试条件:同一设施同一状态,编译过程均未应用任何优化)。

TS 技术倒退很快,业界曾经有越来越多的我的项目应用 TS 开发和重构;抛开眼下去看 TS 技术的倒退,它的起点会在哪里?会始终停留在一个预编译语言上吗?当 TS 生态倒退越来越健全,是不是还有必要齐全依靠于 JS 的生态?业界会不会诞生一个真正的 TS 虚拟机(Deno 并不是)?如果业界有一个稳固且高性能的 TS 虚拟机,对 TS 生态是不是一件坏事,会不会将 TS 推向一个新的高度?

TS 应该无奈取代 JS 的生态,然而在某些畛域,TS 能够脱离 JS 生态而独立存在;TS 虚拟机是独立 TS 生态的基石,能够让 TS 在这些畛域有显著优于 JS 的运行时体现,并为这些畛域带来理论的业务收益。

Tser 能做什么?

Tser 编译性能绝对不高而运行时性能高,更适宜独立后盾服务、Serverless 等场景。如果语法反对欠缺,能够运行绝大部分现有的应用 TS 编写的后盾服务时,这些服务能够因而取得很大的性能晋升。

Tser 目前能做的事件还非常少,因为语法反对很不欠缺,仅能反对一些简略脚本的执行,比方应该可能反对一些简略的云函数场景。

Tser 技术原理

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

业界雷同产品: AssemblyScript、StaticScript


结语

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

抛开这种我的项目的开发难度,回归我的项目自身,Tser 能够运行绝大部分现有的应用 TS 编写的后盾服务,帮忙我的项目取得性能晋升,降低成本,进步业务可用。

兴许能够试试 Tser。


该我的项目已入选「SFOSSP – 思否开源我的项目反对打算」,咱们心愿借助社区的资源对开源我的项目进行相干的宣传推广,并作为一个长期我的项目助力开源事业的倒退,与宽广开发者共建开源新生态。

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

退出移动版