V basa pemrograman open source

Diterjemahake menyang kategori kompiler mbukak kanggo basa V. V iku basa mesin-disusun statis diketik sing fokus ing nggawe pembangunan luwih gampang kanggo njaga lan cepet banget kanggo ngumpulake. Kode kompiler, perpustakaan lan alat sing gegandhengan mbukak miturut lisensi MIT.

Sintaks V mirip banget karo Go, nyilih sawetara konstruksi saka Oberon, Rust, lan Swift. Basa kasebut disederhanakake sabisane lan, miturut pangembang, 30 menit sinau cukup kanggo sinau dhasar. dokumentasi. Ing wektu sing padha, basa kasebut tetep cukup kuat lan bisa digunakake kanggo nindakake tugas sing padha nalika nggunakake basa pamrograman liyane (contone, perpustakaan kasedhiya kanggo grafis 2D/3D, nggawe GUI lan aplikasi web).

Penciptaan basa anyar dijaluk dening kepinginan kanggo entuk kombinasi sintaksis basa Go, kacepetan kompilasi, gampang paralelisasi operasi, portabilitas lan maintainability kode kanthi kinerja C/C++, keamanan Rust lan generasi kode mesin ing tataran kompilasi Zig. Aku uga pengin njaluk compiler kompak lan cepet sing bisa tanpa dependensi external, nyisihaken saka orane katrangan global (variabel global) lan nyedhiyani kemampuan kanggo "panas" reload kode.

Dibandhingake karo C ++, basa anyar luwih prasaja, nyedhiyakake kacepetan kompilasi luwih cepet (nganti 400 kaping), praktik teknik pemrograman sing aman, ora ana masalah karo prilaku sing ora ditemtokake, lan nyedhiyakake alat sing dibangun kanggo parallelizing operasi. Dibandhingake Python, V luwih cepet, prasaja, luwih aman, lan luwih maintainable. Dibandhingake Go, V ora duwe variabel global, ora nol, kabeh nilai variabel kudu ditetepake, kabeh obyek ora bisa diganti kanthi standar, mung siji jinis tugas sing didhukung ("a: = 0"), sing luwih kompak. runtime lan ukuran file eksekusi asil, ananΓ© portabilitas langsung saka C, ora ana kolektor uwuh, serialization luwih cepet, kemampuan kanggo interpolate strings ("println ($ foo: $ bar.baz ')").

fn utama() {
area := ['game', 'web', 'tools', 'science', 'systems', 'GUI', 'mobile'] a := 10
yen bener {
kanggo: = 20
}
kanggo wilayah ing wilayah {
println('Halo, $pengembang area!')
}
}

Fitur Proyek:

  • Compiler kompak lan cepet, kang bebarengan karo perpustakaan standar njupuk nganti 400 KB. Kacepetan kompilasi dhuwur digayuh liwat generasi langsung kode mesin lan modularitas. Kacepetan kompilasi kira-kira 1.2 yuta baris kode per detik ing siji inti CPU (nyathet yen sajrone operasi V bisa nggunakake C, banjur kacepetan mudhun nganti 100 ewu garis per detik). Self-assembly saka compiler, kang uga ditulis ing basa V (ana uga versi referensi ing Go), njupuk kira-kira 0.4 detik. Ing pungkasan taun, nggarap optimasi tambahan samesthine bakal rampung, sing bakal nyuda wektu mbangun kompiler dadi 0.15 detik. Miturut tes sing ditindakake dening pangembang, ngrakit dhewe Go mbutuhake ruang disk 512 MB lan mlaku sajrone setengah menit, Rust mbutuhake 30 GB lan 45 menit, GCC - 8 GB lan 50 menit, Clang - 90 GB lan 25 menit,
    Swift - 70 GB lan 90 menit;

  • Program dikompilasi dadi file sing bisa dieksekusi tanpa dependensi eksternal. Ukuran file eksekusi saka server http prasaja sawise perakitan mung 65 KB;
  • Kinerja aplikasi sing dikompilasi ana ing tingkat rakitan program C;
  • Kemampuan kanggo seamlessly sesambungan karo kode C, tanpa overhead tambahan. Fungsi ing basa C bisa diarani saka kode ing basa V, lan kosok balene, kode ing basa V bisa disebut ing sembarang basa kompatibel karo C;
  • Dhukungan kanggo nerjemahake proyek C / C ++ menyang perwakilan ing basa V. Parser saka Clang digunakake kanggo terjemahan. Ora kabeh fitur standar C didhukung, nanging kemampuan penerjemah saiki wis cukup jarwan ing basa V game DOOM. Penerjemah C ++ isih ing tahap awal pembangunan;
  • Dhukungan serialisasi sing dibangun, tanpa diikat karo runtime;
  • Nyilikake operasi alokasi memori;
  • Njamin keamanan: ora ana NULL, variabel global, nilai sing ora ditemtokake lan definisi ulang variabel. Dibangun ing buffer overrun mriksa. Dhukungan kanggo fungsi umum (Generik). Obyek lan struktur sing ora bisa diganti kanthi standar;
  • Kemungkinan reloading kode "panas" (nggambarake owah-owahan kode ing fly tanpa recompilation);
  • Piranti kanggo njamin multithreading. Kaya ing basa Go, konstruksi kaya "run foo ()" digunakake kanggo miwiti thread eksekusi anyar (padha karo "go foo ()"). Ing mangsa ngarep, dhukungan kanggo goroutine lan penjadwal thread direncanakake;
  • Dhukungan kanggo sistem operasi Windows, macOS, Linux, *BSD. Direncanakake nambah dhukungan kanggo Android lan iOS ing pungkasan taun;
  • Manajemen memori ing wektu kompilasi (kaya ing Rust), tanpa nggunakake kolektor sampah;
  • Kasedhiyan toolkit multi-platform kanggo output grafis, nggunakake GDI +/Cocoa lan OpenGL kanggo rendering (dhukungan kanggo DirectX, Vulkan lan Metal API wis ngrancang). Ana alat kanggo nggarap obyek 3D, animasi balung lan kontrol kamera;
  • Kasedhiyan perpustakaan kanggo ngasilake antarmuka grafis kanthi unsur desain asli saben OS. Windows nggunakake WinAPI/GDI+, macOS nggunakake Cocoa, lan Linux nggunakake set widget dhewe. Perpustakaan wis digunakake ing pembangunan Volt - klien kanggo Slack, Skype, Gmail, Twitter lan Facebook;

    Rencana kasebut yaiku nggawe aplikasi desain antarmuka kaya Delphi, nyedhiyakake API deklaratif sing padha karo SwiftUI lan React Native, lan menehi dhukungan kanggo nggawe aplikasi seluler kanggo iOS lan Android;

    V basa pemrograman open source

  • Kasedhiyan kerangka web sing dibangun, sing digunakake kanggo nggawe situs web, forum lan blog kanggo pangembang proyek. Prekompilasi cithakan HTML didhukung, tanpa diproses kanggo saben panyuwunan;
  • Dhukungan kompilasi silang. Kanggo mbangun file eksekusi kanggo Windows, mung mbukak "v -os windows", lan kanggo Linux - "v -os linux" (dhukungan cross-compilation kanggo macOS samesthine mengko). Kompilasi silang uga bisa digunakake kanggo aplikasi grafis;
  • Pangatur dependensi sing dibangun, manajer paket lan alat mbangun. Kanggo mbangun program, mung mbukak "v.", tanpa nggunakake make utawa keperluan eksternal. Kanggo nginstal perpustakaan tambahan, mung mbukak, contone, "v njaluk sqlite";
  • Kasedhiyan plugin kanggo pangembangan ing basa V ing editors Kode VS ΠΈ Vim.

Pangembangan saka dirasakake masyarakat karo skeptisisme, wiwit kode sing diterbitake nuduhake yen ora kabeh kapabilitas sing diumumake durung dileksanakake lan akeh karya sing dibutuhake kanggo ngleksanakake kabeh rencana.
Kajaba iku, wiwitane repositori wis dikirim kode rusak sing duwe masalah karo DΓ©wan lan eksekusi. Dipunanggep bilih panganggit dereng dumugi ing tataran ingkang wiwit dipunmangertosi hukum Pareto, miturut sing 20% ​​gaweyan mrodhuksi 80% saka asil, lan 80% isih gaweyan mung 20% ​​saka asil.

Kangge, bug tracker Project V wis udakara 10 kiriman sing dicopot demonstrasi kode kualitas kurang, contone,, nuduhake nggunakake C-sisipan lan nggunakake ing perpustakaan fungsi kanggo mbusak direktori printah rm liwat telpon os.system ("rm -rf $ path"). Pengarang proyek ngumumakedheweke mung mbusak pesen, diterbitake troll (karo owah-owahan sing ngonfirmasi validitas kritik, nginep Π² nyunting riwayat).

Source: opennet.ru

Add a comment