È stato rilasciato il sistema operativo simile a Unix ToaruOS 2.1, sviluppato da zero e fornito con il proprio kernel, bootloader, libreria standard in C, gestore di pacchetti, componenti dello spazio utente e interfaccia grafica con gestore di finestre compositivi. Inizialmente, il progetto è stato sviluppato presso l'Università dell'Illinois come lavoro di ricerca sulla creazione di nuove interfacce grafiche compositive, ma si è poi trasformato in un sistema operativo a sé stante. Il codice del progetto è scritto in C e distribuito sotto la licenza BSD. È disponibile un'immagine live da 14,4 MB, che può essere testata in QEMU, VMware o VirtualBox.

Alla base di ToaruOS c'è un nucleo che utilizza un'architettura modulare ibrida, combinando una base monolitica con strumenti per l'uso di moduli caricabili, attraverso i quali sono implementati la maggior parte dei driver di dispositivo disponibili, come i driver del disco (PATA e ATAPI), il file system EXT2 e ISO9660, il framebuffer, le tastiere, i mouse, le schede di rete (AMD PCnet FAST, Realtek RTL8139 e Intel PRO/1000), i chip audio (Intel AC'97), e anche le estensioni di VirtualBox per i sistemi guest. Il nucleo supporta flussi Unix, TTY, file system virtuali, pseudo-file system /proc, multithreading, IPC, ramdisk, ptrace, memoria condivisa, multitasking e altre funzionalità standard.
Il sistema è dotato di un gestore di finestre compositivo, supporta file eseguibili collegati dinamicamente in formato ELF, multitasking, stack grafico ed è in grado di eseguire Python 3 e GCC. Viene utilizzato il file system ext2. Il bootloader supporta BIOS ed EFI. Lo stack di rete consente di utilizzare API socket in stile BSD e supporta interfacce di rete, inclusa la loopback.
Tra le applicazioni create in proprio, spicca un editor di codice simile a Vi chiamato Bim, utilizzato negli ultimi anni per lo sviluppo di applicazioni specifiche per ToaruOS, come il gestore file, l'emulatore di terminale, il pannello grafico con supporto per widget, il gestore di pacchetti e le librerie per il supporto delle immagini (PNG, JPEG) e dei caratteri TrueType. Sono state portate su ToaruOS applicazioni come Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, emulatore Super Nintendo, Bochs, e così via.
Il progetto include anche un proprio linguaggio di programmazione dinamico, Kuroko, concepito per sostituire Python nello sviluppo di utility e applicazioni utente per il sistema. Questo linguaggio ha una sintassi simile a Python (posizionato come un dialetto abbreviato di Python con definizione esplicita delle variabili) e si distingue per una realizzazione molto compatta. Supporta la compilazione e l'interpretazione del bytecode. L'interprete del bytecode offre un garbage collector e supporta la multithreading senza utilizzare un blocco globale. Il compilatore e l'interprete possono essere assemblati come una piccola libreria condivisa (~500KB), integrabile con altri programmi e ampliabile tramite C API. Oltre a ToaruOS, il linguaggio può essere utilizzato in Linux, macOS, Windows e può essere eseguito in browser compatibili con WebAssembly.
Nel nuovo rilascio:
- È stato aggiunto il supporto iniziale per l'architettura AArch64 (ARMv8), comprese le funzionalità sperimentali per utilizzare ToaruOS sulla scheda Raspberry Pi 400 e nel simulatore QEMU.
- È stata rielaborata la gestione e il trasferimento dei segnali ai processi nello spazio utente. Sono state implementate le chiamate sigaction, sigprocmask, sigwait e sigsuspend.
- È stato migliorato il controllo della memoria nello spazio utente. È stata aggiunta la chiamata di sistema munmap.
- Il gestore compositivo ha implementato un effetto sfocato e ha rielaborato la gestione degli eventi durante il ridimensionamento della finestra.
- È stato migliorato il rendering del terminale, è stato implementato il rendering ritardato ed è stata aggiunta una cache dei glifi per i font TrueType.
- Sono state ampliate le funzionalità del compositore.
- Sono stati aggiunti meccanismi per impostare l'orario, compresa l'implementazione della chiamata di sistema settimeofday e l'ampliamento delle funzionalità dell'utilità date.
- È stato migliorato lo stack di rete. Nella utility ifconfig è stata aggiunta la supporto per impostare indirizzi IPv4 e configurazioni di routing. È garantito il funzionamento dei socket ICMP. È stato aggiunto il supporto per la funzione recvfrom per i socket UDP e ICMP.
- Nel bootloader è stata aggiunta la possibilità di lavorare con tastiere USB.
- Nel menu contestuale del file manager è stata aggiunta l'opzione per eliminare file.
- È stata migliorata la visualizzazione dei grafici nel monitor di sistema.
- È stata aggiunta l'utilità grep con supporto per espressioni regolari.
- È stata migliorata l'uscita del comando ps (sono state aggiunte colonne aggiuntive).

Fonte: opennet.ru
