[angelscript] 1.10.0 WIP 1

  • From: "Andreas Jonsson" <andreas@xxxxxxxxxxxxx>
  • To: "angelscript" <angelscript@xxxxxxxxxxxxx>
  • Date: Wed, 6 Oct 2004 22:10:23 -0300

Dear subscribers,
another update has been made. There's been a few changes to the interface to 
make it more consistent and easier to use. However, after receiving user 
feedback, I have kept backwards compatibility with 1.9.x. Though this backwards 
compatibility is only available if the library and host application is compiled 
with the preprocessor define AS_DEPRECATED. The methods that have changed are:

- RegisterObjectBehaviour(), it only accepts true object behaviours now, i.e. 
the ones that you register with the first parameter naming the object. Another 
method, RegisterGlobalBehaviour(), has been created for the other behaviour 
functions.
- GetFunctionName(), GetFunctionDeclaration(), GetGlobalVarName(), 
GetGlobalVarDeclaration(), GetImportedFunctionDeclaration(), and 
GetExceptionString() has changed to return const char * instead so that you no 
longer have to allocate the buffer before. The pointer that is returned is 
shared between these functions so you shouldn't store it for later use.
- All methods that return a string, also take an optional parameter that allow 
the host to get the length of the returned string directly instead of calling 
strlen().

I've also started to add support for multithreading. Currently this only works 
on Win32 and with MSVC++, but I plan on expanding this to Linux (I'll need help 
on that one) and MinGW. I got some strange problem when trying to support 
multithreading with MinGW, the code compiled ok, but when testing it would 
crash at inlogical places, places that haven't been changed. I think it is 
somehow connected to including windows.h or STL map in the code. Anyway, the 
support that was added for multithreading was:

- All reference counting is now threadsafe
- asGetActiveContext() is working correctly
- The shared string (mentioned above) is working by keeping a string buffer for 
each thread
- Created a new global function asThreadCleanup() that should be called before 
terminating any secondary threads that have accessed the library. If it is not 
called the local data allocated for the thread will be cleaned up at 
application exit. Note, it is not necessary to call this function in a single 
threaded environment.

It should now be possible to use AngelScript and access the engine and modules 
from multiple threads at the same time. It still very experimental, but at 
least rudimentary support for multithreading is now available. Please let me 
know if you find some trouble or wish to help me provide support for Linux and 
MinGW as well.

I've also made a bug fix in the optimization. I had mistakedly optimized 
subtractions as if they were associative, this could make calculations with 
subtractions give the wrong result. Many thanks to Lennart Denninger for 
helping me find that bug.

Regards,
Andreas Jönsson
Author of AngelScript
AngelScript - AngelCode Scripting Library
http://www.angelcode.com/angelscript/
http://www.angelcode.com/forums/

Other related posts:

  • » [angelscript] 1.10.0 WIP 1