Programmeerimiskeele V 0.4.3 väljaanne

Pärast 40 päeva arendustööd on avaldatud uus versioon staatiliselt tüpiseeritud programmeerimiskeelest V (vlang). V loomise peamised eesmärgid olid õppimise ja kasutamise lihtsus, kõrge loetavus, kiire kompileerimine, suurenenud turvalisus, efektiivne arendamine, platvormidevaheline kasutamine, paranenud koostöö C-keelega, parem vigade käsitlemine, kaasaegsed võimalused ja mugavam programmide toetamine. Kompilaatori, raamatukogude ja kaasnevate tööriistade kood on avatud MIT litsentsi alusel.

Uues versioonis:

  • Keele täiustused:
    • Uus moodul «encoding.xml» koos parseri, valideerimise, üksustestide ning testide toetusega.
    • Kohandatud toetuse täiustamine couroutines'i (IO, võrk) jaoks.
    • Mälu eraldamise toimingud vweb rakendustes vähenevad 80% võrra.
    • Tehtud «@VCURRENTHASH» rakendamine, et asendada «C.V_CURRENT_COMMIT_HASH».
    • Uue int tüübi edendamine, mis on seotud i64 tüübiga (varem oli int tüüp seotud i32 tüübiga).
    • Int tüübi kontrollreeglite parandamine ja koodi genereerimise optimeerimine.
  • API muudatused, mis rikuvad ühilduvust:
    • Sõnastik «Request.cookies» kuulutatakse vananenuks. Asenduseks on «Request.cookie()» ja «Request.add_cookie()».
    • Tüüp C jaoks kehtivad rangemad reeglid, mis peavad nüüd alati olema deklareeritud.
  • Tüüpide kontrollimise süsteemi muudatused:
    • Option/result jagamise hoiatamine on muudetud veakategooriaks.
    • Parandatud „fn“ kutse valikulise argumendiga autofree režiimis.
    • Nimekontroll on tagasi: pascal case alias’ile.
    • C.xx = C.yy aliased.
    • Täisarvutüüpide kuvamine lubatud vahemike (ranges) kaudu matemaatika plokkides.
    • Byte-tüübi aegumine (u8 tüübi kasuks) hoiatuse määramine fn parameetrina kasutamisel.
    • Generikute massiivide append meetod on parandatud.
    • Teise mooduli privaatse liidese rakendamise veakontroll.
    • Parandatud negatiivsete cap, len väärtuste kontroll massiivi initsialiseerimisel.
    • Moodulite var ja param duplikaatide hälve muudetud veaks.
    • Luba jagatud muutuja täielik ümbermääramine (vana mutex oleku säilitamisega).
  • Parseri täiustused:
    • Parandatud staatilise meetodi määramine anonüümsetele funktsioonidele.
    • ast: parandatud struktuuri kuulutamise vormindamine koos pesastatud struktuuriga.
    • Lisatud meetodid set_all + clear_all bitiväljadele „[flag]“.
    • Hoiatus kasutamata importidest, isegi kui need on deklareeritud kui «import math { sin, cos }».
  • Muudatused kompilaatoris:
    • checker, builder, pref: toetatakse lippu «-dump-defines», et vaadata kõiki saadaval olevaid kasutaja ja süsteemi määratlusi antud programmi jaoks.
    • maps: lisatud funktsioonid maps.merge() ja maps.merge_in_place().
  • Standardne teek:
    • builtin: lisatud meetod «unsafe { a.reset() }» kõigi massiivi baitide kiireks seadmiseks nulliks.
    • math.fractions: operaatorite ülekasutamine ja vanade funktsioonide hülgamine.
    • gg: parandatud alumise serva joondamine draw_rounded_rect_empty macos ja linuxis.
    • crypto.bcrypt: parandus bcryptis.
    • sokol: uuendatud viimasele versioonile.
    • builtin: parandatud sizeof(C.BOOL) (spetsiifiline windowsile).
    • math.big: parandatud vale jagamine negatiivsete arvudega.
    • os: lisatud mugav viis mõnede süsteemsete signaalide ignoreerimiseks.
    • os: parandatud os.ls(folder) windowsis, kui kaitstud katalooge ei saa avada.
    • crypto.sha/md5/: parandatud sama hash väärtuse arvutamine mitmekordse .sum() kutsumise jaoks sha1/256/512.
    • os: rakendatud os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
    • json2: lisatud toetust sisemistele struktuuridele.
  • Veeb
    • vweb: lisati mime tüübid staatilistele .md failidele.
    • net.conv: lisatud funktsioonid varinttou64 ja u64tovarint, et kodeerida muutujaid positiivsete täisarvudena, nagu on kirjeldatud rfc-9000 (QUIC-i jaoks).
    • net.http: toetatakse callback-funktsioonide määramist on_running, on_stopped, on_closed http.Server{}-s, samuti show_startup_message: false.
    • net.http: toimetamise HTTP-proksi toetamistserverile http.fetch.
    • net.http: lisada retry mehhanism http.fetch()-s, kui esinevad vältimatud soketi vead.
    • wasm: rakendatud inline assembly.
    • net.http: max_redirects väärtust tõstetud kuni 16.
    • picoev: rakendatud raw režiim failidiskriptoritega otseseks töötamiseks.
    • net.http: unix-sarnastele süsteemidele lisatud socks5 ja http(s) proksi tugi.
  • ORM:
    • orm: lisatud null-väärtuste ja valikuliste väljade töötlemine.
    • orm: is_null/is_not_null operatsioonid on tehtud unaarseteks.
  • Andmebaasi draiverid:
    • pg: C kutsed on kantud .c.v failidesse.
  • Native backend:
    • native: toetab lippu -no-builtin (täitvate failide genereerimine < 1 KB Linuxi jaoks käsuga „v -no-builtin -b native examples/hello_world.v“).
    • native: kasutab i32 int asemel.
  • C-bäkkend:
    • ast, native, cgen: toetatud on "$if native {}".
  • vfmt:
    • Nüüd eemaldab täiendavad reavahed call_expri järel ja enne struktuuri argumente.
    • UTF-8 sümbolitega võtmete kasutamisel on väärtuste joondamine parandatud.
    • Joondatud on ternaarseid väljendeid const plokkides.
  • Tööriistakast:
    • Lisatud @LOCATION toetus, et lihtsustada tõrkeotsingut ilma @FILE ja @LINE kombineerimise vajaduseta käitamise ajal.
    • benchmark: lisatud uued meetodid b.record_measure/1 ja b.all_recorded_measures/0.
    • ci: uuendatud github töövoogu c2v.
    • strings: lisatud meetod Bulder.write_decimal/1 (kümnendarvu salvestamiseks ilma täiendava eraldamiseta).
    • Olemasoleva mooduli installimine vpm abil (windows) on parandatud.
    • tools.vpm: täiustatud aadresside töötlemist, mis lõppevad '.git'.
    • Lisatud nõue v.mod faili olemasolu jaoks moodulite installimisel väliste linkide kaudu vpm abil.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster