De nieuwe versie 2.1 van het Unix-achtige besturingssysteem ToaruOS is uitgebracht. Dit systeem is vanaf nul geschreven en wordt geleverd met zijn eigen kernel, bootloader, standaard C-bibliotheek, pakketbeheerder, gebruikersruimtecomponenten en een grafische interface met een compositing window manager. Het project is oorspronkelijk ontwikkeld aan de Universiteit van Illinois als een onderzoeksproject op het gebied van nieuwe compositing grafische interfaces, maar is later geëvolueerd naar een zelfstandig besturingssysteem. De code is geschreven in C en wordt verspreid onder de BSD-licentie. Er is een live-image beschikbaar van 14,4 MB, dat kan worden getest in QEMU, VMware of VirtualBox.

De basis van ToaruOS is een kernel die gebruikmaakt van een hybride modulaire architectuur, die een monolithische basis combineert met de mogelijkheid om geladen modules te gebruiken, in de vorm waarvan de meeste bestaande stuurprogramma's zijn vormgegeven, zoals schijfstuurprogramma's (PATA en ATAPI), bestandssystemen EXT2 en ISO9660, framebuffer, toetsenborden, muizen, netwerkkaarten (AMD PCnet FAST, Realtek RTL8139 en Intel PRO/1000), geluidschips (Intel AC’97), evenals VirtualBox-add-ons voor gastsystemen. De kernel ondersteunt Unix-threads, TTY, virtueel bestandssysteem, pseudo-bestandssysteem /proc, multithreading, IPC, ramdisk, ptrace, gedeeld geheugen, multitasking en andere standaardfuncties.
Het systeem is uitgerust met een compositing window manager, ondersteunt dynamisch gekoppelde uitvoerbare bestanden in ELF-formaat, multitasking, een grafische stack en kan Python 3 en GCC uitvoeren. Het gebruikt de ext2-bestandssysteem. De bootloader ondersteunt zowel BIOS als EFI. De netwerkstack maakt gebruik van een BSD-stijl socket API en ondersteunt netwerkinterfaces, inclusief loopback.
Een opvallende applicatie is de Vi-achtige code-editor Bim, die de afgelopen jaren wordt gebruikt voor de ontwikkeling van ToaruOS-specifieke applicaties, zoals een bestandsbeheerder, terminalemulator, een grafisch paneel met widget-ondersteuning, een package manager, evenals bibliotheken ter ondersteuning van afbeeldingen (PNG, JPEG) en TrueType-lettertypen. Voor ToaruOS zijn programma's zoals Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, Super Nintendo emulator, Bochs, enz. geporteerd.
Het project ontwikkelt ook een eigen dynamische programmeertaal Kuroko, bedoeld ter vervanging van Python voor de ontwikkeling van hulpprogramma's en gebruikersapplicaties voor het systeem. De syntaxis van de taal lijkt op die van Python (gepositioneerd als een verkorte dialect van Python met duidelijke variabeledefinities) en het onderscheidt zich door een zeer compacte implementatie. Compilatie en interpretatie van bytecode worden ondersteund. De bytecode-interpreter biedt een garbage collector, ondersteunt multithreading zonder het gebruik van een globale lock. De compiler en interpreter kunnen worden samengesteld in de vorm van een kleine gedeelde bibliotheek (~500KB), die kan worden geïntegreerd met andere programma's en kan worden uitgebreid via de C API. Naast ToaruOS kan de taal worden gebruikt op Linux, macOS, Windows en worden uitgevoerd in browsers die WebAssembly ondersteunen.
In de nieuwe release:
- Er is initiële ondersteuning toegevoegd voor de AArch64-architectuur (ARMv8), inclusief een experimentele mogelijkheid om ToaruOS op de Raspberry Pi 400 en in de QEMU-emulator te gebruiken.
- De verwerking en overdracht van signalen naar processen in de gebruikersruimte zijn opnieuw ontworpen. Aanroepen zoals sigaction, sigprocmask, sigwait en sigsuspend zijn geïmplementeerd.
- Het geheugenbeheer in de gebruikersruimte is verbeterd. De systeemaanroep munmap is toegevoegd.
- De compositing manager heeft een vervagingseffect geïmplementeerd en de verwerking van evenementen bij het wijzigen van venstergrootte is herzien.
- De weergave van de terminal is verbeterd, uitgestelde weergave is geïmplementeerd en er is een glyph-cache voor TrueType-lettertypen toegevoegd.
- De mogelijkheden van de linker zijn uitgebreid.
- Mechanismen voor het instellen van de klok zijn toegevoegd, waaronder de systeemaanroep settimeofday en de mogelijkheden van de date utility zijn uitgebreid.
- De netwerkstack is verbeterd. De ifconfig utility heeft ondersteuning voor het instellen van IPv4-adressen en routinginstellingen toegevoegd. Hiervoor zijn ICMP-sockets geïmplementeerd. Ondersteuning voor de recvfrom-functie voor UDP- en ICMP-sockets is toegevoegd.
- De bootloader heeft de mogelijkheid om met USB-toetsenborden te werken toegevoegd.
- Een optie voor het verwijderen van bestanden is toegevoegd aan het contextmenu van de verkenner.
- De weergave van grafieken in de systeemonitor is verbeterd.
- De grep-tool is toegevoegd met ondersteuning voor reguliere expressies.
- De uitvoer van de ps-opdracht is verbeterd (extra kolommen toegevoegd).

Bron: opennet.ru
