V programming language nga open source

Gihubad ngadto sa kategoriya sa open compiler alang sa pinulongan V. Ang V usa ka statically typed machine-compiled nga lengguwahe nga nagtutok sa paghimo sa kalamboan nga mas sayon ​​nga mamentinar ug paspas kaayo sa pag-compile. Compiler code, mga librarya ug may kalabutan nga mga himan ablihan ubos sa lisensya sa MIT.

Ang syntax ni V susama kaayo sa Go, nanghulam og pipila ka mga konstruksyon gikan sa Oberon, Rust, ug Swift. Ang pinulongan gipasimple kutob sa mahimo ug, sumala sa developer, ang 30 minutos nga pagtuon igo na aron makat-on sa mga sukaranan dokumentasyon. Sa parehas nga oras, ang lengguwahe nagpabilin nga kusgan ug magamit sa paghimo sa parehas nga mga buluhaton sama sa paggamit sa ubang mga lengguwahe sa programming (pananglitan, ang mga librarya magamit alang sa 2D / 3D nga mga graphic, paghimo mga GUI ug mga aplikasyon sa web).

Ang pagmugna sa usa ka bag-ong pinulongan giaghat sa tinguha nga makab-ot ang kombinasyon sa Go language nga kayano sa syntax, compilation speed, kasayon ​​sa parallelization sa mga operasyon, portability ug maintainability sa code uban sa performance sa C/C++, ang seguridad sa Rust ug ang henerasyon sa machine code sa Zig compilation stage. Gusto usab nako nga makakuha usa ka compact ug paspas nga compiler nga mahimo’g molihok nga wala’y mga eksternal nga dependency, tangtangon ang global nga sakup (global variable) ug hatagan ang katakus nga "mainit" nga i-reload ang code.

Kon itandi sa C++, ang bag-ong pinulongan mas simple, naghatag ug mas paspas nga compilation speed (hangtod sa 400 ka beses), nagpraktis sa luwas nga mga teknik sa pagprograma, walay problema sa dili matino nga kinaiya, ug naghatag ug built-in nga mga himan para sa pagparis sa mga operasyon. Kung itandi sa Python, ang V mas paspas, mas simple, mas luwas, ug mas mamentinar. Kon itandi sa Go, ang V walay global variables, walay nulls, ang tanang variable values ​​​​kinahanglan kanunay nga gihubit, ang tanan nga mga butang dili mausab pinaagi sa default, usa lamang ka matang sa assignment ang gisuportahan ("a : = 0"), usa ka mas compact. runtime ug ang gidak-on sa resulta nga executable files, ang presensya sa direktang portability gikan sa C, ang pagkawala sa garbage collector, mas paspas nga serialization, ang abilidad sa interpolate strings ("println('$foo: $bar.baz')").

fn main() {
mga lugar := ['dula', 'web', 'mga himan', 'siyensiya', 'sistema', 'GUI', 'mobile'] a := 10
kung tinuod {
sa: = 20
}
para sa lugar sa mga lugar {
println('Hello, $area developers!')
}
}

Mga Feature sa Proyekto:

  • Ang compact ug paspas nga compiler, nga kauban ang standard nga librarya adunay mga 400 KB. Ang taas nga tulin sa pag-compile nakab-ot pinaagi sa direkta nga henerasyon sa code sa makina ug modularity. Ang katulin sa pag-compile mao ang gibana-bana nga 1.2 milyon nga linya sa code matag segundo sa usa ka core sa CPU (namatikdan nga sa panahon sa operasyon V mahimong magamit ang C, unya ang katulin moubos sa 100 ka libo nga linya matag segundo). Ang self-assembly sa compiler, nga gisulat usab sa V nga lengguwahe (adunay usa usab ka reference nga bersyon sa Go), nagkinahanglan og gibana-bana nga 0.4 segundos. Sa katapusan sa tuig, ang pagtrabaho sa dugang nga mga pag-optimize gilauman nga mahuman, nga makapakunhod sa oras sa pagtukod sa compiler ngadto sa 0.15 segundos. Sa paghukom sa mga pagsulay nga gihimo sa developer, ang self-assembly sa Go nagkinahanglan og 512 MB nga disk space ug modagan sa usa ug tunga ka minuto, Rust nagkinahanglan og 30 GB ug 45 minutos, GCC - 8 GB ug 50 minutos, Clang - 90 GB ug 25 minutos,
    Swift - 70 GB ug 90 ka minuto;

  • Ang mga programa gihugpong ngadto sa mga executable nga mga file nga walay mga eksternal nga dependency. Ang executable file size sa usa ka simple nga http server human sa assembly kay 65 KB lang;
  • Ang pasundayag sa gihugpong nga mga aplikasyon anaa sa lebel sa mga asembliya sa mga programa sa C;
  • Ang abilidad nga hapsay nga makig-uban sa C code, nga wala’y dugang nga overhead. Ang mga gimbuhaton sa C nga pinulongan mahimong tawagan gikan sa code sa V nga pinulongan, ug vice versa, code sa V nga pinulongan mahimong tawagan sa bisan unsang pinulongan nga compatible sa C;
  • Suporta sa paghubad sa mga proyekto sa C/C++ ngadto sa representasyon sa pinulongang V. Usa ka parser gikan sa Clang ang gigamit alang sa paghubad. Dili tanan nga mga bahin sa C standard gisuportahan pa, apan ang kasamtangan nga mga kapabilidad sa tighubad igo na alang sa hubad sa pinulongan sa V game DOOM. Ang tighubad sa C++ anaa pa sa sayong yugto sa paglambo;
  • Gitukod-sa suporta sa serialization, nga wala gihigot sa runtime;
  • Pagminus sa mga operasyon sa alokasyon sa memorya;
  • Pagsiguro sa kaluwasan: walay NULL, global variables, undefined values ​​ug variable redefinition. Gitukod nga buffer overrun checking. Suporta alang sa mga generic nga gimbuhaton (Generic). Mga butang ug istruktura nga dili mausab pinaagi sa default;
  • Ang posibilidad sa "init" nga pag-reload sa code (nagpakita sa mga pagbag-o sa code sa langaw nga wala’y pag-recompilation);
  • Mga himan alang sa pagsiguro sa multithreading. Sama sa Go nga pinulongan, ang usa ka pagtukod sama sa "run foo()" gigamit sa pagsugod og bag-ong thread sa execution (susama sa "go foo()"). Sa umaabot, ang suporta alang sa goroutine ug usa ka thread scheduler giplano;
  • Suporta alang sa Windows, macOS, Linux, *BSD operating system. Giplanohan nga idugang ang suporta alang sa Android ug iOS sa katapusan sa tuig;
  • Pagdumala sa memorya sa oras sa pag-compile (sama sa Rust), nga wala mogamit usa ka tigkolekta sa basura;
  • Anaa sa usa ka multi-platform toolkit alang sa graphics output, gamit ang GDI+/Cocoa ug OpenGL alang sa rendering (suporta alang sa DirectX, Vulkan ug Metal API giplano). Adunay mga himan alang sa pagtrabaho sa 3D nga mga butang, skeletal animation ug pagkontrol sa camera;
  • Ang pagkaanaa sa usa ka librarya alang sa pagmugna og mga graphical nga mga interface nga adunay mga elemento sa disenyo nga lumad sa matag OS. Gigamit sa Windows ang WinAPI/GDI+, gigamit sa macOS ang Cocoa, ug gigamit sa Linux ang kaugalingon nga set sa mga widget. Ang librarya gigamit na sa kalamboan volt - kliyente alang sa Slack, Skype, Gmail, Twitter ug Facebook;

    Ang plano mao ang paghimo og Delphi-like interface design application, paghatag og declarative API nga susama sa SwiftUI ug React Native, ug paghatag og suporta sa pagmugna og mobile applications para sa iOS ug Android;

    V programming language nga open source

  • Ang pagkaanaa sa usa ka built-in nga web framework, nga gigamit sa paghimo sa usa ka website, forum ug blog alang sa mga developer sa proyekto. Ang precompilation sa HTML templates gisuportahan, nga walay pagproseso niini sa matag hangyo;
  • Suporta sa cross compilation. Aron matukod ang executable file para sa Windows, pagdagan lang ang "v -os windows", ug para sa Linux - "v -os linux" (gipaabot sa ulahi ang suporta sa cross-compilation alang sa macOS). Ang cross-compilation nagtrabaho usab alang sa mga graphical nga aplikasyon;
  • Gitukod-sa dependency manager, package manager ug mga himan sa pagtukod. Aron matukod ang programa, pagdagan lang ang "v.", nga wala gigamit ang paghimo o gawas nga mga gamit. Aron ma-install ang dugang nga mga librarya, pagdagan lang, pananglitan, "v get sqlite";
  • Ang pagkaanaa sa mga plugins alang sa pagpalambo sa V nga pinulongan sa mga editor VS Code ΠΈ Vim.

Pagpalambo nasabtan komunidad nga adunay pagduhaduha, tungod kay ang gipatik nga code nagpakita nga dili tanan nga gipahayag nga mga kapabilidad napatuman pa ug usa ka dako kaayo nga kantidad sa trabaho ang gikinahanglan aron mapatuman ang tanan nga mga plano.
Dugang pa, sa sinugdanan ang repository adunay gi-post guba nga code nga adunay mga problema sa asembliya ug pagpatay. Gituohan nga ang tagsulat wala pa makaabot sa yugto diin sila nagsugod sa pagmatikod Ang balaod ni Pareto, sumala sa diin ang 20% ​​sa paningkamot nagpatunghag 80% sa resulta, ug ang nahabilin nga 80% sa paningkamot nagpatungha lamang sa 20% sa resulta.

Samtang, ang bug tracker sa Project V adunay mga 10 ka post nga gitangtang demonstrasyon ubos nga kalidad nga code, pananglitan, nagpakita sa paggamit sa C-inserts ug sa paggamit sa librarya sa mga gimbuhaton alang sa pagtangtang sa direktoryo sa rm sugo pinaagi sa tawag os.system("rm -rf $path"). Awtor sa proyekto gipahayagnga gi-delete ra niya ang mga mensahe, gimantala troll (uban ang mga pagbag-o nga nagpamatuod sa kabalido sa pagsaway, nagpabilin Π² usba ang kasaysayan).

Source: opennet.ru

Idugang sa usa ka comment