Выпуск операционной системы ToaruOS 2.2 и языка программирования Kuroko 1.4

Опубликован выпуск Unix-подобной операционной системы ToaruOS 2.2, написанной с нуля и поставляемой со своим ядром, загрузчиком, стандартной Си-библиотекой, пакетным менеджером, компонентами пространства пользователя и графическим интерфейсом с композитным оконным менеджером. Изначально проект развивался в Иллинойсском университете как исследовательская работа в области создания новых композитных графических интерфейсов, но затем трансформировался в отдельную операционную систему. Код проекта написан на языке Си и распространяется под лицензией BSD. Для загрузки подготовлен live-образ, размером 6.3 МБ, который можно протестировать в QEMU, VMware или VirtualBox.


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

Cистема снабжена композитным оконным менеджером, поддерживает динамически связываемые исполняемые файлы в формате ELF, многозадачность, графический стек, может выполнять Python 3 и GCC. В качестве файловой системы применяется ext2. Загрузчик поддерживает BIOS и EFI. Сетевой стек позволяет использовать API сокетов в стиле BSD-систем и поддерживает сетевые интерфейсы, включая loopback.

Из собственных приложений выделяется похожий на Vi редактор кода Bim, который используется последние несколько лет для разработки специфичных для ToaruOS приложений, таких как файловый менеджер, эмулятор терминала, графическая панель с поддержкой виджетов, пакетный менеджер, а также библиотеки для поддержки изображений (PNG, JPEG) и TrueType-шрифтов. Для ToaruOS выполнено портирование таких программ, как Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, Super Nintendo emulator, Bochs и т.п.

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

В новом выпуске:

  • Улучшена реализация кнопок управления окнами, расширена область действия нажатия на кнопку и обеспечена индикация наведения курсора на кнопку.

  • В композитном оконном менеджере Yutani появилась поддержка сворачивания окон. Переписаны обвязки над Yutani.
  • Изменено оформление панели и возвращена раскладка, при которой панель занимает всю ширину экрана и не имеет скруглённых углов.
  • Улучшена работа библиотеки для работы с меню.
  • Улучшен растеризатор шрифтов в формате TrueType. Добавлена возможность использования в других приложениях системы отрисовки контуров, предоставляемой растеризатором.
  • Обеспечено сохранение скриншотов с информацией о времени создания и вывод уведомления о создании скриншота.

  • Язык программирования Kuroko обновлён до версии 1.4, в которой улучшена совместимость с Python и существенно переработан процесс создания объектов, который приближен к объектной модели языка Python.
  • Игра “минёр” переписана на языке Kuroko.
  • Расширены возможности программы для генерации фракталов.

  • Внесены разнообразные улучшения в загрузчик и стандартную Си-бибиотеку libc.

Release. Ссылка here.