Lua Worker
Package for running a Lua VM in a Web Worker.
Example
If you prebuilt the worker.js
file, you can specify its location when
calling the luaworker
module function:
var lua = require('luaworker')('worker.js');
lua.execute('name = "Lua"');
lua.execute('print("Hello from " .. name .. "!")', function (err, buffer) {
console.log(buffer);
});
To be able to run this in a browser, you need to use a framework that
supports CommonJS modules (for example: Browserify).
Using this package
To get the necessary files from this package, install it with NPM:
npm install --save luaworker
As stated above, you need to first package this code so that it can run
in a browser. You can do this with, for example, Browserify.
Here's how you'd create the JavaScript files to run in your browser,
assuming you are using the code in the Example section above:
browserify node_modules/luaworker/worker.js -o worker.js
browserify main.js -o app.js
If you run this, you should see the output "Hello from Lua!" in your
console.
Note that this hasn't been optimized yet, so if you don't minimize your
code (by using UglifyJS, for example), you may end up with a huge
worker.js
file.
Building
To build the required JavaScript, you need to have Emscripten in
your PATH. To build, simply run ./build
.
The work in emlua.patch
is borrowed from kripken's lua.vm.js.
Note: This does not include the Lua → JS bridge, since allowing
access to JavaScript from Lua might not always be desirable.