28.11.2021

Выпуск независимой операционной системы ToaruOS 1.14

Доступен выпуск проекта ToaruOS 1.14, развивающего написанную с нуля Unix-подобную операционную систему со своим ядром, загрузчиком, стандартной Си-библиотекой, пакетным менеджером, компонентами пространства пользователя и графическим интерфейсом с композитным оконным менеджером. На текущем этапе развития возможностей системы достаточно для выполнения Python 3 и GCC. Код проекта написан на языке Си и распространяется под лицензией BSD. Для загрузки подготовлен live-образ, размером 14 МБ, который можно протестировать в QEMU, VMware или VirtualBox.

Проект стартовал в 2010 году в Иллинойсском университете и вначале развивался как исследовательская работа в области создания новых композитных графических интерфейсов. С 2012 года разработка трансформировалась в операционную систему ToaruOS, развиваемой в вначале в качестве студенческого проекта, а потом переросшей в хобби выходного дня, подхваченным образовавшимся вокруг проекта сообществом. В текущем виде система снабжена композитным оконным менеджером, поддерживает динамически связываемые исполняемые файлы в формате ELF, многозадачность, графический и сетевой стеки.

В поставку входит порт языка программирования Python 3.6, который использован при разработке некоторых специфичных для ToaruOS графических приложений, таких как пакетный менеджер, графический редактор, просмотрщик PDF, калькулятор, простые игры. Из портированных для ToaruOS сторонних программ отмечаются Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, Super Nintendo emulator, Bochs и т.п.

В основе ToaruOS лежит ядро, использующее гибридную модульную архитектуру, сочетающую монолитную основу и средства для использования загружаемых модулей, в виде которых оформлено большинство имеющихся драйверов устройств, таких как драйверы диска (PATA и ATAPI), ФС EXT2 и ISO9660, framebuffer, клавиатуры, мыши, сетевых карт (AMD PCnet FAST, Realtek RTL8139 и Intel PRO/1000), звуковых чипов (Intel AC’97), а также дополнений VirtualBox для гостевых систем.

Из предоставляемых ядром примитивов отмечаются Unix-потоки, TTY, виртуальная ФС, многопочность, IPC, разделяемая память, многозадачность и другие типовые возможности. В качестве файловой системы применяется ext2. Для взаимодействия с ядром предоставляется реализация псевдо-ФС /proc, созданная по аналогии с Linux.

Из планов на 2021 год отмечается обеспечение работы на 64-разряднй архитектуре x86-64 (пока сборки формируются только для 32-разрядных систем x86) и поддержка многопроцессорных систем (SMP). Из других целей называется улучшение совместимости со спецификациями POSIX в области обработки сигналов и методов синхронизации, доведение стандартной Си-библиотеки до уровня Newlib, реализация собственного компилятора языка Си и инструментов для разработки.

Проектом также развивается собственный динамический язык программирования Kuroko, рассчитанный на замену Python при разработке утилит и пользовательских приложений для системы. Язык поддерживает компиляцию байткода и интерпретацию, по синтаксису напоминает Python (позиционируется как сокращённый диалект Python с явным определением переменных) и отличается очень компактной реализацией. Интерпретатор байткода предоставляет сборщик мусора, поддерживает многопоточность без применения глобальной блокировки. Компилятор и интерпретатор могут быть собраны в форме небольшой разделяемой библиотеки (~500КБ), интегрируемой с другими программами и расширяемой через C API. Кроме ToaruOS яызк может использоваться в Linux, macOS, Windows и запускаться в браузерах с поддержкой WebAssembly.

В новом выпуске ToaruOS основное внимание было уделено развитию стандартной Си-библиотеки и языку программирования Kuroko. Например, в libc добавлены математические функции, необходимые для корректного расчёта параметров освещения в игре Quake. Налажена возможность загрузки в VirtualBox в режиме EFI. Сокращён размер iso-образа за счёт применения сжатия образа ram-диска.

В новом выпуске языка Kuroko 1.1 добавлена поддержка async и await, реализована многопоточность, улучшена совместимость с Python 3, реализована поддержка множественных присвоений значений, расширены средства для написания обработчиков на языке Си, добавлена поддержка аннотирования типов для функций, добавлены ключевые слова «yield» и «yield from», интегрированы модули os, dis, fileio, и time, реализованы новые методы в str, list, dict и bytes, добавлена поддержка предкомпиляции в байткод, лицензия изменена на MIT (раньше была комбинация из MIT и ISC).

Источник.