V chinenero chotsegulira gwero

Kumasuliridwa m'gulu la open compiler ya chinenero V. V ndi chilankhulo chopangidwa ndi makina chomwe chimangoyang'ana kwambiri kuti chitukuko chikhale chosavuta kuchisamalira komanso kuti chisamangidwe mwachangu. Code compiler, malaibulale ndi zida zofananira ndi lotseguka pansi pa layisensi ya MIT.

Mawu a V ndi ofanana kwambiri ndi Go, kubwereka zina kuchokera ku Oberon, Rust, ndi Swift. Chilankhulochi chimakhala chosavuta momwe angathere ndipo, malinga ndi wopanga, mphindi 30 zophunzirira ndizokwanira kuti muphunzire zoyambira. zolemba. Nthawi yomweyo, chinenerocho chimakhalabe champhamvu kwambiri ndipo chitha kugwiritsidwa ntchito pochita ntchito zomwezo ngati mukugwiritsa ntchito zilankhulo zina zamapulogalamu (mwachitsanzo, malaibulale amapezeka pazithunzi za 2D/3D, kupanga ma GUI ndi kugwiritsa ntchito intaneti).

Kupanga chilankhulo chatsopano kudalimbikitsidwa ndi chikhumbo chofuna kukwaniritsa kuphatikiza kwa chilankhulo cha Go kuphweka kwa mawu, liwiro la kuphatikizira, kusinthasintha kwa magwiridwe antchito, kusuntha ndi kusungitsa kachidindo ndi magwiridwe antchito a C/C ++, chitetezo cha Dzimbiri ndi kupanga makina opangira makina pagawo la Zig compilation. Ndinkafunanso kupeza compiler yophatikizika komanso yofulumira yomwe ingagwire ntchito popanda kudalira kunja, kuchotsa kufalikira kwapadziko lonse (zosintha zapadziko lonse) ndikupereka mwayi "wotentha" kubwezeretsanso code.

Poyerekeza ndi C ++, chinenero chatsopanocho ndi chosavuta kwambiri, chimapereka mofulumira kusonkhanitsa (mpaka nthawi 400), chimagwiritsa ntchito njira zotetezera mapulogalamu, sichikhala ndi mavuto ndi khalidwe losadziwika bwino, ndipo chimapereka zida zomangidwira kuti zigwirizane nazo. Poyerekeza ndi Python, V ndi yachangu, yosavuta, yotetezeka, komanso yosamalidwa bwino. Poyerekeza ndi Go, V alibe zosintha zapadziko lonse lapansi, palibe nulls, zosintha zonse ziyenera kufotokozedwa nthawi zonse, zinthu zonse sizisintha mwachisawawa, mtundu umodzi wokha wa ntchito umathandizidwa ("a := 0"), wophatikizika kwambiri. nthawi yothamanga ndi kukula kwa mafayilo omwe atha kuchitidwa, kukhalapo kwa kusuntha kwachindunji kuchokera ku C, kusakhalapo kwa otolera zinyalala, kusanja mwachangu, kutha kumasulira zingwe ("println('$foo: $bar.baz')").

fn chachikulu () {
madera := ['game', 'web', 'tools', 'science', 'systems', 'GUI', 'mobile'] a := 10
ngati zoona {
ndi: = 20
}
kwa madera {
println('Moni, $area developers!')
}
}

Zofunika za Pulojekiti:

  • Compact komanso mwachangu compiler, yomwe pamodzi ndi laibulale yokhazikika imatenga pafupifupi 400 KB. Kuthamanga kwakukulu kumatheka kudzera mukupanga makina opangira makina ndi modularity. Liwiro kaphatikizidwe pafupifupi 1.2 miliyoni mizere code pa sekondi imodzi CPU pachimake (zimadziwika kuti pa ntchito V akhoza kugwiritsa ntchito C, ndiye liwiro akutsikira mizere 100 zikwi pa sekondi). Kudziphatika kwa compiler, komwe kumalembedwanso m'chilankhulo cha V (palinso buku lofotokozera mu Go), kumatenga pafupifupi masekondi 0.4. Pofika kumapeto kwa chaka, ntchito yowonjezereka yowonjezereka ikuyembekezeka kumalizidwa, zomwe zidzachepetsa nthawi yomanga yomangamanga mpaka masekondi 0.15. Kutengera mayeso opangidwa ndi wopanga mapulogalamuwo, kudzipangira nokha kwa Go kumafuna 512 MB ya disk space ndikuthamanga mphindi imodzi ndi theka, dzimbiri limafuna 30 GB ndi mphindi 45, GCC - 8 GB ndi mphindi 50, Clang - 90 GB ndi Mphindi 25,
    Swift - 70 GB ndi mphindi 90;

  • Mapulogalamu amapangidwa kukhala mafayilo omwe angathe kuchitika popanda kudalira kunja. Kukula kwa fayilo ya seva yosavuta http pambuyo pa msonkhano ndi 65 KB yokha;
  • Kuchita kwa mapulogalamu ophatikizidwa kuli pamlingo wa misonkhano ya C;
  • Kutha kulumikizana mosadukiza ndi C khodi, popanda zina zowonjezera. Ntchito m'chinenero cha C zikhoza kutchedwa kuchokera ku code mu chinenero cha V, ndipo mosiyana, code mu chinenero cha V ikhoza kutchedwa chinenero chilichonse chogwirizana ndi C;
  • Thandizo lomasulira mapulojekiti a C/C++ kukhala choyimira m'chinenero cha V. Wofotokozera kuchokera ku Clang amagwiritsidwa ntchito pomasulira. Sizinthu zonse zamtundu wa C zomwe zimathandizidwa pano, koma kuthekera kwaposachedwa kwa womasulira ndikokwanira kale kumasulira m'chinenero cha V game DOOM. Womasulira C ++ akadali pa chiyambi cha chitukuko;
  • Thandizo lomangidwa mu serialization, popanda kumangirizidwa ku nthawi yothamanga;
  • Kuchepetsa ntchito zogawa kukumbukira;
  • Kuwonetsetsa chitetezo: palibe NULL, zosintha zapadziko lonse lapansi, zosadziwika bwino komanso kutanthauziranso kosinthika. Buffer yomangidwa mkati ikupitilira kuyang'ana. Thandizo la ma generic function (Generic). Zinthu ndi zomanga zomwe sizingasinthidwe mwachisawawa;
  • Kuthekera kwa kuyikanso kachidindo "kotentha" (kuwonetsa kusintha kwa code pa ntchentche popanda kubwezeretsanso);
  • Zida zowonetsetsa kuti ma multithreading. Monga m'chinenero cha Go, kupanga ngati "run foo()" kumagwiritsidwa ntchito kuyambitsa ulusi watsopano (wofanana ndi "go foo()"). M'tsogolomu, chithandizo cha goroutines ndi ulusi scheduler akukonzekera;
  • Kuthandizira kwa Windows, macOS, Linux, * BSD machitidwe opangira. Ikukonzekera kuwonjezera chithandizo cha Android ndi iOS kumapeto kwa chaka;
  • Kuwongolera kukumbukira pa nthawi yophatikiza (monga ku Rust), osagwiritsa ntchito zotayira zinyalala;
  • Kupezeka kwa zida zamitundu yambiri zotulutsa zithunzi, pogwiritsa ntchito GDI+/Cocoa ndi OpenGL popereka (thandizo la DirectX, Vulkan ndi Metal APIs likukonzekera). Pali zida zogwirira ntchito ndi zinthu za 3D, makanema ojambula pachigoba komanso kuwongolera kamera;
  • Kupezeka kwa laibulale yopangira zolumikizirana ndi zida zamapangidwe amtundu uliwonse wa OS. Windows imagwiritsa ntchito WinAPI/GDI+, macOS imagwiritsa ntchito Cocoa, ndipo Linux imagwiritsa ntchito ma widget ake. Laibulale yagwiritsidwa kale ntchito popanga Volt - kasitomala wa Slack, Skype, Gmail, Twitter ndi Facebook;

    Ndondomekoyi ndi kupanga mawonekedwe opangira mawonekedwe a Delphi, kupereka API yolengeza yofanana ndi SwiftUI ndi React Native, ndikupereka chithandizo chopanga mafoni a iOS ndi Android;

    V chinenero chotsegulira gwero

  • Kupezeka kwa mawebusayiti opangidwa, omwe amagwiritsidwa ntchito popanga tsamba lawebusayiti, forum ndi blog kwa omwe akupanga polojekiti. Kukonzekera kwa ma tempulo a HTML kumathandizidwa, popanda kuwakonza pa pempho lililonse;
  • Thandizo la kupanikizana. Kuti mupange fayilo yotheka ya Windows, ingoyendetsani "v -os windows", ndi Linux - "v -os linux" (thandizo lophatikizika la macOS likuyembekezeka mtsogolo). Cross-compilation imagwiranso ntchito pazojambula;
  • Woyang'anira wodalira womangidwa, woyang'anira phukusi ndi zida zomangira. Kuti mupange pulogalamuyo, ingoyendetsani "v.", osagwiritsa ntchito zinthu zakunja kapena zakunja. Kukhazikitsa malaibulale owonjezera, ingothamangani, mwachitsanzo, "v get sqlite";
  • Kupezeka kwa mapulagini opangira chitukuko mu chilankhulo cha V mu okonza Code la VS ΠΈ Vim.

Development anazindikira community with kukayikira, popeza code yofalitsidwa inasonyeza kuti si mphamvu zonse zolengezedwa zomwe zakhala zikugwiritsidwa ntchito ndipo ntchito yaikulu kwambiri ikufunika kuti ikwaniritse ndondomeko zonse.
Kuphatikiza apo, poyambirira malo osungira anali nawo zatumizidwa code yosweka yomwe ili ndi zovuta pakusonkhanitsa ndikuchita. Zikuganiziridwa kuti wolemba sanafikebe pa siteji yomwe amayamba kuzindikira Lamulo la Pareto, malinga ndi zomwe 20% ya khama limapanga 80% ya zotsatira, ndipo 80% yotsala ya khama imapanga 20% yokha ya zotsatira.

Pakadali pano, Project V's bug tracker yachotsedwapo zolemba 10 chiwonetsero ma code otsika, mwachitsanzo, amawonetsa kugwiritsa ntchito C-insert ndi kugwiritsa ntchito mulaibulale ya ntchito pochotsa chikwatu cha rm command kudzera pa call os.system("rm -rf $path"). Wolemba ntchitoyo adalengezakuti adangochotsa mameseji, zosindikizidwa troll (ndi zosintha zomwe zikutsimikizira kutsimikizika kwa kutsutsidwa, adakhala Π² sinthani mbiri).

Source: opennet.ru

Kuwonjezera ndemanga