V Umthombo ovulekile wolimi lokuhlela

Kuhunyushwe esigabeni se- open compiler ye ulimi V. I-V iwulimi oluhlanganiswe ngomshini oluthayiphiwe ngokwezibalo olugxile ekwenzeni ukuthuthukiswa kube lula ukugcinwa futhi kusheshe kakhulu ukukuhlanganisa. Ikhodi yeqoqo, imitapo yolwazi namathuluzi ahlobene vula ngaphansi kwelayisensi ye-MIT.

I-syntax ka-V ifana kakhulu ne-Go, iboleka ezinye izakhiwo ku-Oberon, Rust, ne-Swift. Ulimi lwenziwe lula ngangokunokwenzeka futhi, ngokusho konjiniyela, imizuzu engama-30 yokufunda yanele ukufunda izisekelo. imibhalo. Ngesikhathi esifanayo, ulimi luhlala lunamandla futhi lungasetshenziswa ukwenza imisebenzi efanayo naleyo lapho usebenzisa ezinye izilimi zokuhlela (isibonelo, imitapo yolwazi iyatholakala ngehluzo ze-2D/3D, ukudala ama-GUI nezinhlelo zokusebenza zewebhu).

Ukwakhiwa kolimi olusha kwagqugquzelwa isifiso sokuzuza inhlanganisela yobulula bolimi lwe-Go lwe-syntax, isivinini sokuhlanganiswa, ukufana kokusebenza okulula, ukuphatheka nokugcinwa kwekhodi nokusebenza kwe-C/C++, ukuphepha kwe-Rust kanye ukukhiqizwa kwekhodi yomshini esigabeni sokuhlanganiswa kwe-Zig. Bengifuna futhi ukuthola inhlanganisela ehlangene nesheshayo engasebenza ngaphandle kokuncika kwangaphandle, isuse ububanzi bomhlaba (izinto eziguquguqukayo zomhlaba) futhi inikeze ikhono "lokushisa" ukulayisha kabusha ikhodi.

Uma kuqhathaniswa ne-C++, ulimi olusha lulula kakhulu, lunikeza isivinini sokuhlanganisa ngokushesha (kufika izikhathi ezingu-400), lwenza amasu okuhlela aphephile, alunazo izinkinga ngokuziphatha okungachazwanga, futhi luhlinzeka ngamathuluzi akhelwe ngaphakathi okusebenza okuhambisanayo. Uma kuqhathaniswa nePython, i-V iyashesha, ilula, iphephile, futhi iyalondolozeka. Uma kuqhathaniswa ne-Go, i-V ayinakho okuguquguqukayo komhlaba wonke, akukho lutho olungenalutho, wonke amanani aguquguqukayo kufanele achazwe njalo, zonke izinto aziguquleki ngokuzenzakalelayo, uhlobo olulodwa kuphela lwesabelo olusekelwayo ("a := 0"), okuhlangene kakhulu. isikhathi sokusebenza kanye nosayizi wamafayela asebenzisekayo angumphumela, ukuba khona kokuphatheka okuqondile kusuka ku-C, ukungabikho komqoqi kadoti, ukwenziwa kwe-serial ngokushesha, ikhono lokuhlanganisa izintambo (“println('$foo: $bar.baz')”).

i-fnmain() {
izindawo := ['igeyimu', 'iwebhu', 'amathuluzi', 'isayensi', 'amasistimu', 'GUI', 'iselula'] a := 10
uma kuyiqiniso {
awu:=20
}
endaweni ezindaweni {
println('Sawubona, $area developers!')
}
}

Izici zephrojekthi:

  • Inhlanganisela eqinile nesheshayo, yona kanye nomtapo wolwazi ojwayelekile othatha cishe u-400 KB. Isivinini sokuhlanganiswa esiphezulu sitholakala ngokukhiqizwa okuqondile kwekhodi yomshini kanye ne-modularity. Ijubane lokuhlanganisa cishe imigqa yekhodi eyizigidi ezingu-1.2 ngomzuzwana ku-CPU core eyodwa (kuyaphawuleka ukuthi ngesikhathi sokusebenza V ingasebenzisa i-C, bese ijubane lehla kumigqa eyizinkulungwane eziyi-100 ngomzuzwana). Ukuzihlanganisa ngokwakho komhlanganisi, okubuye kubhalwe ngolimi lwe-V (kukhona nenguqulo yereferensi ku-Go), kuthatha cishe imizuzwana engu-0.4. Ekupheleni konyaka, umsebenzi wokuthuthukisa okwengeziwe kulindeleke ukuthi uqedwe, okuzonciphisa isikhathi sokwakha isihlanganisi sibe imizuzwana engu-0.15. Uma sibheka izivivinyo ezenziwa umthuthukisi, ukuzihlanganisa kwe-Go kudinga u-512 MB wesikhala sediski futhi kusebenza ngomzuzu owodwa nengxenye, iRust idinga imizuzu engama-30 nemizuzu engama-45, i-GCC - 8 GB nemizuzu engama-50, iClang - 90 GB kanye Imizuzu engama-25,
    I-Swift - 70 GB nemizuzu engu-90;

  • Izinhlelo zihlanganiswa zibe amafayela asebenzisekayo ngaphandle kokuncika kwangaphandle. Usayizi wefayela osebenzisekayo weseva ye-http elula ngemva kokuhlanganiswa ngu-65 KB kuphela;
  • Ukusebenza kwezicelo ezihlanganisiwe kusezingeni lemihlangano yezinhlelo ze-C;
  • Amandla okuxhumana ngaphandle komthungo nekhodi engu-C, ngaphandle kwe-overhead eyengeziwe. Imisebenzi ngolimi C ingabizwa ngekhodi yolimi V, futhi okuphambene nalokho, ikhodi yolimi V ingabizwa nganoma yiluphi ulimi oluhambisana no-C;
  • Usekelo lokuhumusha amaphrojekthi e-C/C++ enze isethulo solimi lwe-V. Umhlahleli osuka ku-Clang usetshenziselwa ukuhumusha. Akuzona zonke izici zezinga elingu-C ezisekelwayo okwamanje, kodwa amandla amanje omhumushi asevele anele ukuhumusha ngolimi lomdlalo we-V we-DOOM. Umhumushi we-C++ usesesigabeni sokuqala sokuthuthuka;
  • Ukusekelwa kwe-serialization okwakhelwe ngaphakathi, ngaphandle kokuboshelwa esikhathini sokusebenza;
  • Ukunciphisa imisebenzi yokwabiwa kwenkumbulo;
  • Ukuqinisekisa ukuphepha: akukho NULL, okuguquguqukayo komhlaba, amanani angachazwanga kanye nokuchazwa kabusha okuguquguqukayo. Ukuhlolwa kwebhafa okwakhelwe ngaphakathi. Ukusekelwa kwemisebenzi ejwayelekile (Ejwayelekile). Izinto nezakhiwo ezingenakuguqulwa ngokuzenzakalelayo;
  • Amathuba okulayisha kabusha ikhodi “eshisayo” (ibonisa izinguquko zekhodi endizeni ngaphandle kokuhlanganiswa kabusha);
  • Amathuluzi okuqinisekisa i-multithreading. Njengasolimini lwe-Go, ukwakha okufana nokuthi “run foo()” kusetshenziselwa ukuqalisa umucu omusha wokusebenzisa (ofana nokuthi “go foo()”). Ngokuzayo, ukusekelwa kwama-goroutines kanye nesihleli sentambo kuhlelwa;
  • Ukusekelwa kweWindows, macOS, Linux, *BSD izinhlelo zokusebenza. Kuhlelelwe ukwengeza ukwesekwa kwe-Android ne-iOS ekupheleni konyaka;
  • Ukuphathwa kwememori ngesikhathi sokuhlanganisa (njengaku-Rust), ngaphandle kokusebenzisa umqoqi wezibi;
  • Ukutholakala kwekhithi yamathuluzi enezingxenyekazi eziningi zokukhishwa kwezithombe, kusetshenziswa i-GDI+/Cocoa kanye ne-OpenGL ukuze kwenziwe (ukusekelwa kwe-DirectX, i-Vulkan ne-Metal APIs kuhleliwe). Kunamathuluzi okusebenza ngezinto ze-3D, i-animation yamathambo nokulawula ikhamera;
  • Ukutholakala komtapo wolwazi wokukhiqiza ukuxhumana okunemifanekiso enezici zedizayini ezitholakala ku-OS ngayinye. IWindows isebenzisa iWinAPI/GDI+, iMacOS isebenzisa iCocoa, kanti iLinux isebenzisa isethi yayo yamawijethi. Umtapo wolwazi usuvele usetshenziswa ekuthuthukisweni I-Volt - iklayenti le-Slack, i-Skype, i-Gmail, i-Twitter ne-Facebook;

    Uhlelo luwukwenza uhlelo lokusebenza lokuklama isikhombimsebenzisi esifana ne-Delphi, sinikeze i-API ememezelayo efana ne-SwiftUI ne-React Native, futhi sinikeze ukusekelwa ekudaleni izinhlelo zokusebenza zeselula ze-iOS ne-Android;

    V Umthombo ovulekile wolimi lokuhlela

  • Ukutholakala kohlaka lwewebhu olwakhelwe ngaphakathi, olusetshenziselwa ukwakha iwebhusayithi, inkundla kanye nebhulogi yabathuthukisi bephrojekthi. Ukuhlanganiswa kwangaphambili kwezifanekiso ze-HTML kuyasekelwa, ngaphandle kokuzicubungula esicelweni ngasinye;
  • Ukwesekwa kokuhlanganiswa kwesiphambano. Ukuze wakhe ifayela elisebenzisekayo le-Windows, vele usebenzise i-“v -os windows”, futhi ku-Linux - “v -os linux” (ukusekelwa kokuhlanganiswa kwe-macOS kulindeleke kamuva). I-Cross-compilation iphinde isebenzele izinhlelo zokusebenza zegraphic;
  • Umphathi wokuncika owakhelwe ngaphakathi, umphathi wephakheji namathuluzi wokwakha. Ukuze wakhe uhlelo, vele usebenzise u-“v.”, ngaphandle kokusebenzisa i-make noma izinsiza zangaphandle. Ukufaka imitapo yolwazi eyengeziwe, vele ugijime, isibonelo, “v get sqlite”;
  • Ukutholakala kwama-plugin azothuthukiswa ngolimi lwe-V kubahleli Ikhodi ye-VS и Vim.

Ukuthuthukiswa bonile umphakathi nge ukungabaza, njengoba ikhodi eshicilelwe ibonise ukuthi akuwona wonke amakhono amenyeziwe asesenziwe futhi inani elikhulu kakhulu lomsebenzi liyadingeka ukuze kusetshenziswe zonke izinhlelo.
Ngaphezu kwalokho, ekuqaleni inqolobane yayinayo okuthunyelwe ikhodi ephukile enezinkinga ngokuhlanganisa nokwenza. Kucatshangwa ukuthi umbhali akakafinyeleli esigabeni abaqala ngaso ukuqaphela Umthetho kaPareto, ngokusho ukuthi i-20% yomzamo ikhiqiza i-80% yomphumela, futhi i-80% esele yomzamo ikhiqiza kuphela i-20% yomphumela.

Ngaleso sikhathi, i-Project V's bug tracker isuswe cishe okuthunyelwe okungu-10 ukuboniswa ikhodi yekhwalithi ephansi, isibonelo, ikhombisa ukusetshenziswa kokufakwayo kuka-C kanye nokusetshenziswa kumtapo wezincwadi wemisebenzi yokususa uhla lwemibhalo lomyalo we-rm ngekholi os.system("rm -rf $path"). Umbhali wephrojekthi ememezelweukuthi wasusa imiyalezo kuphela, kushicilelwe i-troll (nezinguquko eziqinisekisa ubuqiniso bokugxeka, wasala в hlela umlando).

Source: opennet.ru

Engeza amazwana