Changelog
Changelog since the version 1.5.0.
2.0.0
2026-5-31
First major update after the initial stable version.
This version is introducing many breaking changes and new features. If you want stability, please consider using 1.8 or waiting for 2.1.
Update
Official macOS (Apple Clang) support.
The library can be compiled with exceptions disabled (
-fno-exceptionsor/EHs-c-).The interfaces depending on exceptions will be redirected to an error handling macro defined by the user. Its default behaviour is calling
std::terminateimmediately.(Experimental) Listener for customizing error handling or recording registered entities.
Wrapper of AngelScript memory APIs (
script_allocator) now can be used in constant evaluation. It will automatically fallback to constexpr allocation under this situation.Merge the extension library and core library, dropping parts that is not customizable (see the Breaking Change part below).
Now, the library is completely header-only.
Add more tools for implementing script debugging functionality.
Update I/O module to support formatting script types when
<format>header is available. It also provides tools for quick integration with other formatting library like {fmt}.Unify implementation of binding generators to make the codebase easier to maintain.
Decouple binding generator interfaces with complex AngelScript calling conventions
Tools for comparing script objects.
Enable CMake script to use local external package for developing offline.
Update compatibility with AngelScript 2.39 WIP.
Compile-time validation for signatures of behaviours, callbacks, etc. You can disable it by defining macro
ASBIND20_CONFIG_NO_COMPILE_TIME_CHECKS.Update RAII helpers.
Now binding generators allow appending to existing types.
Breaking Change
String tools and compressed pair are moved into the namespace
asbind20::util.as_allocatoris renamed toscript_allocator.Extension library is removed.
Since asbind20 originated from a submodule of a personal project, many of the extensions were built for a private repository. I decided to migrate them to a separate open-source library in the future. Some of the extensions, like string extraction helper and section loader, are merged into the core library.
Use
asbind20::objfirst/objlastto specify the position of object pointer/reference, if you want to specify them explicitly, instead of dealing with underlying calling convention details of AngelScript.Redesign lock wrapper to fit common C++ paradigm for shared lock.
Now message callback and exception translator are registered by global functions, instead of
asbind20::global.
Bug fix
Fix issue when building with Unreal Engine 5 (PR #50 by ThaiNhatMinh)
1.8.0
2025-10-29
Update
script_invoke_resultno longer stores the result inside it, now it will get the result when user needs it (lazy evaluation).According to benchmarks, this has the same performance as the handwritten code retrieving values from AS interfaces directly. It is even slightly faster than the plain handwritten code in some situation. Compared to handwritten implementation, the implementation from previous version is slower about 1% ~ 3%, and even worse when returning a value type with expensive copy construction, such as a string with extremely huge content.
Experimental support for enum with custom underlying type in AngelScript 2.39 WIP.
Utility for quickly implementing conversion rules for enums with underlying type other than
intsuch asstd::byte.Experimental support for script
foreach.script_invoke_resultnow supportsoperator->for pointer type, which is useful for accessing members of returned reference types.Expose
get_context_resultfor easily retrieving result from context.Add member function
value_orforscript_invoke_result.script_invoke_resultcan be converted tostd::optional.script_invoke_resultcan be converted tostd::expectedif C++23 is available.Backport to support Clang 15 toolchain.
More utilities.
Intermediate interfaces for creating generic wrappers have all moved into the internal namespace, in order to not confuse the users.
Bug fix
Fix error caused by generated default/copy constructor when registering a C array (
type[size]) as value type.
Breaking Change
Due to the new lazy evaluation implementation of
script_invoke_result, it now can only be returned by script invocation tool. User cannot calls its constructor by value directly, e.g., returning a placeholder value when script failed.Please consider converting the code style described above to use
std::optional(orstd::expectedif C++23 is available).
Documentation
Add Chinese README
1.7.1
2025-8-7
Update
Update compatibility with AngelScript 2.38.0.
Mark more pointers in parameter list by
const.Add CMake flag for controlling the warning-as-error compiler flag during development and test.
Add test for clang-cl (Clang with MSVC-like interfaces) support.
Add nightly test for checking compatibility of asbind20 with the latest WIP version of AngelScript.
Add benchmarks for finding performance issues during development.
Bug fix
Add some missing utility interfaces for RAII helpers.
Documentation
Update and clarify.
Fix typo.
1.7.0
2025-7-19
Update
Fully support of x86 (32bit) Windows platform, including special treatment for
__stdcall.Binding generator for reference type no longer requires the registered type to be complete type.
Policy for converting script initialization list for constructors accepting
std::from_range(_t)when C++23 is enabled.
Breaking Change
Redesign interfaces of
container::singleto reduce some surprising behaviours. For example, the destructor won’t clean the data, you need to call another function for releasing the data.
Bug fix
Fix mismatched declaration in array extension that may cause crash on x86 platform.
Fix CMake error when configuring with Clang 19 toolchain.
Documentation
Add information about using asbind20 in XMake projects.
Removed
GCC 12 support is dropped due to too many workarounds. Please use GCC 13 or newer.
1.6.0
2025-6-14
Update
Helper for registering modulo operator.
Composite property support.
Composite methods support including generic wrapper with or without variable types.
Official arm64 support. Previously, it works theoretically but not actually tested.
New tools for managing script function without increasing its reference count. It’s useful when the programmer has deep understanding about the lifetime and want to write zero overhead code.
Adjust file structure for maintenance.
Slightly optimize memory usage of
small_vector.
Breaking Change
Removed
script_function_base. Usescript_function<void>instead.asbind20::meta::compressed_pairchanged toasbind20::compressed_pairasbind20::meta::overloadedchanged toasbind20::overloaded
Bug fix
Update compatibility with
string_viewof binding generators.Fix compilation error when using an integer bigger than 8 bytes, such as
__int128extension provided by Clang and GCC.
Documentation
Fix typo and wrong link.
Fix highlight script for AngelScript.
Add entrance for extension library for future update. (Currently, the documents of extensions are still incomplete)
Deprecated
Support of GCC 12 will be dropped in the next release, because it requires too many workarounds. Please use GCC 13 or newer.
1.5.2
2025-5-13
Update
Complete support of using AngelScript interfaces within AngelScript:: namespace. (Thanks GitHub @sashi0034)
1.5.1
2025-4-21
Update
Some interfaces of
container::singlewill return aboolvalue for checking result
Bug fix
Exception guarantee for
notify_gcpolicyException guarantee for
small_vectorFix memory leaks if any exception occurs in generated constructors / factories
1.5.0
2025-3-31
What’s New
Core Library
New tools for binding complex operator overloads
Interfaces of binding generator now all take
std::string/std::string_viewinstead ofconst char*for convenience and consistencyTools for multithreading with AngelScript
New tool named
overload_castfor choosing desired overloaded functions
Extension Library
First stable version of extension library released!
Please check the comment in source code of extension for their documentation. Full documentation for extension library is coming soon.
Documentation
Rewrite and migrate to Read the Docs.
Bug Fix
Generic wrapper may crash when returning some kinds of value type by value
Fix several bugs in
small_vector