40 napos fejlesztés után megjelent a statikusan tipizált V (vlang) programozási nyelv új verziója. A V létrehozásánál a fő célok a könnyű tanulás és használat, a jó olvashatóság, a gyors fordítás, a fokozott biztonság, a hatékony fejlesztés, a többplatformos használat, a C nyelvvel való jobb interoperabilitás, a jobb hibakezelés, a modern képességek és a karbantarthatóbb programok voltak. A fordítókód, a könyvtárak és a kapcsolódó eszközök nyílt forráskódúak az MIT licence alatt.
Az új verzióban:
- Nyelvi fejlesztések:
- Új modul „encoding.xml elemzővel, érvényesítéssel, egységtesztekkel.
- Továbbfejlesztett támogatás a kurzulinokhoz (IO, hálózat).
- Csökkentse 80%-kal a memóriafoglalási műveleteket a vweb alkalmazásokban.
- A „@VCURRENTHASH” implementációja a „C.V_CURRENT_COMMIT_HASH” helyére.
- Megkezdődött az i64 típushoz társított új int típus promóciója (korábban az int típust az i32 típussal azonosították).
- Javított típus-ellenőrzési szabályok az új int típushoz és optimalizált kódgenerálás.
- API-módosítások, amelyek megzavarják a kompatibilitást:
- A "Request.cookies" szótár elavult. A „Request.cookie()” és a „Request.add_cookie()” helyett.
- Szigorúbb szabályok a C típusokra, amelyeket most mindig deklarálni kell.
- A típusellenőrző rendszer változásai:
- Az opció/eredmény felosztásra vonatkozó figyelmeztetés hibakategóriába került.
- Javítsa ki az "fn" hívást opcionális argumentummal automatikus szabad módban.
- A névellenőrzés visszatért: Pascal kis- és nagybetű az álnevekhez.
- C.xx = C.yy álnevek.
- Lehetővé teszi az egész típusok tartományként való öntését matematikai blokkban.
- Figyelmeztetés a bájttípus elavulására (az u8 típus javára), ha fn paraméterként használják.
- Az általános tömbök hozzáfűzési módszerének javítása.
- Hiba ellenőrzése egy másik modul privát interfészének megvalósításában.
- Javítva a negatív cap és len értékek ellenőrzése egy tömb inicializálása során.
- A duplikált var és param modulnevekre vonatkozó figyelmeztetés hibává alakítása.
- Engedélyezze a teljes megosztott változó átrendelését (a mutex előző állapotának megőrzése mellett).
- Az elemző fejlesztései:
- Javítva a statikus metódus anonim funkciókhoz való hozzárendelése.
- ast: A beágyazott szerkezetű struct deklaráció fix formázása.
- A set_all + clear_all metódusok hozzáadva a "[flag]" bitmezőkhöz.
- Figyelmeztetés a fel nem használt importokra, még akkor is, ha az "import math { sin, cos }" kifejezéssel vannak megadva.
- Változások a fordítóprogramban:
- checker, builder, pref: támogatja a "-dump-defines" jelzőt az adott program összes elérhető felhasználói és rendszerdefiníciójának megtekintéséhez.
- térképek: hozzáadva a maps.merge() és a maps.merge_in_place() függvényeket.
- Szabványos könyvtár:
- buildin: hozzáadta a "unsafe { a.reset() }" metódust, amellyel gyorsan 0-ra állíthatja a tömb összes bájtját.
- math.fractions: Az operátor túlterhelése és a régi függvények elhagyása.
- gg: Javítsa ki a draw_rounded_rect_empty alsó határigazítást macos és linux rendszeren.
- crypto.bcrypt: javítva a bcrypt hibáját.
- sokol: frissítve a legújabb verzióra
- beépített: rögzített mérete (C.BOOL) (Windows-specifikus).
- math.big: Javítsa ki a hibás osztást negatív számokkal.
- os: Egy kényelmes mód hozzáadva néhány rendszerjel figyelmen kívül hagyásához.
- os: javítsa ki az os.ls(mappa) fájlt a windowsban, ha a védett könyvtár nem nyitható meg.
- crypto.sha/md5/: ugyanazon kivonatértékek rögzített kiszámítása a .sum() többszöri meghívásakor sha1/256/512 esetén.
- os: implementált os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
- json2: hozzáadott támogatás a beágyazott struktúrákhoz.
- háló
- vweb: hozzáadott MIME típusok statikus .md fájlokhoz.
- net.conv: A varinttou64 és u64tovarint függvények hozzáadva az rfc-9000-ben leírt (QUIC) előjel nélküli egész számok változókódolásához.
- net.http: támogatja az on_running, on_stopped, on_closed visszahívási függvények megadását a http.Server{}-ban, valamint a show_startup_message: false.
- net.http: HTTP proxy áteresztő támogatásszerver a http.fetch fájlban.
- net.http: Adjon hozzá egy újrapróbálkozási mechanizmust a http.fetch()-hez az elkerülhetetlen socket-hibák érdekében.
- wasm: megvalósított inline szerelés.
- net.http: a max_redirects értéke 16-ra nőtt.
- picoev: nyers mód megvalósítása a fájlleírókkal való közvetlen munkához.
- net.http: hozzáadva a socks5 és a http(s) proxy támogatását a unix-szerű rendszerekhez.
- ORM:
- orm: a null értékek és az opcionális mezők hozzáadott kezelése.
- orm: Az is_null/is_not_null műveletek egységesek.
- Adatbázis illesztőprogramok:
- pg: A C hívások .cv fájlba kerültek.
- Natív háttér:
- natív: a -no-builtin jelző támogatása (1 KB-nál kisebb futtatható fájlok generálása) Linux a "v -no-builtin -b natív példák/hello_world.v" használatával).
- natív: használja az i32-t az int helyett.
- C-háttér:
- ast, natív, cgen: hozzáadva az "$if native {}" támogatását.
- vfmt:
- Most eltávolítja a további sortöréseket a call_expr után és a szerkezeti argumentumok előtt.
- Rögzített értékigazítás uft8 karakteres billentyűk használatakor.
- Terner kifejezések igazítása const blokkban.
- Eszközök:
- @LOCATION támogatás hozzáadva a hibakeresés egyszerűbbé tételéhez anélkül, hogy a @FILE és a @LINE kombinálása futás közben.
- benchmark: új metódusok hozzáadva: b.record_measure/1 és b.all_recorded_measures/0.
- ci: github munkafolyamat c2v frissítve.
- strings: hozzáadva Bulder.write_decimal/1 metódus (tizedes szám írásához, további hozzárendelések nélkül).
- Egy meglévő modul vpm (windows) használatával történő telepítését javítottuk.
- tools.vpm: továbbfejlesztett munka a „.git” végződésű címekkel.
- Hozzáadott követelmény a v.mod fájlhoz a modulok külső hivatkozásokon keresztül történő telepítéséhez a vpm használatával.
Forrás: opennet.ru
