Llançament del llenguatge de programació V 0.4.3

Després de 40 dies de desenvolupament, s'ha publicat una nova versió del llenguatge de programació V (vlang) escrit de manera estàtica. Els objectius principals en la creació de V eren la facilitat d'aprenentatge i ús, alta llegibilitat, compilació ràpida, augment de la seguretat, desenvolupament eficient, ús multiplataforma, millora de la interoperabilitat amb el llenguatge C, millor maneig d'errors, capacitats modernes i programes més fàcils de mantenir. El codi del compilador, les biblioteques i les eines relacionades són de codi obert sota la llicència MIT.

En la nova versió:

  • Millores del llenguatge:
    • Nou mòdul “encoding.xml amb analitzador, validació, proves unitàries.
    • Suport millorat per a couroutines (IO, xarxa).
    • Redueix un 80% les operacions d'assignació de memòria a les aplicacions vweb.
    • Implementació de "@VCURRENTHASH" per substituir "C.V_CURRENT_COMMIT_HASH".
    • S'ha iniciat la promoció d'un nou tipus int, associat al tipus i64 (anteriorment, el tipus int s'identificava amb el tipus i32).
    • S'han corregit les regles de comprovació de tipus per al nou tipus int i la generació de codi optimitzada.
  • Canvis de l'API que trenquen la compatibilitat:
    • El diccionari "Request.cookies" ha quedat obsolet. Substituït per "Request.cookie()" i "Request.add_cookie()".
    • Regles més estrictes per als tipus C, que ara s'han de declarar sempre.
  • Canvis del sistema de verificació de tipus:
    • L'avís sobre la divisió opció/resultat s'ha mogut a una categoria d'error.
    • Arregla la crida a "fn" amb un argument opcional en mode lliure.
    • La comprovació de noms ha tornat: pascal per als àlies.
    • C.xx = Àlies C.yy.
    • Permet l'emissió de tipus enters com a intervals en blocs matemàtics.
    • Advertència sobre l'abandonament del tipus byte (a favor del tipus u8) quan s'utilitza com a paràmetre fn.
    • Corregiu el mètode d'afegit per a matrius genèriques.
    • Comprovació d'un error en la implementació de la interfície privada d'un altre mòdul.
    • S'ha solucionat la comprovació dels valors negatius de cap i len quan s'iniciava una matriu.
    • Convertint l'avís sobre els noms dels mòduls var i paràmetres duplicats en un error.
    • Permet la reassignació de tota la variable compartida (mantenint l'estat anterior del mutex).
  • Millores de l'analitzador:
    • S'ha corregit l'assignació d'un mètode estàtic a funcions anònimes.
    • ast: S'ha corregit el format de la declaració d'estructura amb estructura imbricada.
    • S'han afegit mètodes set_all + clear_all als camps de bits "[bandera]".
    • Adverteix sobre les importacions no utilitzades, encara que es declarin amb "import math { sin, cos }".
  • Canvis del compilador:
    • checker, builder, pref: admet el senyalador "-dump-defines" per veure totes les definicions d'usuari i sistema disponibles per a un programa determinat.
    • maps: s'han afegit funcions maps.merge() i maps.merge_in_place().
  • Biblioteca estàndard:
    • incorporat: s'ha afegit el mètode "insegur {a.reset()}" per establir ràpidament tots els bytes d'una matriu a 0.
    • math.fractions: utilitza la sobrecàrrega d'operadors i abandona les funcions antigues.
    • gg: Corregiu l'alineació de la vora inferior draw_rounded_rect_empty a macos i linux.
    • crypto.bcrypt: error corregit a bcrypt.
    • sokol: actualitzat a la darrera versió
    • incorporat: mida fixa de (C.BOOL) (específic de Windows).
    • math.big: corregeix la divisió incorrecta amb nombres negatius.
    • os: S'ha afegit una manera convenient d'ignorar alguns senyals del sistema.
    • os: arregla os.ls(carpeta) a Windows quan el directori protegit no es pot obrir.
    • crypto.sha/md5/: S'ha corregit el càlcul dels mateixos valors hash quan es crida a .sum() diverses vegades per a sha1/256/512.
    • os: implementat os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1.
    • json2: suport afegit per a estructures imbricades.
  • Web
    • vweb: s'han afegit tipus MIME per a fitxers .md estàtics.
    • net.conv: S'han afegit les funcions varinttou64 i u64tovarint per a la codificació variable dels enters sense signe descrits a rfc-9000 (per a QUIC).
    • net.http: admet l'especificació de funcions de devolució de trucada on_running, on_stopped, on_closed a http.Server{}, així com show_startup_message: false.
    • net.http: Suport de pas a través del proxy HTTPservidor a http.fetch.
    • net.http: afegiu un mecanisme de reintent a http.fetch() per a errors de socket inevitables.
    • wasm: muntatge en línia implementat.
    • net.http: valor max_redirects augmentat a 16.
    • picoev: implementació del mode raw per al treball directe amb descriptors de fitxers.
    • net.http: suport afegit per als servidors intermediaris socks5 i http(s) per a sistemes semblants a Unix.
  • ORM:
    • orm: tractament afegit de valors nuls i camps opcionals.
    • orm: les operacions is_null/is_not_null es fan unàries.
  • Controladors de bases de dades:
    • pg: les trucades C s'han mogut a fitxers .cv.
  • Backend natiu:
    • natiu: suport -no-builtin flag (generar executables Linux de <1KB amb "v -no-builtin -b exemples natius/hello_world.v").
    • natiu: utilitzeu i32 en lloc d'int.
  • C-backend:
    • ast, native, cgen: s'ha afegit suport per a "$if native {}".
  • vfmt:
    • Ara elimina els salts de línia addicionals després de call_expr i abans dels arguments de l'estructura.
    • S'ha corregit l'alineació de valors quan s'utilitzen claus amb caràcters uft8.
    • Alineació d'expressions ternàries en blocs const.
  • Eines:
    • S'ha afegit el suport @LOCATION per facilitar la depuració sense haver de combinar @FILE i @LINE en temps d'execució.
    • benchmark: s'han afegit nous mètodes b.record_measure/1 i b.all_recorded_measures/0.
    • ci: flux de treball github c2v actualitzat.
    • cadenes: s'ha afegit el mètode Bulder.write_decimal/1 (per escriure un nombre decimal, sense assignacions addicionals).
    • S'ha solucionat la instal·lació d'un mòdul existent mitjançant vpm (windows).
    • tools.vpm: treball millorat amb adreces acabades en ".git".
    • S'ha afegit un requisit per a un fitxer v.mod per instal·lar mòduls mitjançant enllaços externs mitjançant vpm.

Font: opennet.ru

Afegeix comentari