>>18379Тред не читай Идея такая: большинство абстракций в любой системе нахрен не нужны. "Я ненавижу практически всё ПО" помните?
> В прошлом году я думал, что, наконец, приблизился к пониманию идеалов Unix: файловые дескрипторы и процессы под управлением Си. Красивая идея. Однако это не то, с чем мы действительно взаимодействуем. Это бы не представляло сложности. Но вместо этого я имею дело с DBus, и /usr/lib, и Boost, и ioctls, и SMF, и сигналами, и неуловимыми переменными, и прототипирующим наследованием, и C99FEATURES_, и dpkg, и autoconf.
Так вот, в Колибри такого безобразия нет. А что есть? Ядро и драйвера представляют абстракцию от оборудования - то есть если нужно вывести звук, обращаемся к звуковой подсистеме (которая имеет API от силы в десяток команд), если нужна сеть - пользуемся сокетами, нужна графика - и на это есть свои функции, причем при загрузке видеодрайвера код для программного блиттера из ядра заменяется на код для аппаратного из драйвера. Большинство задач можно выполнить, используя только один промежуточный слой - между приложением и ядром. Это относится как к приложениям на ассемблере, так и к приложениям на Си. -nostdlib, маленький h-файл с extern для системных функций, и все дела. Иногда без библиотек не обойтись, поэтому в системе имеются dll для работы с изображениями (png/jpg/gif/xcf/ico и т.д.), пользовательским интерфейсом (анимированные кнопки,
двери рычаги выпадающие меню и всё такое) и эмулятором терминала. И только портированные приложения тянут за собой libc и многое другое, но всё это, как правило, линкуется статически.
Что это даёт? Меньше переключений контекста, выше скорость работы. Система всегда помещается в памяти, своп не нужен, скорость работы выше. Ядро помещается в кэш-память (там и остается) уже на компах уровня Pentium II, системные вызовы очень быстрые. Нужен прямой доступ к оборудованию - не проблема. Хочется запилить своего сапёра-танчики, но не хочется учить кучу команд какой-нибудь библиотеки типа SDL или Cairo - да в лёгкую, для обработки мышки, окошка, графики, клавы и таймеров достаточно шести системных вызовов
которые любезно представлены в документации, а так же в виде макросов на ассемблере, Паскале, Луа, Питоне и Си.
Бонусы: очень маленький размер, очень низкие требования к системе, возможность установки вместо BIOS на некоторых машинах.
Как её можно использовать сейчас? Есть текстовый редактор с подсветкой синтаксиса, есть
MC удобный клон Far Manager (фанаты Dolphin и Total Commander тоже обиженными не останутся), плееры mp3 и видео, просмотрщик графики, эмуляторы ZX Spectrum, NES, SNES и GBA, текстовый веб-браузер, простой графический редактор, клиенты IRC и почты, компилятор Си и интерпретаторы нескольких языков программирования. Для любителей экстрима есть веб-сервер. Надеюсь, что скоро появится полнофункциональный веб-браузер, и вопросы о применимости исчезнут окончательно.
Кстати, Колибри часто сравнивают со знаменитой демо-дискетой QNX. Так вот, скоро QNX будет отдыхать - сделан порт ffmpeg, занимающий около 400 килобайт, которого достаточно для просмотра видео с YouTube. Чтобы поместить плеер на дискету, достаточно из стандартного дистрибутива удалить демки. Порт полноценного движка javascript готов, до браузера осталось всего-ничего. Всё это будет по-прежнему будет грузиться с флешки, жесткого или cd за
3 секунды_ или около.
Таблица сравнения размеров оригиналов и портов (напомню, бинарники Колибри по умолчанию слинкованы статически, и данные бинарники Линукса слинкованы динамически):
FFmpeg:
Линуксовый полный - 5841 Kb
Колибрёвый полный - 2454 Kb
Колибрёвый для youtube - 346 Kb
ZSNES:
Линуксовый - 3079 Kb
Колибрёвый - 320 Kb
>>18381>>18381 Можно использовать для эмбеда и изучения, всё верно. Еще сейчас используется в системах компьютерного зрения, или как-то так. Ворочает огромные кучи данных. Есть инфа, что на базе Колибри построена SCADA.
>>18382 Колибри - это не yet another *ix. Вот, к примеру, haiku - полностью POSIX-совместимая, а там есть порты? Нетути.