#define CLFACTORY_BEGIN_CODE "return function() " #define CLFACTORY_END_CODE " end" 在lua代码的开头结尾加了上述代码,搞不懂是出于啥目的。 另外如果想让ngx_lua支持luac编译之后的代码,那么是否可以这么做: 1. 在用户代码加上闭包之后,用luac编译; 2. 修改ngx_lua加载lua的部分: 对于二进制文件,不增加闭包代码,直接加载。 -- Best Regard!
Hello! 2012/5/22 Simon <big...@gmail.com>: > #define CLFACTORY_BEGIN_CODE "return function() " > #define CLFACTORY_END_CODE " end" > > 在lua代码的开头结尾加了上述代码,搞不懂是出于啥目的。 > 这部分代码的动机请见 chaoslawful 当年发送到 lua-l 邮件列表的这一封邮件: http://lua-users.org/lists/lua-l/2010-06/msg00415.html 核心解法见这一封回复邮件: http://lua-users.org/lists/lua-l/2010-06/msg00416.html 或许我们应该多加一些说明到程序注释里面去? > 另外如果想让ngx_lua支持luac编译之后的代码,那么是否可以这么做: > 1. 在用户代码加上闭包之后,用luac编译; 这个需要提供一个外部工具,可以在 luac 之类的东西的基础上简单封装。但在 ngx_lua 一侧需要提供必要的检查以确保其正在加载的字节码文件是用我们自己的工具生成的。 > 2. 修改ngx_lua加载lua的部分: 对于二进制文件,不增加闭包代码,直接加载。 > 这里需要指出的是,标准 lua 5.1 解释器和 luajit 2.0 所使用的字节码格式是不同的(还不算它们各自的不同版本中的变化),如果需要在 ngx_lua 一侧做的话,需要分情况讨论,但这确实是最透明的解法。 Regards, -agentzh