Es wurde eine neue Version des Unix-ähnlichen Betriebssystems ToaruOS 2.1 veröffentlicht, das von Grund auf neu entwickelt wurde und mit seinem eigenen Kernel, Bootloader, Standard-C-Bibliothek, Paketmanager, Benutzerraum-Komponenten und einer grafischen Benutzeroberfläche mit einem kompositorischen Fenstermanager ausgestattet ist. Ursprünglich wurde das Projekt an der University of Illinois als Forschungsarbeit zur Entwicklung neuer kompositorischer grafischer Schnittstellen entwickelt, hat sich jedoch zu einem eigenständigen Betriebssystem weiterentwickelt. Der Projektcode ist in C geschrieben und wird unter der BSD-Lizenz verbreitet. Ein Live-Image mit einer Größe von 14,4 MB steht zum Herunterladen bereit und kann in QEMU, VMware oder VirtualBox getestet werden.

ToaruOS basiert auf einem Kern, der eine hybride modulare Architektur verwendet, welche die monolithische Basis mit Mechanismen zur Nutzung von ladbaren Modulen kombiniert. In diesem Format sind die meisten verfügbaren Gerätetreiber gestaltet, darunter Festplattentreiber (PATA und ATAPI), das Dateisystem EXT2 und ISO9660, Framebuffer, Tastaturen, Mäuse, Netzwerkadapter (AMD PCnet FAST, Realtek RTL8139 und Intel PRO/1000), Soundchips (Intel AC’97) sowie erweiterungen für VirtualBox zur Unterstützung von Gastsystemen. Der Kern unterstützt Unix-Streams, TTY, ein virtuelles Dateisystem, das Pseudo-Dateisystem /proc, Multithreading, IPC, Ramdisk, ptrace, Shared Memory, Multitasking und andere gängige Funktionen.
Das System ist mit einem kompositen Fenstermanager ausgestattet, unterstützt dynamisch gelinkte ausführbare Dateien im ELF-Format, Multitasking, einen Grafik-Stack und kann Python 3 sowie GCC ausführen. Als Dateisystem wird ext2 verwendet. Der Bootloader unterstützt sowohl BIOS als auch EFI. Der Netzwerk-Stack ermöglicht die Verwendung der BSD-Stil Socket-API und unterstützt Netzwerkinterfaces, einschließlich Loopback.
Eine ähnliche Code-Editor-Anwendung wie Vi ist Bim, die seit mehreren Jahren für die Entwicklung spezifischer ToaruOS-Anwendungen verwendet wird, darunter der Dateimanager, ein Terminalemulator, eine grafische Benutzeroberfläche mit Widget-Unterstützung, ein Paketmanager sowie Bibliotheken zur Unterstützung von Bildformaten (PNG, JPEG) und TrueType-Schriften. Für ToaruOS wurden Programme wie Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, der Super-Nintendo-Emulator, Bochs usw. portiert.
Das Projekt entwickelt auch eine eigene dynamische Programmiersprache namens Kuroko, die als Ersatz für Python bei der Entwicklung von Tools und Benutzeranwendungen für das System gedacht ist. Die Syntax ähnelt Python (positioniert als eine verkürzte Dialektversion von Python mit klarer Variablenzuweisung) und zeichnet sich durch eine sehr kompakte Implementierung aus. Es wird sowohl die Kompilierung als auch die Interpretation von Bytecode unterstützt. Der Bytecode-Interpreter bietet einen Garbage Collector und unterstützt Multithreading ohne globale Sperren. Der Compiler und der Interpreter können als kleine, gemeinsam genutzte Bibliothek (~500 KB) erstellt werden, die in andere Programme integriert und über eine C-API erweitert werden kann. Neben ToaruOS kann die Sprache auch in Linux, macOS, Windows verwendet werden und in Browsern mit WebAssembly-Unterstützung ausgeführt werden.
In der neuen Version:
- Es wurde eine erste Unterstützung für die AArch64-Architektur (ARMv8) hinzugefügt, einschließlich einer experimentellen Möglichkeit, ToaruOS auf dem Raspberry Pi 400 und im Emulator QEMU zu nutzen.
- Die Verarbeitung und Kommunikation von Signalen zwischen Prozessen im Benutzerspeicher wurde überarbeitet. Es wurden die Aufrufe sigaction, sigprocmask, sigwait und sigsuspend implementiert.
- Die Speicherverwaltung im Benutzermodus wurde verbessert. Ein Systemaufruf für munmap wurde hinzugefügt.
- Im Composite-Manager wurde ein Unschärfe-Effekt implementiert und die Ereignisverarbeitung bei Fenstergrößenänderungen überarbeitet.
- Die Terminaldarstellung wurde verbessert, die verzögerte Darstellung umgesetzt und ein Glyphen-Cache für TrueType-Schriften hinzugefügt.
- Die Möglichkeiten des Layout-Managers wurden erweitert.
- Mechanismen zur Zeitstimmung wurden hinzugefügt, einschließlich des Systemaufrufs settimeofday und erweiterter Funktionen des date-Tools.
- Der Netzwerkstapel wurde verbessert. Das Tool ifconfig unterstützt jetzt die Konfiguration von IPv4-Adressen und Routing-Einstellungen. ICMP-Sockets funktionieren jetzt. Die recvfrom-Funktion für UDP- und ICMP-Sockets wurde implementiert.
- Der Bootloader unterstützt nun die Verwendung von USB-Tastaturen.
- Das Kontextmenü des Datei-Managers wurde um eine Option zum Löschen von Dateien erweitert.
- Die Darstellungen von Grafiken im Systemmonitor wurden verbessert.
- Das Tool grep mit Unterstützung für reguläre Ausdrücke wurde hinzugefügt.
- Die Ausgabe des Befehls ps wurde verbessert (zusätzliche Spalten hinzugefügt).

Quelle: opennet.ru
