Drew DeVault hat die Programmiersprache Hare vorgestellt.

Drew DeVault, der Autor der Benutzerumgebung Sway, des E-Mail-Clients Aerc und der Plattform für gemeinsame Entwicklung SourceHut, hat die Programmiersprache Hare vorgestellt, an der er zusammen mit seinem Team in den letzten zweieinhalb Jahren gearbeitet hat. Hare wird als Systemprogrammiersprache präsentiert, die nahe an C liegt, jedoch einfacher als C ist. Ein zentrales Entwurfsprinzip von Hare ist die Ausrichtung auf Vereinfachung und vollstes Vertrauen in die Handlungen des Programmierers (genau das zu tun, was angegeben ist, ohne Eigeninitiative und implizites Verhalten), sowie die Bereitstellung von Hilfsmitteln zur Erkennung typischer Fehler und Probleme.

Die Quelltexte des Compilers und der Werkzeuge werden unter der GPLv3-Lizenz verbreitet, während der Code der Standardbibliothek unter der MPL (Mozilla Public License) lizenziert ist. Im ersten öffentlichen Release wird die Unterstützung für die Betriebssysteme Linux und FreeBSD auf den Plattformen x86_64, aarch64 und riscv64 sowie die autarke Verwendung auf Hardware ohne Betriebssystem angekündigt. In den Plänen wird die Unterstützung für die Betriebssysteme NetBSD, OpenBSD, Illumos, Haiku und Plan 9 sowie die Plattformen ppc64le, i686 und arm32 erwähnt.

In der Sprache wird manuelles Speichermanagement und ein statisches Typsystem verwendet, bei dem jeder Variable ausdrücklich ein bestimmter Typ zugewiesen werden muss. Für die Ausführung einer Anwendung wird eine minimale Runtime angehängt. Die Sprache ist für die Lösung von Low-Level-Aufgaben optimiert, wie die Entwicklung von Betriebssystemen, Compilern, Netzwerk-Anwendungen und Systemwerkzeugen, für die maximale Leistung und vollständige Kontrolle über die Ausführung erforderlich sind.

Für Entwickler wurde eine Standardbibliothek von Funktionen vorbereitet, die Zugriff auf die grundlegenden Schnittstellen des Betriebssystems, gängige Algorithmen sowie Implementierungen von Protokollen und Formaten bietet. Die Bibliothek umfasst Bereiche wie Ein-/Ausgabe, Dateiverwaltung, reguläre Ausdrücke, Verschlüsselung, Netzwerkinteraktion, Zeit- und Datumsoperationen, Zugriff auf gängige Unix-Primitiven (z. B. poll, fnmatch und glob), Parsing und Typprüfung. Separat werden Bindungen bereitgestellt, um auf die Funktionen von OpenGL, SDL2 und libui zuzugreifen.

Als Beispiele für Projekte, die in der Sprache Hare geschrieben wurden, werden das Mikro-Kernel Helios, der Passwort-Manager Himitsu, das Raytracing-System, das Verschlüsselungsprogramm box, der Bittorrent-Daemon btqd, scheduled (ein Pendant zu cron), und toothbrush (Client und für das Protokoll finger) erwähnt. Server In den zukünftigen Plänen wird die Stabilisierung der Sprachspezifikation und der Inhalt der Standardbibliothek hervorgehoben, die Umsetzung der Unterstützung für fehlende Plattformen und Architekturen sowie die Hinzufügung von Bibliotheksfunktionen zur Unterstützung von TLS 1.2 und 1.3.

Beispielcode in der Sprache Hare: use crypto::sha256; use encoding::hex; use fmt; use hash; use io; use os; export fn main() void = { const hash = sha256::sha256(); const file = os::open(„main.ha“)!; defer io::close(file); io::copy(&hash, file)!; let sum: [sha256::SIZE]u8 = [0…]; hash::sum(&hash, sum); hex::encode(os::stdout, sum)!; fmt::println()!; const greetings = [ „Hello, world!“, „¡Hola Mundo!“, „Γειά σου Κόσμε!“, „Привет, мир!“, „こんにちは世界!“, ]; for (let i = 0z; i < len(greetings); i += 1) { fmt::println(greetings[i])!; }; let x: *int = alloc(42); fmt::printfln(„ x: {}“, x)!; fmt::printfln(„*x: {}“, *x)!; free(x); const file = os::open(os::args[1])!; defer io::close(file)!; let buffer: *[65535]u8 = alloc([0…]); defer free(buffer); const n = io::read(file, buffer)! as size; io::write(os::stdout, buffer[..n])!; }; fn sort(items: []int) void = { … }; @test fn sort() void = { let items = [5, 4, 3, 2, 1]; sort(items); for (let i = 1z; i < len(items); i += 1) { assert(items[i — 1] <= items[i], „Liste ist unsortiert“); }; };

Quelle: opennet.ru

60GB SSD 8Gb DDR4