Vydanie programovacieho jazyka V 0.4.3

Po 40 dňoch vývoja bola zverejnená nová verzia staticky typovaného programovacieho jazyka V (vlang). Hlavnými cieľmi pri vytváraní V boli jednoduchosť učenia a používania, vysoká čitateľnosť, rýchla kompilácia, vylepšená bezpečnosť, efektívny vývoj, multiplatformové použitie, vylepšená interoperabilita s jazykom C, lepšie spracovanie chýb, moderné možnosti a lepšie udržiavateľné programy. Kód kompilátora, knižnice a súvisiace nástroje sú open source pod licenciou MIT.

V novej verzii:

  • Jazykové vylepšenia:
    • Nový modul “encoding.xml s parserom, validácia, unit testy.
    • Vylepšená podpora pre rutiny (IO, sieť).
    • Znížte operácie prideľovania pamäte v aplikáciách vweb o 80 %.
    • Implementácia „@VCURRENTHASH“ na nahradenie „C.V_CURRENT_COMMIT_HASH“.
    • Začala sa propagácia nového typu int, spojeného s typom i64 (predtým bol typ int stotožňovaný s typom i32).
    • Opravené pravidlá kontroly typu pre nový typ int a optimalizované generovanie kódu.
  • Zmeny API, ktoré narúšajú kompatibilitu:
    • Slovník „Request.cookies“ bol zastaraný. Nahradené výrazmi „Request.cookie()“ a „Request.add_cookie()“.
    • Prísnejšie pravidlá pre typy C, ktoré sa teraz musia vždy deklarovať.
  • Zmeny v systéme kontroly typov:
    • Upozornenie o rozdelení možnosti/výsledku bolo presunuté do kategórie chýb.
    • Opravte volanie "fn" s voliteľným argumentom v automatickom režime.
    • Kontrola názvov je späť: Pascal case pre aliasy.
    • C.xx = aliasy C.yy.
    • Povoliť pretypovanie celočíselných typov ako rozsahov v matematických blokoch.
    • Upozornenie na zastaranie typu byte (v prospech typu u8) pri použití ako parameter fn.
    • Opravte metódu pripojenia pre všeobecné polia.
    • Kontrola chyby pri implementácii privátneho rozhrania iného modulu.
    • Opravená kontrola záporných hodnôt uzáveru a šošovky pri inicializácii poľa.
    • Zmena varovania o duplicitných názvoch modulov var a param na chybu.
    • Povoliť opätovné priradenie celej zdieľanej premennej (pri zachovaní predchádzajúceho stavu mutexu).
  • Vylepšenia analyzátora:
    • Opravené priradenie statickej metódy anonymným funkciám.
    • ast: Opravené formátovanie deklarácie štruktúry s vnorenou štruktúrou.
    • Do bitových polí „[flag]“ boli pridané metódy set_all + clear_all.
    • Upozorniť na nevyužité importy, aj keď sú deklarované s "import math { sin, cos }".
  • Zmeny kompilátora:
    • checker, builder, pref: podpora príznaku "-dump-defines" na zobrazenie všetkých dostupných používateľských a systémových definícií pre daný program.
    • mapy: pridané funkcie maps.merge() a maps.merge_in_place().
  • Štandardná knižnica:
    • vstavaná: pridaná metóda "unsafe { a.reset() }" na rýchle nastavenie všetkých bajtov v poli na 0.
    • math.fractions: Použite preťaženie operátora a opustite staré funkcie.
    • gg: Opravte zarovnanie spodného okraja draw_rounded_rect_empty v systéme Macos a Linux.
    • crypto.bcrypt: opravená chyba v bcrypt.
    • sokol: aktualizované na najnovšiu verziu
    • vstavaná: pevná veľkosť (C.BOOL) (špecifické pre okná).
    • math.big: Opravte nesprávne delenie zápornými číslami.
    • os: Pridaný pohodlný spôsob ignorovania niektorých systémových signálov.
    • os: oprava os.ls(priečinok) v oknách, keď sa chránený adresár nedá otvoriť.
    • crypto.sha/md5/: Opravený výpočet rovnakých hodnôt hash pri viacnásobnom volaní .sum() pre sha1/256/512.
    • os: implementované os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
    • json2: pridaná podpora pre vnorené štruktúry.
  • web
    • vweb: pridané typy MIME pre statické súbory .md.
    • net.conv: Pridané funkcie varinttou64 a u64tovarint pre variabilné kódovanie celých čísel bez znamienka popísané v rfc-9000 (pre QUIC).
    • net.http: podpora špecifikujúcich funkcie spätného volania on_running, on_stopped, on_closed v http.Server{}, ako aj show_startup_message: false.
    • net.http: Podpora prechodu HTTP proxyserver v http.fetch.
    • net.http: Pridajte mechanizmus opakovania do http.fetch() pre chyby soketov, ktorým sa nedá vyhnúť.
    • wasm: realizovaná inline montáž.
    • net.http: hodnota max_redirects zvýšená na 16.
    • picoev: implementácia surového režimu pre priamu prácu s deskriptormi súborov.
    • net.http: pridaná podpora pre socks5 a http(s) proxy pre unixové systémy.
  • ORM:
    • orm: pridané spracovanie hodnôt null a voliteľných polí.
    • orm: Operácie is_null/is_not_null sú jednočlenné.
  • Ovládače databázy:
    • pg: Volania C boli presunuté do súborov .cv.
  • Natívny backend:
    • native: support -no-builtin flag (vygenerujte < 1 kB spustiteľné súbory pre Linux pomocou "v -no-builtin -b natívne príklady/hello_world.v").
    • native: použite i32 namiesto int.
  • C-backend:
    • ast, native, cgen: pridaná podpora pre "$if native {}".
  • vfmt:
    • Teraz odstraňuje ďalšie zalomenia riadkov po call_expr a pred argumentmi štruktúry.
    • Opravené zarovnanie hodnôt pri použití kláves so znakmi uft8.
    • Zarovnanie ternárnych výrazov v konštantných blokoch.
  • Nástroje:
    • Pridaná podpora @LOCATION na uľahčenie ladenia bez nutnosti kombinovať @FILE a @LINE za behu.
    • benchmark: pridané nové metódy b.record_measure/1 a b.all_recorded_measures/0.
    • ci: github workflow c2v aktualizovaný.
    • strings: pridaná metóda Bulder.write_decimal/1 (na zápis desiatkového čísla, bez dodatočných alokácií).
    • Inštalácia existujúceho modulu pomocou vpm (windows) bola opravená.
    • tools.vpm: vylepšená práca s adresami končiacimi na „.git“.
    • Pridaná požiadavka na súbor v.mod na inštaláciu modulov cez externé odkazy pomocou vpm.

Zdroj: opennet.ru

Pridať komentár