Pagkatapos ng 40 araw ng pagbuo, isang bagong bersyon ng statically typed programming language na V (vlang) ang nai-publish. Ang mga pangunahing layunin sa paglikha ng V ay ang kadalian ng pag-aaral at paggamit, mataas na pagiging madaling mabasa, mabilis na compilation, tumaas na seguridad, mahusay na pag-unlad, cross-platform na paggamit, pinahusay na interoperability sa wikang C, mas mahusay na paghawak ng error, modernong mga kakayahan, at mas napapanatiling mga programa. Ang compiler code, mga aklatan at mga kaugnay na tool ay open sourced sa ilalim ng lisensya ng MIT.
Sa bagong bersyon:
- Mga pagpapahusay sa wika:
- Bagong module na “encoding.xml na may parser, validation, unit tests.
- Pinahusay na suporta para sa mga couroutine (IO, network).
- Bawasan ang mga operasyon ng paglalaan ng memorya sa mga vweb application ng 80%.
- Pagpapatupad ng "@VCURRENTHASH" upang palitan ang "C.V_CURRENT_COMMIT_HASH".
- Nagsimula na ang pag-promote ng bagong uri ng int, na nauugnay sa uri ng i64 (dati, ang uri ng int ay nakilala sa uri ng i32).
- Nakapirming uri ng pagsusuri ng mga panuntunan para sa bagong uri ng int at na-optimize na pagbuo ng code.
- Mga pagbabago sa API na sumisira sa compatibility:
- Ang diksyunaryo ng "Request.cookies" ay hindi na ginagamit. Pinalitan ng “Request.cookie()” at “Request.add_cookie()”.
- Mas mahigpit na mga panuntunan para sa mga uri ng C, na dapat na ngayong palaging ideklara.
- Uri ng pagsusuri sa mga pagbabago sa system:
- Ang babala tungkol sa paghahati ng opsyon/resulta ay inilipat sa isang kategorya ng error.
- Ayusin ang pagtawag sa "fn" gamit ang isang opsyonal na argument sa autofree mode.
- Bumalik ang pagsusuri sa pagpapangalan: pascal case para sa mga alias.
- C.xx = C.yy alias.
- Payagan ang pag-cast ng mga uri ng integer bilang mga hanay sa mga bloke ng matematika.
- Babala tungkol sa paghinto sa paggamit ng uri ng byte (pabor sa uri ng u8) kapag ginamit bilang isang parameter ng fn.
- Ayusin ang paraan ng append para sa mga generic na array.
- Pagsusuri para sa isang error sa pagpapatupad ng pribadong interface ng isa pang module.
- Inayos ang pagsuri para sa mga negatibong halaga ng cap at len kapag sinisimulan ang isang array.
- Ginagawang error ang babala tungkol sa mga duplicate na pangalan ng var at param module.
- Payagan ang muling pagtatalaga ng buong nakabahaging variable (habang pinapanatili ang nakaraang estado ng mutex).
- Mga pagpapahusay ng parser:
- Inayos ang pagtatalaga ng static na paraan sa mga hindi kilalang function.
- ast: Nakapirming formatting ng struct declaration na may nested structure.
- Nagdagdag ng set_all + clear_all na mga pamamaraan sa "[flag]" na mga bitfield.
- Magbabala tungkol sa mga hindi nagamit na pag-import, kahit na idineklara ang mga ito na may "import math { sin, cos }".
- Mga pagbabago sa compiler:
- checker, builder, pref: suportahan ang flag na "-dump-defines" upang tingnan ang lahat ng magagamit na mga kahulugan ng user at system para sa isang partikular na programa.
- maps: idinagdag ang maps.merge() at maps.merge_in_place() function.
- Karaniwang Aklatan:
- builtin: idinagdag ang "unsafe { a.reset() }" na paraan upang mabilis na maitakda ang lahat ng byte sa isang array sa 0.
- math.fractions: Gumamit ng operator overloading at abandunahin ang mga lumang function.
- gg: Ayusin ang draw_rounded_rect_empty bottom border alignment sa macos at linux.
- crypto.bcrypt: naayos na bug sa bcrypt.
- sokol: na-update sa pinakabagong bersyon
- builtin: fixed sizeof(C.BOOL) (windows specific).
- math.big: Ayusin ang maling dibisyon na may mga negatibong numero.
- os: Nagdagdag ng maginhawang paraan upang huwag pansinin ang ilang signal ng system.
- os: ayusin ang os.ls(folder) sa mga bintana kapag hindi mabuksan ang protektadong direktoryo.
- crypto.sha/md5/: Nakapirming pagkalkula ng parehong mga hash value kapag tumatawag sa .sum() nang maraming beses para sa sha1/256/512.
- os: ipinatupad ang os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
- json2: nagdagdag ng suporta para sa mga nested na istruktura.
- web
- vweb: nagdagdag ng mga uri ng mime para sa mga static na .md file.
- net.conv: Nagdagdag ng mga function na varinttou64 at u64tovarint para sa variable na pag-encode ng mga unsigned integer na inilarawan sa rfc-9000 (para sa QUIC).
- net.http: suporta na tumutukoy sa on_running, on_stopped, on_closed callback function sa http.Server{}, pati na rin ang show_startup_message: false.
- net.http: Suporta sa pagdaan ng HTTP proxyserver sa http.fetch.
- net.http: Magdagdag ng mekanismong muling subukan sa http.fetch() para sa mga hindi maiiwasang error sa socket.
- wasm: ipinatupad ang inline na pagpupulong.
- net.http: max_redirects value ay tumaas sa 16.
- picoev: pagpapatupad ng raw mode para sa direktang trabaho sa mga descriptor ng file.
- net.http: nagdagdag ng suporta para sa socks5 at http(s) proxy para sa unix-like system.
- ORM:
- orm: idinagdag ang paghawak ng mga null value at opsyonal na field.
- orm: Ang is_null/is_not_null operations ay ginawang unary.
- Mga Driver ng Database:
- pg: Ang mga C na tawag ay inilipat sa .cv file.
- Native backend:
- native: support -no-builtin flag (bumuo ng <1KB Linux executables na may "v -no-builtin -b native na mga halimbawa/hello_world.v").
- native: gumamit ng i32 sa halip na int.
- C-backend:
- ast, native, cgen: nagdagdag ng suporta para sa "$if native {}".
- vfmt:
- Ngayon ay nag-aalis ng mga karagdagang line break pagkatapos ng call_expr at bago ang mga argumentong istruktura.
- Nakapirming value alignment kapag gumagamit ng mga key na may uft8 character.
- Pag-align ng mga ternary expression sa const blocks.
- Mga tool:
- Nagdagdag ng suporta sa @LOCATION upang gawing mas madali ang pag-debug nang hindi kinakailangang pagsamahin ang @FILE at @LINE sa runtime.
- benchmark: nagdagdag ng mga bagong pamamaraan b.record_measure/1 at b.all_recorded_measures/0.
- ci: na-update ang daloy ng trabaho ng github c2v.
- mga string: idinagdag na paraan Bulder.write_decimal/1 (para sa pagsusulat ng decimal na numero, nang walang karagdagang alokasyon).
- Ang pag-install ng isang umiiral na module gamit ang vpm (windows) ay naayos na.
- tools.vpm: pinahusay na trabaho na may mga address na nagtatapos sa ".git".
- Nagdagdag ng kinakailangan para sa isang v.mod file na mag-install ng mga module sa pamamagitan ng mga panlabas na link gamit ang vpm.
Pinagmulan: opennet.ru
