Releases: libriscv/godot-sandbox
v0.15: Minor fixes and improvements
This release brings a few bugfixes and additions to the C++ API. A test framework has also been added with a basic test to start with. More to come!
What's Changed
- Use auto for basic types by @fire in #93
- Shorten the readme for readability by @fire in #96
- Apply code style in the readme by @fire in #99
- Add double builds by @Ughuuu in #101
- Add ClassDB::instantiate() and Node::create() by @fwsGonzo in #102
- Implement some global wrappers for C++ by @fwsGonzo in #103
- Use addr2line from Docker container, enable demangling by @fwsGonzo in #104
- Testing framework by @fwsGonzo in #106
Full Changelog: v0.14...v0.15
v0.14: Timers, packed arrays and std::u32string
Support for Timer with capture storage has been added. Most packed arrays are now supported and std::u32string matching Godot internal string is now also supported. The ABI had to break for some of these changes, so a program rebuild is required.
What's Changed
- Add basic Timers with capture storage support, add as_byte_array by @fwsGonzo in #84
- Improve f32 and f64 array abstractions, support other packed arrays by @fwsGonzo in #85
- Add support for guest-side std::u32string by @fwsGonzo in #87
- Implement support for calls with no return value by @fwsGonzo in #89
Full Changelog: v0.13...v0.14
v0.13: Basic support for Array, Dictionary, String
In this release, basic support has been added for the Godot types: Array, Dictionary and String. Native language-native strings can still be used like always. We now also build Arm64 docker images.
What's Changed
- Try to add more architectures by @Ughuuu in #79
- Rework Variant to allow storing complex variants, treat String as complex by @fwsGonzo in #78
- Implement basic Array support by @fwsGonzo in #80
- Implement basic Dictionary support by @fwsGonzo in #81
- Implement String abstraction for guests by @fwsGonzo in #82
- Implement versioning in Rust API, version warnings in editor by @fwsGonzo in #83
Full Changelog: v0.12...v0.13
v0.12: Automatic updates and program versioning
- Implement versioning API for C++ programs
- Automatically update the C++ docker container on first use
- Add
cast_to<Node>
helper in C++ API - Allow creating VM callables with pre-passed arguments
- Remove red unfiltered error messages when showing compiler messages
PRs
- Slightly improved VMcall latency for simple Variant types by @fwsGonzo in #70
- Initial API versioning by @fwsGonzo in #76
- Update the Docker container if necessary on first usage by @fwsGonzo in #77
Full Changelog: v0.11...v0.12
v0.11: Variant improvements and fixes
This release solves some problems found with Variants in the guest.
If you are upgrading to this version, remember to docker pull
to get the latest container, as well as rebuilding your programs.
What's Changed
- Variant reduced from 32- to 24-bytes
- Scoped variants have call-lifetime and only needs an index
- Only add scoped variants when trust is implicit
- Add alignas work-around for insane 32-bit x86 Android
- Free Variants passed as VM call arguments (solves run-away guest arena usage issue)
Full Changelog: v0.10...v0.11
v0.10: Improved editor monitoring and lag prevention
This is a minor release that focuses on preventing issues in the editor when scripts are repeatedly failing.
- Add some global stats for easier monitoring of sandboxes
- Throttle calls into sandbox when exceptions happen, in editor mode
- This avoids creating lag in the editor when something is wrong
- Add a few helper methods to Vector2 with native performance
- See the C++ API reference for information
Full Changelog: v0.9...v0.10
v0.9: Sandboxed properties, basic monitoring
Sandboxes can now expose properties that are tied to VM data.
There is also monitoring for the Sandbox, in order to be able to easily see memory leakage, vmcall spam or execution timeouts.
As always, remember to docker pull
the C++ and Rust containers.
WARNING: In this release you may have to check for editor:
if (is_editor())
return {};
Enabling the sandoxes to act as tools also allows them to have options in the GUI.
PRs
Full Changelog: https://github.com/libriscv/godot-sandbox/compare/v0.8...
v0.8: Basic Node API in Rust, improved C++ API
In this release, the Rust API has received basic support for Node as well as the ability to make function calls into the engine. With that it's possible to do some basic scripting in Rust. In C++ the Node and Object API is now more complete with full support for methods, properties and signals. Node manipulation should also be complete with both regular and deferred operations.
Note: Use to docker pull
to get the latest C++ or Rust compiler containers.
What's Changed
- Add basic exception handling in guest C++ programs by @fwsGonzo in #55
- Improve Rust compiler feedback, print using array by @fwsGonzo in #56
Full Changelog: v0.7...v0.8
v0.7: API and stability improvements
Add access to certain global objects, like Engine, Input. Add access to current scene tree. Add property get/set for objects. Fixed some bugs with C++ guest strings and vectors.
There is now a demo project that showcases this Godot extension.
If you're updating from a previous version, remember to docker pull
the Docker containers for each language.
Full Changelog: v0.6...v0.7
v0.6: API additions and improvements
In this release a demo project has been used to test the ability of the sandboxing extension.
- Basic Node3D support added
- Method-call support for nodes (call, call_deferred)
- Node get(), get_children(), get_method_list()
- Variant StringName support
- Variant destructor now has native performance
- main() is now optional in C++
Full Changelog: v0.5...v0.6