Puma - новый высокопроизводительный http-сервер для приложений на языке Ruby
Компания Engine Yard, крупнейший хостер web-проектов на языке Ruby, выполняющий работу по сопровождению старых веток Ruby, представила новый открытый проект Puma, в рамках которого развивается полностью переработанный форк проекта Mongrel, отличающийся ориентацией на обеспечение максимальной производительности и поддержания обслуживания большого числа параллельных запросов. Несмотря на то, что Puma создан на базе Mongrel, в настоящее время, кроме кода HTTP-парсера, старая кодовая база полностью переписана. Непосредственно разбором протокола занимается написанный на языке Си компонент Ragel, все обрабатываемые запросы помещаются в обособленный пул потоков, что обеспечивает полноценное распараллеливание и задействование всех доступных в системе процессорных ядер. Код проекта распространяется под лицензией BSD.
Puma может использоваться в роли платформы для развертывания приложений на базе Ruby on Rails и отдельных приложений, использующих интерфейс Rack. Puma близок по возможностям к Mongrel и Webrick, и может выступать в качестве их прозрачной замены. Поддерживается работа с различными реализациями Ruby, такими как Rubinius, JRuby и MRI. Для классической реализации MRI, не способной выполнять одновременно несколько потоков из-за наличия глобальной блокировки, реализована поддержка распараллеливания на уровне ввода/вывода. Для Rubinius и JRuby возможно полноценное распараллеливания на уровне нитей.