Skip to content

Releases: Avarel/Kaiper

3.5.0

02 Jul 00:12
Compare
Choose a tag to compare
  • Functions rewrite (adopt prototype constructs like Javascript)
    • Member functions work like in Elixir/Python ie. Type.function(self, other_arguments)
      • They can be invoked in the form of self.function(other_arguments)
      • Function references to a receiver can be obtained using self.function, a first class object that can be passed into other functions.
      • Static functions don't have self-receivers.
  • Java interoperability (wrap Java objects with new JavaModel(Object)
    • Changes to the object changes the native Java (just like ScriptEngine)
    • Support for limited type mapping between AJE and Java, certain types are automatically converted into their AJE equivalent. If no equivalent is found, the evaluated object will be again wrapped in a JavaObject.
  • Vectors are renamed to Array
    • New methods such as Array.map(self, transform) Array.filter(self, predicate) etc.
  • Parser flags and evaluator flags, prevent abuse from end-user by limiting factors such as features or execution time.

3.2.0

31 May 18:29
Compare
Choose a tag to compare

In this release, new language constructs were added along with other changes:

  • Strings
  • Dictionaries
  • Slice operator from python
  • Better implicit functions.
  • Compound assignments (ie. name += expression)
  • Optional assignment (ie. x ?= 2 - set x to 2 if x is undefined)
  • Variable scope control and declaration (var name = expression like JS, else error)
    • Variables in global scope requires a declaration now.
  • Function type checking and default parameters (ie. func f(x: Int = 2) = x * 2)
  • Flow control with for-each, if, and return.
  • More attributes to existing constructs.
  • Better exceptions.
  • More documentation for classes