Po 40 dienų kūrimo buvo išleista nauja statinio tipo programavimo kalbos V (vlang) versija. Pagrindiniai tikslai kuriant V buvo mokymosi ir naudojimo paprastumas, aukštas skaitomumas, greitas kompiliavimas, geresnis saugumas, efektyvus kūrimas, kelių platformų naudojimas, geresnis suderinamumas su C kalba, geresnis klaidų apdorojimas, modernios galimybės ir labiau prižiūrimos programos. Kompiliatoriaus kodas, bibliotekos ir susiję įrankiai yra atvirojo kodo pagal MIT licenciją.
Naujoje versijoje:
- Kalbos patobulinimai:
- Naujas modulis „encoding.xml su analizatoriumi, patvirtinimu, vienetų testais.
- Patobulinta kursų palaikymas (IO, tinklas).
- Sumažinkite atminties paskirstymo operacijas „Vweb“ programose 80%.
- „@VCURRENTHASH“ įdiegimas, pakeičiantis „C.V_CURRENT_COMMIT_HASH“.
- Pradėtas reklamuoti naujas int tipas, siejamas su i64 tipu (anksčiau int tipas buvo tapatinamas su i32 tipu).
- Ištaisytos naujojo int tipo tipo tikrinimo taisyklės ir optimizuotas kodo generavimas.
- API pakeitimai, pažeidžiantys suderinamumą:
- „Request.cookies“ žodynas nebenaudojamas. Pakeistas „Request.cookie()“ ir „Request.add_cookie()“.
- Griežtesnės taisyklės C tipams, kurios dabar visada turi būti deklaruojamos.
- Tipo tikrinimo sistemos pakeitimai:
- Įspėjimas apie parinkties / rezultato padalijimą buvo perkeltas į klaidos kategoriją.
- Pataisykite „fn“ iškvietimą su pasirenkamu argumentu automatiniu laisvu režimu.
- Pavadinimo patikra sugrįžo: slapyvardžių pascal didžiosios ir mažosios raidės.
- C.xx = C.yy slapyvardžiai.
- Leisti pateikti sveikųjų skaičių tipus kaip diapazonus matematiniuose blokuose.
- Įspėjimas apie baitų tipo nusidėvėjimą (u8 tipo naudai), kai naudojamas kaip fn parametras.
- Pataisykite bendrųjų masyvų pridėjimo metodą.
- Tikrinama, ar nėra klaidos diegiant kito modulio privačią sąsają.
- Ištaisytas neigiamų dangtelio ir objektyvo verčių tikrinimas inicijuojant masyvą.
- Įspėjimas apie pasikartojančius var ir param modulių pavadinimus paverčiamas klaida.
- Leisti perskirstyti visą bendrinamą kintamąjį (išlaikant ankstesnę mutex būseną).
- Parserio patobulinimai:
- Ištaisytas statinio metodo priskyrimas anoniminėms funkcijoms.
- ast: Ištaisytas struktūrų deklaracijos formatavimas su įdėta struktūra.
- Prie „[flag]“ bitų laukų pridėti metodai set_all + clear_all.
- Įspėkite apie nepanaudotus importus, net jei jie deklaruoti su „import math { sin, cos }“.
- Kompiliatoriaus pakeitimai:
- tikrintuvas, kūrimo priemonė, pref: palaiko vėliavėlę „-dump-defines“, kad peržiūrėtumėte visus galimus tam tikros programos vartotojo ir sistemos apibrėžimus.
- žemėlapiai: pridėtos funkcijos maps.merge() ir maps.merge_in_place().
- Standartinė biblioteka:
- builtin: pridėtas "nesaugus { a.reset() }" metodas, norint greitai nustatyti visus masyvo baitus į 0.
- math.fractions: naudokite operatoriaus perkrovą ir atsisakykite senų funkcijų.
- gg: Pataisykite „draw_rounded_rect_empty“ apatinės kraštinės lygiavimą „Macos“ ir „Linux“.
- crypto.bcrypt: ištaisyta bcrypt klaida.
- sokol: atnaujinta iki naujausios versijos
- įmontuotas: fiksuotas dydis (C.BOOL) (konkretiems langams).
- math.big: ištaisykite neteisingą padalijimą su neigiamais skaičiais.
- os: pridėtas patogus būdas nepaisyti kai kurių sistemos signalų.
- os: pataisykite os.ls(aplanką) languose, kai negalima atidaryti apsaugoto katalogo.
- crypto.sha/md5/: fiksuotas tų pačių maišos verčių apskaičiavimas, kai kelis kartus iškviečiama .sum() sha1/256/512.
- os: įdiegta os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
- json2: papildomas įdėtųjų struktūrų palaikymas.
- tinklas
- vweb: pridėti MIME tipai statiniams .md failams.
- net.conv: pridėtos funkcijos varinttou64 ir u64tovarint, skirtos kintamiesiems beženkliams sveikiesiems skaičiams koduoti, aprašytiems rfc-9000 (skirta QUIC).
- net.http: palaikymas nurodant on_running, on_stopped, on_closed atgalinio skambinimo funkcijas http.Server{}, taip pat show_startup_message: false.
- net.http: HTTP tarpinio serverio pralaidumo palaikymasserveris http.fetch.
- net.http: pridėkite pakartotinio bandymo mechanizmą prie http.fetch(), kad išvengtumėte neišvengiamų lizdų klaidų.
- wasm: įdiegtas tiesioginis surinkimas.
- net.http: max_redirects vertė padidinta iki 16.
- picoev: neapdoroto režimo įgyvendinimas tiesioginiam darbui su failų aprašais.
- net.http: pridėtas „socks5“ ir „http“ (-ių) tarpinių serverių palaikymas, skirtas „Unix“ tipo sistemoms.
- ORM:
- orm: papildomas nulinių reikšmių ir pasirenkamų laukų tvarkymas.
- orm: operacijos is_null/is_not_null yra vienarūšės.
- Duomenų bazės tvarkyklės:
- pg: C skambučiai buvo perkelti į .cv failus.
- Vietinė galinė programa:
- gimtoji: palaikymas žymei -no-builtin (generuojami vykdomieji failai < 1 KB) Linux naudojant „v -no-builtin -b native examples/hello_world.v“).
- gimtoji: naudokite i32 vietoj int.
- C-backend:
- ast, native, cgen: pridėtas „$if native {}“ palaikymas.
- vfmt:
- Dabar pašalinami papildomi eilučių lūžiai po call_expr ir prieš struktūros argumentus.
- Fiksuotas verčių lygiavimas naudojant klavišus su uft8 simboliais.
- Trečiamųjų išraiškų lygiavimas const blokuose.
- Įrankiai:
- Pridėtas @LOCATION palaikymas, kad būtų lengviau derinti, nereikia derinti @FILE ir @LINE vykdymo metu.
- etalonas: pridėti nauji metodai b.record_measure/1 ir b.all_recorded_measures/0.
- ci: atnaujinta github darbo eiga c2v.
- eilutės: pridėtas metodas Bulder.write_decimal/1 (dešimtainiam skaičiui rašyti, be papildomų paskirstymų).
- Esamo modulio įdiegimas naudojant vpm („Windows“) buvo ištaisytas.
- tools.vpm: patobulintas darbas su adresais, kurie baigiasi ".git".
- Pridėtas reikalavimas v.mod failui įdiegti modulius per išorines nuorodas naudojant vpm.
Šaltinis: opennet.ru
