Difference between revisions of "LSL3"
Jump to navigation
Jump to search
(→Types: add lists of lists) |
|||
Line 39: | Line 39: | ||
* Organized into static classes? | * Organized into static classes? | ||
* Or keep the namespace flat to keep the syntax simple. | * Or keep the namespace flat to keep the syntax simple. | ||
* Add ability to write notecards | |||
=== States & Events === | === States & Events === |
Revision as of 06:56, 6 August 2009
Purpose
The purpose of the LSL3 project is to design a new programing language that would replace LSL2 in Second Life.
Design Ideals
- It should be designed to enable expression and not hinder expression with complex or over burdensome syntax requirements.
- C style syntax and order of operations
- Type safety
- Strongly Typed
Goal
- Address the shortcomings of LSL2 and add new functionality while limiting the increase of language complexity.
- Design LSL3 with Hierarchical Linking in mind MISC-2237
Proposed Changes for LSL2
Here are some proposed changes to LSL2. Please add new changes, if they cannot be summed up in a single sentence please create a subpage to this article and put a link in the appropriate section.
Major changes
- Object model
- Get ride of get and set functions, use getters and setters instead where possible (syntax sugar).
- Persistent storage/memory
Syntax
- Fix quaternion ordering
- Object model for base types
- Array indexer
- continue and break keywords.
- switch statement.
Types
- User defined class & structures
- Duck Typing (LinFu?)
- Anonymous classes?
- bool type
- pointers
- Remove restriction on lists containing lists
Functions
- Organized into static classes?
- Or keep the namespace flat to keep the syntax simple.
- Add ability to write notecards
States & Events
- State variables.
- User defined events that can be triggered by external scripts.
Libraries
- Script libraries that can be sold and passed around.
- Natural syntax which can be used instead of link_message
Flaws with LSL2
Here is a list of flaws with LSL2 that should be fixed.
Combining Quaternions
- See SVC-1047 for a full description of this.
Evaluation order
- Given the code
f(a) + g(a)
, currentlyg(a)
gets executed beforef(a)
.- Changing this so
f(a)
gets executed first should improve performance on Mono.
- Changing this so
Comparisons of lists
- Only length is compared.
- The result of a list equality is the difference of the lengths.
'if else' syntax
if([1])
evaluates to false.
PRIM_ROTATION
- For child prims it requires dividing out the root prims rotation.
llInsertString
- Does not support negative indexes.
llDetected* Functions
- Do not support negative indexes.