華為方舟編譯器深入解讀:已有45款第三方應用
本次方舟編譯器開源的是編譯器框架部分源碼,包括編譯器中間表示(IR)和語言編譯實現,同時搭配編譯器其他二進制組件,實現Java程序到aarch64匯編指令的編譯過程。
開發者可基于開源代碼+二進制,編譯構建出編譯器工具鏈,嘗試對Java程序進行編譯。
社區參與者可以通過框架源碼學習方舟編譯器的編譯器中間表達(IR)及基本的中端編譯框架,熟悉方舟編譯器的架構思想,并參與諸如對編譯器中端優化的貢獻。
[方舟編譯器的優勢]
按照華為的介紹,方舟編譯器是為支持多種編程語言、多種芯片平臺的聯合編譯、運行而設計的統一編程平臺,包含編譯器、工具鏈、運行時等關鍵部件,目前還在持續演進中,上述能力將陸續實現和開源。
通過多語言統一IR表示,方舟編譯器可實現應用中多種編程語言聯合編譯優化提升性能,而且在支持多平臺的同時,根據設備特征提供便捷的開發與部署策略提升效率。
華為方舟編譯器提供了全新的系統及應用的編譯和運行機制,從動態編譯變為靜態編譯,就是直接將高級語言直接編譯成機器碼,徹底消除了虛擬機動態編譯的額外開銷,實現了開發和運行效率的兼容并舉。
1、多語言聯合
將同一應用中的不同語言代碼聯合編譯、聯合優化,消除語言間的性能“鴻溝”,降低開發者的優化成本
2、輕量運行時
通過編譯器的語言實現能力和優化能力增強,應用運行時的開銷更小
3、軟硬件協同
編譯器與芯片實現軟硬件協同優化,充分發揮硬件能效,應用體驗更佳
4、多平臺支持
支持面向多樣化的終端設備平臺進行編譯和運行,根據設備特征提供便捷的開發與部署策略,提高開發效率
[方舟編譯器的架構設計]
當前方舟編譯器支持Java/Kotlin程序字節碼的前端輸入,C/C++/JS等其它編程語言的支持還在規劃中。
方舟編譯器的中間表示(IR)轉換器將前端輸入轉換成方舟IR,并輸送給后端的優化器,最終生成二進制文件,二進制文件與編譯器運行時庫文件鏈接生成可執行文件,在方舟的運行環境中就可執行該文件。
方舟編譯器IR是支持程序編譯和運行的中間程序表示。程序源代碼中的任何信息對于程序分析和優化都是有幫助的,所以方舟IR的目標是盡可能完整詳細地提供源程序的信息。