Accessing Go via Lua
This module enables easy access to Go modules from LuaJit and therefore, NGINX with the LuaJit module. So if you need the capabilities of Go in your NGINX processing, you've come to the right place!
Note: Lua2Go is now available from LuaRocks: http://luarocks.org/modules/scottganyo/lua2go
To use (see also the example:
-
Write your Go module and
export
your functions://export add func add(operand1 int, operand2 int) int { return operand1 + operand2 }
-
Build your go module as a shared library:
go build -buildmode=c-shared -o example.so example.go
-
Include a bit of setup in your Lua file:
local lua2go = require('lua2go') local example = lua2go.Load('./example.so')
-
Register your
extern
declarations from your header file (example.h
) in your Lua:lua2go.Externs[[ extern GoInt add(GoInt p0, GoInt p1); ]]
-
Call your Go function from Lua (see example for more detail):
local result = lua2go.ToGo(example.add(1, 1))
-
Run your app:
luajit myapp.lua
-
Bask in the glory of all that you've accomplished!
-
To see how Lua2Go can be incorporated into NGINX, check out the benchmark example.
Enjoy!