Releases: Avarel/Kaiper
Releases · Avarel/Kaiper
3.5.0
- 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.
- They can be invoked in the form of
- Member functions work like in Elixir/Python ie.
- 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.
- New methods such as
- Parser flags and evaluator flags, prevent abuse from end-user by limiting factors such as features or execution time.
3.2.0
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