Drew DeVolt hat die Programmiersprache Hare vorgestellt.

Drew DeVault, der Entwickler der Benutzerumgebung Sway, des E-Mail-Clients Aerc und der gemeinsamen Entwicklungsplattform SourceHut, hat die Programmiersprache Hare vorgestellt, an der er und sein Team in den letzten zweieinhalb Jahren gearbeitet haben. Hare wird als Systemprogrammiersprache präsentiert, die eng mit C verwandt ist, jedoch einfacher gestaltet ist. Ein zentrales Designelement von Hare ist die Ausrichtung auf Vereinfachung und das vollumfängliche Vertrauen in die Handlungen des Programmierers (es wird genau das ausgeführt, was angegeben ist, ohne Abweichungen oder implizites Verhalten), während gleichzeitig Hilfsmittel zur Aufdeckung typischer Fehler und Probleme bereitgestellt werden.

Die Quelltexte des Compilers und der Werkzeuge stehen unter der GPLv3-Lizenz, 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 angekündigt, sowie die eigenständige Nutzung zur Ausführung direkt auf der Hardware ohne Betriebssystem. In den Plänen wird auch die Unterstützung für die Betriebssysteme NetBSD, OpenBSD, Illumos, Haiku und Plan 9 sowie die Plattformen ppc64le, i686 und arm32 erwähnt.

Die Sprache verwendet manuelle Speicherverwaltung und ein statisches Typsystem, bei dem jeder Variablen unbedingt ein bestimmter Typ zugewiesen werden muss. Für die Ausführung der Anwendung wird ein minimales Runtime-System angeschlossen. Die Sprache ist optimiert für die Lösung von Low-Level-Aufgaben, wie z.B. die Entwicklung von Betriebssystemen, Compilern, Netzwerkapplikationen und System-Utilities, bei denen maximale Leistung und vollständige Kontrolle über die Ausführung erforderlich sind.

Für Entwickler steht eine Standardbibliothek bereit, die Zugang zu grundlegenden Betriebssystem-Interfaces, standardisierten Algorithmen sowie Implementierungen von Protokollen und Formaten bietet. Die Bibliothek deckt Bereiche wie Ein-/Ausgabe, Dateiverarbeitung, reguläre Ausdrücke, Verschlüsselung, Netzwerkkommunikation, Zeit- und Datumsoperationen, Zugang zu typischen Unix-Primitiven (z.B. poll, fnmatch und glob), sowie Parsing und Typüberprüfung ab. Separat werden Bindungen für den Zugriff auf OpenGL, SDL2 und libui bereitgestellt.

Zu den Beispielen für Projekte, die in der Sprache Hare geschrieben wurden, gehören der Mikrokernel Helios, der Passwortmanager Himitsu, das Raytracing-System, das Verschlüsselungsprogramm Box, der Bittorrent-Daemon btqd, Scheduled (analog zu Cron), und Toothbrush (Client und für das Protokoll Finger). der Server In den Zukunftsplänen wird die Stabilisierung der Sprachspezifikation und der Zusammensetzung der Standardbibliothek hervorgehoben, sowie die Implementierung der Unterstützung fehlender Plattformen und Architekturen und 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 = [ "Hallo, Welt!", "¡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

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