Difference between revisions of "LSL3"

From Second Life Wiki
Jump to navigation Jump to search
m
Line 19: Line 19:
* Object model for base types
* Object model for base types
* Array indexer
* Array indexer
* continue and break keywords.
* switch statement.


=== Types ===
=== Types ===
* User defined class & structures
* User defined class & structures
** Duck Typing (LinFu?)
** Duck Typing (LinFu?)
* bool type?
** Anonymous classes?
* bool type


=== Functions ===
=== Functions ===
Line 36: Line 39:
* Script libraries that can be sold and passed around.
* Script libraries that can be sold and passed around.
* Natural syntax which can be used instead of link_message
* Natural syntax which can be used instead of link_message
=== Loops ===
* continue and break keywords.


== Flaws with LSL2 ==
== Flaws with LSL2 ==
Here is a list of flaws with LSL2 that should be fixed.
Here is a list of flaws with LSL2 that should be fixed.
=== Evaluation order===
=== Combining Quaternions ===
* See {{JIRA|SVC-1047}} for an example of this. Its only obvious with Quaternions, but it actually causes some other issues.
* See {{JIRA|SVC-1047}} for a full description of this.
 
=== Evaluation order ===
* Given the code <code>f(a) + g(a)</code>, currently <code>g(a)</code> gets executed before <code>f(a)</code>.
** Changing this so <code>f(a)</code> gets executed first should improve performance on Mono.


===Comparisons of lists===  
===Comparisons of lists===  
*Only length is compared.
*Only length is compared.
*The result of a list equality is the difference of the lengths.


==='if else' syntax===
==='if else' syntax===
* if ([1]) evaluates to false.
* if ([1]) evaluates to false.
* remove the if {} else if limits
* remove the if {} else if limits
=== [[PRIM_ROTATION]] ===
* For child prims it requires dividing out the root prims rotation.
=== [[llInsertString]] ===
* Does not support negative indexes.
=== {{LSLGC|Detected|llDetected*}} Functions ===
* Do not support negative indexes.
== Resources ==
*{{Jira|SVC-1657}}

Revision as of 21:23, 29 March 2008

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.

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.

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

Functions

  • Organized into static classes?
  • Or keep the namespace flat to keep the syntax simple.

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.
  • remove the if {} else if limits

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