Opublikowano wersję systemu operacyjnego przypominającego Unix – ToaruOS 2.1, napisanego od podstaw i dostarczanego z własnym jądrem, bootloaderem, standardową biblioteką C, menedżerem pakietów, komponentami przestrzeni użytkownika oraz graficznym interfejsem z kompozytowym menedżerem okien. Projekt początkowo rozwijany był na Uniwersytecie Illinois jako praca badawcza dotycząca tworzenia nowych kompozytowych interfejsów graficznych, ale następnie przekształcił się w samodzielny system operacyjny. Kod projektu napisany jest w języku C i udostępniany na licencji BSD. Przygotowano do pobrania obraz live o rozmiarze 14,4 MB, który można przetestować w QEMU, VMware lub VirtualBox.

Podstawą ToaruOS jest jądro wykorzystujące hybrydową architekturę modułową, łączącą monolityczną bazę i środki do wykorzystania modułów ładowanych dynamicznie, w formie których uformowane są większość dostępnych sterowników urządzeń, takich jak sterowniki dysków (PATA i ATAPI), system plików EXT2 i ISO9660, framebuffer, klawiatury, myszy, kart sieciowych (AMD PCnet FAST, Realtek RTL8139 i Intel PRO/1000), chipy dźwiękowe (Intel AC’97), a także dodatki VirtualBox dla systemów gościnnych. Jądro obsługuje wątki Unix, TTY, wirtualny system plików, pseudo-system plików /proc, współbieżność, IPC, ramdisk, ptrace, pamięć dzieloną, wielozadaniowość i inne standardowe funkcje.
System wyposażony jest w kompozytowy menedżer okien, obsługuje dynamicznie linkowane pliki wykonywalne w formacie ELF, wielozadaniowość, stos graficzny, może wykonywać Pythona 3 i GCC. Jako system plików zastosowano ext2. Bootloader obsługuje BIOS i EFI. Stos sieciowy pozwala na korzystanie z API gniazd w stylu systemów BSD i obsługuje interfejsy sieciowe, w tym loopback.
Wśród własnych aplikacji wyróżnia się edytor kodu podobny do Vi, Bim, który od kilku lat jest używany do tworzenia aplikacji specyficznych dla ToaruOS, takich jak menedżer plików, emulator terminala, graficzny panel z obsługą widgetów, menedżer pakietów oraz biblioteki wsparcia dla obrazów (PNG, JPEG) i czcionek TrueType. Dla ToaruOS zrealizowano portowanie takich programów jak Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, emulator Super Nintendo, Bochs itd.
Projekt rozwija własny dynamiczny język programowania Kuroko, zaprojektowany jako zamiennik Pythona dla tworzenia narzędzi i aplikacji użytkownika w systemie. Język ma składnię przypominającą Pythona (pozycjonowany jako skrócona wersja Pythona z wyraźnym określeniem zmiennych) i wyróżnia się bardzo kompaktową realizacją. Obsługiwane są kompilacja i interpretacja bajtkodu. Interpreter bajtkodu zapewnia zbieracz śmieci, wspiera wielowątkowość bez stosowania globalnej blokady. Kompilator i interpreter mogą być zbudowane w formie małej biblioteki współdzielonej (~500KB), którą można integrować z innymi programami i rozwijać przez C API. Oprócz ToaruOS język może być używany w systemach Linux, macOS, Windows i uruchamiany w przeglądarkach z obsługą WebAssembly.
W nowym wydaniu:
- Dodano wstępną obsługę architektury AArch64 (ARMv8), w tym eksperymentalną możliwość uruchomienia ToaruOS na płytce Raspberry Pi 400 oraz w emulatorze QEMU.
- Przeprojektowano obsługę i przesyłanie sygnałów do procesów w przestrzeni użytkownika. Zaimplementowano wywołania sigaction, sigprocmask, sigwait i sigsuspend.
- Udoskonalono zarządzanie pamięcią w przestrzeni użytkownika. Dodano wywołanie systemowe munmap.
- W kompozytowym menedżerze zrealizowano efekt rozmycia oraz przeprojektowano obsługę zdarzeń podczas zmiany rozmiaru okna.
- Ulepszono renderowanie terminala, wprowadzono opóźnione renderowanie oraz dodano pamięć podręczną glifów dla czcionek TrueType.
- Rozszerzono możliwości kompozytora.
- Dodano mechanizmy do ustawiania zegara, w tym zrealizowano wywołanie systemowe settimeofday oraz rozszerzono możliwości narzędzia date.
- Udoskonalono stos sieciowy. Do narzędzia ifconfig dodano wsparcie dla ustawiania adresów IPv4 oraz ustawień routingu. Zapewniono działanie gniazd ICMP. Dodano obsługę funkcji recvfrom dla gniazd UDP i ICMP.
- Do bootloadera dodano możliwość obsługi klawiatur USB.
- Do menu kontekstowego menedżera plików dodano opcję usuwania plików.
- Udoskonalono wyświetlanie wykresów w monistorze systemowym.
- Dodano narzędzie grep z obsługą wyrażeń regularnych.
- Ulepszono wyjście polecenia ps (dodano dodatkowe kolumny).

Źródło: opennet.ru
