ScriptEngine – Events

The builtin commands for SE is simple enough. But incoming events could need some more planning. SE will have a set of events that is fired based on stuff that happens in OpenSim (EventHandler). This EventHandler will translate the event into a LSL-compatible event, including picking up the required parameters. The EventHandler needs to know … Read more


The time has come to start implementing script support into OpenSim. ScriptEngine (SE)OpenSim will have an interface for SE. It will load SE dynamically using reflection. SE will be in separate .dll Assembly.During load SE will hook itself up to the necessary events in OpenSim.This includes: Object rez (look for active scripts), object derez and … Read more

Current status

Static and global variable support has been added. All push/pop functions added. Simple scripts that use variables, math and internal functions (like llSay) are now supported.Stack and all internal data are ready for serializing, so running script can be moved between servers – but no fibre/user space multitasking/microthreading has been implemented yet – so move … Read more

Book: CLR via C#, Second Edition

This morning I received the book I ordered from 1 week before estimated arrival. The book is named CLR via C# (Second Edition) and is supposedly the bible of understanding CLR. So 648 pages from now I should be able to utilize my new skills in the LSO project… 🙂

Looking ahead, fibres

Running thousands of scripts simultaneously on a grid requires some special programming. We can not just issue one thread per script and let it run. The resources required by each OS thread,both in terms of memory and thread switching is too high. Instead we want to execute a few instructions of a script, then move … Read more

Frames, heap and code pointers

LSL ByteCode uses a lot of pointers, both to memory (static frames, local/global, heap) as well as JUMP pointers. Some of these pointers exist during load, for example argument types, static data, jump positions, etc. While others are allocated and created dynamically during run-time. What they all have in common is that they point to … Read more

Stack issues

In my first attempt I used the .Net stack and did a direct translation from the LSO ByteCode. I found that there are a couple of problems related to that. First of all is the obvious problem that I stated earlier, I don’t know what datatype is in the stack – but many (most) .Net … Read more

LSL scripting support – Progress report

Ok, time for status update again… Status Code is currently able to convert from LSL ByteCode to .Net IL, compile it and save it to disk. I’ve moved the code from a quick and dirty hack (that compiled the first script) to a bit more organized. It’s still a mess, but that can be fixed … Read more

Making some progress

Today I found a “final bug” in my LSL ByteCode parser, and was able to get read seemingly clean ByteCode. I also made a quick hack of merging the CLR RunTime code generator with the LSL ByteCode parser, and compiled my first small function. It works! 🙂 Also writing the compiled script to a .dll-file. … Read more