Alex Efros @powerman
Software Architect, Team Lead, Lead Go Developer
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
Так что Tk, насколько я понимаю, это не просто обычная библиотека на Limbo, а один из нескольких модулей (draw,freetype,prefab) отвечающих за графику в ядре.
К примеру, эти приложения при запуске могут получать параметром указатель на разделяемую ими структуру в памяти. Эта схема предполагает, что приложения не такие уж и разные - по крайней мере они реализуют некий общий интерфейс, который позволяет их так запускать (а-ля интерфейс "Command" который позволяет sh запускать модули как программы из командной строки).
Если они совершенно разные, тогда да, нужно писать сервера. Собственно я уже писал, что "правильное" приложение под Inferno - это файловый сервер экспортирующий один файл либо целый каталог с подкаталогами и файлами (в Limbo есть стардартные библиотеки упрощающие написание таких серверов). Такое IPC будет медленнее прямого доступа к памяти, но зато эта схема снимает ограничение на запуск всех этих приложений на одном сервере.
Честно говоря, у меня не так много идей осталось что ещё можно описать... может ещё на один-два хабратопика хватит, и всё. Дальше вся надежда на любителей Plan9, может они подключатся.
При этом самое смешное, что все эти рабочие станции и сервера даже не заметят что на них что-то такое установили и будут работать как обычно, выполняя свои текущие функции - Inferno на них будет просто работать как обычный сетевой сервис, слушать несколько портов и иногда что-то делать (если вы запустите на этой машине какой-то софт по сети).
В общем, статьи все эти пишутся в ожидании вдохновения. Как только оно вернётся - я перестану писать ПРО Inferno и продолжу писать НА Inferno. :)
Файрвола тоже нет. А зачем? Как в Inferno делается NAT я уже описал. :) Как закрывается приложению доступ в сеть? Да просто запускаете его в namespace где нет каталога /net и все дела. Трафик считать? Я видел в каталоге /net/ файлы stats и status - не знаю что там, но подозреваю что она, статистика.
Что касается winrar, то это, безусловно, упущение. Но оно легко преодолевается через вызов команд host OS - когда нужно будет из проги под Inferno распаковать rar-архив вы просто прямо из этой проги вызовете winrar. :)
Так вот, я первым делом потестировал скорость аналогичных операций в Inferno (в одном из предыдущих хабратопиков я даже ссылки на тесты приводил), и выяснилось что скорость работы Inferno и Perl сравнима - где-то немного опережает один, где-то другой.
А это говорит о том, что высокопроизводительные серверные приложения на Inferno, скорее всего, писать вполне возможно.
Ну и самое главное - IMHO мы сейчас вплотную подошли к пределу, когда производительность проще, эффективнее и выгоднее достигать через распараллеливание и кластеризацию, а не через выжимание лишней 1000 клиентов/сек через покупку мощного сервера и переписывание кода на ассемблере.