Tulkots atvÄrtÄ kompilatora kategorijÄ valoda V. V ir statiski drukÄta maŔīnkompilÄta valoda, kuras mÄrÄ·is ir atvieglot izstrÄdes uzturÄÅ”anu un ļoti Ätru kompilÄÅ”anu. Kompilatora kods, bibliotÄkas un saistÄ«tie rÄ«ki ir atvÄrts saskaÅÄ ar MIT licenci.
V sintakse ir ļoti lÄ«dzÄ«ga Go, aizÅemoties dažas konstrukcijas no Oberon, Rust un Swift. Valoda ir pÄc iespÄjas vienkÄrÅ”ota, un, pÄc izstrÄdÄtÄja domÄm, pietiek ar 30 minÅ«tÄm, lai apgÅ«tu pamatus. dokumentÄcija. TajÄ paÅ”Ä laikÄ valoda joprojÄm ir diezgan jaudÄ«ga, un to var izmantot, lai veiktu tos paÅ”us uzdevumus, kÄ izmantojot citas programmÄÅ”anas valodas (piemÄram, bibliotÄkas ir pieejamas 2D/3D grafikai, veidojot GUI un tÄ«mekļa lietojumprogrammas).
Jaunas valodas izveidi pamudinÄja vÄlme panÄkt Go valodas sintakses vienkÄrŔības, kompilÄcijas Ätruma, operÄciju paralelizÄcijas vienkÄrŔības, koda pÄrnesamÄ«bas un uzturamÄ«bas ar C/C++ veiktspÄju, Rust un Rust droŔības kombinÄciju. maŔīnkoda Ä£enerÄÅ”ana Zig kompilÄcijas stadijÄ. Es arÄ« gribÄju iegÅ«t kompaktu un Ätru kompilatoru, kas varÄtu darboties bez ÄrÄjÄm atkarÄ«bÄm, atbrÄ«voties no globÄlÄs darbÄ«bas jomas (globÄlie mainÄ«gie) un nodroÅ”inÄt iespÄju ākarstiā pÄrlÄdÄt kodu.
SalÄ«dzinot ar C++, jaunÄ valoda ir ievÄrojami vienkÄrÅ”Äka, nodroÅ”ina ÄtrÄku kompilÄcijas Ätrumu (lÄ«dz 400 reizÄm), praktizÄ droÅ”as programmÄÅ”anas metodes, bez problÄmÄm ar nedefinÄtu uzvedÄ«bu un nodroÅ”ina iebÅ«vÄtus rÄ«kus darbÄ«bu paralÄlinÄÅ”anai. SalÄ«dzinot ar Python, V ir ÄtrÄks, vienkÄrÅ”Äks, droÅ”Äks un labÄk apkopjams. SalÄ«dzinot ar Go, V nav globÄlu mainÄ«go, nav nulles, vienmÄr jÄbÅ«t definÄtÄm visÄm mainÄ«go vÄrtÄ«bÄm, visi objekti pÄc noklusÄjuma ir nemainÄ«gi, tiek atbalstÄ«ts tikai viens pieŔķirÅ”anas veids (āa := 0ā), ievÄrojami kompaktÄks izpildlaiks un iegÅ«to izpildÄmo failu lielums, tieÅ”Ä pÄrnesamÄ«ba no C, atkritumu savÄcÄja neesamÄ«ba, ÄtrÄka serializÄcija, iespÄja interpolÄt virknes (āprintln('$foo: $bar.baz')ā).
Kompakts un Ätrs kompilators, kas kopÄ ar standarta bibliotÄku aizÅem apmÄram 400 KB. Liels kompilÄcijas Ätrums tiek panÄkts, tieÅ”i Ä£enerÄjot maŔīnkodu un modularitÄti. KompilÄcijas Ätrums ir aptuveni 1.2 miljoni koda rindiÅu sekundÄ uz viena CPU kodola (jÄatzÄ«mÄ, ka darbÄ«bas laikÄ V var izmantot C, tad Ätrums samazinÄs lÄ«dz 100 tÅ«kstoÅ”iem rindiÅu sekundÄ). Kompilatora paÅ”montÄža, kas arÄ« ir rakstÄ«ta V valodÄ (Go ir arÄ« atsauces versija), aizÅem aptuveni 0.4 sekundes. Paredzams, ka lÄ«dz gada beigÄm tiks pabeigts darbs pie papildu optimizÄcijas, kas samazinÄs kompilatora izveides laiku lÄ«dz 0.15 sekundÄm. Spriežot pÄc izstrÄdÄtÄja veiktajiem testiem, Go paÅ”montÄža prasa 512 MB diska vietas un darbojas pusotras minÅ«tes laikÄ, Rust prasa 30 GB un 45 minÅ«tes, GCC - 8 GB un 50 minÅ«tes, Clang - 90 GB un 25 minÅ«tes,
Swift - 70 GB un 90 minūtes;
Programmas tiek apkopotas izpildÄmos failos bez ÄrÄjÄm atkarÄ«bÄm. VienkÄrÅ”a http servera izpildÄmÄ faila izmÄrs pÄc montÄžas ir tikai 65 KB;
SastÄdÄ«to lietojumprogrammu veiktspÄja ir C programmu komplektu lÄ«menÄ«;
IespÄja nemanÄmi mijiedarboties ar C kodu, bez papildu izmaksÄm. Funkcijas C valodÄ var izsaukt no koda V valodÄ, un otrÄdi, kodu V valodÄ var izsaukt jebkurÄ ar C saderÄ«gÄ valodÄ;
Atbalsts C/C++ projektu tulkoÅ”anai reprezentÄcijÄ V valodÄ. TulkoÅ”anai tiek izmantots parsÄtÄjs no Clang. PagaidÄm netiek atbalstÄ«tas visas C standarta iespÄjas, taÄu ar paÅ”reizÄjÄm tulkotÄja iespÄjÄm jau pietiek tulkoÅ”ana V spÄles DOOM valodÄ. C++ tulkotÄjs joprojÄm ir attÄ«stÄ«bas sÄkuma stadijÄ;
IebÅ«vÄts serializÄcijas atbalsts, kas nav saistÄ«ts ar izpildlaiku;
AtmiÅas pieŔķirÅ”anas darbÄ«bu samazinÄÅ”ana;
DroŔības nodroÅ”inÄÅ”ana: nav NULL, globÄlie mainÄ«gie, nedefinÄtas vÄrtÄ«bas un mainÄ«gÄ atkÄrtota definÄÅ”ana. IebÅ«vÄta bufera pÄrtÄriÅa pÄrbaude. Atbalsts vispÄrÄ«gÄm funkcijÄm (Generic). Objekti un struktÅ«ras, kuras pÄc noklusÄjuma nevar mainÄ«t;
IespÄja ākarstuā kodu pÄrlÄdÄt (atspoguļojot izmaiÅas kodÄ lidojuma laikÄ bez atkÄrtotas kompilÄcijas);
Instrumenti daudzpavedienu nodroÅ”inÄÅ”anai. TÄpat kÄ Go valodÄ, jauna izpildes pavediena uzsÄkÅ”anai tiek izmantota tÄda konstrukcija kÄ āpalaist foo()ā (lÄ«dzÄ«gi kÄ āgo foo()ā). NÄkotnÄ tiek plÄnots atbalsts gorutÄ«nÄm un pavedienu plÄnotÄjam;
Atbalsts operÄtÄjsistÄmÄm Windows, macOS, Linux, *BSD. Android un iOS atbalstu plÄnots pievienot lÄ«dz gada beigÄm;
VairÄku platformu rÄ«ku komplekta pieejamÄ«ba grafikas izvadei, renderÄÅ”anai izmantojot GDI+/Cocoa un OpenGL (tiek plÄnots DirectX, Vulkan un Metal API atbalsts). Ir instrumenti darbam ar 3D objektiem, skeleta animÄcija un kameras vadÄ«ba;
BibliotÄkas pieejamÄ«ba grafisko interfeisu Ä£enerÄÅ”anai ar katras operÄtÄjsistÄmas dizaina elementiem. Windows izmanto WinAPI/GDI+, macOS izmanto Cocoa, un Linux izmanto savu logrÄ«ku kopu. BibliotÄka jau tiek izmantota izstrÄdÄ Volts ā Slack, Skype, Gmail, Twitter un Facebook klients;
PlÄns ir izveidot Delphi lÄ«dzÄ«gu interfeisa dizaina lietojumprogrammu, nodroÅ”inÄt deklaratÄ«vu API, kas ir lÄ«dzÄ«ga SwiftUI un React Native, un nodroÅ”inÄt atbalstu mobilo aplikÄciju izveidei iOS un Android ierÄ«cÄm;
IebÅ«vÄta tÄ«mekļa ietvara pieejamÄ«ba, kas tiek izmantota, lai izveidotu vietni, forumu un emuÄru projekta izstrÄdÄtÄjiem. Tiek atbalstÄ«ta HTML veidÅu iepriekÅ”Äja kompilÄcija, neapstrÄdÄjot tÄs pÄc katra pieprasÄ«juma;
Krusta kompilÄcijas atbalsts. Lai izveidotu izpildÄmo failu operÄtÄjsistÄmai Windows, vienkÄrÅ”i palaidiet āv -os windowsā un operÄtÄjsistÄmai Linux ā āv -os linuxā (macOS savstarpÄjÄs kompilÄcijas atbalsts ir paredzÄts vÄlÄk). SavstarpÄjÄ kompilÄcija darbojas arÄ« grafiskÄm lietojumprogrammÄm;
IebÅ«vÄts atkarÄ«bas pÄrvaldnieks, pakotÅu pÄrvaldnieks un veidoÅ”anas rÄ«ki. Lai izveidotu programmu, vienkÄrÅ”i palaidiet āv.ā, neizmantojot marku vai ÄrÄjÄs utilÄ«tas. Lai instalÄtu papildu bibliotÄkas, vienkÄrÅ”i palaidiet, piemÄram, āv get sqliteā;
SpraudÅu pieejamÄ«ba izstrÄdei V valodÄ redaktoros VS kods Šø spars.
AttÄ«stÄ«ba uztverts kopiena ar skepticisms, jo publicÄtais kods liecinÄja, ka visas deklarÄtÄs iespÄjas vÄl nav Ä«stenotas un visu plÄnu Ä«stenoÅ”anai ir nepiecieÅ”ams ļoti liels darba apjoms.
TurklÄt sÄkotnÄji repozitorijÄ bija izlikts bojÄts kods, kuram ir problÄmas ar montÄžu un izpildi. Tiek pieÅemts, ka autors vÄl nav sasniedzis stadiju, kurÄ viÅi sÄk pamanÄ«t Pareto likums, saskaÅÄ ar kuru 20% piepÅ«les rada 80% no rezultÄta, bet atlikuÅ”ie 80% piepÅ«les rada tikai 20% no rezultÄta.
TikmÄr Project V kļūdu izsekotÄjs ir noÅÄmis aptuveni 10 ziÅas no demonstrÄcija zemas kvalitÄtes kods, piemÄram, norÄda uz C-ieliktÅu izmantoÅ”anu un funkciju izmantoÅ”anu bibliotÄkÄ, lai dzÄstu komandas rm direktoriju, izmantojot izsaukumu os.system ("rm -rf $path"). Projekta autors teicaka viÅÅ” tikai izdzÄsa ziÅas, publicÄtstrollis (ar izmaiÅÄm, kas apstiprina kritikas pamatotÄ«bu, palika Š² rediÄ£Ät vÄsturi).