Am 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 eigenem Kernel, Bootloader, Standard-C-Bibliothek, Paketmanager, Benutzerraum-Komponenten und einer grafischen Benutzeroberfläche mit einem kompositorischen Fenstermanager geliefert wird.
Ursprünglich wurde das Projekt an der University of Illinois als Forschungsarbeit zur Erstellung neuer kompositorischer grafischer Schnittstellen entwickelt, hat sich jedoch zu einem eigenständigen Betriebssystem gewandelt. Der Code des Projekts ist in C geschrieben und wird unter der GPLv3-Lizenz bereitgestellt. unter der BSD-Lizenz. Für den Download steht ein Live-Image (2.3.1), mit einer Größe von 7,4 MB, das in QEMU, VMware oder VirtualBox getestet werden kann.
ToaruOS basiert auf einem Kernel, der eine hybride modulare Architektur verwendet, die eine monolithische Basis mit Mitteln zur Verwendung von ladbaren Modulen kombiniert. In diesen Modulen sind die meisten vorhandenen Gerätetreiber enthalten, wie z. B. Festplattentreiber (PATA und ATAPI), das Dateisystem 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 Gastsysteme. Der Kernel unterstützt Unix-Threads, TTY, ein virtuelles Dateisystem, das Pseudo-Dateisystem /proc, Multithreading, IPC, Ramdisk, ptrace, gemeinsamen Speicher, Multitasking und weitere typische Funktionen.
Das System ist ausgestattet mit einem Composite-Window-Manager, unterstützt dynamisch gelinkte Executables im ELF-Format, Multitasking, einen Grafik-Stack und kann Python 3 sowie GCC ausführen. Als Dateisystem wird ext2 verwendet. Der Bootloader unterstützt BIOS und EFI. Der Netzwerkstack ermöglicht die Verwendung von BSD-stil Socket APIs und unterstützt Netzwerkinterfaces einschließlich Loopback.
Unter den eigenen Anwendungen sticht ein dem Vi ähnelnder Code-Editor namens Bim hervor, der in den letzten Jahren zur Entwicklung von spezifischen ToaruOS-Anwendungen verwendet wird, wie z. B. einem Dateimanager, einem Terminalemulator, einer grafischen Benutzeroberfläche mit Widget-Unterstützung, einem Paketmanager sowie Bibliotheken zur Unterstützung von Bildern (PNG, JPEG) und TrueType-Schriften. Für ToaruOS wurden Programme wie Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, Super Nintendo Emulator, Bochs usw. portiert.
Das Projekt entwickelt zudem eine eigene dynamische Programmiersprache. Kuroko, der als Ersatz für Python bei der Entwicklung von Dienstprogrammen und Benutzeranwendungen für das System konzipiert ist. Die Syntax ähnelt Python (positioniert als verkürzter Dialekt von Python mit einer expliziten Variablendeklaration) und zeichnet sich durch eine sehr kompakte Implementierung aus. Die Kompilierung und Interpretation von Bytecode wird unterstützt. Der Bytecode-Interpreter bietet eine Garbage Collection, unterstützt Multithreading ohne globale Sperren. Der Compiler und der Interpreter können als kleine gemeinsam nutzbare Bibliothek (~500 KB) kompiliert werden, die in andere Programme integriert und über die 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.
- Im Terminalemulator wurde die Unterstützung von Tabs hinzugefügt, zwischen denen mit der Sequenz Alt-Zahl gewechselt werden kann. Die Emulation von fetten Schriftarten wurde durch doppelte Glyphenüberlagerung realisiert. Es wurden Untermenüs „Terminalzustand“ zur Aktivierung der Anzeige der Zustände verschiedener Modi und „Signal senden“ zur Sendung von Signalen an Hintergrundprozesse hinzugefügt.
- Ein Systemhandbuchbetrachter wurde implementiert, der man-Seiten im roff-Format unterstützt.
- Das Kontextmenü wurde um ein Untermenü zur Verwaltung des Mosaikfenster-Layouts erweitert.
- 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. Die Unterstützung für die Randomisierung der Kernel-Ladeadresse wurde implementiert. Die ABI der Systemaufrufe wurde auf die Verwendung der Befehle syscall/sysret umgestellt.
- Die Möglichkeiten der virtuellen Konsole (TTY) wurden erheblich erweitert, und die Emulation des Textmodus VGA basierend auf dem Framebuffer wurde sichergestellt.
- In der Version für die Architektur Aarch64 wurde die Möglichkeit der Ausführung in virtuellen Maschinen auf Basis von QEMU implementiert.
- Im Netzwerkstack wurde die Unterstützung für den gleichzeitigen Betrieb mehrerer ICMP-Sockets hinzugefügt.
- Der Standardbibliothek libc wurden die Funktionen getdelim, getline, scandir, telldir, rewinddir, seekdir, ftruncate, fchmod, fchown, popen, pclose, sig2str und str2sig hinzugefügt.
- Neue Standardwerkzeuge wie rmdir, uniq, cmp, zcat, realpath, id, nohup und cksum wurden hinzugefügt. Zudem wurden neue Optionen zu ls, grep und fgrep hinzugefügt. Die Werkzeuge ps, top, pstree, killall und pidof wurden neu geschrieben und auf die neue Bibliothek libtoaru_procfs umgestellt, die die Arbeit mit dem Pseudo-Dateisystem /proc vereinheitlicht. Der Kommando-Interpreter esh wurde erweitert.
- Das Tool check-image wurde hinzugefügt, um die Hochladefähigkeit von Bildern durch die Grafikbibliothek zu überprüfen und die Bildgröße auszugeben.
- Die Programmiersprache Kuroko wurde auf Version 1.5rc2.
- Der Texteditor Bim (github.com), der mit Blick auf Vim entwickelt wurde. In der neuen Version wurde die Syntaxhervorhebung verbessert, die Unterstützung für Skripte in Kuroko erweitert und ein neues Eingabe-Autocomplete-System hinzugefügt.
Quelle: linux.org.ru
