35 Commits

Author SHA1 Message Date
Ivan Boldyrev
50b23c6d9f
fix(avm-server): remove unused AVM code (#848)
It breaks compilation on newer rustc versions.
2024-07-22 22:14:24 +07:00
Mike Voronov
4bdc881c7a
chore: change license to AGPL-3 (#844) 2024-06-26 12:34:36 +03:00
Valery Antopol
bf9414e8d4
feat(runtime)!: switch to async marine (#815)
* bench results for sync marine

* WIP

* start updating tests

* most of initial issues fixed

* tests compile without warnings

* rustfmt

* merge with master

* use git dependency

* merge fix + fmt

* fix bench builder

* add Cargo.lock

* fix + fmt after merge

* fix build with latest marine

* use released marine
2024-04-15 19:17:17 +04:00
raftedproc
5afd5cb3a1
feat(execution-engine): aquavm args limits (#811)
* feat(preparation,memory):  AquaVM preparation step now checks input arguments sizes [fixes VM-425]
2024-02-15 19:55:25 +03:00
Valery Antopol
3375c7a3b6
feat(deps)!: update to marine runtime with memory limits and wasmtime (#768) 2024-01-24 17:16:33 +04:00
Ivan Boldyrev
d6b1da9bdc
feat(air,air-cli): pretty-printing binary interpreter data (#794)
Add new interpreter method `to_human_readable_data` and `air data` subcommand to convert binary data to JSON with indentation.
2024-01-11 17:46:16 +07:00
Ivan Boldyrev
771d42dec4
feat(data)!: flexible serialization formats (#757)
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.
2023-12-15 21:23:09 +07:00
Ivan Boldyrev
2c78fd5f7a
fix(avm-server): make avm_server::RunnerError a public type (#764)
* fix(avm-server): make avm_server::RunnerError a public type
* Make RunnerResult public too
* Remove stale submodule dir
* gitkeep `benches/performance_metering`
2023-12-07 18:29:26 +07:00
Ivan Boldyrev
8ce8af3823
feat(avm-server,air-interpreter,aquavm-air)!: secret key and particle ID arguments (#593)
* 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>
2023-06-23 03:12:37 +07:00
Valery Antopol
126d5507c8
feat(avm)!: integrate Marine 0.26.0 (#461) 2023-03-15 17:11:53 +03:00
Valery Antopol
36e1c8762c
fix(data_store)!: use particle_id + current_peer_id as prev_data key in DataStore (#485) 2023-02-27 16:39:16 +03:00
Mike Voronov
5e6863d4d5
feat(avm)!: improve anomaly detection (#479) 2023-02-21 20:28:56 +03:00
Ivan Boldyrev
becdedc364
feat!(avm-server): Per-call current_peer_id (#381)
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`.
2022-11-25 14:59:09 +07:00
Ivan Boldyrev
fb344084a7
Make new clippy happy (#384) 2022-11-23 21:02:28 +07:00
Anatoly Laskaris
2d400b4028
Bump marine-runtime to 0.20.0 (#299) 2022-09-02 14:32:04 +03:00
Ivan Boldyrev
5c7e88e0f2
Refactor avm-server interface mod to new crate (#294)
* 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.
2022-08-19 16:29:21 +07:00
Mike Voronov
0d9390d333
make clippy happy (#291) 2022-08-10 12:27:06 +03:00
Valery Antopol
52f0390eb8
Update marine-rs-sdk to 0.7.0 to fix memory leak (#287) 2022-07-27 16:40:27 +03:00
Ivan Boldyrev
c3cea695c8
air-trace util for measuring AquaVM performance with tracing crate.
`air-trace run` subcommand allows to run AquaVM on any data, it allows to define most AquaVM inputs, providing defaults for most of them, and sets up either human-readable or JSON tracing output, the latter can be later processed by `air-trace stats`.

Anomaly data input is also supported, that is useful for slow data investigation.

Native execution mode can be used for native profiling.  Please note, however, that current version cannot be built natively on Apple Sillicon processor yet, as invariably depends on the `avm-server` because of leaking types that should be refactored or hidden.  The `--repeat` option can repeat the execution several times for the execution to dominate on input data reading and output.

High-level or rare calls have "info" trace level, instructions are "debug", and sub-instruction calls are "tracing".  Over-detailed tracing can induce overhead that spoils timing data.
2022-07-07 18:44:58 +07:00
Ivan Boldyrev
4acfb19e08
Add AIR script to the AquaVM's anomaly data (#280)
Save AIR script to AnomlalyData struct.

Increments versions of `avm-data-store` to 0.3.0 and `avm-server` to 0.22.0.
2022-06-30 16:26:37 +07:00
Mike Voronov
3a84ceb863
Add API to save anomaly data (#277)
This PR adds two new methods in DataStore to determine anomaly and collect necessary data. Additionally
    - a generic parameter of DataStore turned to be associative
    - AVMOutcome contains additionally memory_delta and execution_time
2022-06-23 15:24:00 +03:00
Ivan Boldyrev
e0f6fa1b4d
Run tests with sanitizers (#274)
As `wasm32-wasi` target doesn't seem to support sanitizers, we are to
execute tests with native code.  The feature `test_with_native_code` is
introduced for that.

Closes #247.
2022-06-10 12:28:40 +07:00
Ivan Boldyrev
dcfa51c756 Use pooled AVMRunner for tests
Use pooled `avm::server::AVMRunner` instances of
air_iterpreter_server.wasm to reduce tests' running time.  It avoids
repeated WASM loading and compilation.

On my hardware, `cargo test --release` execution time (precompiled)
decreases from almost 6 minutes to 1.5 minutes.
2022-05-16 13:16:28 +07:00
Mike Voronov
7e0c87d72a
Introduce %ttl% (#253) 2022-04-21 11:44:18 +03:00
Mike Voronov
490791b177
introduce %timestamp% (#250) 2022-04-20 23:05:37 +03:00
Mike Voronov
5c2b9d442b
Expose max memory size (#242) 2022-04-20 20:21:07 +03:00
Mike Voronov
58aef82b1e
Add API for returning interpreter memory size (#210) 2022-01-26 13:37:22 +03:00
vms
54e383cdaf introduce farewell step; reafactoring 2021-12-17 22:02:16 +03:00
Mike Voronov
9f91d3161f
bump fluence-faas version (#193) 2021-12-14 14:01:57 +03:00
Mike Voronov
c5c9aefa37
Add test for issue 177 (#183) 2021-11-29 18:35:11 +03:00
Mike Voronov
4a4fc0889b
Make interpreter async (#130)
Co-authored-by: folex <0xdxdy@gmail.com>
Co-authored-by: Pavel Murygin <pavel.murygin@gmail.com>
2021-10-04 10:58:00 +03:00
Mike Voronov
d77278761f
Change subtrace_len computation algo in FoldFSM (#138) 2021-09-20 14:49:20 +03:00
Mike Voronov
3c86d36566
Introduce CRDT data (#74) 2021-08-24 16:14:15 +03:00
folex
03074be98f
Particle File Vault (#120) 2021-06-30 18:58:54 +03:00
Mike Voronov
2ac0304d3e
Rename Aqua to AIR, move AVM from FCE (#99) 2021-05-10 14:25:34 +03:00