MapleEngine 會成爲鴻蒙的 Visual Studio 嗎?

時隔一年,華爲的鴻蒙操做系統即將發佈 2.0 版本,據悉這一次華爲將會把鴻蒙的代碼公開託管至第三方平臺,讓廣大程序員一睹鴻蒙的真容。鴻蒙將給終端市場帶來怎樣的影響仍未可知,但結合歷史來看,成功的操做系統每每擁有配套完善的開發組件,以幫助開發者快速入門以投入相關生態的開發,從而創建起完善的生態體系。前端

好比在微軟的 Windows 系統生態下,有微軟自研的編程語言 C#,開發集成環境 Visual Studio(包括編譯器),各類 API 的詳述文檔等等。多年的積累讓 Windows 桌面程序有無數種開發方法,開發者遍及全球。git

又好比在蘋果的 iOS 和 Mac 系統生態下,有蘋果自研的 Swift 編程語言,開發集成平臺 Xcode, Clang + LLVM 編譯器等。經過網羅年輕一代的天才程序員,走精英開發者路線的蘋果也能把本身的操做系統生態搞的風生水起。程序員

做爲旨在突破國外技術封鎖的操做系統,鴻蒙 OS 要想構建屬於本身的健康生態,配套的開發者工具鏈是必不可少的。去年 9 月,華爲開源方舟編譯器部分源碼;今年 4 月又再次開源方舟引擎 MapleEngine,首次將鴻蒙開發者生態工具鏈的藍圖向外界公佈,展現了鴻蒙 OS 將來生態構建的雛形。編程

下文由 MapleEngine 項目參與者,資深編譯器專家葉寒棟撰寫,介紹了方舟引擎 MapleEngine 的項目概況,同時描述了圍繞方舟引擎展開的一系列開發者編程體系和將來的規劃。架構

做者:葉寒棟 編程語言

原文地址: https://zhuanlan.zhihu.com/p/161995928分佈式

方舟引擎也叫 MapleEngine,是方舟編程體系的重要環節。以下圖所示,方舟編程體系的總體目標是構建一個軟件開發的全棧,包括編程語言、多語言前端、編譯器、執行引擎以及右下角一堆工具鏈。整個方舟體系依靠 MapleIR 貫穿先後,MapleIR 是程序的中間表示,是編程體系中程序的表達方式。編譯器把MapleIR轉換成機器碼或者保留 MapleIR 中間碼,方舟引擎則擔負着執行該中間碼的任務。能夠認爲方舟引擎和 JVM 相似,但超越了JVM,由於它再也不是執行單一的 Java 程序。理論上說,只要能翻譯成 MapleIR 的程序,均可以由方舟引擎執行。工具

  

方舟體系是採用統一 IR 來實現跨平臺的項目,業界有不少相似的,成熟或者不成熟,各有特色,此處不贅述。可是,之因此要開發方舟編程體系則是有其技術、歷史和環境等多方面因素。具體到方舟引擎,則是出於如下幾點緣由,同時也是方舟引擎的獨特之處。spa

方舟引擎的第一個特色,它不光能夠是一個孤立的軟件,更重要的是方舟體系中的一環。從最先開發方舟編譯器開始,咱們瞄準的就是完整的方舟編程體系,而不是一個孤立的編譯器。這很好理解,在現在的背景下,特別是多種業務多種體系結構的複雜要求,只有一個自主的完整的全棧設計纔可能實現長期支撐多種業務。依靠零散的開源軟件而組裝起來的系統,是低效的、不可持續的,特別是沒法長期演進,甚至不知道如何演進和朝哪一個方向演進。 操作系統

編程體系中的每個層次都要明白本身是爲了實現一個「頂天立地」的全棧系統而存在的。頂天指的是對應用程序以及編程語言的理解和支持,立地指的是發揮硬件架構的能力並進而指導硬件演進。舉個例子,方舟引擎的重要做用之一是爲了未來設計高級語言作準備,這意味着引擎要有靈活適配多種語言特性的能力,特別是動態特性。這和通常的虛擬機只是爲單一的語言而設計是不一樣的。所以,方舟引擎原始動機是不同凡響的。 

方舟引擎的第二個特色是它的輸入文件以 MapleIR 爲格式。理論上,任何一種高級語言的程序,通過多語言前端的翻譯,轉換爲 MapleIR,則能夠交給引擎執行。固然,這是一個很是美好的願景。現實中確定有很多具體問題,並非全部事情均可以一蹴而就的。舉個簡單例子。在IR 上一樣的一條指令,好比拋異常,在不一樣的語言規範裏面極可能有不一樣的語義。所以,引擎將爲這些差別性的地方設計不一樣的實現,因此你們會看到不一樣的語言支持庫。這些對軟件設計和實現提出了挑戰。這是支持多語言的必然代價。不管如何,一個追求必定程度通用的引擎帶來的巨大好處是沒法忽視的。對於高級語言的設計和實現來講,這是很是有益的。 

方舟引擎的第三個特色是和它設定的目標業務有密切關係。方舟編程體系但願可以服務異構分佈式的系統。一個標準的 MapleIR 軟件包,藉助方舟引擎能夠在不一樣的設備上運行。目標系統涵蓋的設備能夠包括從 IoT、手機到電視機等。每種設備的能力、體系結構和規格差別很大。每一個領域的程序開發所適用的編程語言和模型各自差別很大。所以,要求引擎可以比較自如的對自身進行按需適配,並能直接或者經過操做系統間接發揮硬件能力。 

方舟引擎的原始訴求不少,上面是比較明顯的。從整個方舟編程體系來看,咱們但願經過統一的 MapleIR 來貫穿全部軟件模塊,對上支持多種語言,對下發揮多種體系結構的能力。特別是上圖最右下角的大量的衍生工具鏈,都將以 MapleIR 爲接口,在軟件開發生態環境中實現光滑連接。 

完整的方舟編程體系很是龐大,目前已經成型的包括編譯器和引擎,其中引擎還只是初級階段。可是,其中任何單一的部件均可以獨立使用,也能夠多個配合使用,也能夠再開發以實現本身的用途。願和你們一塊兒爲之努力!

相關文章
相關標籤/搜索