Izdanje programskog jezika V 0.4.3

Nakon 40 dana razvoja, objavljena je nova verzija statički kucanog programskog jezika V (vlang). Glavni ciljevi u kreiranju V bili su jednostavnost učenja i upotrebe, visoka čitljivost, brza kompilacija, poboljšana sigurnost, efikasan razvoj, korištenje na više platformi, poboljšana interoperabilnost sa jezikom C, bolje rukovanje greškama, moderne mogućnosti i programi koji se mogu održavati. Kod kompajlera, biblioteke i povezani alati su otvorenog koda pod MIT licencom.

U novoj verziji:

  • Poboljšanja jezika:
    • Novi modul “encoding.xml sa parserom, validacijom, 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 sa tipom i64 (ranije je tip int identifikovan sa tipom i32).
    • Fiksna pravila za provjeru tipa za novi tip int i optimizirano generiranje koda.
  • API promjene koje narušavaju kompatibilnost:
    • Rječnik "Request.cookies" je zastario. Zamijenjeno sa “Request.cookie()” i “Request.add_cookie()”.
    • Stroža pravila za C tipove, koji sada moraju uvijek biti deklarirani.
  • Promjene u sistemu za provjeru tipa:
    • Upozorenje o podjelu opcija/rezultat je premješteno u kategoriju greške.
    • Popravite pozivanje "fn" s opcijskim argumentom u automatskom načinu rada.
    • Provjera imenovanja se vratila: pascal velika i mala slova za pseudonime.
    • C.xx = C.yy alijasi.
    • Dozvoli uvođenje cjelobrojnih tipova kao raspona u matematičkim blokovima.
    • Upozorenje o zastarevanju tipa bajta (u korist tipa u8) kada se koristi kao fn parametar.
    • Popravi metod dodavanja za generičke nizove.
    • Provjera greške u implementaciji privatnog interfejsa drugog modula.
    • Ispravljena provjera negativnih vrijednosti cap i len prilikom inicijalizacije niza.
    • Pretvaranje upozorenja o dupliranim nazivima var i param modula u grešku.
    • Dozvolite preraspodjelu cijele dijeljene varijable (uz zadržavanje prethodnog stanja muteksa).
  • Poboljšanja parsera:
    • Popravljeno dodjeljivanje statičke metode anonimnim funkcijama.
    • ast: Popravljeno formatiranje deklaracije strukture sa ugniježđenom strukturom.
    • Dodane metode set_all + clear_all u bitna polja "[flag]".
    • Upozorite na neiskorištene uvoze, čak i ako su deklarirani sa "import math { sin, cos }".
  • Promjene kompajlera:
    • checker, builder, pref: podržava oznaku "-dump-defines" za pregled svih dostupnih korisničkih i sistemskih definicija za dati program.
    • maps: dodane funkcije maps.merge() i maps.merge_in_place().
  • Standardna biblioteka:
    • ugrađena: 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: Popravi draw_rounded_rect_empty poravnanje donjeg ruba na macos i linux.
    • crypto.bcrypt: ispravljena greška u bcryptu.
    • sokol: ažurirano na najnoviju verziju
    • ugrađeni: fiksna veličina(C.BOOL) (specifično za Windows).
    • math.big: Ispraviti netačno dijeljenje negativnim brojevima.
    • os: Dodan zgodan način da se ignorišu neki sistemski signali.
    • os: popravi os.ls(folder) u Windowsima kada se zaštićeni direktorij ne može otvoriti.
    • crypto.sha/md5/: Popravljeno izračunavanje istih hash vrijednosti kada se više puta poziva .sum() za sha1/256/512.
    • os: implementiran os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
    • json2: dodata podrška za ugniježđene strukture.
  • veb
    • vweb: dodani mime tipovi za statičke .md datoteke.
    • net.conv: Dodane funkcije varinttou64 i u64tovarint za varijabilno kodiranje neoznačenih cijelih brojeva opisanih u rfc-9000 (za QUIC).
    • net.http: podrška koja specificira on_running, on_stopped, on_closed funkcije povratnog poziva u http.Server{}, kao i show_startup_message: false.
    • net.http: Podrška za HTTP proxy prolazserver u http.fetch.
    • net.http: Dodajte mehanizam za ponovni pokušaj u http.fetch() za neizbježne greške utičnice.
    • wasm: implementiran inline sklop.
    • net.http: vrijednost max_redirects povećana na 16.
    • picoev: implementacija sirovog načina rada za direktan rad sa deskriptorima datoteka.
    • net.http: dodata podrška za socks5 i http(s) proksije za unix-like sisteme.
  • ORM:
    • orm: dodano rukovanje nultim vrijednostima i opcijskim poljima.
    • orm: Operacije is_null/is_not_null su unarne.
  • Driveri baze podataka:
    • pg: C pozivi su premešteni u .cv fajlove.
  • Izvorni backend:
    • native: поддержка флага -no-builtin (генерация исполняемых файлов < 1 КБ Linux с помощью «v -no-builtin -b native examples/hello_world.v»).
    • native: koristite i32 umjesto int.
  • C-backend:
    • ast, native, cgen: dodata podrška za "$if native {}".
  • vfmt:
    • Sada uklanja dodatne prijelome reda nakon call_expr i prije argumenata strukture.
    • Fiksno poravnanje vrednosti kada se koriste tasteri sa uft8 znakovima.
    • Poravnavanje ternarnih izraza u const blokovima.
  • Alati:
    • Dodana je podrška za @LOCATION kako bi se olakšalo otklanjanje grešaka bez potrebe da se kombinuju @FILE i @LINE tokom izvođenja.
    • benchmark: dodane nove metode b.record_measure/1 i b.all_recorded_measures/0.
    • ci: github workflow c2v ažuriran.
    • stringovi: dodana metoda Bulder.write_decimal/1 (za pisanje decimalnog broja, bez dodatnih alokacija).
    • Ispravljena je instalacija postojećeg modula koristeći vpm (windows).
    • tools.vpm: poboljšan rad sa adresama koje se završavaju na ".git".
    • Dodati zahtjevi za v.mod datoteku za instaliranje modula preko vanjskih veza koristeći vpm.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster