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.0 WIP - 2014/11/01
- Bug fixes
- Fixed bug with use of scoped reference types declared in global variables (Thanks ic0de)
- Fixed bug when comparing two handles and one is a handle to a read-only object (Thanks mbwac)
- Compiler will now give error if there is an overflow when evaluating power-of in constant expression (Thanks ThyReaper)
- Funcdefs can now have template types with script classes as subtypes (Thanks Sir Ementaler)
- Fixed an incorrect error code when registering a template specialization and the template type instance already existed (Thanks glcolor)
- Template specialization failed to remove generated template instances that has been created as a consequence (Thanks glcolor)
- Library interface
- Deprecated asBEHAVE_VALUE_CAST and asBEHAVE_IMPLICIT_VALUE_CAST
- asIScriptEngine::AssignScriptObject now returns an int with the success or error code
- The tokenLength arg for ParseToken is changed to asUINT
- Added asIScriptObject::GetWeakRefFlag
- Improved the algorithm for verifying if script classes require garbage collection
- The script array and grid add-ons avoid flagging themselves as garbage collected for handle subtypes that are known not to be garbage collected
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.30.0
- Imported functions in namespaces
- 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
- Add engine property for setting how empty elements should be treated
- 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
- Improve warning about empty sections
- Must be possible to use asOBJ_GC for value types, e.g. the CScriptHandle can indirectly form circular reference with an object
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;