LSL Design
Linden Scripting Language is a state-event driven scripting language, in the sense of a finite state machine. A script consists of variables, function definitions, and one or more named states. Each state contains a description of how to react to events that occur while the program is within that state. The system sends to the script, such as timers, movement, chat (from other agents), email, and collisions (with objects in the virtual world). Scripts can change most aspects of the state of the object and communicate with other objects and agents. As soon as a script is added to an object, and turned on, it begins to execute.
A script is tightly bound to the concept of virtual-world objects (in the 3D modeling sense rather than in the object-oriented sense) called primitives. An object in Second Life represents something like a chair or a wall, or possibly something invisible. Multiple scripts may be placed inside an object, where they all execute simultaneously.
There are over 300 library functions available. Users can also define additional functions. LSL is a strongly typed language that is compiled to bytecode before runtime execution in a virtual machine (VM) on one of Linden Lab's servers.
LSL's native data structures includes integers, floating point numbers, strings, keys(UUID), vectors (used for 3D coordinates and RGB color expression), and rotations (quaternions). There are also heterogeneous lists. There are no arrays; multiple list functions are used to adapt programs requiring array structures. There is no built-in persistent data storage, such as a file or database. On the other hand, scripts continue to run even when a user is not logged in, and if an object is saved (taken into inventory), and then re-introduced into the World later, it still maintains its previous state. In addition, the mechanisms for communicating via HTTP can be used to store a state externally.
Some functions in LSL have built-in delays, which range from a 0.1-second delay when (for example) requesting string data from a notecard; to a 20-second script pause after sending an e-mail message. The delays help prevent developers from writing LSL scripts that could overtax system resources. Memory available to LSL scripts (when compiled as mono) is capped at about 64 KiB, which places a practical limit on how much a single script can do, however the ability to use multiple scripts and to call scripts from another script allows the user to pragmatically work around this 64 KiB cap.
Read more about this topic: Linden Scripting Language
Famous quotes containing the word design:
“With wonderful art he grinds into paint for his picture all his moods and experiences, so that all his forces may be brought to the encounter. Apparently writing without a particular design or responsibility, setting down his soliloquies from time to time, taking advantage of all his humors, when at length the hour comes to declare himself, he puts down in plain English, without quotation marks, what he, Thomas Carlyle, is ready to defend in the face of the world.”
—Henry David Thoreau (18171862)