Efter 40 dages udvikling er en ny version af det statisk typede programmeringssprog V (vlang) blevet udgivet. Hovedmålene med at skabe V var nem indlæring og brug, høj læsbarhed, hurtig kompilering, øget sikkerhed, effektiv udvikling, brug på tværs af platforme, forbedret interaktion med C-sproget, bedre fejlhåndtering, moderne funktioner og mere bekvem programvedligeholdelse. Koden til compileren, bibliotekerne og relaterede værktøjer er åben under MIT-licensen.
I den nye version:
- Sprogforbedringer:
- Nyt modul "encoding.xml" med parser, validering og enhedstest.
- Forbedret understøttelse af couroutines (IO, netværk).
- Reducer hukommelsesallokeringsoperationer i vweb-applikationer med 80 %.
- Implementering af "@VCURRENTHASH" til at erstatte "C.V_CURRENT_COMMIT_HASH".
- Promoveringen af en ny int-type er begyndt, tilknyttet i64-typen (tidligere blev int-typen identificeret med i32-typen).
- Rettelse af typekontrolregler for den nye int-type og optimering af kodegenerering.
- API-ændringer, der forstyrrer kompatibiliteten:
- Ordbogen "Request.cookies" er blevet udfaset og erstattet af "Request.cookie()" og "Request.add_cookie()".
- Strengere regler for C-typer, som nu altid skal deklareres.
- Ændringer i typekontrolsystemet:
- Advarsel om opdeling af valgmulighed/resultat flyttet til fejlkategori.
- Retter kald af "fn" med valgfrit argument i autofree-tilstand.
- Navngivningstjek returneret: pascal store og små bogstaver for aliasser.
- C.xx = C.yy aliaser.
- Tillad omregning af heltalstyper som intervaller i matematiske blokke.
- Advarsel om udfasning af byte-typen (til fordel for u8-typen) når den bruges som fn-parameter.
- Retter tilføjelsesmetoden for generiske arrays.
- Kontrol af implementeringsfejl i et andet moduls private grænseflade.
- Rettelse af kontrol af negative værdier for cap og len ved initialisering af et array.
- Lav advarslen om dublette modulnavne var og param om til en fejl.
- Tillad omtildeling af en delt variabel som helhed (samtidig med at mutex'ens tidligere tilstand bevares).
- Forbedringer af parser:
- Rettelse af tildeling af statisk metode til anonyme funktioner.
- ast: Rettelse af formatering af struct-deklaration med indlejret struktur.
- Tilføjede set_all + clear_all-metoder til "[flag]" bitfelter.
- Advarsel om ubrugte importer, selvom deklareret via "import math { sin, cos }".
- Ændringer i compileren:
- checker, builder, pref: understøttelse af "-dump-defines"-flaget for at se alle tilgængelige bruger- og systemdefinitioner for et givet program.
- maps: tilføjede funktionerne maps.merge() og maps.merge_in_place().
- Standardbibliotek:
- indbygget: Tilføjet metoden "unsafe { a.reset() }" til hurtigt at sætte alle bytes i et array til 0.
- math.fractions: Brug af operatoroverbelastning og udfasning af gamle funktioner.
- gg: Rettede justering af den nederste kant af draw_rounded_rect_empty på Mac og Linux.
- crypto.bcrypt: rettet en fejl i bcrypt.
- sokol: opdateret til den seneste version
- indbygget: fast størrelse på(C.BOOL) (Windows-specifik).
- math.big: ret forkert division med negative tal.
- os: tilføjet en bekvem måde at ignorere visse systemsignaler på.
- os: retter os.ls(mappe) i Windows, når den beskyttede mappe ikke kan åbnes.
- crypto.sha/md5/: Rettelse af beregning af de samme hashværdier ved flere kald af .sum() for sha1/256/512.
- os: os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1 implementeret.
- json2: tilføjet understøttelse af indbyggede strukturer.
- Website
- vweb: tilføjede mime-typer til statiske .md-filer.
- net.conv: tilføjede funktionerne varinttou64 og u64tovarint til kodning af usignerede heltalsvariabler som beskrevet i rfc-9000 (til QUIC).
- net.http: understøtter angivelse af on_running, on_stopped og on_closed callback-funktioner i http.Server{}, og show_startup_message: false.
- net.http: Understøttelse af HTTP proxy-passthroughserver i http.fetch.
- net.http: Tilføj gentagne forsøgsmekanismer til http.fetch() for uundgåelige socketfejl.
- wasm: implementeret inline-assembling.
- net.http: max_redirects-værdien er øget til 16.
- picoev: implementering af raw-tilstand til direkte arbejde med filbeskrivelser.
- net.http: tilføjede understøttelse af socks5 og http(s) proxy til unix-lignende systemer.
- ORM:
- orm: tilføjet håndtering af nullværdier og valgfrie felter.
- orm: Gjorde is_null/is_not_null-operationer unære.
- Databasedrivere:
- pg: C-kald flyttet til .cv-filer.
- Native backend:
- native: поддержка флага -no-builtin (генерация исполняемых файлов < 1 КБ Linux с помощью «v -no-builtin -b native examples/hello_world.v»).
- native: brug i32 i stedet for int.
- C-backend:
- ast, native, cgen: tilføjet understøttelse af "$if native {}".
- vfmt:
- Fjerner nu ekstra linjeskift efter call_expr og før strukturargumenter.
- Rettelse af værdijustering ved brug af taster med uft8-symboler.
- Justering af ternære udtryk i const-blokke.
- Værktøjer:
- Tilføjet understøttelse af @LOCATION, for nemmere fejlfinding uden at skulle kombinere @FILE og @LINE under kørsel.
- benchmark: tilføjede nye metoder b.record_measure/1 og b.all_recorded_measures/0.
- ci: opdateret github-arbejdsgang c2v.
- strenge: tilføjede Bulder.write_decimal/1-metoden (til at skrive et decimaltal uden yderligere allokeringer).
- Rettelse af installation af et eksisterende modul ved hjælp af vpm (Windows).
- tools.vpm: Forbedret håndtering af URL'er, der ender på ".git".
- Tilføjet krav om v.mod-fil for at installere moduler via eksterne links ved hjælp af vpm.
Kilde: opennet.ru
