Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Первое знакомство с OS Inferno

Софт
Изначально OS Inferno меня заинтересовала лет 5 назад, когда я где-то прочитал фразу «Новая ОС от авторов C и UNIX, результат 30-летних исследований!».
Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры4.7K
Комментарии 17

Второе знакомство с OS Inferno

Софт
Когда не работается, многие читают bash.org.ru или anekdot.ru… а я этой зимой полез от скуки перечитывать сайт OS Inferno. Полез с тоской, потому что хотя меня к Inferno давно тянуло, практической пользы я от чтения доки по Inferno ожидал сколько же, сколько и от вышеупомянутых сайтов.

Но произошло нечто неожиданное — в процессе чтения на меня снизошло озарение: я понял, что OS Inferno это не операционная система, а среда разработки!
Читать дальше →
Всего голосов 21: ↑17 и ↓4 +13
Просмотры4.7K
Комментарии 27

Поверхностный обзор OS Inferno

Софт
OS Inferno
Итак, начнём с главного — где же место под Солнцем для Inferno, где и как имеет смысл применять Inferno. Нет, на роль десктопа или сервера я Inferno не предлагаю, эти теплые места в данный момент заняты. :) Но есть минимум три задачи, с которыми Inferno справится лучше других.
Читать дальше →
Всего голосов 26: ↑22 и ↓4 +18
Просмотры5.2K
Комментарии 14

Архитектура OS Inferno — 1

Софт
Сразу предупреждаю, что делать полный обзор архитектуры я не собираюсь. Во-первых есть оригинальная документация где всё детально описано. А во-вторых я ещё не настолько хорошо знаю Inferno, чтобы браться за написание детального описания архитектуры. Но вот про «фишки» архитектуры я обязательно расскажу, это самое интересное.
Читать дальше →
Всего голосов 32: ↑28 и ↓4 +24
Просмотры1.7K
Комментарии 28

Архитектура OS Inferno — 2

Софт
Один из краеугольных камней архитектуры Inferno — юниксовая идея с файлами-устройствами доведена до предела: в Inferno файлами представлено абсолютно всё. Например, в Inferno нет понятия «сокет».
Читать дальше →
Всего голосов 33: ↑28 и ↓5 +23
Просмотры1.5K
Комментарии 42

Графика в Inferno

Софт
Если писать распределённые приложения в стиле файловых серверов, то с графикой в Inferno вы столкнётесь не раньше, чем захотите запустить графический отладчик для отладки своего многопоточного приложения.
image

Но если вы пишете приложение с UI, которое должно работать на встроенных устройствах или как плагин в браузере (кстати, сейчас вроде разрабатывают аналог существующего Inferno-плагина для IE под Firefox), то сразу возникнет вопрос «а как в Inferno писать графические приложения?».
Читать дальше →
Всего голосов 21: ↑16 и ↓5 +11
Просмотры1.5K
Комментарии 17

Limbo

Софт
Поскольку меня Inferno привлекает именно как среда разработки, то помимо архитектуры самой системы немалое значение имеет язык программирования.

По большому счёту мне давным давно пофиг, на каком языке писать (я программирую с 1989 года, и за это время перепробовал кучу языков). Но… всё таки на одних языках работать приятнее, чем на других — и здесь дело не в том, что одни языки лучше других, а в том, что для разных стилей мышления лучше подходят разные языки.

Переход от Perl к Limbo — очень контрастный. Языки совершенно разные: Perl — не типизированный вообще, Limbo — сильно типизированный; в Perl нет нормальной поддержки нитей и асинхронности приходится добиваться через мультиплексирование, Limbo — чуть ли не вынуждает писать именно многопоточные программы (если вы смотрели презентацию Роба Пайка, то там был прикольный пример с многопоточным поиском простых чисел); etc. И, тем не менее, Limbo мне очень понравился и писать работающий код я на нём начал практически сразу.

Я уже не очень хорошо помню C, но попробую описать Limbo именно в плане отличий от C — думаю, так будет проще для большей части аудитории (и ни слова про PHP! :)).
Читать дальше →
Всего голосов 32: ↑29 и ↓3 +26
Просмотры2K
Комментарии 31

3 сущности!

Софт
Думаю, общей информации по Inferno уже достаточно, и можно перейти к главному вопросу: что из себя представляет Inferno изнутри, с точки зрения программиста? В чём заключается взаимодействие программиста со средой предоставляемой Inferno? Сколько нюансов поведения и разных видов сущностей должен держать в голове программист в Inferno?
Читать дальше →
Всего голосов 28: ↑20 и ↓8 +12
Просмотры1.3K
Комментарии 38

Файловая база данных

Софт
«… Один из краеугольных камней архитектуры Inferno — юниксовая идея с файлами-устройствами доведена до предела: в Inferno файлами представлено абсолютно всё… »powerman. А как, в свете вышесказанного, может выглядеть база данных?
Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Просмотры5K
Комментарии 17

Как может выглядеть XMPP в ОС Inferno(мысли в слух).

Чулан
Обычно, реализацию протокола на низком уровне, берут на себя библиотеки. Решил подумать(пофантазировать): как должна работать подобная «библиотека» в Inferno ОС, если все представить в виде файлов.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры659
Комментарии 3

И всё-таки она многопользовательская!

Софт
В OS Inferno очень необычно сделана работа с пользователями. Во-первых, когда запускается emu, вы получаете командную строку без необходимости вводить логин и пароль. При этом ваше имя пользователя выставляется таким же, как и в основной системе (host OS). Во-вторых, вы можете запустить, например, wm/wm wm/login, ввести имя другого пользователя (причём пароль у вас даже не спросят), и продолжить работу как этот пользователь. Аналогично можно воспользоваться командой runas ИМЯПОЛЬЗОВАТЕЛЯ sh, чтобы не запускать графическую оболочку.

В связи со всем этим возникает логичный вопрос: Inferno — многопользовательская система, или нет?
Читать дальше →
Всего голосов 53: ↑45 и ↓8 +37
Просмотры957
Комментарии 21

Syntax Highlight Considered Harmful

Софт
Вы думали, что "настоящие мужчины используют Windows"? Вы крупно ошибались. Они используют IDE Acme. Которую среди прочего отличает отсутствие подсветки синтаксиса.

Причём это не потому, что Acme ещё молода, и просто не успела обзавестись такой, критически важной для IDE, фичей. (Не знаю точно, сколько лет Acme, но Пайк ещё в 1994 выпустил статью "Acme — A User Interface for Programmers".) Нет, дело в другом! Эта «фича» считается ненужной, и даже вредной.
Читать дальше →
Всего голосов 19: ↑8 и ↓11 -3
Просмотры792
Комментарии 21

Установка OS Inferno New Edition

Софт
OUTDATED: Эта статья устарела, для установки под современными OS см. новую статью.

Update: Добавлено описание установки под Windows XP SP2.
Update: Добавлено описание установки под Mac OS X 10.4.8 Tiger.
Update: Добавлено описание установки под Mac OS X 10.5.5 Leopard.

New Edition


Да, версия в svn называет себя именно так! Установите, запустите браузер (Charon) и сами убедитесь. (В принципе, последний релиз это "Fourth Edition", но на практике это уже давно тот же svn — «Fourth Edition» вышел примерно в 2004, а сейчас на офф.сайте под видом «Fourth Edition» выложен снапшот svn от 20071003.)

Версия в svn абсолютно стабильна, и, в отличие от инсталляшки «Fourth Edition», её значительно проще обновлять. Для установки на боевые сервера или выпуска вашего приложения она не менее удобна. В общем, минусом является только необходимость иметь subversion и компилятор для сборки системы, всё остальное плюсы.

Итак, ставим свеженькую OS Inferno из SVN, в hosted режиме (т.е. в виде эмулятора, работающего под другой OS).
Читать дальше →
Всего голосов 29: ↑26 и ↓3 +23
Просмотры3.8K
Комментарии 84

Подготовка ваших приложений Inferno к standalone установке

Софт
Tutorial
Итак, вы написали некое приложение на Limbo, и хотите установить его на другую машину, или распространять через интернет. Скорее всего, там где будет устанавливаться это приложение OS Inferno не установлена. Это горько, но более чем вероятно. :) Что же делать? Обучать пользователей вашего приложения устанавливать и настраивать у себя OS Inferno? Включать полную инсталляцию Inferno (до 250 MB) в архив с каждым вашим приложением? Нет, всё гораздо проще!

Давайте посмотрим, как можно урезать Inferno до минимума, необходимого для работы вашего приложения. Для этого надо разобраться, что происходит при запуске emu — как загружается OS Inferno.
Читать дальше →
Всего голосов 26: ↑23 и ↓3 +20
Просмотры1.3K
Комментарии 35

Deployment вашего софта для OS Inferno

Софт
Tutorial
К сожалению, встроенного механизма для распространения и установки дополнительного софта в OS Inferno нет. Если вы написали модуль для Limbo или полноценное приложение, и хотите им поделиться, то вариантов его распространения немного:
  1. просто выложить ваши файлы на любом сайте, и предоставить пользователям вручную устанавливать их в свою систему куда и как угодно
  2. использовать такие же mkfile/mkconfig файлы какие используются стандартными модулями и приложениями в /appl/

Как вы понимаете, первый вариант — это, фактически, не вариант. :) Это возврат назад, в пещеры. Второй вариант используется, например, для всего софта в репозитории mjl. Но и у этого подхода есть неприятные ограничения, вызванные тем, что ваши файлы в результате просто копируются в системные каталоги /dis/, /module/, etc. (точно так же, как стандартные модули и приложения из /appl/):
  • если используется *nix как host OS, и Inferno установлена общесистемно root-ом или менеджером пакетов вашего дистрибутива, то для установки дополнительных модулей/приложений потребуются права root (либо sudo mk в host OS, либо sudo emu и нативный mk)
  • глобальная установка неудобна, если хочется для своего приложения использовать модифицированную версию этих модулей/приложений
  • глобальная установка неудобна, если разным приложениям нужны разные версии одного и того же модуля (mjl решает эту проблему традиционным для *nix способом добавляя номер major версии к имени модуля, что не очень элегантно и приводит к именам вроде «util0.m»)
  • деинсталляция превращается в нетривиальную операцию, что в конечном итоге приводит к замусориванию системных каталогов
  • имена модулей/приложений разных разработчиков могут конфликтовать (впрочем, эта проблема есть и в *nix/win, и её можно обойти используя подкаталоги в /dis/ и /module/ с именем разработчика или его сайта)

Я хочу предложить альтернативный подход, разработанный по мотивам DJB'шного slashpackage. Update: этот подход был недавно принят разработчиками инферно, так что его уже можно считать не альтернативным, а официальным. :)
Читать дальше →
Всего голосов 11: ↑7 и ↓4 +3
Просмотры758
Комментарии 1

Разработка модулей для Limbo на C (часть 1)

Софт
Tutorial
Модули для Limbo написанные на C так же иногда называют драйверами OS Inferno т.к. они встроены в ядро OS. Необходимость в таких модулях обычно вызвана либо желанием добавить к Limbo отсутствующую в Inferno функциональность (подключить существующие 3rd-party C/C++ библиотеки, дать доступ к специфичным для конкретной host OS syscall-ам) либо желанием выжать максимально возможную производительность (по моим наблюдениям разница в скорости между Limbo с включенным JIT и C примерно 1.3-1.5 раза, но иногда и это может оказаться критичным).
Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Просмотры1.5K
Комментарии 9

Разработка модулей для Limbo на C (часть 2)

Софт
Tutorial
Часть 1

Содержание



Heap


Чтобы на C корректно создавать и уничтожать сложные структуры, с которыми будет работать код на Limbo, необходимо представлять себе как они хранятся в памяти, т.е. как организован heap в Inferno. Все упомянутые ниже функции для работы с heap описаны в libinterp/heap.c, а структуры в include/interp.h.
Читать дальше →
Всего голосов 13: ↑10 и ↓3 +7
Просмотры1K
Комментарии 0

Установка OS Inferno New Edition (update)

Софт
Tutorial
FAQ: Что такое OS Inferno и зачем она нужна?

Информация в предыдущем посте устарела почти на 4 года, и меня попросили её обновить. Так же попросили не смешивать в одном посте установку с настройкой, поэтому здесь будет только установка, а настройка инферно описана в отдельном посте. Update: Описание установки для Windows обновлено в июне 2014.

Итак, мы будем устанавливать распределённую ОС Inferno. На официальном сайте есть инструкции по установке, но они не совсем корректны и тоже немного устарели. Inferno может работать в двух режимах — native (на голом железе или в qemu/etc. как все обычные ОС) и hosted (как обычное приложение под *NIX/Win). Инструкции по установке native Inferno можно найти в русской вики. Помимо этого существуют и другие варианты — например, установка Inferno на Android (англ.). Лично я смысла в использовании native Inferno на обычных компах не вижу, поэтому буду описывать установку hosted Inferno под Gentoo, Ubuntu, FreeBSD, MacOSX и Windows.
Читать дальше →
Всего голосов 33: ↑25 и ↓8 +17
Просмотры10.3K
Комментарии 30

Настройка OS Inferno

Софт
Tutorial
FAQ: Что такое OS Inferno и зачем она нужна?

Итак, мы только что установили hosted OS Inferno в свой домашний каталог, и можем приступать к настройке системы.
Читать дальше →
Всего голосов 14: ↑12 и ↓2 +10
Просмотры2.6K
Комментарии 9

Каталог статей по OS Inferno

Софт
Практически каждая статья по OS Inferno вызывает вопросы из серии «что это такое и для чего оно нужно». Эти вопросы вполне уместны, но начинать каждую статью с ответа на этот вопрос невозможно — по крайней мере я не готов ответить на этот вопрос одним абзацем, а на развёрнутый ответ и целой статьи мало. Поэтому в данной статье будет поддерживаться полный каталог всех статей об ОС Инферно на хабре, и в новых статьях можно будет просто ссылаться на этот каталог.

Обзоры OS Inferno


Первое знакомство с OS Inferno … закончилось ничем, т.к. сработал стереотип «раз это ОС, значит она должна быть полноценной альтернативой традиционным десктопным или серверным ОС». Стыдно.

Второе знакомство с OS Inferno … прошло намного удачнее — удалось избавиться от стереотипов и понять, как и для чего можно начинать использовать эту ОС.

Поверхностный обзор OS Inferno … ну очень поверхностный, скорее просто список фич а не обзор.

Архитектура OS Inferno — 1,
Архитектура OS Inferno — 2,
Графика в Inferno,
Limbo,
3 сущности! … этот цикл из 5-ти статей и есть обзор системы.
Читать дальше →
Всего голосов 25: ↑18 и ↓7 +11
Просмотры10.7K
Комментарии 11
1