思否開源項目支持計劃丨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

相關文章
相關標籤/搜索