40 günlük geliştirme sürecinin ardından, statik olarak yazılan programlama dili V'nin (vlang) yeni bir sürümü yayınlandı. V'nin yaratılmasındaki ana hedefler, öğrenme ve kullanım kolaylığı, yüksek okunabilirlik, hızlı derleme, artırılmış güvenlik, verimli geliştirme, çapraz platform kullanımı, C dili ile geliştirilmiş birlikte çalışabilirlik, daha iyi hata işleme, modern yetenekler ve daha bakımı kolay programlardı. Derleyici kodu, kütüphaneler ve ilgili araçlar MIT lisansı altında açık kaynaklıdır.
Yeni sürümde:
- Dil iyileştirmeleri:
- Ayrıştırıcı, doğrulama ve birim testleri içeren yeni “encoding.xml modülü”.
- Günlük rutinler (IO, ağ) için geliştirilmiş destek.
- Vweb uygulamalarında bellek ayırma işlemlerini %80 oranında azaltın.
- "C.V_CURRENT_COMMIT_HASH" yerine "@VCURRENTHASH" uygulaması.
- i64 türüyle ilişkilendirilen yeni bir int türünün tanıtımına başlandı (daha önce int türü i32 türüyle tanımlanıyordu).
- Yeni int türü ve optimize edilmiş kod üretimi için sabit tür kontrol kuralları.
- Uyumluluğu bozan API değişiklikleri:
- "Request.cookies" sözlüğü kullanımdan kaldırıldı. “Request.cookie()” ve “Request.add_cookie()” ile değiştirildi.
- C türleri için artık her zaman bildirilmesi gereken daha katı kurallar.
- Tip kontrol sistemi değişiklikleri:
- Seçenek/sonuç ayrımına ilişkin uyarı bir hata kategorisine taşındı.
- Otomatik serbest modda isteğe bağlı bir argümanla "fn" çağrısını düzeltin.
- Adlandırma kontrolü geri döndü: takma adlar için pascal durumu.
- C.xx = C.yy takma adları.
- Tamsayı türlerinin matematik bloklarında aralık olarak kullanılmasına izin verin.
- Fn parametresi olarak kullanıldığında bayt türünün (u8 türü lehine) kullanımdan kaldırılmasına ilişkin uyarı.
- Genel diziler için ekleme yöntemini düzeltin.
- Başka bir modülün özel arayüzünün uygulanmasında hata kontrolü yapılıyor.
- Bir diziyi başlatırken negatif sınır ve uzunluk değerlerinin kontrol edilmesi düzeltildi.
- Yinelenen var ve param modül adlarıyla ilgili uyarının hataya dönüştürülmesi.
- Paylaşılan değişkenin tamamının yeniden atanmasına izin verin (muteksin önceki durumu korunurken).
- Ayrıştırıcı iyileştirmeleri:
- Anonim işlevlere statik bir yöntem atanması düzeltildi.
- ast: Yapı bildiriminin iç içe yapıya sahip biçimlendirilmesi düzeltildi.
- "[flag]" bit alanlarına set_all + clear_all yöntemleri eklendi.
- "Import math { sin, cos }" ile bildirilseler bile, kullanılmayan içe aktarmalar hakkında uyarıda bulunun.
- Derleyici değişiklikleri:
- denetleyici, oluşturucu, tercih: belirli bir program için mevcut tüm kullanıcı ve sistem tanımlarını görüntülemek için "-dump-defines" bayrağını destekler.
- haritalar: haritalar.merge() ve haritalar.merge_in_place() işlevleri eklendi.
- Standart Kütüphane:
- yerleşik: bir dizideki tüm baytları hızlı bir şekilde 0'a ayarlamak için "güvensiz { a.reset() }" yöntemi eklendi.
- math.fractions: Operatör aşırı yüklemesini kullanın ve eski işlevleri terk edin.
- gg: MacOS ve Linux'ta Draw_rounded_rect_empty alt kenar hizalamasını düzeltin.
- crypto.bcrypt: bcrypt'teki hata düzeltildi.
- sokol: en son sürüme güncellendi
- yerleşik: sabit sizeof(C.BOOL) (pencerelere özel).
- math.big: Negatif sayılarla yanlış bölmeyi düzeltin.
- os: Bazı sistem sinyallerini yok saymanın kullanışlı bir yolu eklendi.
- os: Korunan dizin açılamadığında pencerelerdeki os.ls(klasör) sorununu düzeltin.
- crypto.sha/md5/: sha1/256/512 için .sum() işlevini birden çok kez çağırırken aynı karma değerlerinin hesaplanması düzeltildi.
- işletim sistemi: os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1 uygulandı.
- json2: iç içe yapılar için destek eklendi.
- Web
- vweb: statik .md dosyaları için mime türleri eklendi.
- net.conv: rfc-64'de (QUIC için) açıklanan işaretsiz tam sayıların değişken kodlaması için varinttou64 ve u9000tovarint işlevleri eklendi.
- net.http: http.Server{}'da on_running, on_stopped, on_closed geri çağırma işlevlerinin yanı sıra show_startup_message: false belirtilmesini destekler.
- net.http: HTTP proxy geçiş desteğisunucu http.fetch içinde.
- net.http: Kaçınılmaz soket hataları için http.fetch()'e bir yeniden deneme mekanizması ekleyin.
- wasm: satır içi derleme uygulandı.
- net.http: max_redirects değeri 16'ya yükseltildi.
- picoev: dosya tanımlayıcılarla doğrudan çalışma için ham modun uygulanması.
- net.http: unix benzeri sistemler için çorap5 ve http(s) proxy'leri için destek eklendi.
- ORM:
- orm: boş değerlerin ve isteğe bağlı alanların işlenmesi eklendi.
- orm: is_null/is_not_null işlemleri tekli yapılır.
- Veritabanı Sürücüleri:
- pg: C çağrıları .cv dosyalarına taşındı.
- Yerel arka uç:
- native: -no-builtin bayrağı desteği (1 KB'den küçük yürütülebilir dosyalar oluşturma) Linux "v -no-builtin -b native examples/hello_world.v" kullanılıyor.
- yerel: int yerine i32 kullanın.
- C-arka uç:
- ast, native, cgen: "$if native {}" için destek eklendi.
- vfmt:
- Artık çağrı_ifadesinden sonraki ve yapı bağımsız değişkenlerinden önceki ek satır sonlarını kaldırıyor.
- Uft8 karakterli tuşlar kullanıldığında değer hizalaması düzeltildi.
- Const bloklarındaki üçlü ifadelerin hizalanması.
- Enstrümantal:
- Çalışma zamanında @FILE ve @LINE'ı birleştirmeye gerek kalmadan hata ayıklamayı kolaylaştırmak için @LOCATION desteği eklendi.
- kıyaslama: yeni yöntemler eklendi b.record_measure/1 ve b.all_recorded_measures/0.
- ci: github iş akışı c2v güncellendi.
- dizeler: Bulder.write_decimal/1 yöntemi eklendi (ek ayırmalar olmadan ondalık sayı yazmak için).
- Mevcut bir modülün vpm (windows) kullanılarak kurulumu düzeltildi.
- Tools.vpm: ".git" ile biten adreslerle çalışma iyileştirildi.
- Modülleri vpm kullanarak harici bağlantılar aracılığıyla yüklemek için bir v.mod dosyası gereksinimi eklendi.
Kaynak: opennet.ru
