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.30.1 WIP - 2015/03/22
- Bug fixes
- Fixed bug in compiler when using compound assignment on virtual property on temporary variable (Thanks Violet CLM)
- Compiler no longer gives error when access global variable in global namespace from class in namespace (Thanks Sir Ementaler)
- Fixed bug with compiler accepting null handle in initialization lists that didn't support it (Thanks Phong Ba)
- It is now possible to register member properties as references if the member should be dereferenced before access (Thanks cvet)
- Fixed memory leak in serializer when using extra objects
- Fixed bug in serializer with incorrect refcount on registered types when restoring the script object that references them
- Serializer attempted to backup non-pod types that had no user type registered with bitwise copy potentially causing errors
- Added GetBuffer to the CScriptArray object (Thanks Solokiller)
- Added GetRef to the CScriptHandle (Thanks zerochen)
- Currently none
Known portability issues
I'll need the community's help to fix these, as I do not have access to all of the different development environments needed.
- 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. 2nd thread. 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: confirmed. needs investigation on to fix
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.30.1
- add support for using constructor while performing implicit conversion
- Add validation for the returntype of refcast behaviour
- Must be possible to use asOBJ_GC for value types, e.g. the CScriptHandle can indirectly form circular reference with an object
- Study possible improvements with asEP_DISALLOW_VALUE_ASSIGN_FOR_REF_TYPE
- Improve support for nested namespaces
- Loading pre-compiled bytecode should verify the access masks too
- 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?
- Optimization opportunity
- Implement the TODO's in the debugger add-on
- CScriptArray fails to create if the currently active context's state is execution exception
- Add check in CScriptAny::Store to prevent storing math types other than int64 and double
- Add verification in CScriptArray::Create to make sure the object type is the correct one
Planned for 2.31.0
- 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?
- Evaluate possibility of a compiler callback to allow application to determine if a type can be stored in a specific way (e.g. as global variable, as local variable, as class member, by value or by handle).
- Evaluate possibility of implementing allocatable user data ids (suggestion by Brian Ellis)
- Interface: expose methods to get where functions, object types, and global variables were declared
- Study possibility of implementing typeof. Similarly to the string factory it should allow the application to register what type should be returned. The function itself should not execute the argument, but only return its type.
Before each release
- Platform compatibility tests
- Test with AS_MAX_PORTABILITY
- Test with AS_NO_COMPILER
- Test with valgrind on Linux
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. (This is not completely decided upon)
- 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;