AngelScript 2.24.1 is released

Started by
8 comments, last by WitchLord 11 years, 8 months ago
Another month, another release. A new version is now available with more enhancements and general bug fixes. Version 2.24.0a has a rather serious bug causing a memory invasion that can be hard to track down if hit, so it is highly recommended you upgrade to this latest version if you're using 2.24.0a.


Besides fixing reported bugs related to the namespace feature, I've also done improvements to the way they are handled internally in the script engine. If you're using or planning on using namespaces, this is yet another reason for upgrading.

The bytecode serialization has also received some care, with bug fixes and a slight reduction in used space.


Other than that this new version doesn't really have any major new features. It's mostly only minor fixes or enhancements that will likely go unnoticed by the majority but makes the library better all together.

For the upcoming version 2.25.0 I plan on spending time improving the compilation performance, and bytecode loading performance. I've received a great contribution from Markus Lenger, that should bring a very significant reduction for the compilation when dealing with large scripts. I also received a report from loboWu that the bytecode load performance has degraded severly since I made the bytecode platform independent, so I plan to bring that performance back up to at least previous levels.


Other than performance I also plan to implement a new language feature, called mixin classes. This is a language feature that I'm borrowing from other languages, e.g. D, Ruby, etc. Mixin classes will improve code reuseability for classes without burdening the language and VM with the complexity of multiple inheritances.

Regards,
Andreas

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Advertisement
It's greate!!!
Awesome!

Mixins will be a great addition. i use lots of inheritance in my game.
interfaces do not cut it.

Do you have any plans for partial module compilation?
like module->RemoveScriptSection(...)
or adding one modules byte code to another module.
asIScriptModule::AddByteCode(asIBinaryStream *)

probably there are infinite ideas..
I haven't given partial module compilation much thought, though it is not the first time people ask for it.

It's already possible to dynamically add and remove global functions and global variables, but it will probably not be that easy to expand this to types (classes, interfaces, etc).

Markus mentioned that in his patch he has implemented something like AddByteCode(), I might be able to incorporate that in the library too, but I've yet to dig into the details of what that implies.

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Andreas, do the changes introduced in this release (actually, back in 2.24.0) break compatibility with the JIT? I noticed some members in asCContext had their names changed, but today I compiled my project (which worked fine with the JIT using Angelscript 2.23) and if I use the JIT my app just hangs.
The JIT was broken (mostly by the new nested context feature, the member name change was very minor). I fixed it a day ago, but forgot to commit the changes. If you update, you'll be compatible with 2.24.1.
Excellent! Just downloaded the new version and it works as expected. You guys rock!
Just a few hours after the release I receive a bug report with 3 more problems related to namespaces. :(

Anyway, this has now been fixed in revision 1388. So for those who plan on using it probably want to pick up those changes too.

Regards,
Andreas

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Andreas, I´ve noticed a decrease in performance with this version compared to 2.23.1.

For the exact same code executing the exact same script for both versions 2.23.1 and 2.24.1 (with their corresponding JITs), I´m getting this readings:

2.23.1
Task #1 : CPU 0%
Task #2 : CPU 3 - 4%

2.24.1
Task #1 : CPU 0 - 6%
Task #2 : CPU 4 - 6%

While this are readings taken by the Task Manager (in Windows) and not by a proper profiler, they still show that there has been a significant loss of performance with the new version. Have there been any significant changes in the execution path that might be introducing this? Maybe some allocations and / or if/then checks?
Anything change can affect the performance. While I always try to maintain a good performance, my main priority is correctness, and sometimes performance suffers a bit for that.

I really can't say if there is anything specific that would have affected the performance that you see. It depends a lot on how exactly you're using the script library. If you can do some profiling on the code and let me know the bottlenecks the profiler identifies I'd gladly take a look at improving those for a future release.

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

This topic is closed to new replies.

Advertisement