— 📝Fixes#1315, #1374, and #1400.
— 📝 Lifetime in iterators was referencing the wrong stack (the main thread) rather than the coroutine's stack at time of creation.
— 📝 Using main_reference/main_* objects was a suitable enough fix for most of these problems.
— ⚡🛠 Prevent performance and usability issues from changing containers by storing the being/end iterator separately, rather than continually invoking `deferred_uc::end(…)` every time.
— 🛠 Improve sizes for stored iterators in select cases.
— 🛠 Allow for sentinel-style C++20-and-beyond ranges.
— 🔧 Improve single file generation CMake.
— 👷♀️ Fix up internal Lua build system issues.
- reorder constructor values to match class order
- Fix up compilation related to GCC
- Add new shim tests to confirm insertion works properly
- regenerate single
- Make sure multiple states don't interfere with each other's keys
- Make sure re-registration of the same type does not cause too many problems
- Make sure the variadics test is present
- Make sure the storage keys are cleared out properly
- Ensure stack field_get/field_set has consistent metaprogramming for needing a pushed table, and at what offset
- Avoid duplicate logic in table_core for the same logic by deferring to detail helper
- Fixes#1095
- Inheritance was causing __index and __new_index to be overriden on the named metatables
- This meant special constructors and other metamethods might not have been set properly
- Use lua_rawset to directly slam dunk the value into the table
- add noexcept to some of the core function calls
- type usage for both trampolines and yields can now be fully tracked, at the expense of more template instantiations when using both
- exceptions should be less prone to explosion in C versions, but will break in C++ code (the trampolines need to be modified for usertype calls to avoid this problem, specifically)
- Add a new feature for SOL_FUNCTION_CALL_VALUE_SEMANTICS. Fixes#1059
- Detect deprecated/removed bit32 library. Fixes#1086
- Format the entire repository. Close#1073
- SOL_LUAJIT was not being properly defined. Close#1082
- Fix alignment issue. #1071
- readonly(...) should no longer issue errors in bogus manners
- binding for member function pointers and normal pointers should behave better now
- coroutines should now properly transfer the state/identity of their error handlers
- Fix empty base class optimization type
- Improve bind traits metaprogramming
- Add new define to catch-all for exception propagation
- Improve natvis
- Move test defines to build system, as we should
- Add a new example for multiple thread/states in Coroutines
- Add proper direct to mangling in Clang for Windows
- Exceptions are still busted on some platforms (Clang being quite funky)
Rationale: since sol2 is a header-only library, some projects might
use it as a private dependency instead of exposing it through their API.
Thus, it is useful to have an option to not install sol2, in order to
reduce the installation size as well as to avoid accidentally exposing
internal dependencies in the top-level project.
The project I work on is a demonstration of how the feature might be
used:
f4a20ec39e/external/CMakeLists.txt (L84)
(mind the different name of the CMake variable, I renamed it to fit the rest
of the sol options convention)
We have an install-check script script which verifies that only expected
headers, libs, targets and docs are exported (the one which are interesting
from users PoV). I wouldn't mind contributing the script as github workflows
if you want to use it as well - please provide feedback if that's desired.
Here is a link to our script for preview:
https://github.com/GENIVI/ramses-logic/blob/master/ci/scripts/installation-check/check-installation.py
While modifying the CMake code, I noticed a 4-space instead of TAB in one
place and fixed it to be consistent with the rest of the CMake code.
- Not at all type safe: there should be some investigation into making it less unsafe to work with these things (albeit it looks like it would cost +1 pointer to serialize a string name for each callable in Lua, at LEAST)
- Must be opted into - see the documentation
- Fixes#1015
- A few drive-by fixes here and there
- New configuration test harness with CMake
- Weed out bugs in the numeric checking implementation
- Solve the problem with load_result/protected_function_result/unsafe_function_result being copyable and thus amenable to explosions. Fixes#995.
- Resolve the warning in sol::readonly. Fixes#1000.
- Looke into #1014. Not sure I can help there, honestly; looks like a mix up of multiply-loaded libraries and mixing the two.
- Just let MSVC have crap codegen. The compiler sucks anyways. Fixes
- Add incremental GC power. Fixes#997.
- Add non-null offset manipulation. Did I mention I hate VC++ and how it implemented _Aligned? Fixes#1017.
Add a note to the documentation about SOL_NO_LUA_HPP being less preferred over the C++ defines, to Fix#1013.
Add regression tests (not yet fixed) so I can get to the bottom of VC++ being ass.
This might help with error reporting for larger non-text based chunks. Maybe helps #989, but that looks like it needs the user to define their own traceback handler.
Fix compilation issues with boost optional usage. Fixes#990
Fix more shitty docs (thanks, @nabijaczleweli)