← All posts tagged inferno

OCTAGRAM
inferno Вот чего не хватает в платформах типа Inferno/Limbo — так это внутренний rlimit и контроллируемый DoS раньше, чем случится неконтроллируемый. Скажем, если идёт слишком много TCP запросов из подсети — дропать эту подсеть. Если много запросов с определённой страны — дропать эту страну (Китай, как правило). Аналогичные ступенчатые рубежи внутри приложения.
OCTAGRAM
IPv6 inferno Похоже, это удобно — создать сокет типа TCP или UDP, потом резолвить имя, получить смешанные результаты, как в IPv6, так и в IPv4, пытаться к ним коннектиться в какой–то последовательности, используя один и тот же сокет. Вот только в 2003 и XP нельзя AF_INET6 сокет к IPv4 адресу коннектить. Чешу голову в раздумьях, как бы аккуратнее Inferno починить. Тут либо глобальную таблицу соответствий внутреннего id сокета и системного делать, либо внутренний интерфейс поменять так, чтобы so_socket возвращал int64 с двойным комплектом id сокетов
OCTAGRAM
IPv6 inferno Поддержка IPv6 в Inferno была реализована в июле 2009, однако, на Windows её по дефолту отключили, так как на Windows XP, 2003 и ниже собранная с IPv6 версия не работала с сетью совсем. Происходит это потому, что в исходном коде сделан полный переход на шестые сокеты, в том числе для IPv4. setsockopt(..., IPV6_V6ONLY, ..., 0) можно сделать только начиная с Windows 2008/Vista.
OCTAGRAM
JavaScript inferno Помню, в SVN'овской Inferno движок JavaScript, наскоро выпиленный из Charon, мог положить всю виртуальную машинку, если его запустить без параметров. В Mercurial версии поедение уже адекватнее:

; js
[Js] Broken: "segmentation violation"
sh: 391 "Js":segmentation violation
OCTAGRAM
JavaScript inferno ipn.caerwyn.com

Сабж в принципе работает, только вот если js без аргументов запустить, он рушит весь узел Inferno из–за переполнения кучи. До node.js, кончно, далековато, да это и не принципиально, ведь у нас уже есть Inferno!
OCTAGRAM
поток_сознания inferno limbo Чешутся руки оценить производительность Inferno httpd, shttpd (или хотя бы библиотеку http в чистом виде) и вообще побольше поэкспериментировать, потому что с виду это интересная замена node.js. Есть и некоторые личные предпочтения. Например, хочется неглобальности системы модулей. Вот в .NET, например, чтобы разные версии одной assembly использовать, надо запускать разные application domains, слабо связанные между собой. А хотелось бы пожертвовать глобальным контекстом в пользу таких вот сосуществущих разных версий модулей. Лимбо как раз таков. Модули типизируются своими интерфейсами. Как и в node.js, загруженный модуль — это переменная. И плюс к этому, все так называемые исполняемые программы в Inferno — это тоже модули, которые поддерживают кое–какой интерфейс с одним вызовом. В httpd (пока ещё не оценил, использовать один из готовых или использовать библиотеку http) мы можем динамически подключать модули, держать их в памяти (то, чем node.js лучше, чем php+mysql), перезагружать.
OCTAGRAM
Erlang inferno limbo Аналогом Erlang/OTP является не Limbo, а вся Inferno OS. Я вдруг заметил, что все запущенные в ней процессы с точки зрения host OS — один процесс. Сейчас в нём 20 потоков, но я позапускал ещё приложений, и количество их по–прежнему 20. Жаль, я не настолько хорошо знаю Erlang/OTP, чтобы провести больше параллелей, но вроде бы с такой точки зрения на Inferno ещё не смотрели.