28 avril et 5 mai ont eu lieu les versions 2.3 et 2.3.1 du système d'exploitation de type Unix ToaruOS, développé de zéro et livré avec son propre noyau, bootloader, bibliothèque standard C, gestionnaire de paquets, composants de l'espace utilisateur et interface graphique avec un gestionnaire de fenêtres composite.
À 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é vers un système d'exploitation distinct. Le code du projet est écrit en C et est distribué sous licence BSD. Pour le téléchargement, une image live (2.3.1), d'une taille de 7,4 Mo, qui peut être testée dans QEMU, VMware ou VirtualBox.
La base de ToaruOS repose sur un noyau utilisant une architecture modulaire hybride, combinant une base monolithique et des moyens de chargement de modules, sous forme desquels la plupart des pilotes de périphériques disponibles sont présentés, tels que les pilotes de disque (PATA et ATAPI), le système de fichiers Ext2 et ISO9660, framebuffer, claviers, souris, cartes réseau (AMD PCnet FAST, Realtek RTL8139 et Intel PRO/1000), chips audio (Intel AC’97), ainsi que des extensions VirtualBox pour les systèmes invités. Le noyau supporte les threads Unix, TTY, système de fichiers virtuel, pseudo-système de fichiers /proc, multitâche, IPC, ramdisk, ptrace, mémoire partagée, multithreading et d'autres fonctionnalités classiques.
Le système est équipé d'un gestionnaire de fenêtres composite, prend en charge les fichiers exécutables liés dynamiquement au format ELF, la multitâche, la pile graphique, peut exécuter Python 3 et GCC. Le système de fichiers utilisé est ext2. Le bootloader prend en charge BIOS et EFI. La pile réseau permet d'utiliser une API de sockets de style systèmes BSD et prend en charge les interfaces réseau, y compris loopback.
Parmi les applications développées, un éditeur de code similaire à Vi, Bim, est utilisé depuis quelques années pour créer des applications spécifiques à ToaruOS, telles que gestionnaire de fichiers, émulateur de terminal, barre graphique avec prise en charge des widgets, 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, émulateur Super Nintendo, Bochs, etc. ont été portés vers ToaruOS.
Le projet développe également son propre langage de programmation dynamique Kuroko, conçu pour remplacer Python dans le développement d'outils et d'applications utilisateur pour le système. Le langage, dont la syntaxe rappelle celle de Python (positionné comme un dialecte abrégé de Python avec une définition explicite des variables), se distingue par une implementation très compacte. Il prend en charge la compilation et l'interprétation du bytecode. L'interpréteur de bytecode fournit un ramasse-miettes, prend en charge la multithreading sans utiliser de verrou global. Le compilateur et l'interpréteur peuvent être assemblés sous la forme d'une petite bibliothèque partagée (~500Ko), intégrable avec d'autres programmes et extensible via C API. En plus de ToaruOS, le langage peut être utilisé sous Linux, macOS, Windows et s'exécuter dans des navigateurs supportant WebAssembly.
Dans nouvelle version:
- L'émulateur de terminal a ajouté la prise en charge des onglets, avec lesquels on peut basculer en utilisant la séquence Alt-chiffre. L'émulation de la graisse des polices a été mise en œuvre via un double superposition des glyphes. Des sous-menus « État du terminal » ont été ajoutés pour afficher l'état des différents modes et « Envoyer un signal » pour envoyer des signaux aux processus en arrière-plan.
- Un visualiseur de manuels système a été implémenté, prenant en charge les pages man au format roff.
- Un sous-menu a été ajouté au menu contextuel pour gérer la disposition mosaïque des fenêtres.
- Le noyau a implémenté de nouveaux appels système, parmi lesquels pread/pwrite, sigsuspend, sigqueue, lchown, pipe2, dup3, getrusage et fcntl. Le support pour les drapeaux FD_CLOEXEC et FD_CLOFORK a été ajouté. Le soutien à la randomisation de l'adresse de chargement du noyau a été mis en œuvre. L'ABI des appels système a été transformée pour utiliser les instructions syscall/sysret.
- Les capacités de la console virtuelle (TTY) ont été considérablement étendues, offrant une émulation du mode texte VGA basé sur le framebuffer.
- Dans la version pour l'architecture Aarch64, la possibilité de démarrer dans des machines virtuelles basées sur QEMU a été implémentée.
- Le pile réseau a ajouté le support de la gestion simultanée de plusieurs sockets ICMP.
- Des fonctions telles que getdelim, getline, scandir, telldir, rewinddir, seekdir, ftruncate, fchmod, fchown, popen, pclose, sig2str, et str2sig ont été ajoutées à la bibliothèque standard libc.
- De nouvelles utilitaires standards rmdir, uniq, cmp, zcat, realpath, id, nohup, cksum ont été ajoutés. De nouvelles options ont été ajoutées à ls, grep et fgrep. Les utilitaires ps, top, pstree, killall et pidof ont été réécrits et sont désormais basés sur la nouvelle bibliothèque libtoaru_procfs, qui unifie le fonctionnement avec le pseudo-système de fichiers /proc. L'interpréteur de commandes esh a été étendu.
- L'utilitaire check-image a été ajouté pour vérifier si une image peut être chargée par la bibliothèque graphique et pour afficher les dimensions de l'image.
- Le langage de programmation Kuroko a été mis à jour vers la version 1.5rc2.
- Le texte de l'éditeur a été mis à jour à la version 3.2 Bim (github.com), créé en tenant compte de Vim. Dans la nouvelle version, la mise en surbrillance de la syntaxe a été améliorée, le support des scripts en Kuroko a été étendu, et un nouveau système d'auto-complétion a été ajouté.
Source : linux.org.ru
