- Fixed
undefined symbol: lua_*
when requiring Lua/C modules in POSIX systems (#41)
- Plugin initialization on Windows (#31)
- [build] Fixed
make dist
dependencies to include LuaJIT'sjit/*.lua
files - [build] Fixed
make unzip-to-build
to only copy contents frombuild
folder
join
method for allPool*Array
metatypes with the same implementation as forArray
andPoolStringArray
.- Possibility for using
ClassWrapper
s asextends
of a script instead of their string name. E.g. script:return { extends = Node }
Object:get_class_wrapper
method that returns theClassWrapper
associated with the Object's class.ClassWrapper:has_property
method that returns whether a class has a property with the passed name. Properties are considered available if they are found in the result ofClassDB:class_get_property_list
.- Library mapping for
Server
platform pointing to thelinux_x86_64
build. string.quote
function for quoting values.- [build] Passing
DEBUG=1
tomake docs
adds--all
flag toldoc
, which adds documentation for locals. - [build] Passing
DEBUG_INTERACTIVE=1
tomake test*
makes errors trigger a debugger.lua breakpoint, for debugging tests.
- Return values passed to
lps_coroutine:resume(...)
when callingGD.yield()
. - Comparing
Array
andPool*Array
s against Lua primitives likenil
and numbers now returnfalse
instead of raising. - Support for
false
as the default value for a property.
- BREAKING CHANGE:
Array
andPool*Array
's__index
and__newindex
metamethods now use 1-based indices to match Lua tables. For 0-based indexing, useget
/set
orsafe_get
/safe_set
instead. - BREAKING CHANGE: property setter functions don't receive property name
anymore (#5).
That is, instead of
function(self, property_name, value)
, setters now look likefunction(self, value)
. - BREAKING CHANGE: script instances are now structs instead of tables.
They still have a backing table for storing data, but indexing now calls
getter and setter functions for known properties. Use
rawget
andrawset
to bypass getter/setter functions and access the data table directly. (#5) - BREAKING CHANGE:
Object.call
now raises instead of failing silently. UseObject.pcall
to protect from errors.
- Support for running without JIT enabled
- Support for iOS builds
export
function, an alias forproperty
that always marks the property as exported
- Quote
CODE_SIGN_IDENTITY
argument passed tocodesign
invocations - ABI mismatch for math types in Linux x86_64 + Mono (#4)
- BREAKING CHANGE: properties are not exported by default. Either pass
a usage with the
PropertyUsage.EDITOR
bit set or callexport
instead ofproperty
- Support for
codesign
ing OSX builds directly from make invocation. The optional parameters areCODE_SIGN_IDENTITY
andOTHER_CODE_SIGN_FLAGS
. LUA_BIN
option for specifying a Lua command other thanlua
when buildingnative-luajit
make target, used by CIunzip-to-build
make target, for unzipping artifacts from CI to build folder
strip
invocation on OSX builds- Update build GitHub Actions workflow with newer build pipeline
- Added
build/.gdignore
to distribution, to stop Godot from trying to importbuild/jit/*.lua
files - Added default values for
MACOSX_DEPLOYMENT_TARGET
, making it an optional parameter for OSX builds
EditorExportPlugin
for minifying Lua scripts withLuaSrcDiet
on release exports. Minification may be turned off with thelua_pluginscript/export/minify_on_release_export
project setting.
- Release builds' init Lua script are minified with
LuaSrcDiet
and libraries are nowstrip
ed, resulting in smaller dynamic libraries - HGDN functions are now compiled with static visibility and unused GDNative extensions are excluded, also resulting in smaller dynamic libraries
- Makefile targets for cross-compiling for Windows were renamed from
cross-windows*
tomingw-windows*
PoolByteArray.extend
when called with a string argument
Array.join
method, similar toPoolStringArray.join
- Project Settings for setting up
package.path
andpackage.cpath
- Bundle LuaJIT's
jit/*.lua
modules in build folder
- Error handler now uses
tostring
to stringify the incoming parameter, avoiding type errors. It also checks for the result ofstring.match
, so it does not errors if the message is not in the format expected. - Loading of C modules now uses absolute library paths, so that files found in
patterns like
res://*
are correctly loaded. - Always try loading active library, so that dynamic loader knows about
lua*
symbols when loading C modules. Pool*Array
s'__gc
metamethod
GD._VERSION
Object.null
- Call
Object.set
onObject.__newindex
- Stack trace to error message when loading script fails
- Initialize known properties when instantiating script
- Unit test infrastructure
- Android ARMv7/ARM64/x86/x86_64 builds
- [plugin] REPL history, with up/down keys choosing previous/next line
- Properties with
nil
as default value not accesible from Lua - Call
Array.duplicate
using API 1.1 instead of 1.0 Array.duplicate
andArray.slice
return value GC- Call
Dictionary.duplicate
using API 1.2 instead of 1.0 VariantType
used for float properties- Calling
NodePath()
returns an empty NodePath, rather than one with the path"nil"
- Lua PluginScript language
- Embedded LuaJIT
- Metatypes for all Godot basic types
yield
function similar to GDScript's- Script validation and template source code
- Editor plugin with a simple REPL
- Package searcher for Lua and C modules that work with paths relative to
the
res://
folder and/or exported games' executable path - API documentation