2.9 KiB
Luau
Built-in library for generating luau bytecode & functions.
Example usage
local luau = require("@lune/luau")
local bytecode = luau.compile("print('Hello, World!')")
local callableFn = luau.load(bytecode)
-- Additionally, we can skip the bytecode generation and load a callable function directly from the code itself.
-- local callableFn = luau.load("print('Hello, World!')")
callableFn()
Since luau bytecode is highly compressible, it may also make sense to compress it using the serde
library while transmitting large amounts of it.
Functions
compile
Compiles sourcecode into Luau bytecode
An error will be thrown if the sourcecode given isn't valid Luau code.
Example usage
local luau = require("@lune/luau")
-- Compile the source to some highly optimized bytecode
local bytecode = luau.compile("print('Hello, World!')", {
optimizationLevel = 2,
coverageLevel = 0,
debugLevel = 1,
})
Parameters
-
source
The string that will be compiled into bytecode -
compileOptions
The options passed to the luau compiler that will output the bytecode
Returns
- luau bytecode
load
Generates a function from either bytecode or sourcecode
An error will be thrown if the sourcecode given isn't valid luau code.
Example usage
local luau = require("@lune/luau")
local bytecode = luau.compile("print('Hello, World!')")
local callableFn = luau.load(bytecode, {
debugName = "'Hello, World'"
})
callableFn()
Parameters
-
source
Either luau bytecode or string source code -
loadOptions
The options passed to luau for loading the chunk
Returns
- luau chunk
Types
CompileOptions
The options passed to the luau compiler while compiling bytecode.
This is a dictionary that may contain one or more of the following values:
optimizationLevel
- Sets the compiler option "optimizationLevel". Defaults to1
.coverageLevel
- Sets the compiler option "coverageLevel". Defaults to0
.debugLevel
- Sets the compiler option "debugLevel". Defaults to1
.
Documentation regarding what these values represent can be found here.
LoadOptions
The options passed while loading a luau chunk from an arbitrary string, or bytecode.
This is a dictionary that may contain one or more of the following values:
debugName
- The debug name of the closure. Defaults toluau.load(...)
.environment
- A custom environment to load the chunk in. Setting a custom environment will deoptimize the chunk and forcefully disable codegen. Defaults to the global environment.injectGlobals
- Whether or not to inject globals in the custom environment. Has no effect if no custom environment is provided. Defaults totrue
.codegenEnabled
- Whether or not to enable codegen. Defaults tofalse
.