Является ли Rhino единственным интерпретатором с поддержкой песочницы и сериализуемых продолжений?

Мне нужны (а) песочница и (б) сериализуемые продолжения. Я показываю пользователям сценарии игры на стороне сервера, и это чрезвычайно асинхронно, поэтому шаблон обратного вызова делает код несинхронным. -читаемый и очень недоступный для начинающих программистов. Альтернативой является стиль передачи с продолжением, но он имеет те же недостатки. Асинхронный в том смысле, что выполнение запроса к пользователю может занять месяцы.

Полный список см. На http://weaverengine.com/platforms.

Сериализуемые продолжения кажутся очень элегантным решением, но немногие интерпретаторы их поддерживают.

Пока что, похоже, единственный вариант - Rhino. Я надеялся, что NodeJS или PyPy сработают, но имеющиеся данные свидетельствуют об обратном.

Lua, похоже, поддерживает сопрограммы, но я не могу найти никакой информации о том, поддерживает ли он сериализуемые продолжения. Lua хорошо выполняет песочницу.

NodeJS имеет Jefe предлагает действительно хорошую песочницу, но пока ничего не касается продолжение сериализации.

PyPy также еще не доработал свою поддержку песочницы и сериализуемого продолжения до такой степени, что их можно использовать вместе, как я понял из списка рассылки pypy-dev.

JavaFlow намекает, что если все классы реализуют Serializeable, то продолжения Java могут быть сериализованы. Но если я не смогу запустить интерпретатор красивого динамического языка поверх JavaFlow, меня это не интересует.

Является ли Java и Rhino моим единственным вариантом?

Есть ли ветка NodeJS с продолжением поддержки? Какой-нибудь достаточно приятный, динамичный язык, отвечающий этим критериям?


person Lilith River    schedule 07.03.2011    source источник
comment
Просто примечание: продолжения Rhino доступны только тогда, когда он запущен в интерпретирующем режиме (-opt -1). Rhino можно запустить двумя способами, и обычно он JIT-компилирует байт-код Java или может быть скомпилирован заранее в байт-код с использованием jsc. Конечно, работа в интерпретирующем режиме медленнее, поэтому, если производительность является проблемой, это важно знать.   -  person jbeard4    schedule 08.03.2011


Ответы (3)


Я удивлен, что вы не упомянули Scheme, поскольку это язык, на котором впервые появились продолжения. Например, SISC - это интерпретатор схемы, работающий на JVM и поддерживающий сериализуемые продолжения. Они используются, например, в структуре SISCweb.

Для песочницы вы можете использовать встроенные функции безопасности jvm.

person Jörn Horstmann    schedule 07.03.2011
comment
Спасибо! Я читал о продолжениях в других версиях схемы, но эти реализации были не сериализуемыми. Я не уверен, что Scheme - лучший язык для обучения людей программированию - я считаю его продвинутым, но чрезвычайно мощным и полезным. - person Lilith River; 08.03.2011
comment
Racket имеет отличную поддержку песочницы [1]. Он также поддерживает сериализуемые продолжения на своем слегка ограниченном языке веб-сервера [2]. А если вам не нравится язык веб-сервера, вы можете использовать его в качестве примера для реализации собственного изолированного языка сценариев с сериализуемыми продолжениями. 1. docs.racket-lang.org/reference/Sandboxed_Evaluation.html 2 . docs.racket-lang.org/web-server/ - person Sean Lynch; 23.02.2018

Должна существовать возможность сериализации продолжений в Gambit-C.

person knivil    schedule 15.03.2011
comment
Спасибо! Я раньше не слышал об этой версии Scheme. К сожалению, я не уверен, что Scheme подходит в качестве вводного :( - person Lilith River; 16.03.2011

В итоге я использовал Lua 5.1.4 и Pluto. Пока что кажется хорошим выбором.

person Lilith River    schedule 29.12.2013