Pas 40 ditësh zhvillimi u publikua versioni i ri i gjuhës së programimit me tip statik V (vlang). Qëllimet kryesore për krijimin e V ishin thjeshtësia e mësimit dhe përdorimit, lexueshmëria e lartë, kompilimi i shpejtë, siguria e rritur, zhvillimi efikas, përdorimi multplatformë, ndërveprimi i përmirësuar me gjuhën C, trajtimi më i mirë i gabimeve, mundësitë moderne dhe mbështetje më e lehtë për mirëmbajtjen e programeve. Kodi i kompilatorit, bibliotekat dhe veglat shoqëruese janë të hapura nën licencën MIT.
Në këtë version të ri:
- Përmirësimet në gjuhë:
- Moduli i ri 'encoding.xml' me parser, verifikim, teste unike.
- Mbështetje e përmirësuar për couroutines (IO, rrjet).
- Reduktimi i operacioneve të alokimit të memories në aplikacionet vweb me 80%.
- Implementimi i '@VCURRENTHASH' për të zëvendësuar 'C.V_CURRENT_COMMIT_HASH'.
- Fillimi i promovimit të një tipi të ri int, i lidhur me tipin i64 (më parë tipi int ishte identifikuar me tipin i32).
- Korrigjimi i rregullave të verificaimit të tipeve për tipin e ri int dhe optimizimi i gjenerimit të kodit.
- Ndryshimet në API që cingullen përputhshmërinë:
- Dikatori 'Request.cookies' është shpallur i vjetruar. Në vend të tij, janë futur 'Request.cookie()' dhe 'Request.add_cookie()'.
- Rregulla më rigoroze për tipet C, të cilat tani duhet të shpallin gjithmonë.
- Ndryshimet në sistemin e verifikimit të tipeve:
- Paralajmërimi për ndarjen e option/result është zhvendosur në kategorinë e gabimeve.
- Korrigjimi i thirrjes 'fn' me një argument opsional në modin autofree.
- Kontrolli i emërtimeve është rikthyer: pascal case për aliaset.
- C.xx = C.yy aliaset.
- Lejohet konvertimi i tipeve të numrave të plotë si interval (ranges) në blloqet math.
- Paralajmërimi për vjetërsimin e tipit byte (në favor të tipit u8) kur përdoret si parametër fn.
- Korrigjimi i metodës append për masat generike.
- Kontrolli i gabimit të implementimit të një interfejsi privat nga moduli tjetër.
- Korrigjimi i kontrollit të vlerave negative cap, len gjatë inicimit të masës.
- Transformimi i paralajmërimit për duplicimin e emrave të modulit var dhe param në gabim.
- Lejohet ripërcaktimi i një variabli të zakonshëm tërësisht (me ruajtjen e gjendjes së mëparshme të mutexit).
- Përmirësimet e parserit:
- Korrigjimi i caktimit të metodës statike për funksionet anonime.
- ast: korrigjimi i formatimit të shpalljes së strukturës me strukturë të brendshme.
- Shtuar metodat set_all + clear_all për fushat e bitëve '[flag]'.
- Paralajmërimi për importet e pa përdorura, edhe nëse shpallen përmes 'import math { sin, cos }'.
- Ndryshimet në kompilator:
- checker, builder, pref: mbështetje për flamurin '-dump-defines' për të parë të gjitha përcaktimet e përdoruesve dhe sistemit të disponueshme për këtë program.
- maps: shtuar funksionet maps.merge() dhe maps.merge_in_place().
- Biblioteka standarde:
- builtin: shtuar metoda 'unsafe { a.reset() }' për të vendosur me shpejtësi të gjithë bytët në masë në 0.
- math.fractions: përdorimi i mbingarkesës së operatorëve dhe heqja e funksioneve të vjetra.
- gg: korrigjimi i rreshtimit të kufirit të poshtëm draw_rounded_rect_empty në macos dhe linux.
- crypto.bcrypt: korrigjuar gabimin në bcrypt.
- sokol: përditësuar në versionin më të fundit.
- builtin: korrigjimi i sizeof(C.BOOL) (specifike për windows).
- math.big: korrigjimi i ndarjes së gabuar me numra negativë.
- os: shtuar një mënyrë të përshtatshme për të injoruar disa sinjale sistemike.
- os: korrigjimi i os.ls(folder) në windows, kur katalogu i mbrojtur nuk mund të hapet.
- crypto.sha/md5/: korrigjimi i llogaritjes së vlerave të ngjashme të hash-it gjatë thirrjeve të shumta .sum() për sha1/256/512.
- os: implementuar os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
- json2: shtuar mbështetje për struktura të brendshme.
- Web
- vweb: shtuar mime tipe për skedarët statikë .md.
- net.conv: shtuar funksionet varinttou64 dhe u64tovarint për kodimin e numrave të plotë pa nënshkrim, të përshkruar në rfc-9000 (për QUIC).
- net.http: mbështetje për caktimin e funksioneve kthim pas on_running, on_stopped, on_closed në http.Server{}, si dhe show_startup_message: false.
- net.http: mbështetje për kalimin e HTTP-proxy-server në http.fetch.
- net.http: shtimi i mekanizmit të rikthimit në http.fetch() për gabime të pashmangshme të soketëve.
- wasm: implementuar inline assembly.
- net.http: rritur vlerën max_redirects deri në 16.
- picoev: realizimi i modit raw për punë të drejtpërdrejtë me deshkruesit e skedarëve.
- net.http: për sistemet e ngjashme me unix është shtuar mbështetje për socks5 dhe http(s) proxy.
- ORM:
- orm: shtuar trajtimi i vlerës null dhe fushave opsionale.
- orm: Operacionet is_null/is_not_null janë bërë unare.
- Drejtuesit e bazës së të dhënave:
- pg: thirrjet c janë transferuar në .c.v skedarët.
- Native backend:
- native: mbështetje për flamurin -no-builtin (gjenerimi i skedarëve të ekzekutueshëm < 1 KB Linux duke përdorur 'v -no-builtin -b native examples/hello_world.v').
- native: përdorimi i i32 në vend të int.
- Backend i C:
- ast, native, cgen: shtuar mbështetje për '$if native {}'.
- vfmt:
- Tani heq ndërrimet e tepërta të linjave pas call_expr dhe para argumenteve të strukturës.
- Korrigjimi i rreshtimit të vlerave kur përdoren çelësa me simbole uft8.
- Rreshtimi i shprehjeve ternare në blloqet const.
- Toolkit:
- Shtuar mbështetje për @LOCATION, për një diagnostikim më të lehtë pa nevojën për të kombinuar @FILE dhe @LINE gjatë ekzekutimit.
- benchmark: metoda e re b.record_measure/1 dhe b.all_recorded_measures/0 u shtuan.
- ci: përditësuar punët e fluksit github c2v.
- strings: metoda Bulder.write_decimal/1 (për shkrimin e numrave decimalë, pa alokime shtesë) u shtua.
- Rregulluar instalimi i një moduli ekzistues me anë të vpm (windows).
- tools.vpm: përmirësuar puna me adresat që përfundojnë në «.git».
- Shtuar kërkesa për pranitë e skedarit v.mod për të instaluar modulet përmes lidhjeve të jashtme me vpm.
Burimi: opennet.ru
