Drew DeVault, der Autor der Benutzeroberfläche Sway, des E-Mail-Clients Aerc und der Plattform für gemeinsame Entwicklung SourceHut, hat die Version 0.24.2 der Programmiersprache Hare veröffentlicht (die Versionsnummer setzt sich aus 0.YY.Q zusammen, wobei YY die letzten beiden Ziffern des Jahres und Q die Quartalsnummer ist). Hare wird als eine Systemprogrammiersprache vorgestellt, die der Programmiersprache C ähnlich ist, jedoch einfacher als C. Der Quellcode des Compilers und der Tools wird unter der GPLv3-Lizenz bereitgestellt, der Code der Standardbibliothek unter der MPL (Mozilla Public License).
Die Sprache ist optimiert für Lösungen von niedrig-leveligen Aufgaben, wie die Entwicklung von Betriebssystemen, Compilern, Netzwerk-Anwendungen und System-Utilities, bei denen maximale Performance und vollständige Kontrolle über die Ausführung erforderlich sind. Die Sprache verwendet manuelle Speicherverwaltung und ein statisches Typsystem, bei dem jeder Variablen ausdrücklich ein bestimmter Typ zugewiesen werden muss.
Für die Ausführung der Anwendung wird eine minimale Laufzeitumgebung bereitgestellt, während für die Entwicklung eine Standardbibliothek von Funktionen zur Verfügung steht, die den Zugang zu den grundlegenden Schnittstellen des Betriebssystems ermöglicht und Funktionen zum Umgang mit Standardalgorithmen, Protokollen und Formaten bietet, einschließlich Mitteln für die Verwendung von regulären Ausdrücken und Verschlüsselung. Für die Entwicklung grafischer Anwendungen wird das Werkzeugset hare-wayland weiterentwickelt sowie Bindungen für den Zugriff auf Möglichkeiten von GTK, Vulkan, OpenGL, SDL2 und libui angeboten.
In der neuen Version:
- Unterstützung des Betriebssystems NetBSD hinzugefügt (neben den bereits unterstützten OpenBSD, FreeBSD und Linux).
- Syntax zur Definition von "for-each"-Schleifen hinzugefügt, die das Durchlaufen von Elementen in Arrays und Slices vereinfachen. let items = [1, 2, 3, 4, 5]; for (let item .. items) { fmt::println(item)!; };
- Die Möglichkeit zur Definition von optionalen Funktionsparametern wurde bereitgestellt, deren Standardwerte beim Definieren der Funktion festgelegt werden. fn example(x: int, y: int = 34) void = { // … }; example(12); //entspricht dem Aufruf example(12, 34);
- Die Leistung des bufio-Moduls und der damit verbundenen APIs, die gepufferten Ein-/Ausgabe wie unix::resolvconf, unix::hosts und unix::passwd verwenden, wurde verbessert.
- Im Modul „regex::“ wurde in regulären Ausdrücken die Verwendung von Mustern wie „(ha|py|sh)“ ermöglicht, um mehrere Auswahlmöglichkeiten anzugeben.
- Unterstützung für Shared Memory (shm_open) und den memfd-Mechanismus wurde hinzugefügt, der es ermöglicht, einen Speicherbereich über einen zwischen Prozessen übermittelten Dateideskriptor zu identifizieren. Der Shared Memory kann für die Inter-Prozess- und Intra-Prozess-Kommunikation verwendet werden und wird bereits in der Implementierung des Clients verwendet. сервера Wayland hare-wayland.
- Kryptografische Funktionen wie crypto::ec, crypto::ecdh und crypto::ecdsa wurden hinzugefügt.
Quelle: opennet.ru
