La version 2.1 du système d'exploitation de type Unix ToaruOS a été publiée. Ce système est conçu de zéro et comprend son propre noyau, chargeur de démarrage, bibliothèque standard C, gestionnaire de paquets, composants de l'espace utilisateur et interface graphique avec un gestionnaire de fenêtres composites. À l'origine, le projet a été développé à l'Université de l'Illinois comme un travail de recherche dans le domaine de la création de nouvelles interfaces graphiques composites, mais il a ensuite évolué en un système d'exploitation distinct. Le code du projet est écrit en C et est distribué sous licence BSD. Une image live de 14,4 Mo est disponible pour test sur QEMU, VMware ou VirtualBox.

Au cœur de ToaruOS se trouve un noyau qui utilise une architecture modulaire hybride, combinant une base monolithique et des moyens pour utiliser des modules chargés, sous la forme desquels sont réalisés la plupart des pilotes de périphériques existants, tels que les pilotes de disque (PATA et ATAPI), le système de fichiers EXT2 et ISO9660, le framebuffer, les claviers, les souris, les cartes réseau (AMD PCnet FAST, Realtek RTL8139 et Intel PRO/1000), les chipsets audio (Intel AC’97), ainsi que des extensions pour VirtualBox destinées aux systèmes invités. Le noyau prend en charge les threads Unix, TTY, le système de fichiers virtuel, le pseudo-système de fichiers /proc, le multithreading, l'IPC, ramdisk, ptrace, la mémoire partagée, le multitâche et d'autres fonctionnalités typiques.
Le système est doté d'un gestionnaire de fenêtres composites, prend en charge les exécutables dynamiquement liés au format ELF, le multitâche, et un stack graphique. Il peut exécuter Python 3 et GCC. Le système de fichiers utilisé est ext2. Le chargeur prend en charge le BIOS et l'EFI. La pile réseau permet d'utiliser une API de sockets de style BSD et prend en charge des interfaces réseau, y compris le loopback.
Parmi ses propres applications, on trouve un éditeur de code similaire à Vi, Bim, qui est utilisé depuis plusieurs années pour le développement d'applications spécifiques à ToaruOS, comme un gestionnaire de fichiers, un émulateur de terminal, un panneau graphique avec prise en charge des widgets, un gestionnaire de paquets, ainsi que des bibliothèques pour la prise en charge des images (PNG, JPEG) et des polices TrueType. Des programmes tels que Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, et l'émulateur Super Nintendo ont été portés vers ToaruOS.
Le projet développe également son propre langage de programmation dynamique, Kuroko, destiné à remplacer Python pour le développement d'utilitaires et d'applications pour le système. Sa syntaxe est similaire à celle de Python (positionné comme un dialecte raccourci de Python avec une définition explicite des variables) et se distingue par une mise en œuvre très compacte. Il prend en charge la compilation et l'interprétation du bytecode. L'interpréteur de bytecode intègre un ramasse-miettes et prend en charge la multithreading sans utiliser de verrou global. Le compilateur et l'interpréteur peuvent être construits sous la forme d'une petite bibliothèque partagée (~500 Ko), intégrable avec d'autres programmes et extensible via l'API C. En plus de ToaruOS, le langage peut être utilisé sous Linux, macOS, Windows et s'exécuter dans des navigateurs prenant en charge WebAssembly.
Dans cette nouvelle version :
- Un support initial de l'architecture AArch64 (ARMv8) a été ajouté, y compris la possibilité expérimentale d'exécuter ToaruOS sur la carte Raspberry Pi 400 et dans l'émulateur QEMU.
- La gestion et la transmission des signaux aux processus en espace utilisateur ont été retravaillées. Les appels sigaction, sigprocmask, sigwait et sigsuspend ont été implémentés.
- La gestion de la mémoire en espace utilisateur a été améliorée. Un nouvel appel système munmap a été ajouté.
- Un effet de flou a été mis en œuvre dans le gestionnaire composite et le traitement des événements lors du redimensionnement des fenêtres a été revu.
- Le rendu du terminal a été amélioré, le rendu différé a été ajouté et un cache de glyphes pour les polices TrueType a été instauré.
- Les fonctionnalités de l'agencement ont été étendues.
- Des mécanismes pour régler l'heure ont été ajoutés, y compris l'appel système settimeofday et les capacités de l'utilitaire date ont été étendues.
- La pile réseau a été améliorée. L'utilitaire ifconfig a été mis à jour pour prendre en charge la configuration des adresses IPv4 et les paramètres de routage. L'opération des sockets ICMP a été assurée. Le support de la fonction recvfrom pour les sockets UDP et ICMP a été ajouté.
- Le chargeur a été amélioré pour fonctionner avec des claviers USB.
- Un élément pour supprimer des fichiers a été ajouté au menu contextuel du gestionnaire de fichiers.
- L'affichage des graphiques dans le moniteur système a été amélioré.
- L'outil grep a été ajouté avec le support des expressions régulières.
- Sortie de la commande ps améliorée (colonnes supplémentaires ajoutées).

Source : opennet.ru
