Pull to refresh
363
1.9
Alex Efros @powerman

Software Architect, Team Lead, Lead Go Developer

Send message
Вот полный список модулей, которые реализованы в ядре: tk,srv,sys,draw,keyring,math,freetype,prefab,loader,bench.

Так что Tk, насколько я понимаю, это не просто обычная библиотека на Limbo, а один из нескольких модулей (draw,freetype,prefab) отвечающих за графику в ядре.
Всё зависит от архитектуры, от того, насколько они на самом деле "разные".

К примеру, эти приложения при запуске могут получать параметром указатель на разделяемую ими структуру в памяти. Эта схема предполагает, что приложения не такие уж и разные - по крайней мере они реализуют некий общий интерфейс, который позволяет их так запускать (а-ля интерфейс "Command" который позволяет sh запускать модули как программы из командной строки).

Если они совершенно разные, тогда да, нужно писать сервера. Собственно я уже писал, что "правильное" приложение под Inferno - это файловый сервер экспортирующий один файл либо целый каталог с подкаталогами и файлами (в Limbo есть стардартные библиотеки упрощающие написание таких серверов). Такое IPC будет медленнее прямого доступа к памяти, но зато эта схема снимает ограничение на запуск всех этих приложений на одном сервере.
Я попытался его найти когда писал статью, но быстро найти не получилось. :( У него просто статей на эту тему несколько, и чтобы найти ту, которая ближе всего к теме нужно их все перечитать...
Да, безусловно. С точки зрения архитектуры Inferno. А я пишу с точки зрения пользователя/программиста Inferno.
Очень просто. Вся память разделяется между всеми нитями. Другое дело, что если при запуске нити ей не дали указатель на какую-то структуру в памяти, то она к ней доступа и не получит, что обеспечивает защиту памяти. Обмениваться данными нити могут как через такие разделяемые структуры (но тогда придётся синхронизировать доступ к этой памяти через каналы) либо через те же каналы непосредственно обмениваться данными (что работает очень быстро, как я уже упоминал).
До недавнего времени у Inferno была более закрытая и коммерческая лицензия. Сейчас этот барьер убрали, так что...
Угу. В maillist-е Inferno довольно регулярно и с уважением упоминают Erlang. :)
Я думаю, проблема в том, что вы щедро плюсуете хабратопики, и они попадают на главную, т.е. на глаза людям которым это не интересно. Всё таки Inferno это, мягко говоря, не mainstream. С другой стороны может кто-нить благодаря этому заинтересуется системой.
Вообще говоря, формат блогов не очень подходит для такого типа статей, я это понимаю. Просто у меня сейчас так всё совпало: с одной стороны Inferno для меня пока ещё не потеряла новизну (через несколько месяцев я к ней привыкну, для меня всё вышеописаное станет привычной нормой и восхищённо описать Inferno я уже не смогу, единственное что я смогу, это грустить что остальные системы не такие элегантные, что гораздо менее интересно), а с другой стороны я ей уже несколько месяцев позанимался, переварил информацию в достаточной степени чтобы изложить впечатления... ну и жара, работать не получается, вот и пишу. :)

Честно говоря, у меня не так много идей осталось что ещё можно описать... может ещё на один-два хабратопика хватит, и всё. Дальше вся надежда на любителей Plan9, может они подключатся.
В идеале - да... :)
Запуска программы нет. Есть spawn функции. Есть загрузка (load) модулей. fork() и exec() действительно нет.
Применение выглядит примерно так: ставите Inferno на все близлежащие рабочие станции, сервера, встроенные девайсы... и получаете единую среду, возможность доступа по сети к любым ресурсами всех машин где стоит Inferno, возможность писать распределённые приложения которые будет выполнять этот "кластер", возможность просто разрабатывать софт в очень простой и элегантной среде.

При этом самое смешное, что все эти рабочие станции и сервера даже не заметят что на них что-то такое установили и будут работать как обычно, выполняя свои текущие функции - Inferno на них будет просто работать как обычный сетевой сервис, слушать несколько портов и иногда что-то делать (если вы запустите на этой машине какой-то софт по сети).
Не знаю. Но я знаю, кто знает. :) Спросите в инферновском maillist-е, тамошний народ крайне компетентен в этих вопросах.
Угу, я как раз на это вас и провоцировал такой слабой статьёй. Мне тоже будет интересно что-нить новое на эту тему почитать. :)
Да какая, нафиг, работоспособность... :( Работоспособность это когда работаешь. А я развлекаюсь, потому что работой из-за этой жары никак заняться не могу.

В общем, статьи все эти пишутся в ожидании вдохновения. Как только оно вернётся - я перестану писать ПРО Inferno и продолжу писать НА Inferno. :)
Нда... жизнь без антивируса - это уже почти фантастика. Нет, нету там антивируса. И, надеюсь, никогда не будет. Ибо он там просто не нужен.

Файрвола тоже нет. А зачем? Как в Inferno делается NAT я уже описал. :) Как закрывается приложению доступ в сеть? Да просто запускаете его в namespace где нет каталога /net и все дела. Трафик считать? Я видел в каталоге /net/ файлы stats и status - не знаю что там, но подозреваю что она, статистика.

Что касается winrar, то это, безусловно, упущение. Но оно легко преодолевается через вызов команд host OS - когда нужно будет из проги под Inferno распаковать rar-архив вы просто прямо из этой проги вызовете winrar. :)
Я в основном занимаюсь э... как это по-русски... в общем, advanced I/O: epoll, клиенты/сервера на тысячи и десятки тысяч одновременных соединений, выкачка вебсайтов в "промышленных" :) масштабах (несколько сотен url/sec), etc. Причём - не поверите - я всё это делаю на Perl. И производительности его вполне хватает - здесь bottleneck не скорость работы Perl, а скорость работы I/O в линухе.

Так вот, я первым делом потестировал скорость аналогичных операций в Inferno (в одном из предыдущих хабратопиков я даже ссылки на тесты приводил), и выяснилось что скорость работы Inferno и Perl сравнима - где-то немного опережает один, где-то другой.

А это говорит о том, что высокопроизводительные серверные приложения на Inferno, скорее всего, писать вполне возможно.

Ну и самое главное - IMHO мы сейчас вплотную подошли к пределу, когда производительность проще, эффективнее и выгоднее достигать через распараллеливание и кластеризацию, а не через выжимание лишней 1000 клиентов/сек через покупку мощного сервера и переписывание кода на ассемблере.
На официальном сайте всё написано. Если коротко - то работает на всём. Она разрабатывалась для работы на всём изначально - так ставилась задача. Поэтому требования у неё смешные - 1 MB RAM. :) На диске в минимальной версии (для запуска вашего приложения) под линухом весит примерно 1.1MB (1 мегабайт 100 килобайт). Разрабатывается она на довольно старом железе из, насколько я понимаю, в основном идеологических соображений. Т.е. на любом современном железе она просто летает.
Безусловно можно. Я бы даже сказал - нужно. Нести свет Inferno в массы это душеполезное занятие. :)
Oops, спасибо, исправил!

Information

Rating
1,355-th
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead
From 10,000 $
Designing application architecture
Golang
Linux
Docker
Network security
Modular testing
Mentoring
Development of tech specifications
Software development
High-loaded systems