Work in progressYou can always find the latest version of AngelScript in the SVN on SourceForge.net. There you can browse the repository online and download a tarball with all the code for revision of choice.
If you prefer to use an SVN client to download the code, point your client to the following address:
Version 2.29.2 WIP - 2014/10/10
- Bug fixes
- Fixed bug when compiling expressions using opCall on objects returned by reference from previous call (Thanks Sir Ementaler)
- Empty initialization lists are now properly working where a repeat pattern is expected (Thanks cvet)
- Fixed bug when global variable expression had casts between script classes (Thanks cvet)
- Fixed incorrect warning on literal -9223372036854775808 (Thanks iraxef)
- Compiler was incorrectly accepting syntax as object@(expr) (Thanks iraxef)
- Taking the address of an imported function now works as it should (Thanks Wipe)
- Fixed crash in compiler when compiling initialization lists with 'null' as one of the elements (Thanks iraxef)
- Identity comparison on handle received as parameter by reference wasn't working (Thanks iraxef)
- Application no longer crashes if an asIObjectType is released after the engine has been released
- Template instances now receive the member properties that were registered for the template (Thanks Samichama)
- Template types can now use other template types as method arguments where the sub-types are shared (Thanks Samichama)
- Fixed bug in compiler with use of implicit value conversion and temporary variables (Thanks Jason Goepel)
- Library interface
- Improved compiler compatibility of asGetTypeTraits to support Xcode/Clang (Thanks PhilCK)
- Script interfaces now return the module that owns them with GetModule (Thanks cvet)
- Added asEP_DISABLE_INTEGER_DIVISION that makes all divisions with integer values result in doubles (Thanks Jason Goepel)
- Improved performance of shutting down the engine (Thanks ThyReaper)
- Compiler warns when variable in inner scope hides variable of same name in outer scope (Thanks carew)
- Compiler warns when overloading inherited class method and default args in the methods cause conflicts (Thanks Aaron Baker)
- Compiler automatically resolves ambiguous enum values on comparisons (Thanks Jason Goepel)
- Script language
- Script classes can now implement opConv and opImplConv to support type conversions
- Passing a non-lvalue expression to a &out argument will now yield compiler error instead of warning
- Virtual machine
- Updated asBC_CALLBND so that imported functions can now be bound to application registered functions too (Thanks gjl)
- The array and grid add-ons no longer set a script exception if the initialization list is empty
- Fixed problem with storing/retrieving enum values from the dictionary (Thanks iraxef)
- Concatenation with integers and string now properly supports 64bit types (Thanks iraxef)
- dictionary::get now supports retrieving stored handle by value if type is compatible (Thanks iraxef)
- CScriptBuilder::AddSectionFromMemory now has an optional lineOffset argument (Thanks Boost113)
- CScriptBuilder will report the correct path to the include files that fails to load (Thanks gjl)
- Fixed bug in CScriptFile when reading ints for least significant byte first (Thanks gjl)
- 2014/07/21 - Problem with declaring funcdef that uses arrays of script classes. status: needs changes
Known portability issues
- 2012/06/11 - 64bit integer arguments are not supported for native functions on XBox 360. status: needs changes
- 2012/08/23 - Android on MIPS doesn't support native functions status: needs changes
- 2012/12/14 - Linux with MIPS doesn't support native functions. Reported by Andris. status: needs investigation
- 2013/02/07 - C++ Builder and Win64 doesn't support native functions status: needs changes
- 2013/02/11 - Linker failure on Linux when trying to build shared object library. status: needs investigation
- 2013/08/11 - Passing std::string by value to app function in debug mode on MSVC2010+ and x86 can cause crash due to the string holding a back-pointer to original location. status: needs changes
- 2013/10/31 - 64bit ARM doesn't support native calling conventions. status: needs implementation
- 2013/11/22 - Borland C++ Builder 6.00 issues. status: needs changes
- 2014/01/05 - Native calling conventions doesn't work on Windows Phone 8. status: needs investigation
- 2014/01/21 - Dead-code-stripping doesn't work on 32bit MacOS status: needs investigation
- 2014/02/16 - Crash in CallCDeclFuction on 32bit Mac with XCode 5 and OS 10.9. status: needs investigation
- 2014/06/03 - Throwing exception from application causes seg fault on Linux Arm with softfp status: needs investigation
Changes planned for later versions
You're always welcome to send me your comments on current and/or upcoming features. Your feedback is very important for my planning and prioritization of already planned feature.
planned for 2.29.2
- Imported functions in namespaces
- Add a flag asOBJ_NEVER_GC for RegisterObjectType to tell AngelScript never to garbage collect handles of the type, i.e. objects that contain the handles do not need to bother with garbage collection
- Default args should use the namespace of the function they were declared for
- Look into possibility of implementing compound assignments for virtual properties
- Allow use of & when registering properties
- Possibly add engine property to support private and protected members. second thread.
- CScriptHandle add-on doesn't support casting to other types than the contained type
- Optimization opportunity
- add support for using constructor while performing implicit conversion
planned for 2.30.0
- Add engine property for setting how empty elements should be treated
- Deprecate asBEHAVE_VALUE_CAST since opConv is now available
- Implement the asIScriptEngine::CastObject method and deprecate IsHandleCompatibleWithObject
- Evaluate possibility of having a compiler callback to allow application to verify if function calls should be allowed for specific types when having variable arguments. Should the callback be global? Or should I have a callback for each registered function?
- Opportunity for optimization. Perhaps a special bytecode to call functions with signature 'void *obj::func(int)'? Or else, how to allow direct access to elements through offset with safe bounds checking?
- Change the weakref add-on to a value type
- Allow registered types to use the flag asOBJ_IMPLICIT_HANDLE when implicit handles is turned on
- Make asBEHAVE_REF_CAST into opCast. How to resolve conflict with normal refcast to interface or related class?
- Add validation for the returntype of refcast behaviour
- the context needs a SetArgType method for setting the argument when the called function has a variable argument type
long term goals for 3.0.0
- Redesign the import feature. Use of BindImportedFunction should be removed.
- Remove use of @. All ref types should be treated as handles implicitly, similar to Java.
- Change script language parameter references to simplify syntax.
- Change to caller owns object handles.
- TypeId and asIObjectType should be removed. asITypeInfo should be introduced instead.
- Remove the syntax for declaring dynamic array types, i.e. int arr;. Dynamic arrays should be declared as the template type, e.g. array<int> arr;. Static arrays (when implemented) should still be declared with int arr;