V programmeringsspråk öppen källkod

Översatt i kategorin öppen kompilator för språk V. V är ett statiskt maskinskrivet språk som fokuserar på att göra utvecklingen lättare att underhålla och mycket snabb att kompilera. Kompilatorkod, bibliotek och relaterade verktyg är öppen under MIT-licensen.

V:s syntax är mycket lik Go, och lånar några konstruktioner från Oberon, Rust och Swift. Språket förenklas så mycket som möjligt och enligt utvecklaren räcker 30 minuters studier för att lära sig grunderna dokumentation. Samtidigt förblir språket ganska kraftfullt och kan användas för att utföra samma uppgifter som när man använder andra programmeringsspråk (till exempel finns bibliotek tillgängliga för 2D/3D-grafik, skapa GUI och webbapplikationer).

Skapandet av ett nytt språk föranleddes av önskan att uppnå en kombination av Go-språkets enkelhet i syntax, kompileringshastighet, enkel parallellisering av operationer, portabilitet och underhållbarhet av kod med prestanda av C/C++, säkerheten hos Rust och generering av maskinkod vid Zig-kompileringsstadiet. Jag ville också skaffa en kompakt och snabb kompilator som kunde fungera utan externa beroenden, bli av med det globala scopet (globala variabler) och ge möjligheten att "hot" ladda om koden.

Jämfört med C++ är det nya språket betydligt enklare, ger snabbare kompileringshastighet (upp till 400 gånger), utövar säkra programmeringstekniker, är fritt från problem med odefinierat beteende och tillhandahåller inbyggda verktyg för parallellisering av operationer. Jämfört med Python är V snabbare, enklare, säkrare och mer underhållsvänlig. Jämfört med Go har V inga globala variabler, inga nollor, alla variabelvärden måste alltid definieras, alla objekt är oföränderliga som standard, endast en typ av tilldelning stöds ("a := 0"), en betydligt mer kompakt körtid och storleken på de resulterande körbara filerna, närvaron av direkt portabilitet från C, frånvaron av en sophämtare, snabbare serialisering, möjligheten att interpolera strängar ("println('$foo: $bar.baz')").

fn main() {
områden := ['spel', 'webb', 'verktyg', 'vetenskap', 'system', 'GUI', 'mobil'] a := 10
om sant {
till := 20
}
för område i områden {
println('Hej, $area-utvecklare!')
}
}

Projektegenskaper:

  • Kompakt och snabb kompilator, som tillsammans med standardbiblioteket tar upp cirka 400 KB. Hög kompileringshastighet uppnås genom direkt generering av maskinkod och modularitet. Kompileringshastigheten är cirka 1.2 miljoner rader kod per sekund på en CPU-kärna (det noteras att under drift kan V använda C, då sjunker hastigheten till 100 tusen rader per sekund). Självmontering av kompilatorn, som också är skriven på V-språket (det finns även en referensversion i Go), tar cirka 0.4 sekunder. I slutet av året förväntas arbetet med ytterligare optimeringar vara klart, vilket kommer att minska kompilatorns byggtid till 0.15 sekunder. Att döma av testerna som utförts av utvecklaren kräver självmontering av Go 512 MB diskutrymme och går på en och en halv minut, Rust kräver 30 GB och 45 minuter, GCC - 8 GB och 50 minuter, Clang - 90 GB och 25 minuter,
    Swift - 70 GB och 90 minuter;

  • Program kompileras till körbara filer utan externa beroenden. Den körbara filstorleken för en enkel http-server efter montering är endast 65 KB;
  • Prestandan för kompilerade applikationer är på nivån för sammansättningar av C-program;
  • Möjligheten att sömlöst interagera med C-kod, utan extra omkostnader. Funktioner i C-språket kan anropas från kod i V-språket, och vice versa, kod i V-språket kan anropas på vilket språk som helst som är kompatibelt med C;
  • Stöd för att översätta C/C++-projekt till en representation på språket V. En parser från Clang används för översättning. Inte alla funktioner i C-standarden stöds ännu, men översättarens nuvarande kapacitet är redan tillräcklig för översättning på språket för V-spelet DOOM. C++-översättaren är fortfarande på ett tidigt stadium av utvecklingen;
  • Inbyggt stöd för serialisering, utan att vara bunden till körtid;
  • Minimera minnesallokeringsoperationer;
  • Säkerställande av säkerhet: ingen NULL, globala variabler, odefinierade värden och variabel omdefiniering. Kontroll av inbyggd buffertöverskridning. Stöd för generiska funktioner (Generisk). Objekt och strukturer som inte kan ändras som standard;
  • Möjlighet till "het" kod omladdning (som återspeglar ändringar i kod i farten utan omkompilering);
  • Verktyg för att säkerställa multithreading. Precis som i Go-språket används en konstruktion som "run foo()" för att starta en ny exekveringstråd (liknande "go foo()"). I framtiden planeras stöd för goroutiner och en trådschemaläggare;
  • Stöd för Windows, macOS, Linux, *BSD operativsystem. Det är planerat att lägga till stöd för Android och iOS i slutet av året;
  • Minneshantering vid kompilering (som i Rust), utan att använda en sophämtare;
  • Tillgänglighet för en multiplattformsverktygssats för grafikutdata, som använder GDI+/Cocoa och OpenGL för rendering (stöd för DirectX, Vulkan och Metal API är planerat). Det finns verktyg för att arbeta med 3D-objekt, skelettanimering och kamerakontroll;
  • Tillgänglighet av ett bibliotek för att generera grafiska gränssnitt med designelement som är inbyggda i varje OS. Windows använder WinAPI/GDI+, macOS använder Cocoa och Linux använder sin egen uppsättning widgets. Biblioteket används redan i utvecklingen Volt — klient för Slack, Skype, Gmail, Twitter och Facebook;

    Planen är att skapa en Delphi-liknande gränssnittsdesignapplikation, tillhandahålla ett deklarativt API som liknar SwiftUI och React Native, och ge stöd för att skapa mobilapplikationer för iOS och Android;

    V programmeringsspråk öppen källkod

  • Tillgång till ett inbyggt webbramverk, som används för att skapa en hemsida, forum och blogg för projektutvecklarna. Förkompilering av HTML-mallar stöds, utan att bearbeta dem på varje begäran;
  • Stöd för korskompilering. För att bygga den körbara filen för Windows, kör bara "v -os windows" och för Linux - "v -os linux" (korskompileringsstöd för macOS förväntas senare). Korskompilering fungerar även för grafiska applikationer;
  • Inbyggd beroendehanterare, pakethanterare och byggverktyg. För att bygga programmet, kör bara “v.”, utan att använda make eller externa verktyg. För att installera ytterligare bibliotek, kör bara till exempel “v get sqlite”;
  • Tillgänglighet av plugins för utveckling i V-språket i redaktörer VS-kod и vim.

utformning uppfattas gemenskap med skepsis, eftersom den publicerade koden visade att inte alla deklarerade funktionerna ännu har implementerats och det krävs mycket arbete för att implementera alla planer.
Dessutom hade inledningsvis förvaret Postad trasig kod som har problem med montering och exekvering. Det antas att författaren ännu inte har nått det stadium då de börjar märka Paretos lag, enligt vilken 20 % av ansträngningen ger 80 % av resultatet, och de återstående 80 % av ansträngningen ger endast 20 % av resultatet.

Under tiden har Project V:s felspårare tagit bort cirka 10 inlägg från demonstration kod av låg kvalitet indikerar till exempel användningen av C-inlägg och användningen av funktioner i biblioteket för att radera katalogen för kommandot rm genom anropet os.system("rm -rf $path"). Författare till projektet sadeatt han bara raderade meddelandena, publicerad troll (med ändringar som bekräftar kritikens giltighet, återstod в redigera historik).

Källa: opennet.ru

Lägg en kommentar