Selepas 40 hari pembangunan, versi baharu bahasa pengaturcaraan bertaip statik V (vlang) telah diterbitkan. Matlamat utama dalam mencipta V ialah kemudahan pembelajaran dan penggunaan, kebolehbacaan tinggi, penyusunan pantas, keselamatan yang dipertingkatkan, pembangunan yang cekap, penggunaan merentas platform, kesalingoperasian yang lebih baik dengan bahasa C, pengendalian ralat yang lebih baik, keupayaan moden dan program yang lebih boleh diselenggara. Kod pengkompil, perpustakaan dan alatan berkaitan adalah sumber terbuka di bawah lesen MIT.
Dalam versi baharu:
- Penambahbaikan bahasa:
- Modul baharu “encoding.xml dengan parser, pengesahan, ujian unit.
- Sokongan yang lebih baik untuk couroutine (IO, rangkaian).
- Kurangkan operasi peruntukan memori dalam aplikasi vweb sebanyak 80%.
- Pelaksanaan "@VCURRENTHASH" untuk menggantikan "C.V_CURRENT_COMMIT_HASH".
- Promosi jenis int baharu telah bermula, dikaitkan dengan jenis i64 (sebelum ini, jenis int dikenal pasti dengan jenis i32).
- Peraturan semakan jenis tetap untuk jenis int baharu dan penjanaan kod yang dioptimumkan.
- Perubahan API yang memecahkan keserasian:
- Kamus "Request.cookies" telah ditamatkan. Digantikan dengan “Request.cookie()” dan “Request.add_cookie()”.
- Peraturan yang lebih ketat untuk jenis C, yang kini mesti sentiasa diisytiharkan.
- Jenis menyemak perubahan sistem:
- Amaran tentang pemisahan pilihan/hasil telah dialihkan ke kategori ralat.
- Betulkan panggilan "fn" dengan hujah pilihan dalam mod autobebas.
- Semakan penamaan kembali: kes pascal untuk alias.
- C.xx = C.yy alias.
- Benarkan penghantaran jenis integer sebagai julat dalam blok matematik.
- Amaran tentang penamatan jenis bait (memihak kepada jenis u8) apabila digunakan sebagai parameter fn.
- Betulkan kaedah tambah untuk tatasusunan generik.
- Menyemak ralat dalam pelaksanaan antara muka peribadi modul lain.
- Pemeriksaan tetap untuk nilai topi dan len negatif apabila memulakan tatasusunan.
- Mengubah amaran tentang pendua nama modul var dan param menjadi ralat.
- Benarkan penugasan semula keseluruhan pembolehubah yang dikongsi (sambil mengekalkan keadaan mutex sebelumnya).
- Penambahbaikan parser:
- Memperbaiki pemberian kaedah statik kepada fungsi tanpa nama.
- ast: Memformat tetap perisytiharan struct dengan struktur bersarang.
- Menambah kaedah set_all + clear_all pada medan bit "[bendera]".
- Beri amaran tentang import yang tidak digunakan, walaupun ia diisytiharkan dengan "import matematik { sin, cos }".
- Perubahan pengkompil:
- pemeriksa, pembina, pref: menyokong bendera "-dump-defines" untuk melihat semua definisi pengguna dan sistem yang tersedia untuk program tertentu.
- maps: menambahkan fungsi maps.merge() dan maps.merge_in_place().
- Perpustakaan Standard:
- builtin: menambahkan kaedah "unsafe { a.reset() }" untuk menetapkan semua bait dengan cepat dalam tatasusunan kepada 0.
- math.fractions: Gunakan operator lebih muatan dan tinggalkan fungsi lama.
- gg: Betulkan penjajaran sempadan bawah draw_rounded_rect_empty pada macos dan linux.
- crypto.bcrypt: pepijat tetap dalam bcrypt.
- sokol: dikemas kini kepada versi terkini
- terbina: saiz tetap(C.BOOL) (khusus tetingkap).
- math.big: Betulkan pembahagian yang salah dengan nombor negatif.
- os: Menambah cara mudah untuk mengabaikan beberapa isyarat sistem.
- os: betulkan os.ls(folder) dalam tingkap apabila direktori yang dilindungi tidak boleh dibuka.
- crypto.sha/md5/: Pengiraan tetap bagi nilai cincang yang sama apabila memanggil .sum() beberapa kali untuk sha1/256/512.
- os: dilaksanakan os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
- json2: menambah sokongan untuk struktur bersarang.
- web
- vweb: menambahkan jenis mime untuk fail .md statik.
- net.conv: Menambah fungsi varinttou64 dan u64tovarint untuk pengekodan pembolehubah bagi integer tidak bertanda yang diterangkan dalam rfc-9000 (untuk QUIC).
- net.http: sokongan yang menentukan fungsi panggil balik on_running, on_stopped, on_closed dalam http.Server{}, serta show_startup_message: false.
- net.http: Sokongan laluan terus proksi HTTPpelayan dalam http.fetch.
- net.http: Tambahkan mekanisme cuba semula pada http.fetch() untuk ralat soket yang tidak dapat dielakkan.
- wasm: pemasangan sebaris dilaksanakan.
- net.http: nilai max_redirects meningkat kepada 16.
- picoev: pelaksanaan mod mentah untuk kerja langsung dengan deskriptor fail.
- net.http: menambah sokongan untuk socks5 dan proksi http(s) untuk sistem seperti unix.
- ORM:
- orm: menambah pengendalian nilai nol dan medan pilihan.
- orm: Operasi is_null/is_not_null dibuat unary.
- Pemacu Pangkalan Data:
- ms: Panggilan C telah dialihkan ke fail .cv.
- Bahagian belakang asli:
- asli: sokongan -no-builtin flag (hasilkan < 1KB Linux boleh laku dengan "v -no-builtin -b native examples/hello_world.v").
- asli: gunakan i32 dan bukannya int.
- C-backend:
- ast, asli, cgen: menambah sokongan untuk "$if native {}".
- vfmt:
- Sekarang mengalih keluar pemisah baris tambahan selepas call_expr dan sebelum argumen struktur.
- Penjajaran nilai tetap apabila menggunakan kekunci dengan aksara uft8.
- Penjajaran ungkapan ternary dalam blok const.
- Alatan:
- Menambahkan sokongan @LOCATION untuk memudahkan penyahpepijatan tanpa perlu menggabungkan @FILE dan @LINE pada masa jalan.
- penanda aras: menambahkan kaedah baharu b.record_measure/1 dan b.all_recorded_measures/0.
- ci: aliran kerja github c2v dikemas kini.
- rentetan: menambah kaedah Bulder.write_decimal/1 (untuk menulis nombor perpuluhan, tanpa peruntukan tambahan).
- Pemasangan modul sedia ada menggunakan vpm (windows) telah ditetapkan.
- tools.vpm: kerja yang dipertingkatkan dengan alamat yang berakhir dengan ".git".
- Keperluan tambahan untuk fail v.mod untuk memasang modul melalui pautan luaran menggunakan vpm.
Sumber: opennet.ru
