Latest updates
Another version has been released. This version doesn't bring much in terms of new features. The only new feature that has been implemented is the support for function pointers in the script language. However, as there is really no way for the application to register or interact with these yet the full usefulness of this functionality will only become available with the next releases.
Still, this is an important release, as quite a lot of bugs have been detected and fixed. Especially those that use or want to use property accessors should consider getting this new version.
For the next release, 2.19.0, I'll make sure the function pointers will be available to the application as well, and I will also work on the saved bytecode in order to make the files smaller and platform independent. I may not be able to abstract the pointer size for the next release, but other than that it should be fully compatible between platforms.
New developer references
2010/01/24 Fixing Pathfinding Once and For All
I've released version 2.18.1. As I had imagined in the previous release, I wasn't able to implement the support for function pointers for this release, but I have it pretty much planned out now so hopefully the actual implementation should be quite quick now.
I was however able to implement the support for initialization lists for registered types. This means that the application can now register a template type with the exact same capabilities of the built-in array type, without the need for any modifications to the library. This also means that in the near future I will remove the built-in array type in favor of the add-on, just as was done with the string type a long time ago.
Another feature that made it into this release is the support for property accessors for global properties, i.e. global functions with the prefixes get_ and set_ now act as property accessors. This is especially useful for those application properties that you want to expose, but that doesn't use an internal representation that you expose to AngelScript, e.g. char* strings.
I also finally got around to implement the support for native calling conventions on Win64 that I've been putting off for so long. Now I just need the 64bit Mac OS X support and then all major platforms are supported. Hopefully someone with access to a 64bit Mac OS X would be willing to contribute that code.
Even if the above feature are not of immediate intestest to you, you should really consider upgrading to this version. There were a few important bug fixes, and I also spent some time doing some optimizations that should hopefully have a noticeable impact on your application.
Thanks to the following people for submitting bug reports and helping me fix them: Samuel E. Henley, Gibbon_99, Friggle, kk, Thy Reaper.
This new release took a while to get out because there were a lot of structural changes to make internally in order to prepare the library for the upcoming features. Script entities are now less tightly tied to each other so that they can more easily be modified dynamically without having to recompile the full module. This required adding them to the garbage collector to resolve circular references, so don't get surprised by the increase of objects in the GC statistics.
The immediate benefit of these changes is the ability to dynamically add new functions and variables to an already existing script module, and also to remove them. I've implemented this support in the console sample so you can easily see how that works.
Another side effect is that now the functionality that the ExecuteString method provided can now just as easily be implemented by the application, so I decided to deprecate that one. Don't worry, I've added a new helper function in the add-on that implements it for you if you relied on it. However, you do well looking into that one, as you may see ways to make this function even better suited for your needs, e.g. by adding parameters and return values to it.
Some other improvements have also been contributed by the community:
- Fredrik Ehnbom took the time out of his busy schedule to implement full support for native calling conventions on the iPhone platform.
- Jubok Kim sent me some changes that adds official support for UTF-16 encoded string literals. If you prefer that over UTF-8 encoded strings, then you can turn that on by setting the engine property asEP_STRING_ENCODING to 1.
- Jeremy Harmon improved the compiler messages when no matching function was found.
I also took some time to make some optimizations, especially to the function calling in the asIScriptContext, so hopefully you should see a noticeable performance gain if you have a lot of calls to script functions. I have some more ideas for optimizations that I hope to try out for 2.18.1 so if all goes as planned you should soon see another gain.
For 2.18.1 I plan on implementing support for initialization lists to registered types by adding a special behaviour. This is the final piece to be able to fully move the built-in array type out of the core library, so the applications will have even better control over how the arrays work. I also plan on adding support global property accessors which have been asked for.
Another major feature that I would like to implement for 2.18.1, is the addition of function pointers to the script language, so that things like callbacks and even function closures can be used. This is a big feature, so I may not be able to fit it into the 2.18.1 release, but I should at least be able to get started on it.
At last, I would like to mention that Arroy One have provided a Russian translation of the AngelScript manual, so if that's your native language you can head on over to 13D Labs for that. Hopefully Arroy will be able to keep the manual up to date with new releases of the library. If anyone else have written translations, I invite you to add a link to them on the AngelScript wiki.
New developer references
2009/12/14 Procedural Content Generation
I've released version 2.17.2 of AngelScript. This is a minor release that mainly contains bug fixes. The only new feature is the template callback behaviour, that can be used to do compile time validations of template instances so that unsupported templates cannot be created by the scripts.
The next release, 2.18.0, is going to have a lot of internal changes, in order to add support for modifiable scripts through addition/removal of individual functions and globals in already compiled modules. This will eventually permit the addition of function pointers and other interesting features.
New developer references
2009/10/16 Rasterization on Larrabee
2009/10/13 Make a Particle Explosion Effect
2009/09/25 Manuel's relief texture mapping page