Difference between revisions of "LSL3"

From Second Life Wiki
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), currently g(a) gets executed before f(a).
    • Changing this so f(a) gets executed first should improve performance on Mono.

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.

Resources