aquavm/CHANGELOG.md
Mike Voronov c85b2e2fbf
feat(execution-engine): change behaviour of fold over streams (#340)
feat(execution-engine): change behaviour of fold over streams

Change behaviour of fold over streams to make it more similar to pi-calculus channels/names (for more info see #333).

Closes #333.

BREAKING CHANGE:

The new stream behaviour is not compatible with old one, such as
```
(fold $stream iterator
   (seq
       (call ...)
       (next iterator)))
```
will never end after this change (for more info again see #333).
2022-09-28 22:03:54 +03:00

10 KiB

Version 0.30.0 (2022-09-28)

PR 340:
Change behaviour of folds over streams

Version 0.29.0 (2022-09-19)

PR 335:
Introduce never instruction

PR 332:
Fix bug with incorrect positions in canon instruction

Version 0.28.0 (2022-09-07)

PR 314:
The length functor was introduced

PR 307:
bug with iteration over empty canonicalized stream was fixed

PR 305:
bug with absence of join behaviour for canonicalized streams in fold instructions was fixed

PR 303:
unsafe code for LambdaAST creation was removed

PR 301:
bug with adding just executed values to a restricted stream was fixed

Version 0.27.0 (2022-08-23)

PR 292:
Introduced a new canon instruction

PR 296:
A bug with an inappropriate check of states in the Ap merger was fixed

Version 0.26.0 (2022-08-19)

PR 294:
Accompanying to air-interpreter update that makes interface more handy for air-trace

Version 0.25.0 (2022-07-27)

PR 287:
Memory leak introduced by switching to reactor/command model in WASI fixed

PR 276:
AquaVM performance was improved by removing excess logging

PR 273:
Introduced TracePos for TraceHandler positions

PR 270:
A bug with empty subtrace lore in TraceHandler was fixed

Version 0.24.0 (2022-04-21)

PR 253:
Introduced %ttl% keyword

Version 0.24.0 (2022-04-20)

PR 250:
Introduced %timestamp% keyword

Version 0.23.0 (2022-04-20)

PR 248:
Introduced new for scalars

PR 244:
Stack size was increased to 50 MiB

Version 0.22.0 (2022-04-14)

PR 243:
Clean scalars at the end of scope, only one next in a fold over scalar is possible now

PR 231:
Test refactoring

PR 228:
Improve stream determinism

Version 0.21.0 (2022-02-26)

PR 225:
Introduce recursive streams

PR 224 PR 220 PR 217 PR 215 PR 212 PR 207:
Various bugs were fixed

PR 210:
Add API for returning AquaVM consumed memory size

Version 0.20.0 (2021-12-29)

PR 205:
Supported scalars in fail instructions.

PR 202 PR 198:
AquaVM errors mechanism was completely refactored.

PR 207:
Fixed bug with empty array in match.

Version 0.19.0 (2021-12-15)

PR 196:
Introduced fail instruction.

PR 194:
Added variables names in resolve errors.

Version 0.18.0 (2021-12-14)

PR 192:
Added a possibility to use scalars in lambdas.

PR 190, PR 186, PR 185, PR 182, PR 181:
Bug fixing.

Version 0.17.0 (2021-11-24)

PR 172:
A new instruction intended to restrict a scope of variables was introduced to AquaVM.

PR 168:
AIR parser and AST was highly refactored to be more suitable to the scalar/stream restriction scheme used in AIR instructions.

PR 164:
SecurityTetraplet was decoupled with marine-rs-sdk to have the only one definition in AquaVM that then exported by marine-rs-sdk.

PR 162:
The scalar scoping scheme was improved in order to support more than two scope levels.

Version 0.16.0 (2021-10-18)

PR 154
The json path crate has been removed and changed to custom lambda scheme that have a subset of functionality of json path used by the Aqua compiler. The flattening sign ! is still allowed now, but does nothing.

PR 150, PR 152, PR 153 PR 160
Some parts of the interpreter has been refactored to make it more modular.

PR 144
The interpreter changed to be built with unwind panic handler and some other debug options were turned on.

Version 0.15.0 (2021-10-04)

PR 140:

  • the interpreter become async, now it's a pure function without any imports from a peer. Instead of calling import call_service from a peer, it now returns call results in the outcome structure, and receives their result in the invoke export.
  • data structure now includes a new field to track last call request id to give peer more freedom.
  • AVM server was completely refactored to support the new interpreter model and to expose a new trait storing data for a node.

PR 139
Senders in RequestSentBy could be different now.

PR 138
The computation algo for subtrace_len was completely refactored.

PR 136
serde and serde_json crates were used without locking their version

PR 133
fixed bug with applying json path to an empty stream

PR 132
fix bug with json flattening

Version 0.14.0 (2021-08-24)

PR 74:

  • introduced a new CRDT-like data format for streams:
    • call results contains different values for streams and scalars
    • introduced a new state for fold whose iterables are streams
  • merging scheme was rewritten, and became lazy
  • refactor the internal value mechanism
  • introduced a new instruction (ap responsible for applying json path to scalars and save results as a new scalar or add it to a stream. In the second case it'll produce a new state in a data.
  • introduced a new string literal [] represents empty array

Version 0.10.8 (2021-07-06)

  • improve the error message of the invalid executed state error (PR 121)

Version 0.10.7 (2021-07-01)

  • add support of a particle file vault (PR 120)

Version 0.10.6 (2021-06-10)

  • fixed the error message for incorrect json path in %last_error% (PR 119)

Version 0.10.5 (2021-06-10)

  • json path applied to scalar values becomes non-joinable (PR 118)

Version 0.10.4 (2021-06-09)

  • %last_error% includes peer_id now, that contains id of a peer where an error occurred (PR 117).

Version 0.10.3-0.10.1 (2021-06-04)

  • improved logger initialization and interface for wasm-bindgen target (PR 116, PR 115).

Version 0.10.0 (2021-06-09)

  • %last_error% becomes an object of type
pub struct LastError {
    /// text representation of an instruction that caused the last error
    pub instruction: String,

    /// text representation of an error message
    pub msg: String,
}

and it's possible to address its fields separately: %last_error%.$.instruction, %last_error%.$.msg (PR 112).

Version 0.1.3 (2020-11-11)

  • Switched to the new LALRPOP parser (PR 13):

    • arguments should be wrapped with square braces []
    • empty results in call allowed and lead to forget a call result
  • Added a few benchmarks

  • Fixed behaviour of the Xor instruction with inner Par instructions (PR 19)

  • Iterator in the Fold becomes resolvable (PR 23)

Version 0.1.2 (2020-10-29)

  • Added new data format (PR 12):
    • previously data was a hashmap with variable names to values, and now it is call evidence path that contains call and par evidence states
    • logger is refactored and supports now several log targets
    • interpreter decoupled into two crates: interpreter-lib and interpreter. To build it for the FCE target the fce feature should be specified (fce build --features fce)

Version 0.1.1 (2020-10-23)

  • Added join behaviour (PR 11):
    • if call uses non existing variable, it is just being passed and isn't executed without any error
    • par becomes completed when at least one of its subgraph is completed