Major rewrite number 2

I have been doing some thinking on the ScriptEngine. Actually a whole lot of thinking, and planning. Lots of alien squid-like drawings in my notebook. Trying to run through the process: Idea, required elements, architecture and finally simplification. The idea is simply: Moving ScriptEngine to a separate daemon, independent from the region.This has several big … Read more

Pure C# support

ScriptEngine supports both LSL and C# within the same script. Mainly this means that you can write LSL, but when you want you can use C# code. For example instead of using llToLower(mystring) you can use mystring.ToLower(), instead of llStringLength(mystring) you can use mystring.Length(). But to make sure that we support pure C# code, I’ve … Read more

Small stresstest

114 scripts loaded. 1 script per AppDomain. Most scripts are alone inside a prim, except the big box over there that has something like 10 scripts in it (it is bigger so I could fit more scripts into it). My computer is a 2,8GHz Prescott with 2GB RAM and Windows Vista Ultimate.60 of the scripts … Read more

So where are we now?

[Updated Monday 13:45 GMT+1][Updated Wednesday 21:45 GMT+1][Updated Saturday 22:45 GMT+1] As always its important with a summary for those who don’t want to read techie details. Here is current status of LSL script support:+ We have LSL script support.+ We can run hundreds of scripts simlutaneously, probably not thousands (needs testing). We have confirmed 50 … Read more

Introduction of a new class

Some LL-commands takes longer to return. These often return with a event. For example llSetTimerEvent(10) will return a timer() event every 10 seconds. llHttpRequest() will return when it receives answer from HTTP-server. To handle these types of requests a new class has been added as a subclass of ScriptEngine. The class is named LSLLongCmdHandler.cs. This … Read more

Speed

I’ve added support for multithreading execution of script events. Only one object will be processed at the time. This will benefit from MultiCore CPU’s. Though it makes each call more expensive because we have to keep track of mutexed objects. Also added caching of event binding (function call) so we only use Reflection on first … Read more

AppDomains

.Net does not allow unloading of assemblies. If you want to unload an assembly you have to unload the whole AppDomain. I’ve created AppDomainManager that handles creating AppDomain, finding a free AppDomain, loading scripts into it, and unloading AppDomains with no active scripts in them. Its purpose is to create AppDomains and put X number … Read more

llFunction interface/empty prototypes

Charles Krinkle has helped in adding interface and necessary empty prototype implementations of base class for the compiled script. Almost all functions has been implemented (they contain no code yet though). This helps me test the compiler on all kinds of scripts without getting errors. Thanks dude! 🙂