Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: embedded javascript
- To: nginx-ru@xxxxxxxxx
- Subject: Re: embedded javascript
- From: Peter Leonov <gojpeg@xxxxxxxxx>
- Date: Tue, 9 Feb 2010 18:30:47 +0300
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:content-type:mime-version :subject:from:in-reply-to:date:content-transfer-encoding:message-id :references:to:x-mailer; bh=GZCQZdha/Ma3OAc9DTUiFZ6EBn1XWola4zes6K7wKDs=; b=LnMB99Z9OJLr7o3yCmt1hc6AbvVhWyBHT9dJQXCzaCAGtt7AGgCeVCOZUjVXhpFyrm BA+dEQwLYRmf5va5bVMEhpGBAOdxVLARV7hBzLFFXO2xxxbZeH9KCpUEi8rJ1+Dam4XO NjAri5mH6PD5h0ItNHs5OXidMJMRTlBy9lkE0=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=content-type:mime-version:subject:from:in-reply-to:date :content-transfer-encoding:message-id:references:to:x-mailer; b=cpNa6WotfKa53geyFAM7CAEKvEyfOC82G5pwN88yGNX4KQScBJwVAzJBcx4+xyfYJJ 5WBJ/ZtvZVX7KXbimkUW5jp+/lqaU08weHsru4Nrg9ZC56K34Aw9lF8EhmSD5/8IVgAp +2xuNinBN0FQzZsK9e6s+VB9jeD9IA8raym6o=
- In-reply-to: <20100209142627.GH16810@xxxxxxxxxxxxx>
- References: <20100209110636.GB16810@xxxxxxxxxxxxx> <8E5B9645-632D-42BA-960E-BBCD2BACFC89@xxxxxxxxx> <20100209142627.GH16810@xxxxxxxxxxxxx>
On 09.02.2010, at 17:26, Igor Sysoev wrote:
> On Tue, Feb 09, 2010 at 05:03:59PM +0300, Peter Leonov wrote:
>
>> On 09.02.2010, at 14:06, Igor Sysoev wrote:
>>
>>> Я сейчас изучаю v8 на предмет встраивания в nginx
>> Ура!!! :)
>>
>> Тока у v8 есть один неприятный недостаток: он не умеет предупреждать, когда
>> освобождает память под объектом. То есть надежные деструкторы там пока
>> сделать нельзя (есть, правда извороты, но они недокументированные). В
>> принципе, это ничем не грозит, если не будет ситуаций, когда яваскрипт
>> просит энжинкс ?попредержать? освобождение запроса.
>
> Имеются ввиду weak references ?
Помню, что обсуждение было возле слабых ссылок (если я правильно понял фразу
?weak references?). А потом они (в рассылке) выяснили, что v8 не будет вызывать
деструктор (сишный, конечно, в яваскрипте же их нету), перед тем, как удалить
объект из памяти. Перл, помнится, умеет вызывать.
> Что касается недокументированности, то там недокументировано всё, что выходит
> за пределы банального "hello world!".
Это да. Но нам не привыкать ;)
>
>>> и у меня возник вопрос
>>> по поводу интерфейса - как лучше связать запрос с javascript'ом:
>>>
>>> 1) сделать предопределённый объект request, по аналогии с браузерными window
>>> и document.
>>> 2) или передавать его первым параметром функции, как в перле и в одной
>>> из реализаций nginx/v8:
>>> function handler(request)
>>> http://code.google.com/p/ngxv8/source/browse/trunk/examples/simple.js
>>
>> ИМХО, второй.
>>
>> Если использовать первый вариант, то в разные моменты времени глобальная
>> переменная будет указывать на разные запросы. Ее придется выставлять, когда
>> пришел таймер. А иногда она будет вообще пустой или указывать на
>> отработавший запрос. И в любом случае ее придется пересохранять, чтобы
>> запомнить в замыкание. А что будет, если вернутся треды? ;)
>>
>> Первый способ легко построить на основе второго практически бесплатно, а вот
>> наоборот будет сложнее (учитывая глобальные и запросовые таймеры, колбеки
>> подзапросов и приема тела).
>>
>> А еще глобальные переменные по определению медленнее параметра функции ;)
>
> В v8 для каждого запроса, скорее всего, придётся делать свой Context, и
> в этом контексте будет один экземпляр объекта request. Так что он всегда
> будет правильный.
То есть поделиться данными с другим запросом будет нельзя? Да и подтормаживать
они должны эти контексты, так как несут полные копии встроенных объектов и
всякое такое. А почем вы решили их использовать?
В спайдерманке (он же трейсманки), кстати, контекстам разрешается делиться
объектами, если они лежат в одном рантайме.
> А что касается трэдов, то в v8 они только кооперативные.
Да, и это их архитектурное решение, то есть треды и не предвидятся
>
>>> Какой из этих способов можно также реализовать в TraceMonkey ?
>> Любой.
>>
>> Собственно, вот все мои мысли касательно связки нативный запрос +
>> яваскриптовая обвязка.
>> http://kung-fu-tzu.ru/posts/2009/12/03/nginx-spidermonkey-memory-management/
>
> Да, это я смотрел как-то, надо будет перечитатьь внимательнее.
Ого! Я краснею :)
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
С уважением,
Петр Леонов.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|