V programmeringssprog open source

Oversat ind i kategorien åben compiler til sprog V. V er et statisk maskinskrevet sprog, der fokuserer på at gøre udviklingen nemmere at vedligeholde og meget hurtig at kompilere. Compiler kode, biblioteker og relaterede værktøjer åben under MIT-licensen.

V's syntaks ligner meget Go og låner nogle konstruktioner fra Oberon, Rust og Swift. Sproget er forenklet så meget som muligt, og ifølge udvikleren er 30 minutters studier nok til at lære det grundlæggende dokumentation. Samtidig forbliver sproget ret kraftfuldt og kan bruges til at udføre de samme opgaver som ved brug af andre programmeringssprog (for eksempel er biblioteker tilgængelige til 2D/3D-grafik, oprettelse af GUI'er og webapplikationer).

Oprettelsen af ​​et nyt sprog blev foranlediget af ønsket om at opnå en kombination af Go-sprogets enkelhed af syntaks, kompileringshastighed, let parallelisering af operationer, portabilitet og vedligeholdelse af kode med ydeevnen af ​​C/C++, sikkerheden i Rust og generering af maskinkode på Zig-kompileringsstadiet. Jeg ønskede også at få en kompakt og hurtig compiler, der kunne fungere uden eksterne afhængigheder, slippe af med det globale omfang (globale variabler) og give mulighed for at "hot" genindlæse koden.

Sammenlignet med C++ er det nye sprog væsentligt enklere, giver hurtigere kompileringshastighed (op til 400 gange), praktiserer sikre programmeringsteknikker, er fri for problemer med udefineret adfærd og giver indbyggede værktøjer til parallelisering af operationer. Sammenlignet med Python er V hurtigere, enklere, sikrere og mere vedligeholdelsesvenlig. Sammenlignet med Go har V ingen globale variable, ingen nuller, alle variabelværdier skal altid defineres, alle objekter er uforanderlige som standard, kun én type tildeling understøttes ("a := 0"), en væsentligt mere kompakt runtime og størrelsen af ​​de resulterende eksekverbare filer, tilstedeværelsen af ​​direkte portabilitet fra C, fraværet af en skraldeopsamler, hurtigere serialisering, evnen til at interpolere strenge ("println('$foo: $bar.baz')").

fn main() {
områder := ['spil', 'web', 'værktøjer', 'videnskab', 'systemer', 'GUI', 'mobil'] a := 10
hvis sandt {
til := 20
}
for område i områder {
println('Hej, $area-udviklere!')
}
}

Projektets funktioner:

  • Kompakt og hurtig compiler, som sammen med standardbiblioteket fylder omkring 400 KB. Høj kompileringshastighed opnås gennem direkte generering af maskinkode og modularitet. Kompileringshastigheden er cirka 1.2 millioner linjer kode pr. sekund på en CPU-kerne (det bemærkes, at under drift kan V bruge C, så falder hastigheden til 100 tusind linjer pr. sekund). Selvmontering af compileren, som også er skrevet på V-sproget (der er også en referenceversion i Go), tager cirka 0.4 sekunder. Ved årets udgang forventes arbejdet med yderligere optimeringer at være afsluttet, hvilket vil reducere compilerens byggetid til 0.15 sekunder. At dømme efter testene udført af udvikleren kræver selvsamling af Go 512 MB diskplads og kører på halvandet minut, Rust kræver 30 GB og 45 minutter, GCC – 8 GB og 50 minutter, Clang – 90 GB og 25 minutter,
    Swift - 70 GB og 90 minutter;

  • Programmer kompileres til eksekverbare filer uden eksterne afhængigheder. Den eksekverbare filstørrelse på en simpel http-server efter samling er kun 65 KB;
  • Ydeevnen af ​​kompilerede applikationer er på niveau med samlinger af C-programmer;
  • Evnen til problemfrit at interagere med C-kode uden yderligere overhead. Funktioner i C-sproget kan kaldes fra kode i V-sproget, og omvendt kan kode i V-sproget kaldes på ethvert sprog, der er kompatibelt med C;
  • Understøttelse af oversættelse af C/C++ projekter til en repræsentation på sproget V. En parser fra Clang bruges til oversættelse. Ikke alle funktioner i C-standarden er understøttet endnu, men oversætterens nuværende muligheder er allerede tilstrækkelige til oversættelse på sproget i V-spillet DOOM. C++-oversætteren er stadig på et tidligt udviklingsstadium;
  • Indbygget serialiseringsunderstøttelse uden at være bundet til runtime;
  • Minimering af hukommelsesallokeringsoperationer;
  • Sikring af sikkerhed: ingen NULL, globale variabler, udefinerede værdier og variabel omdefinering. Indbygget bufferoverløbskontrol. Understøttelse af generiske funktioner (Generisk). Objekter og strukturer, der ikke kan ændres som standard;
  • Mulighed for "hot" kodegenindlæsning (afspejler ændringer i kode i farten uden rekompilering);
  • Værktøjer til at sikre multithreading. Ligesom i Go-sproget bruges en konstruktion som "run foo()" til at starte en ny udførelsestråd (svarende til "go foo()"). I fremtiden er der planlagt support til goroutiner og en trådplanlægger;
  • Understøttelse af Windows, macOS, Linux, *BSD operativsystemer. Det er planlagt at tilføje support til Android og iOS inden årets udgang;
  • Hukommelseshåndtering på kompileringstidspunktet (som i Rust), uden brug af en skraldeopsamler;
  • Tilgængeligheden af ​​et multi-platform værktøjssæt til grafik output, der bruger GDI+/Cocoa og OpenGL til gengivelse (understøttelse af DirectX, Vulkan og Metal API'er er planlagt). Der er værktøjer til at arbejde med 3D-objekter, skeletanimation og kamerastyring;
  • Tilgængelighed af et bibliotek til generering af grafiske grænseflader med designelementer, der er indbygget i hvert OS. Windows bruger WinAPI/GDI+, macOS bruger Cocoa, og Linux bruger sit eget sæt widgets. Biblioteket er allerede brugt i udvikling Volt — klient til Slack, Skype, Gmail, Twitter og Facebook;

    Planen er at skabe en Delphi-lignende grænsefladedesignapplikation, levere en deklarativ API, der ligner SwiftUI og React Native, og yde support til at skabe mobilapplikationer til iOS og Android;

    V programmeringssprog open source

  • Tilgængelighed af et indbygget web-framework, som bruges til at lave hjemmeside, forum og blog for projektudviklerne. Forkompilering af HTML-skabeloner understøttes uden at behandle dem på hver anmodning;
  • Krydskompileringsstøtte. For at bygge den eksekverbare fil til Windows skal du bare køre "v -os windows", og for Linux - "v -os linux" (understøttelse af krydskompilering til macOS forventes senere). Krydskompilering fungerer også til grafiske applikationer;
  • Indbygget afhængighedsmanager, pakkemanager og byggeværktøjer. For at bygge programmet skal du bare køre “v.” uden at bruge make eller eksterne hjælpeprogrammer. For at installere yderligere biblioteker skal du bare køre for eksempel "v get sqlite";
  • Tilgængelighed af plugins til udvikling i V-sproget i editorer VS-kode и vim.

design opfattes fællesskab med skepsis, da den offentliggjorte kode viste, at ikke alle deklarerede kapaciteter endnu er blevet implementeret, og der kræves en meget stor mængde arbejde for at implementere alle planer.
Derudover havde depotet i første omgang indsendt ødelagt kode, der har problemer med montering og udførelse. Det antages, at forfatteren endnu ikke er nået til det stadie, hvor de begynder at bemærke Paretos lov, hvorefter 20 % af indsatsen producerer 80 % af resultatet, og de resterende 80 % af indsatsen kun producerer 20 % af resultatet.

I mellemtiden har Project V's fejlsporer fået fjernet omkring 10 indlæg fra demonstration lavkvalitetskode angiver f.eks. brugen af ​​C-indsættelser og brugen i biblioteket af funktioner til at slette biblioteket for rm-kommandoen gennem kaldet os.system("rm -rf $path"). Forfatter til projektet sagdeat han kun slettede beskederne, udgivet trold (med ændringer, der bekræfter kritikkens gyldighed, forblevet в redigere historik).

Kilde: opennet.ru

Tilføj en kommentar