Refactored stream and stream generation a lot, it introduces the following changes:
- no generation in data anymore, AquaVM relies on generation inside data to stay valid and places value accordingly to it
- stream is internally divided into previous, current, and new values, before, it was one array for all of them
- recursive streams cursors are refactored and rely on new generation values instead
- the Generation enum was refactored and now contains the source of the generation
In the PR #607 tests are not compatible with some feautre flags yet.
Disable `llvm-cov`'s `--all-feautres` until all the tests are fixed.
For now, run `llvm-cov` only with default features.
* feat(aquavm-air)!: `ap` join behavior
Previously, `ap` of an undefined (first) variable was a catchable error.
Now `ap` has join behavior for its first argument.
It should simplify compiling Aqua to AIR.
Closes#632
* chore(deps): update rust crate lalrpop to 0.20.0
* Update lalrpop-util to compatible version
* Fix code broken by the API change
* Regenerate parsers
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
* feat: set nodejs target for air-beautify
BREAKING CHANGE: this package is now intended for use in nodejs
* change year
* Update tools/wasm/air-beautify-wasm/src/lib.rs
* chore(testing-framework)!: fix WASM test runner
Native mode was used before because some package used native runner
for its tests.
This PR allows to explicitly select test runner for tests. Many testing-framework
types are now parametrized with a runner type with almost compatible defaults.
* chore(testing-framework): Add `ReleaseWasmAirRunner`
* chore(testing-framework)!: Rename `AirScriptExecutor::simple` to `AirScriptExecutor::from_annotated`.
* chore: release master
* chore: Bump air-interpreter version to 0.40.0
* feat(aquavm-air): Set minimal supported version to 0.40.0
---------
Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
* feat(avm-server)!: keypair and particle ID arguments
Add `&fluence_keypair::KeyPair` argument to `AVM::call` and
`AVMRunner::call`. This value is further forwarded in a deconstructed
form to WASM Air interpreter, but is not used there yet. Also,
`AVMRunner::call` gets `particle_id: String` argument.
feat(air-interpreter)!: `invoke` methods have three new arguments:
`key_format: u8`, `secret_key_bytes: Vec<u8>` and `paritcle_id: String`.
feat(aquavm-air): `air::execute_air` has two three arguments:
`key_format: u8`, `secret_key_bytes: Vec<u8>` and `paritcle_id: String`.
feat(aquavm-air-cli)!: add `--random-key`/`--ed25519-key file` options to AIR CLI.
* feat(avm-server)!: Add `RunnerError::KeypairError`
* chore(bench): Add signature performance benchmarks
These benchmarks contain valid signature, so they should work with
verification out of the box.
---------
Co-authored-by: Artsiom Shamsutdzinau <shamsartem@gmail.com>
Co-authored-by: folex <0xdxdy@gmail.com>
* chore(bench): update benchmark data
After recent data format changes.
* feat(aquavm-air-cli): send memory size to logger
* feat(performance_metering): report memory size
`performance_metering` collects memory sizes reported by `air run` and
reports minimal and maximal values.