V programmeertaal iepen boarne

Oerset yn 'e kategory fan iepen gearstaller foar taal V. V is in statysk typte masine-kompilearre taal dy't him rjochtet op it meitsjen fan ûntwikkeling makliker te ûnderhâlden en hiel fluch te kompilearjen. Kompilatorkoade, biblioteken en relatearre ark is iepen ûnder de MIT-lisinsje.

De syntaksis fan V is heul ferlykber mei Go, en lient guon konstruksjes fan Oberon, Rust en Swift. De taal wurdt safolle mooglik ferienfâldige en neffens de ûntwikkelder is 30 minuten stúdzje genôch om de basis te learen dokumintaasje. Tagelyk bliuwt de taal frij krêftich en kin brûkt wurde om deselde taken út te fieren as by it brûken fan oare programmeartalen (bygelyks binne biblioteken beskikber foar 2D/3D-grafiken, it meitsjen fan GUI's en webapplikaasjes).

De oprjochting fan in nije taal waard oandreaun troch de winsk om in kombinaasje te berikken fan 'e ienfâld fan' e Go-taal fan syntaksis, kompilaasjesnelheid, gemak fan parallellisaasje fan operaasjes, portabiliteit en ûnderhâldberens fan koade mei de prestaasjes fan C / C ++, de feiligens fan Rust en de generaasje fan masinekoade by it Zig-kompilaasjestadium. Ik woe ek in kompakte en rappe gearstaller krije dy't sûnder eksterne ôfhinklikens wurkje koe, de globale omfang (globale fariabelen) kwytreitsje en de mooglikheid jaan om de koade te "hot" opnij te laden.

Yn ferliking mei C++ is de nije taal oanmerklik ienfâldiger, leveret flugger kompilaasjesnelheid (oant 400 kear), oefenet feilige programmeartechniken, is frij fan problemen mei ûndefinieare gedrach, en leveret ynboude ark foar parallelisearjen fan operaasjes. Yn ferliking mei Python is V flugger, ienfâldiger, feiliger en ûnderhâldberder. Yn ferliking mei Go, V hat gjin globale fariabelen, gjin nul, alle fariabele wearden moatte altyd wurde definiearre, alle objekten binne standert ûnferoarlik, mar ien soarte fan opdracht wurdt stipe ("a := 0"), in signifikant kompakter runtime en de grutte fan 'e resultearjende útfierbere triemmen, de oanwêzigens fan direkte portabiliteit fan C, it ûntbrekken fan in garbage collector, flugger serialisaasje, de mooglikheid om stringen te ynterpolearjen ("println('$foo: $bar.baz')").

fn main() {
gebieten:= ['spultsje', 'web', 'ark', 'wittenskip', 'systemen', 'GUI', 'mobyl'] a := 10
as wier {
oan:= 20
}
foar gebiet yn gebieten {
println('Hallo, $area-ûntwikkelders!')
}
}

Projektfunksjes:

  • Kompakte en snelle kompilator, dy't tegearre mei de standertbibleteek sawat 400 KB opnimt. Hege kompilaasjesnelheid wurdt berikt troch direkte generaasje fan masinekoade en modulariteit. De kompilaasje snelheid is likernôch 1.2 miljoen rigels fan koade per sekonde op ien CPU kearn (it wurdt opmurken dat ûnder operaasje V kin brûke C, dan de snelheid sakket nei 100 tûzen rigels per sekonde). Self-assemblage fan 'e gearstaller, dy't ek skreaun is yn' e V-taal (d'r is ek in referinsjeferzje yn Go), duorret sawat 0.4 sekonden. Oan 'e ein fan it jier wurdt ferwachte dat it wurk oan ekstra optimisaasjes foltôge is, wat de tiid fan' e gearstalling sil ferminderje nei 0.15 sekonden. Beoardielje troch de tests útfierd troch de ûntwikkelder, sels-assemblage fan Go fereasket 512 MB skiifromte en rint yn ien en in heale minút, Rust fereasket 30 GB en 45 minuten, GCC - 8 GB en 50 minuten, Clang - 90 GB en 25 minuten,
    Swift - 70 GB en 90 minuten;

  • Programma's wurde kompilearre yn útfierbere bestannen sûnder eksterne ôfhinklikens. De útfierbere triemgrutte fan in ienfâldige http-tsjinner nei gearstalling is mar 65 KB;
  • De prestaasjes fan kompilearre applikaasjes is op it nivo fan gearkomsten fan C-programma's;
  • De mooglikheid om naadloos te ynteraksje mei C-koade, sûnder ekstra overhead. Funksjes yn 'e C-taal kinne neamd wurde fan koade yn' e V-taal, en oarsom, koade yn 'e V-taal kin neamd wurde yn elke taal dy't kompatibel is mei C;
  • Stipe foar it oersetten fan C/C++-projekten yn in fertsjintwurdiging yn 'e taal V. In parser fan Clang wurdt brûkt foar oersetting. Net alle funksjes fan 'e C-standert wurde noch stipe, mar de hjoeddeistige mooglikheden fan' e oersetter binne al genôch foar oersetting yn 'e taal fan' e V-spultsje DOOM. De C++-oersetter is noch yn in ier stadium fan ûntwikkeling;
  • Ynboude serialisaasje-stipe, sûnder te wêzen bûn oan runtime;
  • Minimalisearjen fan ûnthâld tawizing operaasjes;
  • Feiligens garandearje: gjin NULL, globale fariabelen, undefinieare wearden en fariabele weryndieling. Ynboude buffer oerrin kontrôle. Stipe foar generyske funksjes (Generic). Objekten en struktueren dy't net standert feroare wurde kinne;
  • Mooglikheid fan "hot" koade opnij laden (reflektearje feroarings yn koade op 'e flecht sûnder opnij kompilaasje);
  • Tools foar it garandearjen fan multithreading. Krekt as yn 'e Go-taal wurdt in konstruksje lykas "run foo()" brûkt om in nije tried fan útfiering te begjinnen (lykas "go foo()"). Yn 'e takomst wurdt stipe foar goroutines en in threadplanner pland;
  • Stipe foar Windows, macOS, Linux, *BSD bestjoeringssystemen. It is pland om stipe foar Android en iOS oan it ein fan it jier ta te foegjen;
  • Unthâldbehear op kompilaasjetiid (lykas yn Rust), sûnder gebrûk fan in garbage collector;
  • Beskikberens fan in multi-platfoarm toolkit foar grafyske útfier, mei GDI + / Cocoa en OpenGL foar rendering (stipe foar DirectX, Vulkan en Metal APIs is pland). Der binne ark foar in wurk mei 3D objekten, skeletal animation en kamera kontrôle;
  • Beskikberens fan in bibleteek foar it generearjen fan grafyske ynterfaces mei ûntwerpeleminten lânseigen foar elk OS. Windows brûkt WinAPI/GDI+, macOS brûkt Cocoa, en Linux brûkt syn eigen set widgets. De bibleteek wurdt al brûkt yn ûntwikkeling Volt - kliïnt foar Slack, Skype, Gmail, Twitter en Facebook;

    It plan is om in Delphi-like ynterface-ûntwerpapplikaasje te meitsjen, in deklarative API te leverjen lykas SwiftUI en React Native, en stipe foar it meitsjen fan mobile applikaasjes foar iOS en Android;

    V programmeertaal iepen boarne

  • Beskikberens fan in ynboude webkader, dat wurdt brûkt om in webside, foarum en blog te meitsjen foar de projektûntwikkelders. Foarkompilaasje fan HTML-sjabloanen wurdt stipe, sûnder se op elke oanfraach te ferwurkjen;
  • Cross compilation stipe. Om it útfierbere bestân foar Windows te bouwen, rinne gewoan "v -os windows", en foar Linux - "v -os linux" (stipe foar cross-kompilaasje foar macOS wurdt letter ferwachte). Cross-kompilaasje wurket ek foar grafyske tapassingen;
  • Ynboude ôfhinklikensbehearder, pakketbehearder en bouwark. Om it programma te bouwen, rinne gewoan "v.", sûnder make of eksterne nutsbedriuwen te brûken. Foar in ynstallearje ekstra biblioteken, gewoan rinne, bygelyks, "v krije sqlite";
  • Beskikberens fan plugins foar ûntwikkeling yn 'e V-taal yn redakteuren VS-koade и Vim.

Untwikkeling waarnommen mienskip mei skepsis, sûnt de publisearre koade die bliken dat net alle ferklearre mooglikheden noch binne ymplementearre en in hiel grut bedrach fan wurk is nedich om te fieren alle plannen.
Dêrneist hie yn earste ynstânsje it depot pleatst brutsen koade dy't problemen hat mei montage en útfiering. Der wurdt fan útgien dat de skriuwer noch net it poadium berikt hat dat se begjinne te merken Pareto's wet, neffens hokker 20% fan ynspannings produsearret 80% fan it resultaat, en de oerbleaune 80% fan ynspannings produsearret allinnich 20% fan it resultaat.

Underwilens hat Project V's bug tracker sawat 10 berjochten fuortsmiten fan demonstraasje lege kwaliteit koade, bygelyks, jout it brûken fan C-ynserts en it brûken yn de bibleteek fan funksjes foar it wiskjen fan de triemtafel fan de rm kommando fia de oprop os.system ("rm -rf $ paad"). Auteur fan it projekt ferklearredat hy allinich de berjochten wiske, publisearre troll (mei feroaringen dy't de jildichheid fan 'e krityk befêstigje, bleaun в skiednis bewurkje).

Boarne: opennet.ru

Add a comment