Skip to content

roadmap

Matěj Štágl edited this page Oct 10, 2022 · 63 revisions

Milestone 1 (completed 4/1/22)

  • Arrow Functions
  • ** operator for pow
  • If (curly brackets implemented, need single statement with semicolon variant)
  • For Loops - iterators. (Need to see how the table without pairs call works with the MoonSharp default iterator)
  • For Loops - C style with conditions. (New parser concept).
  • do/while loops (try and make not conflict with lua’s do-end scope blocks).
  • While loops
  • Repeat loops
  • Functions with curly bracket { } syntax
  • Single-line comments
  • Multiline comments
  • let/var alias for local
  • Tables using ‘:’
  • String literal keys for table init syntax
  • Square bracket list syntax
  • Ternary Expression (CLike only)
  • Unary ! negation (TBC)
  • && (alias for and)
  • || (alias for or)
  • Compound assignment *= += -= /= **= ..= %=
  • Overloaded + operator that tries to coerce to string if it isn’t a number
  • .. replaced with + operator
  • Label syntax (CLike only)
  • Increment/Decrement shorthand. CLike only, breaks Lua comments

Milestone 2 (completed 4/5/22)

  • Template literals `` (equivalent to $"" + multiline support in c#)
  • Replace # with .length, free # for other uses
  • Ditch Moonsharp’s | lambda | syntax, free pipe for bitwise & implement bitwise operators
  • Nill coalescing operators
    • ??= (nill coalescing assignment)
    • ?!= (inverse nill coalescing assignment)
    • ?. (nill coalescing member access)
    • ?[] (nill coalescing element access)
    • ?? (nill coalescing)
    • ?! (inverse nill coalescing)
  • null as alias for nil
  • this as alias for self

Milestone 3 (completed 5/5/22)

  • declaration hoisting.
  • implicit "self/this". Spec in draft, see Implicit this proposal for details
  • self call with dot instead of double colon. Specced in implicit "self/this".
  • annotations. See Annotation proposal for details.
  • default params. See #18

Milestone 4 (started 5/6/22)

Milestone 5 (completed 6/3/22)

Milestone 6 (completed 10/10/22)

  • string lib refactor, remove legacy kopilua interop
  • static fields in classes, static classes See Static classes proposal for details.
  • support this reference in fields
  • sealed classes
  • public, private fields, functions in classes & mixins
  • allow class fields declaration without explicit assignment (implicit nil value) class C { private a, b, c }
  • expose class/mixin shape in public API

Milestone 7 (in planning)

  • improve default tostring() implementation of classes, mixins and enums
  • using/static require
  • package/namespace on file level

Milestone 8 (in planning)

  • gradual types
  • generic types, generic classes class C<T1, T2..>

Backlog

  • bytecode optimisation with statically resolved types
  • private static fields in classes
  • public/internal classes, mixins, enums
  • try/catch