剛剛過去的2019年,對于方舟編譯器而言是一個轉(zhuǎn)折點(diǎn)。從8月31日正式上線至今,方舟編譯器不斷賦能行業(yè),持續(xù)同開發(fā)者及合作伙伴深入交流,并贏得了業(yè)內(nèi)廣泛的認(rèn)可。1月3日,方舟開源沙龍來到浙江杭州,現(xiàn)場包括方舟開源架構(gòu)師湯偉、資深編譯器專家葉寒棟、資深編譯器專家蔣奕、HelloGCC社區(qū)負(fù)責(zé)人吳偉、資深編譯器專家張雁、PLCT項(xiàng)目主管史寧寧、方舟開源架構(gòu)師趙俊民等技術(shù)專家在內(nèi)的數(shù)十名行業(yè)開發(fā)者共同參與探討了方舟編譯器的開源現(xiàn)狀以及未來發(fā)展方向。
在本次活動中,來自華為方舟編譯器的技術(shù)專家講述了方舟編譯器在2019年開源后,在國內(nèi)編譯技術(shù)領(lǐng)域發(fā)展做出的貢獻(xiàn)。8月31日,方舟編譯器正式對外開放,相關(guān)內(nèi)容也正式在知乎不斷上線開放,而技術(shù)解析的視頻在B站、知乎等渠道廣泛傳播;在線下,方舟編譯器連續(xù)開辦了北京技術(shù)沙龍、上海代碼討論會、線下課程以及杭州開源沙龍等線下會議,方舟開源社區(qū)影響力不斷擴(kuò)大。
通過幾個月的努力,方舟編譯器收獲甚廣。大批優(yōu)質(zhì)開發(fā)者加入方舟開源社區(qū),中科院軟研所還為開源方舟編譯器Runtime參考實(shí)現(xiàn)發(fā)表了70+方舟代碼解讀,并聯(lián)合設(shè)計(jì)了RISC-V芯片支持方案;清華大學(xué)、中科院計(jì)算所、北京理工大學(xué)、深圳大學(xué)等多所高校也參與到方舟社區(qū)活動及技術(shù)研討中。
同時,國內(nèi)歷史最久最活躍的編譯技術(shù)社區(qū)之一HelloGCC聯(lián)合PLCT實(shí)驗(yàn)室,共同開設(shè)了方舟編譯器學(xué)習(xí)班,以方舟編譯器的實(shí)踐和實(shí)戰(zhàn)為重心,在線上和線下免費(fèi)向編程愛好者開放,今后還將合作推進(jìn) Toy Runtime 的功能增強(qiáng)和完善,協(xié)助方舟開源社區(qū)的推廣。
開放的方舟編譯器可以賦能開發(fā)者,而有了更多開發(fā)者的參與,方舟編譯器也發(fā)展的更快更穩(wěn)。近期,方舟編譯器的發(fā)展方向主要分為前端拓展、中端優(yōu)化和后端升級三個方面。前端開源后,圍繞多語言前端統(tǒng)一開發(fā)框架、類型推導(dǎo)與動態(tài)類型支持、java annotation支持展開提升;而中端開源則需要進(jìn)行代碼重構(gòu)、添加meir的builder、重構(gòu)優(yōu)化phase、編譯器的第三方解耦支持、profiling機(jī)制的實(shí)現(xiàn)與增強(qiáng);而在后端則需要進(jìn)行代碼重構(gòu)、優(yōu)化phase增強(qiáng)、添加指令調(diào)度模塊并新增機(jī)器模型。
這些工作也將是方舟編譯器在2020年核心工作的一部分。方舟編譯器當(dāng)前階段的目標(biāo)是能完整編譯、運(yùn)行Java程序,所以就需要把編譯器及運(yùn)行時相關(guān)部件全部開源。目前方舟編譯器的開源計(jì)劃正在穩(wěn)步展開,前端已經(jīng)不是瓶頸,將會按原計(jì)劃開源;中端已經(jīng)可以往社區(qū)陸續(xù)開源分析與優(yōu)化Phase;后端O0將優(yōu)先開源,近期就會開始走開源流程,希望能夠在2月份開出來。此外,Runtime的整體開源將會在社區(qū)上聚焦支持openjdk java基礎(chǔ)庫,支持Linux上可以跑java程序。在未來,方舟開源團(tuán)隊(duì)會將runtime框架+ openjdk支持開源,支持將java程序編譯和運(yùn)行在linux上,實(shí)現(xiàn)社區(qū)可開發(fā)驗(yàn)證。
如今,移動端開發(fā)所占比重越來越高。而90%的APP在開發(fā)時都會關(guān)注影響中低端機(jī)器應(yīng)用轉(zhuǎn)化率的包大小,影響安卓兼容性的開發(fā)調(diào)試工具效率、影響運(yùn)維速度的熱補(bǔ)丁技術(shù)以及影響新業(yè)務(wù)開發(fā)的第三方開源SDK使用情況。因此,未來的應(yīng)用框架在機(jī)制上會提供更多易于實(shí)現(xiàn)的跨平臺能力和自身重點(diǎn)打造的一次開發(fā)跨多設(shè)備能力。編程語言、編譯器、運(yùn)行時的技術(shù)發(fā)展,需要結(jié)合應(yīng)用框架和模型去創(chuàng)新,針對不同場景權(quán)衡性能、開發(fā)效率、動態(tài)能力等因素,兼顧開發(fā)者與消費(fèi)者的體驗(yàn)。不過一個編程語言很難滿足應(yīng)用的所有需求,因此編譯器在運(yùn)行時需要支持不同的編譯和運(yùn)行模式,這也是未來方舟編譯器發(fā)展的方向之一。
“不積跬步無以至千里”,方舟編譯器的2019年便是大步向前的一年。在這一年里,越來越多的人接觸到方舟編譯器,加入到方舟開源社區(qū),為這一技術(shù)添磚加瓦,為其成長貢獻(xiàn)自己的一份力量。2020到來,方舟編譯器還將邁步前行,不斷的開放開源,在線上和線下影響更多開發(fā)者,照亮行業(yè)未來發(fā)展之路。