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 to the next… 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 a position in… 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 commands requires me… 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 later. The goal… 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. Necessary as the… Read More »

.Net CLR Runtime

The first thing I did was to see if .Net CLR looked anything like LSL ByteCode at all. As expected it did. It should be possible to convert between the two. But because we need to have scripts cross sims, the standard way of doing things might not suffice. So, next question. How does one create CLR? Well,… Read More »

LSO / LSL ByteCode

The task I’ve taken on me is to create script support for the OpenSim server. This involves reading the compiled LSL script (LSL ByteCode, machine code for those who haven’t heard of ByteCode) and executing it somehow. The plan is to convert LSL ByteCode into .Net ByteCode, passing it through .Net CLR (MSIL/.Net Assembly Language) and having the… Read More »