ngx_http_script_module

Sergey Skvortsov skv at protey.ru
Tue May 8 16:17:52 MSD 2007


On 30.04.2007 14:46, Igor Sysoev wrote:
> 
>> Не будет ли более логичным взять какой-нибудь готовый язык?
> 
> Есть ли язык, который

Parrot - http://www.parrotcode.org/

Есть пример его интеграции с Apache - mod_parrot:
http://www.smashing.org/mod_parrot/

> 1) всегда проверяет результат внутренних операций, в частости
>    выделения памяти;

В Parrot по умолчанию используется garbage collector.
Но когда не хватает памяти - то действительно, либо вызывается макрос
PANIC, либо тупо exit(1)

Почему не вызывается Parrot_exit() - для меня загадка, надо будет это
выяснить, патч-то тривиален.

> 2) поддерживает несколько интерпретаторов (как perl multiplicity);

Есть.

> 3) поддерживает неблокирующиеся операции, например,
> 
>    v = get_variable(...);
>    if (v == ПРИДИТЕ_ПОЗЖЕ) ...
> 
> ?

Всё гораздо круче - есть continuations.

В целом, создавать код непосредственно на PIR - подход самый
эффективный, но и не очень удобный.

Т.е. возможность создавать на PIR content handlers или authorization
handlers - было бы просто прекрасно, если надо выжать 100% по скорости.

В тоже время, возможно из того же Lua компилировать код в PIR (или
конвертировать байт-код). Хотя эти проекты несколько приторможены.

Более того, можно создать свой язык - поскольку два подхода к описанию
грамматик (PGE & TGE) делают эту задачу не столь уж и сложной.

В любом случае, возвращаясь к ngx_http_script_module, встраивание в
"if"-контекст любого внешнего языка - видится методом сомнительным в
плане удобства/очевидности, так что уж лучше имеющийся набор директив (и
подход) останется как есть.

Текущий же вариант - со встраиваением perl, весьма гибок в плане
расширения функциональности. А использование Parrot позволит увеличить
скорость выполнения еще больше.

-- 
Sergey Skvortsov
mailto: skv at protey.ru





More information about the nginx-ru mailing list