Release der Programmiersprache V 0.4.3

Nach 40 Tagen der Entwicklung wurde eine neue Version der statisch typisierten Programmiersprache V (vlang) veröffentlicht. Die Hauptziele bei der Erstellung von V waren einfache Erlernbarkeit und Nutzung, hohe Lesbarkeit, schnelle Kompilierung, verbesserte Sicherheit, effiziente Entwicklung, plattformübergreifende Nutzung, verbesserte Interaktion mit der Programmiersprache C, bessere Fehlerbehandlung, moderne Features und eine benutzerfreundlichere Wartung von Programmen. Der Code des Compilers, der Bibliotheken und begleitender Werkzeuge steht unter der MIT-Lizenz.

In der neuen Version:

  • Verbesserungen in der Sprache:
    • Neues Modul „encoding.xml“ mit Parser, Validierung, Unit-Tests.
    • Verbesserte Unterstützung für Co-Routinen (IO, Netzwerk).
    • Reduzierung der Speicherzuweisungsoperationen in V-Web-Anwendungen um 80%.
    • Implementierung von „@VCURRENTHASH“ zur Ablösung von „C.V_CURRENT_COMMIT_HASH“.
    • Einführung eines neuen int-Typs, der dem i64-Typ zugeordnet ist (zuvor wurde der int-Typ mit dem i32-Typ gleichgesetzt).
    • Korrektur der Typprüfungsregeln für den neuen int-Typ und Optimierung der Codegenerierung.
  • Änderungen in der API, die die Kompatibilität beeinträchtigen:
    • Das Wörterbuch „Request.cookies“ wurde als veraltet erklärt. An dessen Stelle treten „Request.cookie()“ und „Request.add_cookie()“.
    • Strengere Regeln für Typen C, die nun immer deklariert werden müssen.
  • Änderungen im Typsystem:
    • Die Warnung über die Trennung von option/result wurde in die Fehlerkategorie verschoben.
    • Fehlerbehebung beim Aufruf von «fn» mit einem optionalen Argument im Autofree-Modus.
    • Die Namensprüfung ist zurückgekehrt: Pascal-Schreibweise für Aliase.
    • C.xx = C.yy Aliase.
    • Die Typumwandlung von Ganzzahlen in Bereiche (ranges) ist in Math-Blöcken erlaubt.
    • Warnung vor der Abwertung des Typs byte (zugunsten von u8), wenn er als Parameter für fn verwendet wird.
    • Behebung der append-Methode für generische Arrays.
    • Überprüfung auf Implementierungsfehler eines privaten Interfaces eines anderen Moduls.
    • Überprüfung auf negative Werte von cap und len bei der Initialisierung von Arrays korrigiert.
    • Umwandlung der Warnung über doppelte Modulnamen var und param in einen Fehler.
    • Ermöglichen Sie die vollständige Neuzuordnung einer gemeinsamen Variablen (bei Beibehaltung des vorherigen Zustands des Mutex).
  • Verbesserungen des Parsers:
    • Behebung der Zuweisung von statischen Methoden zu anonymen Funktionen.
    • ast: Korrektur der Formatierung der struct-Deklaration mit eingebetteter Struktur.
    • Methoden set_all + clear_all für Bitfelder «[flag]» hinzugefügt.
    • Warnung vor ungenutzten Imports, selbst wenn sie über „import math { sin, cos }“ deklariert sind.
  • Änderungen am Compiler:
    • checker, builder, pref: Unterstützung des Flags „-dump-defines“, um alle verfügbaren Benutzer- und Systemdefinitionen dieses Programms anzuzeigen.
    • maps: Funktionen maps.merge() und maps.merge_in_place() hinzugefügt.
  • Standardbibliothek:
    • builtin: Methode „unsafe { a.reset() }“ hinzugefügt, um alle Bytes in einem Array schnell auf 0 zu setzen.
    • math.fractions: Verwendung von Operatorüberladungen und Abkehr von älteren Funktionen.
    • gg: Ausrichtung der unteren Kante von draw_rounded_rect_empty unter macOS und Linux korrigiert.
    • crypto.bcrypt: Fehler in bcrypt behoben.
    • sokol: auf die neueste Version aktualisiert.
    • builtin: sizeof(C.BOOL) (spezifisch für Windows) korrigiert.
    • math.big: Fehler bei der Division mit negativen Zahlen korrigiert.
    • os: Benutzerfreundliche Methode zum Ignorieren bestimmter Systemsignale hinzugefügt.
    • os: Korrektur von os.ls(folder) in Windows, wenn ein geschützter Ordner nicht geöffnet werden kann.
    • crypto.sha/md5/: Berechnung identischer Hash-Werte bei mehrfacher Ausführung von .sum() für sha1/256/512 korrigiert.
    • os: os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1 implementiert.
    • json2: Unterstützung für verschachtelte Strukturen hinzugefügt.
  • Web
    • vweb: MIME-Typen für statische .md-Dateien hinzugefügt.
    • net.conv: Funktionen varinttou64 und u64tovarint zur Kodierung von variablen unsigned Integers, wie in RFC-9000 beschrieben (für QUIC), hinzugefügt.
    • net.http: Unterstützung für die Angabe von Callback-Funktionen on_running, on_stopped, on_closed in http.Server{}, sowie show_startup_message: false.
    • net.http: Unterstützung für den HTTP-Proxy-Transport in http.fetch.Server net.http: Mechanismus für Wiederholungsversuche in http.fetch() bei unvermeidbaren Socket-Fehlern hinzugefügt.
    • wasm: Inline-Assembly implementiert.
    • net.http: Wert max_redirects auf bis zu 16 erhöht.
    • picoev: Rohmodus für direkten Zugriff auf Dateideskriptoren implementiert.
    • net.http: Unterstützung für Socks5 und HTTP(S)-Proxy für unixähnliche Systeme hinzugefügt.
    • ORM:
  • orm: Verarbeitung von Nullwerten und optionalen Feldern hinzugefügt.
    • orm: Operationen is_null/is_not_null wurden unär gemacht.
    • Datenbanktreiber:
  • pg: C-Aufrufe in .c.v-Dateien verschoben.
    • Native Backend:
  • native: Unterstützung des Flags -no-builtin (Erzeugen von ausführbaren Dateien < 1 KB für Linux mit «v -no-builtin -b native examples/hello_world.v»).
    • native: Verwendung von i32 anstelle von int.
    • C-Backend:
  • ast, native, cgen: Unterstützung für «$if native {}» hinzugefügt.
    • vfmt:
  • Entfernt nun zusätzliche Zeilenumbrüche nach call_expr und vor den Strukturargumenten.
    • Jetzt entfernt es zusätzliche Zeilenumbrüche nach call_expr und vor den Argumenten der Struktur.
    • Die Ausrichtung von Werten bei der Verwendung von UTF-8-Schlüsseln wurde korrigiert.
    • Ausrichtung der ternären Ausdrücke in const-Blöcken.
  • Werkzeugkasten:
    • @LOCATION Unterstützung hinzugefügt, um das Debugging zu erleichtern, ohne @FILE und @LINE zur Laufzeit kombinieren zu müssen.
    • Benchmark: neue Methoden b.record_measure/1 und b.all_recorded_measures/0 hinzugefügt.
    • CI: GitHub-Workflow c2v aktualisiert.
    • Strings: Methode Bulder.write_decimal/1 hinzugefügt (zum Schreiben von Dezimalzahlen ohne zusätzliche Allokationen).
    • Das Installieren eines bereits vorhandenen Moduls mit VPM (Windows) wurde korrigiert.
    • tools.vpm: Verbesserte Handhabung von Adressen, die auf '.git' enden.
    • Eine Datei v.mod wird für die Installation von Modulen über externe Links mit VPM benötigt.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster