Izdanje programskog jezika V 0.4.3

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

Dodajte komentar