Version 2.39.0 - 2026/11/09
Bug fixes
- Fixed using namespaces with nested namespaces (Thanks sashi0034)
- Fixed issue in compiling the switch cases for large numbers due to 32bit overflow (Thanks power_mcu)
- Fixed assert failure in compiling foreach with iterator as non-pod value type (Thanks atoft)
- GetGlobalFunctionByDecl wasn't using the explicit namespace in the declaration (Thanks Miss)
- Fixed used of deprecated OSAtomicIncrement32 on MacOS (Thanks Billy O'Neal)
- Unprepare was not clearing exception info (Thanks romanpunia_gd)
- Compiler was incorrectly making copy of object member property before type conversion in expressions (Thanks Sam Tupy)
- Added proper error message when opCast returned type by value
- Fixed compilation error with AS_DEBUG with computed gotos (Thanks williamjcm)
- Fixed crash with AS_DEBUG on engines with more than 32768 functions (Thanks Alexander Orefkov)
- Fixed crash with foreach on empty array of strings (Thanks li zhuang)
- Fixed crash after loading saved bytecode with template functions (Thanks gyxos-logan)
- Fixed crash that could happen while loading saved bytecode on certain compilers and platforms (Thanks Aleksander Jaronik)
- Variadic functions were incorrectly matched to non-variadic functions when the argument types were the same (Thanks oktonion)
- Fixed compiler error for Android NDK (Thanks luadebug)
- Fixed problem with calling constructor that has only default arguments (Thanks jit-zs)
- Fixed crash on CompilerGlobalVar when attempting to clean up after a name conflict (Thanks Wing-summer)
- Included error message when declaring virtual set property with & for types that do not support it (Thanks Mikk155)
- Fixed crash with multiple chained opCast(?&out) in the same expression (Thanks codecat)
- Fixed dTOu (and variants) in the VM to correctly convert large positive values that use the highest bit in target unsigned integer (Thanks Aaron Baker)
- Fixed registration of multiple methods referring to template specialized types (Thanks Jackozzo)
- Call to default constructor where constructor has default arguments wouldn't free temporary variables (Thanks Patrick Jeeves)
- Fixed assert failure on explicit conversion from bool (Thanks codecat)
- Fixed crash after calling Unprepare on nested context (Thanks LeonMrBonnie)
- Fixed compiler warnings (Thanks Jordon Moss)
- Fixed issue with initialization lists and inheritance where the initialization list element could get the wrong type (Thanks Violet CLM)
- Fixed assert error on some expressions with ternary conditions (Thanks tspivey)
- Variadic functions now accept 0 args (Thanks Alexander Orefkov)
- Fixed case where a construct call could use the wrong function if there were valid value cast options (Thanks Aleksander Jaronik)
- Fixed assert error on using foreach within switch statement (Thanks Fort-TM)
- Fixed assert error on compiling initialization lists where the element must be converted (Thanks Miss)
- Fixed instantiating delegates for global functions (Thanks Miss)
- Compiler didn't give proper error when passing primitive to function expecting &inout to object (Thanks Wambo)
- When compiling bitwise operator the compiler will try to convert object types to math type (Thanks Violet CLM)
- Fixed loading bytecode that uses variadic functions (Thanks Aleksander Jaronik)
- Declaring a type as ?[] will no longer be silently accepted (Thanks Aleksander Jaronik)
- Fixed exception handling with native calling convention and clang on MacOS x86-64 (Thanks pollend)
- Fixed crash in compiler when compiling a call to an imported function with the wrong types (Thanks Miss)
- Fixed macros in angelscript.h to use AS_NAMESPACE_QUALIFIER (Thanks CrackedMatter)
- Fixed issue in asCompareStrings (Thanks huison-cao)
- Fixed assert error on instantiating a template function with invalid subtype (Thanks sebight)
- Fixed issue on big endian platforms with 8 and 16bit constants (Thanks keqing996)
- Added validation to prevent duplicate definition of constructor or destructor (Thanks AK)
- Fixed crash when performing overloaded operator on handle returned by explicit ref cast (Thanks Fort-TM)
- Fixed calling native function that was registered after the context was created (Thanks Jordan Verner)
- Fixed issue where using namespace didn't work while parsing scripts (Thanks OriolCS2)
- Fixed thiscall with composite offset on systems with AS_NO_THISCALL_FUNCTOR_METHOD (Thanks fabienr)
- Fixed assert failure when compiling implicit conversion of type using constructor with variadic argument (Thanks Patrick Jeeves)
- Fixed resolution of nested namespace with same name as global namespace (Thanks Anton Brandstoetter)
- Fixed invalid compilation error when declaring class with single constructor taking int by reference (Thanks Fort-TM)
- Fixed array out of bounds access in asIScriptGeneric::GetAddressOfArg for variadic functions (Thanks HenryAWE)
- Fixed assert failure in specfic scenario of saving unoptimized bytecode (Thanks li zhuang)
- Fixed const method calling non-const method (Thanks AK)
- Fixed namespace resolution issue where class and namespace have the same name (Thanks Miss)
- Fixed assert failure after catching script exception raised from application registered constructor (Thanks gmp3 labs)
- Fixed bytecode optimization with 64bit operation followed by 32bit conversion that lead to variables being overwritten (Thanks XertroV)
- Fixed use of property accessor in return statement that returns a reference (Thanks Mikk155)
- Fixed const overload in templates (Thanks atoft)
- Fixed foreach loops on containers that are value types (Thanks suprstefan)
- Fixed memory leak in foreach loop on break statement and object loop varables (Thanks atoft)
Library
- Removed the first SUSPEND instruction in all compiled functions (Thanks OriolCS2)
- Added support for Fiber Local Storage on Windows (Thanks Roel Binnendijk)
- Improved error messages for function matching to indicate the reason a match failed (Thanks Paril)
- asIJITCompilerV2::CleanFunction is now called for all script functions regardless if the JIT function was compiled or not (Thanks Asu)
- Improved error message when lambda function can't be converted to target type (Thanks Aaron Baker)
- Made the core library code compatible with C++98 again (Thanks oktonion)
- Improved error message for mismatching shared declaration to inform the other module (Thanks Miss)
- It is now allowed to register object factory to return const handle (Thanks Patrick Jeeves)
- Implemented support for asCALL_THISCALL_OBJFIRST/LAST with addref and release behaviours (Thanks HenryAWE)
- Enabled use of computed gotos when compiling with clang-cl for Windows (Thanks Aleksander Jaronik)
- Improved validation of registering template constructors to better catch user errors (Thanks Patrick Jeeves)
- Implemented support for asCALL_THISCALL_ASGLOBAL for the template callback behaviour (Thanks HenryAWE)
Library interface
- Added GetLineEntryCount and GetLineEntry to asIScriptFunction (Thanks a-k-)
- Now it is possible to register enum types with defined underlying types (Thanks Paril)
- Added asITypeInfo::GetUnderlyingTypeId for retrieving the underlying type for enums and typedefs
- Deprecated asITypeInfo::GetTypedefTypeId
- Deprecated asIScriptFunction::FindNextLineWithCode
Virtual machine
- Changed asBC_CALLSYS, asBC_ALLOC, and asBC_CallPtr to hold an extra WORD with the arg count for variadic functions
Script language
- Added support for number separators, e.g. 1'000'000 (Thanks Paril)
- Enums can now be declared with underlying type to define the size of the enum (Thanks Paril)
- Variadic functions are no longer matching if there is a more specialized matching function for a call (Thanks oktonion)
Add-ons & Samples
- Prepared the samples for building on unix based OS (Thanks Yangfl)
- Added option to use the full file path for breakpoints in the debugger (Thanks OriolCS2)
- Debugger is now using the GetLineEntry to move the breakpoint to next valid line
- Improved compatibility for C++98 in add-ons (Thanks oktonion)
- Fixed memory leak upon cleanup of dictionaryValue used standalone as a global var (Thanks li zhuang)
- Fixed string add-on's format with uint8 (Thanks li zhuang)
Project
- Added port of MSVC assembly to GNU/AT&T assembly for pure clang builds on Windows (Thanks OctalCodes)
- Updated meson project file to add support for riscv64 processors (Thanks Vixea 0)