ОС Фантом: Дмитрий Завалишин о том, что сделано за год

Прошлым летом Дмитрий Завалишин из компании Digital Zone показал «Компьютерре» необычную операционную систему, которую он разрабатывает (подробнее — в статье «Дмитрий Завалишин об операционной системе Фантом«). На фестивале Chaos Constructions 2011 мы снова встретились, и Дмитрий рассказал, что изменилось с момента первого разговора.

Дмитрий Завалишин
— Расскажите о нынешнем состоянии Phantom. Как поживает проект?

— Более-менее нормально — в том плане, что были определённые запланированные движения и они выполняются. Были планы начать перенос на другие платформы, и он начался — на ARM и на MIPS. В целом планы такие: ARM сначала, потом MIPS, потом MIPS-64. MIPS — это архитектура, на которой 32-битные и 64-битные версии очень близки. Скорее всего, будет легче сделать этот переход именно там и потом перейти к AMD64, когда будет закончено с вычищением в ядре всех проблем, связанных с 64-битностью.

На сегодняшний день система на ARM загружается, переходит в графику, начинает шевелиться, но, к сожалению, пока ещё не все регресс-тесты проходят, поэтому целостность системы не соблюдается. На MIPS прогресс поменьше — там разработка только-только началась. Загрузка ядра происходит, основные компоненты реализованы, но за отладку ещё не брались.

— Люди, которые захотят поучаствовать, уже могут скачать и запустить Phantom?

— Да, давно. Если есть желание поучаствовать в разработке ядра системы, то это уже можно сделать — весь код доступен.

— А если хочется начать пробовать писать софт?

— Начать писать софт сложнее, потому что довольно мало сейчас доступно из юзерлэнда, но если желание такое есть, то я его очень приветствую. Это как раз то, чего очень не хватает – давления со стороны разработчиков прикладных программ. На прикладном уровне в системе многое не реализовано, и если бы оно появилось, то движения в ту сторону пошли бы энергичнее. Были бы требования — не работает это, не хватает того-то. Всё это не сложно сделать, но в силу того, что никто не трясет за плечо, оно не очень быстро продвигается.

— А своими силами что-то, кроме портирования, сейчас делаете? Поддержку языков программирования, виртуальных машин или других вещей такого класса?

— По этой части на сейчас движения, увы, почти нет — ядро отнимает много времени. Но на сегодня сделана некоторая базовая UNIX-подсистема, и в неё перенесено некоторое количество несложных прикладных программ. В принципе, там ситуация нормальная. Другое дело, что это не рассматривается как мейнстрим, это, скорее, вторичная часть жизни. Поэтому пока что есть штук пятнадцать утилит командной строки, с которыми можно работать. Опять же, если есть желание, то то же можно переносить и дальше, но это будет второстепенное начинание. По большому счёту всё это сделано, чтобы реализовывать расширения уровня ядра.

— В прошлом году в интервью «Компьютерре» вы говорили о том, что ещё думаете, портировать ли X.Org или нет. Или, может, можно как-то эмулировать вызовы к нему?

— Наверное, всё-таки нет. На сегодня нет ощущения, что это имеет смысл, так что такой задачи не стоит.

— Просто для него много всего, включая единственный эмулятор Windows…

— Да, наверное, но, с другой стороны, большого желания иметь эмулятор Windows в «Фантоме» пока тоже нет.

— Есть ли какие-то новые предложения от производителей железа или каких-то других заинтересованных сторон?

— Со стороны MIPS есть определённый интерес. Наверное, больше в силу того, что там работают бывшие наши люди, которые занимались UNIX в России. Они со мной коммутируют, консультируют, книжку подарили великолепную по архитектуре MIPS, которая очень помогает с портированием. Именно это меня и сподвигло двигаться в сторону портирования на MIPS, потому что до этого я эту тему не очень сильно рассматривал, и, наверное, зря. И в силу того что MIPS закрывает определённую нишу уже сегодня, и в силу того что у них есть хорошие планы по развитию, которые дают определённые шансы. К тому же для разработки системы переносимость полезна не только с точки зрения того, что система будет работать ещё на одной платформе, но и с точки зрения того, что проявится большее количество проблем и ошибок. На другой архитектуре код будет работать с другим таймингом и с другими свойствами «железа». Это помогает делать код более стабильным и отлаженным.

— Есть ли ещё какие-то параметры, по которым можно определить, что проект растёт?

— Есть определённое продвижение по разработке транслятора Java. То есть если к концу прошлого года транслятор мог исполнить функцию уровня A=B+C, то сейчас появился control flow – то есть основные операторы управления. И по большому счёту осталось, наверное, три зоны, в которых Java ещё не очень хорошо транслируется. Это «неинтовые» переменные, то есть float, double, long и т.п. — совершенно банальная часть. Во-вторых, это некоторые сложные конструкции, которые выходят за рамки простого потока управления, и в-третьих — синхронизация: семафоры, мьютексы и вещи подобного уровня. К сожалению, это одно из мест, которое разработчики в Sun Microsystems сделали странно. Синхронизация в Java может опираться на произвольный объект. То есть в качестве опорного фонетива синхронизации может применяться любой объект. Поэтому нужно либо в «Фантоме» на уровне самого минимального объекта реализовывать примитивы синхронизации, что кажется перебором, поскольку достаточно сильно нагружает всю систему, либо придумывать способ, при котором по факту обращений к объекту с примитивной синхронизацией в нём генерируются какие-то связанные с этим функции. Ещё делалась работа по трансляции питоновских исходников в нативный код «Фантома». Опять-таки она сделана на уровне пробы, и хорошо бы, чтобы кто-то этим занимался.

— В прошлый раз вы говорили, что реализация Java даст возможность сделать на основе её виртуальной машины другие языки. Для Python это был бы Jython, к примеру.

— Основной мейнстрим-поток для Java пока не доделан, а Python уже хочется. Ну и, кроме того, хочется посмотреть на разные варианты реализации — можно будет потом сравнить. Например, может оказаться, что эта идея не очень правильная, и нужно будет, например, делать прямые трансляторы.

Читайте также

Что будем искать? Например,ChatGPT

Мы в социальных сетях