Nakon 40 dana razvoja, objavljena je nova verzija statički tipiziranog programskog jezika V (vlang). Glavni ciljevi pri stvaranju V-a bili su jednostavnost učenja i korištenja, visoka čitljivost, brza kompilacija, poboljšana sigurnost, učinkovit razvoj, korištenje na više platformi, poboljšana interoperabilnost s jezikom C, bolje rukovanje pogreškama, moderne mogućnosti i programi koji se lakše održavaju. Kod prevoditelja, biblioteke i srodni alati otvoreni su izvorni pod licencom MIT-a.
U novoj verziji:
- Poboljšanja jezika:
- Novi modul “encoding.xml s parserom, provjerom valjanosti, jediničnim testovima.
- Poboljšana podrška za programske rutine (IO, mreža).
- Smanjite operacije dodjele memorije u vweb aplikacijama za 80%.
- Implementacija "@VCURRENTHASH" za zamjenu "C.V_CURRENT_COMMIT_HASH".
- Započela je promocija novog tipa int, povezanog s tipom i64 (prethodno se tip int identificirao s tipom i32).
- Ispravljena pravila provjere tipa za novi int tip i optimizirano generiranje koda.
- Promjene API-ja koje prekidaju kompatibilnost:
- Rječnik "Request.cookies" je zastario. Zamijenjeno s “Request.cookie()” i “Request.add_cookie()”.
- Stroža pravila za C tipove, koji sada uvijek moraju biti deklarirani.
- Promjene u sustavu provjere tipa:
- Upozorenje o podjeli opcije/rezultata premješteno je u kategoriju pogreške.
- Popravite pozivanje "fn" s izbornim argumentom u automatskom načinu rada.
- Provjera naziva se vratila: velika i mala slova za aliase.
- C.xx = C.yy aliasi.
- Omogućuje pretvaranje tipova cijelih brojeva kao raspona u matematičke blokove.
- Upozorenje o odbacivanju tipa byte (u korist tipa u8) kada se koristi kao parametar fn.
- Popravite metodu dodavanja za generičke nizove.
- Provjera greške u implementaciji privatnog sučelja drugog modula.
- Ispravljena provjera negativnih vrijednosti cap i len prilikom pokretanja niza.
- Pretvaranje upozorenja o duplim nazivima modula var i param u pogrešku.
- Dopusti ponovnu dodjelu cijele zajedničke varijable (uz zadržavanje prethodnog stanja muteksa).
- Poboljšanja parsera:
- Popravljeno dodjeljivanje statičke metode anonimnim funkcijama.
- ast: Fiksno oblikovanje deklaracije strukture s ugniježđenom strukturom.
- Dodane metode set_all + clear_all bitnim poljima "[flag]".
- Upozorenje o neiskorištenim uvozima, čak i ako su deklarirani s "import math { sin, cos }".
- Promjene prevoditelja:
- checker, builder, pref: podržava oznaku "-dump-defines" za pregled svih dostupnih definicija korisnika i sustava za određeni program.
- karte: dodane funkcije maps.merge() i maps.merge_in_place().
- Standardna biblioteka:
- ugrađeno: dodana metoda "unsafe { a.reset() }" za brzo postavljanje svih bajtova u nizu na 0.
- math.fractions: Koristite preopterećenje operatora i napustite stare funkcije.
- gg: Popravite poravnanje donjeg ruba draw_rounded_rect_empty na macosima i linuxu.
- crypto.bcrypt: ispravljena greška u bcryptu.
- sokol: ažuriran na najnoviju verziju
- ugrađeno: fiksna veličina(C.BOOL) (specifično za Windows).
- math.big: Popravi netočno dijeljenje s negativnim brojevima.
- os: dodan prikladan način za ignoriranje nekih signala sustava.
- os: popraviti os.ls(mapa) u Windowsima kada se zaštićeni direktorij ne može otvoriti.
- crypto.sha/md5/: Fiksni izračun istih hash vrijednosti prilikom pozivanja .sum() više puta za sha1/256/512.
- os: implementirano os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
- json2: dodana podrška za ugniježđene strukture.
- web stranica
- vweb: dodane mime vrste za statičke .md datoteke.
- net.conv: Dodane funkcije varinttou64 i u64tovarint za varijabilno kodiranje cijelih brojeva bez predznaka opisanih u rfc-9000 (za QUIC).
- net.http: podrška za specificiranje funkcija povratnog poziva on_running, on_stopped, on_closed u http.Server{}, kao i show_startup_message: false.
- net.http: Podrška za HTTP proxy prolazposlužitelja u http.fetch.
- net.http: Dodajte mehanizam ponovnog pokušaja u http.fetch() za neizbježne pogreške utičnice.
- wasm: implementirana inline montaža.
- net.http: max_redirects vrijednost povećana na 16.
- picoev: implementacija sirovog načina za izravan rad s deskriptorima datoteka.
- net.http: dodana podrška za socks5 i http(s) proxyje za sustave slične Unixu.
- ORM:
- orm: dodano rukovanje null vrijednostima i izbornim poljima.
- orm: Is_null/is_not_null operacije su unarne.
- Upravljački programi baze podataka:
- pg: C pozivi su premješteni u .cv datoteke.
- Nativni backend:
- native: podrška -no-builtin oznaka (generirajte < 1KB Linux izvršne datoteke s "v -no-builtin -b native examples/hello_world.v").
- izvorni: koristite i32 umjesto int.
- C-pozadina:
- ast, native, cgen: dodana podrška za "$if native {}".
- vfmt:
- Sada uklanja dodatne prijelome redaka nakon call_expr i prije argumenata strukture.
- Popravljeno poravnanje vrijednosti pri korištenju ključeva sa znakovima uft8.
- Usklađivanje ternarnih izraza u const blokovima.
- Alati:
- Dodana @LOCATION podrška za lakše otklanjanje pogrešaka bez potrebe za kombiniranjem @FILE i @LINE tijekom izvođenja.
- benchmark: dodane nove metode b.record_measure/1 i b.all_recorded_measures/0.
- ci: github tijek rada c2v ažuriran.
- nizovi: dodana metoda Bulder.write_decimal/1 (za upisivanje decimalnog broja, bez dodatnih dodjela).
- Instalacija postojećeg modula koji koristi vpm (windows) je popravljena.
- tools.vpm: poboljšan rad s adresama koje završavaju na ".git".
- Dodan zahtjev za datoteku v.mod za instaliranje modula putem vanjskih veza pomoću vpm-a.
Izvor: opennet.ru
