V programmeringsspråk åpen kildekode

Oversatt inn i kategorien åpen kompilator for språk V. V er et statisk maskinkompilert språk som fokuserer på å gjøre utviklingen enklere å vedlikeholde og veldig rask å kompilere. Kompilatorkode, biblioteker og relaterte verktøy åpen under MIT-lisensen.

Vs syntaks er veldig lik Go, og låner noen konstruksjoner fra Oberon, Rust og Swift. Språket er forenklet så mye som mulig, og ifølge utvikleren er 30 minutters studier nok til å lære det grunnleggende dokumentasjon. Samtidig forblir språket ganske kraftig og kan brukes til å utføre de samme oppgavene som når du bruker andre programmeringsspråk (for eksempel er biblioteker tilgjengelige for 2D/3D-grafikk, opprettelse av GUIer og webapplikasjoner).

Opprettelsen av et nytt språk ble foranlediget av ønsket om å oppnå en kombinasjon av Go-språkets enkelhet i syntaks, kompileringshastighet, enkel parallellisering av operasjoner, portabilitet og vedlikeholdbarhet av kode med ytelsen til C/C++, sikkerheten til Rust og generering av maskinkode på Zig-kompileringsstadiet. Jeg ønsket også å få en kompakt og rask kompilator som kunne fungere uten eksterne avhengigheter, kvitte seg med det globale omfanget (globale variabler) og gi muligheten til å "hot" laste koden på nytt.

Sammenlignet med C++ er det nye språket betydelig enklere, gir raskere kompileringshastighet (opptil 400 ganger), praktiserer sikre programmeringsteknikker, er fritt for problemer med udefinert oppførsel, og gir innebygde verktøy for parallellisering av operasjoner. Sammenlignet med Python er V raskere, enklere, tryggere og mer vedlikeholdbar. Sammenlignet med Go har V ingen globale variabler, ingen nullverdier, alle variabelverdier må alltid være definert, alle objekter er uforanderlige som standard, kun én type tilordning støttes ("a := 0"), en betydelig mer kompakt kjøretid og størrelsen på de resulterende kjørbare filene, tilstedeværelsen av direkte portabilitet fra C, fraværet av en søppeloppsamler, raskere serialisering, muligheten til å interpolere strenger ("println('$foo: $bar.baz')").

fn main() {
områder := ['spill', 'nett', 'verktøy', 'vitenskap', 'systemer', 'GUI', 'mobil'] a := 10
hvis sant {
til := 20
}
for område i områder {
println('Hei, $area-utviklere!')
}
}

Funksjoner ved prosjektet:

  • Kompakt og rask kompilator, som sammen med standardbiblioteket tar opp ca 400 KB. Høy kompileringshastighet oppnås gjennom direkte generering av maskinkode og modularitet. Kompileringshastigheten er omtrent 1.2 millioner linjer med kode per sekund på en CPU-kjerne (det bemerkes at under operasjon kan V bruke C, da faller hastigheten til 100 tusen linjer per sekund). Selvmontering av kompilatoren, som også er skrevet på V-språket (det finnes også en referanseversjon i Go), tar omtrent 0.4 sekunder. Ved utgangen av året forventes arbeidet med ytterligere optimaliseringer å være fullført, noe som vil redusere kompilatorens byggetid til 0.15 sekunder. Ut fra testene utført av utvikleren krever selvmontering av Go 512 MB diskplass og går på halvannet minutt, Rust krever 30 GB og 45 minutter, GCC – 8 GB og 50 minutter, Clang – 90 GB og 25 minutter,
    Swift - 70 GB og 90 minutter;

  • Programmer er kompilert til kjørbare filer uten eksterne avhengigheter. Den kjørbare filstørrelsen til en enkel http-server etter montering er bare 65 KB;
  • Ytelsen til kompilerte applikasjoner er på nivå med samlinger av C-programmer;
  • Evnen til sømløst å samhandle med C-kode, uten ekstra overhead. Funksjoner på C-språket kan kalles fra kode på V-språket, og omvendt kan kode på V-språket kalles på et hvilket som helst språk som er kompatibelt med C;
  • Støtte for å oversette C/C++-prosjekter til en representasjon på språket V. En parser fra Clang brukes til oversettelse. Ikke alle funksjonene i C-standarden støttes ennå, men de nåværende egenskapene til oversetteren er allerede tilstrekkelig for oversettelse på språket til V-spillet DOOM. C++-oversetteren er fortsatt på et tidlig stadium av utviklingen;
  • Innebygd serialiseringsstøtte, uten å være bundet til kjøretid;
  • Minimere minnetildelingsoperasjoner;
  • Sikre sikkerhet: ingen NULL, globale variabler, udefinerte verdier og variabel omdefinering. Innebygd bufferoverløpskontroll. Støtte for generiske funksjoner (Generisk). Objekter og strukturer som ikke kan endres som standard;
  • Mulighet for "hot" kodeinnlasting (som gjenspeiler endringer i kode i farten uten rekompilering);
  • Verktøy for å sikre multithreading. Akkurat som i Go-språket, brukes en konstruksjon som "run foo()" for å starte en ny utførelsestråd (ligner på "go foo()"). I fremtiden er det planlagt støtte for goroutiner og en trådplanlegger;
  • Støtte for Windows, macOS, Linux, *BSD operativsystemer. Det er planlagt å legge til støtte for Android og iOS innen slutten av året;
  • Minnehåndtering ved kompilering (som i Rust), uten å bruke en søppelsamler;
  • Tilgjengelighet av et verktøysett for flere plattformer for grafikkutgang, ved bruk av GDI+/Cocoa og OpenGL for gjengivelse (støtte for DirectX, Vulkan og Metal APIer er planlagt). Det finnes verktøy for å jobbe med 3D-objekter, skjelettanimasjon og kamerakontroll;
  • Tilgjengelighet av et bibliotek for å generere grafiske grensesnitt med designelementer som er hjemmehørende i hvert OS. Windows bruker WinAPI/GDI+, macOS bruker Cocoa, og Linux bruker sitt eget sett med widgets. Biblioteket brukes allerede i utvikling Volt — klient for Slack, Skype, Gmail, Twitter og Facebook;

    Planen er å lage en Delphi-lignende grensesnittdesignapplikasjon, gi en deklarativ API som ligner på SwiftUI og React Native, og gi støtte for å lage mobilapplikasjoner for iOS og Android;

    V programmeringsspråk åpen kildekode

  • Tilgjengelighet av et innebygd nettrammeverk, som brukes til å lage nettside, forum og blogg for prosjektutviklerne. Forhåndskompilering av HTML-maler støttes, uten å behandle dem på hver forespørsel;
  • Krysskompileringsstøtte. For å bygge den kjørbare filen for Windows, bare kjør "v -os windows", og for Linux - "v -os linux" (krysskompileringsstøtte for macOS forventes senere). Krysskompilering fungerer også for grafiske applikasjoner;
  • Innebygd avhengighetsbehandler, pakkebehandler og byggeverktøy. For å bygge programmet, bare kjør "v.", uten å bruke make eller eksterne verktøy. For å installere flere biblioteker, kjør for eksempel "v get sqlite";
  • Tilgjengelighet av plugins for utvikling i V-språket i redaktører VS-kode и Vim.

utforming oppfattet fellesskap med skepsis, siden den publiserte koden viste at ikke alle deklarerte evnene ennå er implementert og det kreves en veldig stor mengde arbeid for å implementere alle planer.
I tillegg hadde i utgangspunktet depotet lagt ut ødelagt kode som har problemer med montering og utførelse. Det antas at forfatteren ennå ikke har nådd det stadiet de begynner å legge merke til Paretos lov, ifølge hvilke 20 % av innsatsen produserer 80 % av resultatet, og de resterende 80 % av innsatsen produserer bare 20 % av resultatet.

I mellomtiden har Project Vs feilsporer fått rundt 10 innlegg fjernet fra demonstrasjon lavkvalitetskode, for eksempel, indikerer bruk av C-innlegg og bruk i biblioteket av funksjoner for å slette katalogen til rm-kommandoen gjennom kallet os.system("rm -rf $path"). Forfatter av prosjektet saat han bare slettet meldingene, publisert troll (med endringer som bekrefter gyldigheten av kritikken, forble в redigere historikk).

Kilde: opennet.ru

Legg til en kommentar