Skip to content

Releases: killme2008/aviatorscript

AviatorScript 5.4.1

04 Oct 06:20
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: aviator-5.3.3...aviator-5.4.1

AviatorScript 5.3.3

29 Oct 05:17
Compare
Choose a tag to compare

Main changes:

  • Fixed memory leak in lambda function caching #494 #481
  • Fixed wrong value captured by function #496
  • Adds seq.add_all(seq1, seq2) to add all elements of seq2 to seq1. #500

AviatorScript 5.3.2

03 Sep 05:04
Compare
Choose a tag to compare

Several bugs fixed:

  • #466 constant folding do not work when operator is overrided
  • #484 Stackoverflow in ArrayUtils
  • #483 A corner case in parser.
  • #476 Expression#getVariableFullNames() returns the class names when the script has a new statement.

Thank you for all these bug reports.

It's recommended to upgrade.

AviatorScript 5.3.1

04 Apr 08:34
Compare
Choose a tag to compare

Main changes:

  • Adds new method AviatorEvaluatorInstance.aliasOperator(OperatorType, String) to set an alias token for logical && and || operator, read the doc.
  • Improve [] index operator and seq functions performance when processing arrays.
  • Fixed #431 Expression#getVariableNames returns wrong result in nested scope.
  • Fixed AviatorEvaluator.execute(String, Map) not work with global caching.

主要改动:

  1. 增加 AviatorEvaluatorInstance.aliasOperator(OperatorType, String) 方法用于给 &&|| 逻辑运算符定义别名,比如定义成 and 或者 or,参见文档
  2. 改进对数组的访问性能。
  3. 修复 #431Expression#getVariableNames 在处理嵌套范围的时候返回错误结果
  4. 修复 AviatorEvaluator.execute(String, Map) 方法不支持全局缓存的 bug

AviatorScript 5.3.0

18 Nov 06:21
Compare
Choose a tag to compare

Release 5.3.0 officially, main changes:

  • Supports interpreter mode, you can use aviatorscript on android(or other not-standard JVM) right now. See InterpreterExample and doc. #403 #334 #29
  • Fixed assign and define operator can't work when enable TRACE_EVAL. #408
  • Implements ApplicationContextAware for SpringContextFunctionLoader. Now SpringContextFunctionLoader can be managed by spring container.

AviatorScript 5.2.7

13 Sep 03:29
Compare
Choose a tag to compare

Main changes:

  • Fixed a concurrent issue in Expression#getVariableNames and Expression#getVariableFullNames.
  • Should throw no such property exception if property not found when using variable a.b.c dot syntax.

AviatorScript 5.2.6

23 Jun 02:00
Compare
Choose a tag to compare

A strongly recommended upgrading version if you are using 5.x versions.

Main changes:

  • Fixed:
    • Anonymous function can't support variadic arguments.
    • continue statement not work with if/else or nested if statements #394
    • LambdaFunction ThreadLocal caching may leak environment context #392
  • New features:
    • New function: partial(f, &args) that takes a function f and fewer than the normal arguments to f, and returns a fn that takes a variable number of additional args. When called, the returned function calls f with args + additional args.
    • Use soft reference for caching reflection result #386
    • Added key info to exception message when sequence is null in seq.get function.

[Deprecated] AviatorScript 5.2.5

09 Apr 11:22
Compare
Choose a tag to compare

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.

[Deprecated] AviatorScript 5.2.4

09 Mar 05:48
Compare
Choose a tag to compare

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.

[Deprecated] AviatorScript 5.2.3

28 Jan 07:52
Compare
Choose a tag to compare

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%