New crate air_interpreter_sede introduces a flexible serialization and deserialization infrastructure.
Low level API: the Format trait and related. It includes simple and universal mechanisms for serializing any possible (e.g. implementing the Serde traits) value.
High level API: Representation trait and related. It allows declaring representation types that can serialize and deserialize only certain types (for example, InterpreterDataRepr can serialize only the InterpreterData, but deserialize InterpreterData and Versions` types), producing newtype values as serialization results.
The serialized representation of CallResults now contains byte arrays, not strings, because the new infrastructure serializes to byte arrays only.
Also, the basic support for multicodecs is added.
* 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>
The current peer ID is passed as a new field of `TestRunParameters` named
`current_peer_id: String`, instead of creating an AVM with peer ID.
This is a breaking API change of `avm-interface` and `avm-server`.
* Get rid of unsafe code unless really necessary
* Add lint levels where appropriate
Some crates (air-beautifier, air-testing-framework) have lot of
rust_2018_idioms violations, that will be resolved later.
Testing framework for AquaVM
Its primary features are:
1. It generates services declaratively by annotation in the comments inserted just after calls.
2. Ephemeral network keeps each node's data and incoming data queue. The network can be also generated based on peer IDs featured in the script.
3. One can explicitly add additional peers and services.
The example of the script annotations:
```
(seq
(call "peer_1" ("service" "func") [] var) ; ok=42
(call "peer_2" ("service" "func") [var]) ; err={"ret_code": 1, "result":"no towel"}
)
```
Passing this script to `air_test_framework::TestExecutor::new(...)` will create a virtual network with peers "peer_1" and "peer_2" (and any peer you provide in the `TestRunParameters`), and the particular calls will return respective values.
Please note that autogenerated services use modified service name as a side channel for finding a correct value: "..{N}" is added to each service name (two dots and serial number). Be careful with service names taken from a variable.
* Refactor `avm-server` interface mod to new crate (#294)
The new crate name is `avm-interface`.
It allows to build fully native air-trace, including pure WASM build.
* Make fully native air-trace build
Unless `wasm` feature is enabled (default), fully native build is
produced. You may build WASM air-trace binary with
`cargo build --target wasm32-wasi --no-default-features --release -p air-trace`
* Fix tracing output on native air-trace build
Wrong option was used.