Прошлым летом Дмитрий Завалишин из компании 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 уже хочется. Ну и, кроме того, хочется посмотреть на разные варианты реализации – можно будет потом сравнить. Например, может оказаться, что эта идея не очень правильная, и нужно будет, например, делать прямые трансляторы.