Aviatorscript Versions Save

A high performance scripting language hosted on the JVM.

aviator-5.2.5

3 years ago

Main changes:

  • Auto convert java boxing types into aviator number types when invoking java methods #369
  • Adds a calcuator example which evaluate arithmetic expression in string.
  • Bug fixes: can't call overload getter/setter by reflection #368
  • Used array-based hashmap for internal env to reduce memory consumption.

aviator-5.2.4

3 years ago

New features:

  • Define anonymous function by fn syntax (instead of lambda ... -> ... end), let add = fn(x, y) { x + y); add(1, 2) for example.
  • Unpacking arguments(as sequence) by *args syntax like python, for example:
fn test(a, b, c, d) {
  a * b + c * d
}
let a = tuple(1, 2);
let list = seq.list(3, 4);
p(test(*a, *list));
  • Adds AVIATOR_DEPS environment variable to point third-party jar files directory for aviator shell command-line, default is $HOME/.aviatorscript/deps , all jar files under this directory will be added to JVM CLASSPATH .
  • Improve for statement, supports index( List/Array sequence etc.) and key/value(Map) iterating:
let a = tuple(1, 2, 3, 4, 5, 6, 7, 8, 9);
for i, x in a {
  assert(i + 1 == x);
}
let m = seq.map("a", 1, "b", 2, "c", 3);
for k, v in m {
    if k == "a" {
      assert(v == 1);
    }elsif k == 'b' {
      assert(v == 2);
    }elsif k == 'c' {
      assert(v == 3);
    }else {
      throw "should not happen";
    }
}
  • seq.array_of(Class, dimension1, dimension2, ...dimensions) to create a multidimensional array.
  • New functions to add/retrieve/remove object's metadata:
let a = 1;
## retrieve meta ,null if not found
p(meta(a)); 

## associate key/value metadata to any objects by with_meta(obj, key, value)
a = with_meta(a, "key", tuple(1, 2, 3));
p(meta(a));  ## {"key" => [1, 2, 3]}
p(meta(a, "key")); ## [1, 2, 3]

## remove metadata by without_meta(obj, key)
a = without_meta(a, "key");
p(meta(a));  
  • Bugs fixed:
    • Wrong size number of Range .
    • JUnit dependency issue, Thanks to DQinYuan

Change log details.

aviator-5.2.3

3 years ago

Main changes:

  • Removed commons-beanutils #340
  • Fixed AviatorString#toString() may print warning message.
  • Fixed missing source file and line number in string interpolation expression when throws exception.
  • New function is_distinct(seq) returns true when a sequence doesn't have duplicated elements.
  • Focus on performance turning
Aviator 5.2.3:
Benchmark                           Mode  Cnt       Score      Error   Units
PerfBenchmark.testArith            thrpt    5  108126.155 ± 6304.752  ops/ms
PerfBenchmark.testArithByAviator   thrpt    5    2565.933 ±  105.076  ops/ms
PerfBenchmark.testArithByBeetl     thrpt    5    1625.887 ±  291.247  ops/ms
PerfBenchmark.testArithByScript    thrpt    5    7050.305 ±   69.529  ops/ms
PerfBenchmark.testCond             thrpt    5   93099.759 ± 8554.585  ops/ms
PerfBenchmark.testCondByAviator    thrpt    5    1667.093 ±  112.807  ops/ms
PerfBenchmark.testCondByBeetl      thrpt    5    1617.045 ±   93.373  ops/ms
PerfBenchmark.testCondByScript     thrpt    5    6926.106 ±  267.292  ops/ms
PerfBenchmark.testObject           thrpt    5    8537.937 ±  272.512  ops/ms
PerfBenchmark.testObjectByAviator  thrpt    5    1025.725 ±   30.846  ops/ms
PerfBenchmark.testObjectByBeetl    thrpt    5     860.873 ±   33.559  ops/ms
PerfBenchmark.testObjectByScript   thrpt    5    4552.307 ±  199.507  ops/ms

Aviator 5.2.2:
Benchmark                           Mode  Cnt       Score      Error   Units
PerfBenchmark.testArith            thrpt    5  105095.308 ± 3861.646  ops/ms
PerfBenchmark.testArithByAviator   thrpt    5    2405.785 ±   78.325  ops/ms
PerfBenchmark.testArithByBeetl     thrpt    5    1628.726 ±   45.332  ops/ms
PerfBenchmark.testArithByScript    thrpt    5    7513.704 ±  286.090  ops/ms
PerfBenchmark.testCond             thrpt    5   92518.914 ± 1961.141  ops/ms
PerfBenchmark.testCondByAviator    thrpt    5     952.022 ±   32.184  ops/ms
PerfBenchmark.testCondByBeetl      thrpt    5    1647.736 ±   19.300  ops/ms
PerfBenchmark.testCondByScript     thrpt    5    7631.465 ±  404.298  ops/ms
PerfBenchmark.testObject           thrpt    5    8847.069 ±  261.799  ops/ms
PerfBenchmark.testObjectByAviator  thrpt    5     873.944 ±   26.327  ops/ms
PerfBenchmark.testObjectByBeetl    thrpt    5     826.758 ±   30.071  ops/ms
PerfBenchmark.testObjectByScript   thrpt    5    4647.178 ±  237.783  ops/ms
• Benchmark improvements:
    • testArithByAviator 6.7%
    • testCondByAviator 75%
    • testObjectByAviator 17.4%

aviator-5.2.2

3 years ago

Main changes:

  • Fixed Expression#getVariableNames() and Expression#getVariableFullNames(), they will return the global uninitialized variable names. #277 #335
  • Adds AviatorEvaluatorInstance#setCachedExpressionByDefault(boolean) to configure whether to cache the compiled expression by default when invoke compile(string), execute(string, [env]) methods etc, default value is false. #330
  • Adds a new option Options.ALLOWED_CLASS_SET with a Set<Class> value to control the allowed class list in new statement and static method/field invocation. #325
  • Adds new features Feature.StaticFields and Feature.StaticMethods. #326

changelog https://www.yuque.com/boyan-avfmj/aviatorscript/bggwx2

aviator-5.2.1

3 years ago

The change log.

If you are trying 5.2.0, please upgrade to this version, sorry.

aviator-5.2.0

3 years ago

See the 5.2.0 changelog.

Deprcated, please use 5.2.1

aviator-5.1.4

3 years ago

Main changes:

  • Fixed memory leak when compiling string interpolation lexeme.Warn when compling lexeme without caching.
  • Check function name when using fn syntax to define functions.
  • Adds AviatorEvaluatorInstance#removeModule(String) to remove java module, and adds an example JavaModuleExample.

aviator-5.1.3

3 years ago

Main changes:

  • Supports exponenent operator **(like ruby), for example:
p(2**3);  ## 8
p(2**-3);  ## 0.125

The detail rule is in doc.

  • Adds EnvProcessor to process env before or after executing expression, #224
  • Bug fixes, #278 , #272

aviator-5.1.2

3 years ago

A minor change:

  • Don't override __exp___ internal var to user pass-in env.

aviator-5.1.1

3 years ago
  • Fixed ==/!= operator can't work with variable syntax suger such as a.b.c, it may returns wrong result.

It's a recommended version to upgrade if you are using 5.x versions.