【发布时间】:2011-07-10 10:06:40
【问题描述】:
我需要 (a) 沙盒和 (b) 可序列化的延续。 I'm exposing server-side game scripting to users,它非常异步,因此回调模式使代码不可读,对于新手程序员来说非常难以接近。延续传递风格是一种替代方案,但具有相同的缺点。异步是指对用户的查询可能需要数月才能完成。
查看http://weaverengine.com/platforms查看我的完整列表
可序列化的延续似乎是一个非常优雅的解决方案,但很少有解释器支持它们。
到目前为止,我唯一的选择似乎是 Rhino。我希望 NodeJS 或 PyPy 可以工作,但目前的证据表明相反。
Lua seems to support coroutines,但我找不到任何关于它是否支持可序列化延续的信息。 Lua 在沙盒方面做得很好。
NodeJS 有 Jefe 提供非常好的沙盒,但 nothing so far regarding continuation serialization。
根据我在 pypy-dev 邮件列表中的理解,PyPy 还没有完善他们的沙盒和可序列化的延续支持到可以一起使用的程度。
JavaFlow 提示如果所有类都实现了 Serializeable,那么 Java 延续可以被序列化。但是除非我可以在 JavaFlow 之上运行一个很好的动态语言的解释器,否则我不感兴趣。
Java 和 Rhino 是我唯一的选择吗?
是否有 NodeJS 的分支支持继续支持?任何符合这些标准的相当不错的动态语言?
【问题讨论】:
-
请注意:Rhino 的 Continuations 仅在以解释模式 (-opt -1) 运行时可用。 Rhino 可以通过多种方式运行,通常它会 JIT 编译 Java 字节码,或者可以使用 jsc 提前编译为字节码。当然,在解释模式下运行速度较慢,所以如果性能是一个问题,这是需要注意的重要事项。
标签: javascript node.js rhino continuations sandbox