embedded javascript

Peter Leonov gojpeg на gmail.com
Вт Фев 9 17:03:59 MSK 2010


On 09.02.2010, at 14:06, Igor Sysoev wrote:

> Я сейчас изучаю v8 на предмет встраивания в nginx
Ура!!! :)

Тока у v8 есть один неприятный недостаток: он не умеет предупреждать, когда освобождает память под объектом. То есть надежные деструкторы там пока сделать нельзя (есть, правда извороты, но они недокументированные). В принципе, это ничем не грозит, если не будет ситуаций, когда яваскрипт просит энжинкс «попредержать» освобождение запроса.

> и у меня возник вопрос
> по поводу интерфейса - как лучше связать запрос с javascript'ом:
> 
> 1) сделать предопределённый объект request, по аналогии с браузерными window
>   и document.
> 2) или передавать его первым параметром функции, как в перле и в одной
>   из реализаций nginx/v8:
>   function handler(request)
>       http://code.google.com/p/ngxv8/source/browse/trunk/examples/simple.js

ИМХО, второй.

Если использовать первый вариант, то в разные моменты времени глобальная переменная будет указывать на разные запросы. Ее придется выставлять, когда пришел таймер. А иногда она будет вообще пустой или указывать на отработавший запрос. И в любом случае ее придется пересохранять, чтобы запомнить в замыкание. А что будет, если вернутся треды… ;)

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

А еще глобальные переменные по определению медленнее параметра функции ;)

> Какой из этих способов можно также реализовать в TraceMonkey ?
Любой.

Собственно, вот все мои мысли касательно связки нативный запрос + яваскриптовая обвязка.
http://kung-fu-tzu.ru/posts/2009/12/03/nginx-spidermonkey-memory-management/

> 
> 
> -- 
> Игорь Сысоев
> http://sysoev.ru

С уважением,
Петр Леонов.


Подробная информация о списке рассылки nginx-ru