28. April und 5. Mai fanden statt die Veröffentlichungen 2.3 und 2.3.1 des Unix-ähnlichen Betriebssystems ToaruOS, das von Grund auf neu entwickelt wurde und mit einem eigenen Kernel, Bootloader, Standard-C-Bibliothek, Paketmanager, Benutzerraumkomponenten und einer grafischen Benutzeroberfläche mit einem kompositorischen Fenstermanager ausgeliefert wird.
Ursprünglich wurde das Projekt an der University of Illinois als Forschungsarbeit zur Schaffung neuer kompositorischer grafischer Benutzeroberflächen entwickelt, verwandelte sich jedoch später in ein eigenständiges Betriebssystem. Der Projektcode ist in C geschrieben und wird verbreitet unter der BSD-Lizenz. Zum Download steht ein Live-Image (2.3.1), das 7,4 MB groß ist und in QEMU, VMware oder VirtualBox getestet werden kann.
ToaruOS basiert auf einem Kernel, der eine hybride modulare Architektur verwendet, die eine monolithische Basis mit Funktionen zur Nutzung von ladbaren Modulen kombiniert, in denen die meisten vorhandenen Gerätetreiber gestaltet sind, wie z. B. Festplattentreiber (PATA und ATAPI), Dateisysteme Ext2 und ISO9660, Framebuffer, Tastaturen, Mäuse, Netzwerkkarten (AMD PCnet FAST, Realtek RTL8139 und Intel PRO/1000), Soundchips (Intel AC’97) sowie VirtualBox-Erweiterungen für Gastbetriebssysteme. Der Kernel unterstützt Unix-Threads, TTY, virtuelle Dateisysteme, Pseudo-Dateisysteme /proc, Multithreading, IPC, Ramdisk, ptrace, gemeinsamen Speicher, Multitasking und andere gängige Funktionen.
Das System ist ausgestattet mit einem kompositorischen Fenstermanager, unterstützt dynamisch verlinkbare ausführbare Dateien im ELF-Format, Multitasking, einen Grafik-Stack und kann Python 3 und GCC ausführen. Als Dateisystem kommt ext2 zum Einsatz. Der Bootloader unterstützt BIOS und EFI. Der Netzwerk-Stack ermöglicht die Verwendung einer BSD-ähnlichen Socket-API und unterstützt Netzwerkinterfaces, einschließlich Loopback.
Zu den hauseigenen Anwendungen gehört ein Vi-ähnlicher Code-Editor Bim, der in den letzten Jahren zur Entwicklung spezifischer ToaruOS-Anwendungen wie einem Dateimanager, einem Terminal-Emulator, einer grafischen Leiste mit Widget-Unterstützung, einem Paketmanager und Bibliotheken zur Unterstützung von Bildern (PNG, JPEG) sowie TrueType-Schriften verwendet wird. Für ToaruOS wurden Programme wie Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, Super Nintendo Emulator, Bochs usw. portiert.
Das Projekt entwickelt auch eine eigene dynamische Programmiersprache Kuroko, entwickelt als Ersatz für Python bei der Erstellung von Tools und Benutzeranwendungen für das System. Die Sprache ähnelt im Syntax Python (positioniert als verkürzter Dialekt von Python mit expliziter Variablenbestimmung) und zeichnet sich durch eine sehr kompakte Implementierung aus. Es unterstützt die Kompilierung und Interpretation von Byte-Code. Der Byte-Code-Interpreter bietet einen Garbage Collector und unterstützt Multithreading ohne Verwendung einer globalen Sperre. Der Compiler und der Interpreter können in Form einer kleinen, gemeinsam nutzbaren Bibliothek (~500 KB) erstellt werden, die in andere Programme integriert und über die C-API erweitert werden kann. Neben ToaruOS kann die Sprache in Linux, macOS, Windows verwendet und in Browsern mit WebAssembly-Unterstützung ausgeführt werden.
Im neuen Version:
- Im Terminalemulator wurde die Unterstützung von Tabs hinzugefügt, zwischen denen man mit der Kombination Alt-Zahl wechseln kann. Eine Emulation von fetten Schriftarten wurde durch doppelte Überlagerung von Glyphen realisiert. Es wurden Untermenüs "Terminalzustand" für die Anzeige des Status verschiedener Modi und "Signal senden" zum Senden von Signalen an Hintergrundprozesse hinzugefügt.
- Ein Systemhandbuchbetrachter wurde implementiert, der man-Seiten im roff-Format unterstützt.
- Dem Kontextmenü wurde ein Untermenü hinzugefügt, um die Kachelanordnung der Fenster zu steuern.
- Im Kernel wurden neue Systemaufrufe implementiert, darunter pread/pwrite, sigsuspend, sigqueue, lchown, pipe2, dup3, getrusage und fcntl. Unterstützung für die Flags FD_CLOEXEC und FD_CLOFORK wurde hinzugefügt. Unterstützung für die Randomisierung der Kernel-Ladeadresse wurde umgesetzt. Die ABI der Systemaufrufe wurde auf die Verwendung von syscall/sysret-Instruktionen umgestellt.
- Die Möglichkeiten der virtuellen Konsole (TTY) wurden erheblich erweitert, die Emulation des VGA-Zeichnungsmodus auf Basis des Framebuffers wurde sichergestellt.
- In der Version für die Architektur Aarch64 wurde die Möglichkeit zur Ausführung in virtuellen Maschinen auf Basis von QEMU implementiert.
- Im Netzwerkstack wurde die Unterstützung für die gleichzeitige Verwendung mehrerer ICMP-Sockets eingeführt.
- Im Standardbibliothek libc wurden die Funktionen getdelim, getline, scandir, telldir, rewinddir, seekdir, ftruncate, fchmod, fchown, popen, pclose, sig2str und str2sig hinzugefügt.
- Neue Standard-Utilities rmdir, uniq, cmp, zcat, realpath, id, nohup, cksum wurden hinzugefügt. Neue Optionen wurden für ls, grep und fgrep hinzugefügt. Die Utilities ps, top, pstree, killall und pidof wurden neu geschrieben und auf die neue Bibliothek libtoaru_procfs portiert, die die Arbeit mit dem Pseudo-Dateisystem /proc vereinheitlicht. Der Kommandozeileninterpreter esh wurde erweitert.
- Das Utility check-image wurde hinzugefügt, um die Möglichkeit der Bildladung durch die grafische Bibliothek zu überprüfen und die Bildgröße auszugeben.
- Die Programmiersprache Kuroko wurde auf Version 1.5rc2.
- Der Texteditor wurde auf Version 3.2 aktualisiert Bim (github.com), entwickelt mit Blick auf Vim. In der neuen Version wurde die Syntaxhervorhebung verbessert, die Unterstützung für Skripte in Kuroko erweitert und ein neues System zur automatischen Vervollständigung des Eingabefeldes hinzugefügt.
Quelle: linux.org.ru
