github anjo76/angelscript v2.39.0

56 minutes ago

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)

Don't miss a new angelscript release

NewReleases is sending notifications on new releases.