What's Missing

To run LSL code, except at the unit test level, requires simulating the LSL environment (with it's regions, parcels, avatars, objects, prims, asset server, etc.). LSL Plus does do this simulation, but not every built in function has a completely useful implementation. Most functions, however, behave reasonably, including physics functions, detection functions, sensor functions, all math and string functions, and so on.

There are are a variety of functions that, while the could be simulated, would provide little benefit in testing, because they are 'output-only' functions: functions which affect the environment in ways in which it is hard or impossible for other scripts to detect. An example of this would be creating a particle system. The most useful thing that can be done with the llParticleSystem library function is to validate that the arguments are correct, but beyond that there is little point in 'simulating' a particle system (llParticleSystem doesn't yet validate its arguments, however. The intent is to add this to in a future release.).

In general, if a function is completely unimplemented, what it will do when called is:

  • Log a message
  • Return a default value (if it has a return type). E.g. 0 for integers, "" for strings, [] for lists, etc.

If a function is some sort of 'write-only' function, one that modifies some aspect of the environment that cannot be 'read' back, and it has been implemented, it will generally log the fact that it has been (successfully) called, or log any problems it detects in the arguments provided.

Most functions have some implementation, so try them and see what they do! (And report problems!)