215 Commits

Author SHA1 Message Date
Mike Voronov
6bd60d48e7
chore(execution-engine): optimize StreamMapKey::from_kvpair (#638)
optimize StreamMapKey::from_kvpair
2023-07-25 11:15:37 +03:00
Mike Voronov
6fd0385058
chore(execution-engine): refactor unseen canon stream creation (#636) 2023-07-20 23:11:55 +03:00
Mike Voronov
3fa8be0776
chore(execution-engine): move get_unique_map_keys_stream into StreamMap (#635) 2023-07-19 21:51:20 +03:00
fluencebot
531956b9ba
chore: release master (#619)
* chore: release master

* chore: Bump air-interpreter version to 0.42.0
2023-07-17 21:55:56 +07:00
raftedproc
33a9d9f32f
feat(execution-engine)!: add error-code invariant check for match/mismatch (#622) 2023-07-16 17:53:01 +03:00
raftedproc
d195152320
feat(execution-engine)!: unfefined %last_error% now returns an empty … (#628)
feat(execution-engine)!: %last_eror%.$.message and $.error_code now return an empty string and 0 correspondingly [fixes VM-313]
2023-07-14 21:46:28 +03:00
Mike Voronov
d5a3f768af
chore: remove fstrings dep (#627)
* remove fstrings dep

---------

Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
2023-07-14 20:02:19 +07:00
Ivan Boldyrev
75f5516c58
feat(aquavm-air)!: ap join behavior (#631)
* 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
2023-07-14 17:48:23 +07:00
Mike Voronov
62fdd74805
chore: remove unused dependecies (#626)
remove unused dependecies
2023-07-03 12:31:56 +03:00
raftedproc
fcb4c9dab4
feat(execution-engine)!: stream map to scalar conversion using canon instruction [fixes VM-294] (#610)
feat(execution-engine): Stream Map to Scalar conversion using canon instruction [fixes VM-294]
2023-06-28 13:59:16 +03:00
raftedproc
56a03364b1
chore(execution-engine): additional StreamMap positive tests [fixes VM-295] (#608)
chore(execution-engine): Additional StreamMap positive tests [fixes VM-295]
2023-06-28 12:24:58 +03:00
renovate[bot]
bba1becdce
chore(deps): update rust crate serde to 1.0.164 (#595)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-28 03:47:42 +07:00
Mike Voronov
be8c97c35c
chore(tests): add tests for topology hops (#616) 2023-06-27 21:09:10 +03:00
Mike Voronov
dadbba37e9
chore(core): fix variable checking (#617)
fix variable checking
2023-06-27 12:57:16 +03:00
vms
fb5c73136d add AquaVM update guide 2023-06-27 11:23:35 +03:00
fluencebot
e4665a55fa
chore: release master (#614)
* chore: release master

* chore: Bump air-interpreter version to 0.41.0
2023-06-23 22:38:43 +07:00
Ivan Boldyrev
c332cca6b7
chore(testing-framework)!: restore WASM test executor (#609)
* 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`.
2023-06-23 19:28:28 +07:00
fluencebot
c6627fe437
chore: release master (#553)
* 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>
2023-06-23 04:45:40 +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
raftedproc
9d7d34a452
feat(execution-engine): Stream Map initial support [fixes VM-283,VM-284] (#592)
feat(execution-engine): StreamMap initial support for ap and new instructions [fixes VM-283,VM-284]
2023-06-04 21:14:59 +03:00
Ivan Boldyrev
f8b734abde
feat(aquavm-air,air-interpreter-signature,air-interpreter-data)!: Peer signatures (#598)
A peer signs the multiset of call results and canon results it has produced.

New field signatures, a map from peer public key to signature, is added to the interpreter data.

Signatures verification is yet to be done.
2023-05-15 22:21:57 +07:00
Ivan Boldyrev
1d98afeb34
feat(interpreter-data): Introduce source information for canon data (#577)
* `ValueAggregate` refactoring

0. Service results, canon results and literals are constructed as
   separate types that are further wrapped with `ValueAggregate`.
1. `ValueAggregate` is enum that contains all the provenance info.
2. Construction methods get provenance information as well.

* Rename CID state field

Prepare to adding a canon CID field: rename `canon_tracker`/`canon_store`
to `canon_element_tracker`/`canon_element_store`.

* Add canon result store/tracker

* Rename some structs that have CIDs inside

Reflect explicitly that they contain CIDs inside:

`CanonResultAggregate` -> `CanonResultCidAggregate`
`ServiceResultAggregate` -> `ServiceResultCidAggregate`

---------

Co-authored-by: Mike Voronov <michail.vms@gmail.com>
2023-05-08 19:42:41 +07:00
raftedproc
b480e018b4
chore(trace-handler): sub/-trace len dedicated alias to replace usize [fixes VM-282] (#569)
feat(trace-handler): sub/-trace len dedicated alias to replace usize [fixes VM-282]
2023-05-02 16:32:18 +03:00
Ivan Boldyrev
88fd1f3095
fix(execution-engine): Fold-over-scalar values' wrong lambda (#578)
* fix(air): Fold-over-scalar values had wrong lambda

Previously, iterator values in fold over scalar inherited tetraplet from
the scalar.  But for security guarantees, they should have `.[N]` lambda
added, where N is an element index.

When fold iterates over canon or stream, elements keep their original
tetraplet;  tests for that is added.
2023-04-19 18:22:46 +07:00
raftedproc
762b355385
chore: rust channel update dedicated to Yuri's Night (#579)
Co-authored-by: Anatolios Laskaris <github_me@nahsi.dev>
2023-04-18 18:19:53 +07:00
raftedproc
70f27f7cb6
fix(execution-engine): this removes an unused and impossible check (#575) 2023-04-13 17:48:14 +03:00
Mike Voronov
513d33a1c5
feat(execution-engine): remove stream jvaluable implementation (#576)
* remove JValuable implementation for streams

---------

Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
2023-04-13 18:20:17 +07:00
Mike Voronov
a66541de49
feat(execution-engine): introduce resolver (#574) 2023-04-12 16:09:12 +01:00
Ivan Boldyrev
d155bc7610
chore(benches): update benchmark data to new format (#559)
* feat(aquavm-air-cli): `run` fails if AquaVM fails
Unless `run --no-fail` is provided.  It will make benchmarks fail
on errors, unless you provide `--no-fail` to specific benchmark.

* Fix dashboard and network_explore benches
* Convert benchmark data to new format
* `performance_metering`: use dirs only

Ordinary files like README.md are not considered to be a benchmark.

* Update `benches/performance_metering/README.md`

* Fix performance report

Looks like performance reports was merged in wrong order: data is not
sorted by machine ID.  The sorting is needed for stable diffs.

* Run benchmarks on Macbook Air M1
2023-04-11 02:27:32 +07:00
Orchimada
d62fa6fe60
feat(air): introduce explicit types for generation numbers (#530)
---------

Co-authored-by: vms <michail.vms@gmail.com>
Co-authored-by: Anatolios Laskaris <github_me@nahsi.dev>
2023-04-10 12:07:50 +01:00
renovate[bot]
7d37c36d00
chore(deps): update rust crate serde_json to 1.0.95 (#571)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-04-10 15:56:12 +07:00
renovate[bot]
839c3200a9
chore(deps): update rust crate serde to 1.0.159 (#565)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-04-10 02:34:34 +07:00
renovate[bot]
648f297a2b
fix(deps): update rust crate marine-rs-sdk to 0.7.1 (#568)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-04-09 16:27:37 +01:00
raftedproc
658daf1d3f
feat(trace-handler): TracePos becomes a wrapper for u32 alias [fixes VM-267] (#544) 2023-04-05 11:50:15 +03:00
Ivan Boldyrev
73c1ba70cc
feat(aquavm-air-cli)!: Usability enhancements (#540)
* Fix aquavm-air-cli release-please config
* Print a prompt when AIR is read from stdin
* Make `run --plain --data` arg optional
* Rename `... --data` to `... --current-data`
* Update AIR cli README
2023-03-27 16:27:01 +07:00
fluencebot
28cf5045b6
chore: release master (#542)
* chore: release master

* chore: Bump air-interpreter version to 0.39.0
2023-03-23 17:37:30 +07:00
Ivan Boldyrev
d5028942e4
feat(interpreter-data)!: New data format for calls (#501)
BREAKING CHANGE:
1. Call values in the trace have CID references to structures that have call arguments' hash and CID references to values and tetraplets.
2. If call value is unused, it is serialized with `Unused` variant, and CID references are not stored.

Previous data scheme was (Scalar as an example, other cases are similar):

```
Scalar(CID<JValue>) ---<value_store>----> JValue
```

New data scheme is much more sophisticated:

```
Scalar(CID<ServiceResultAggregate>) ---+
                                       |
  +----<service_result_store>----------+
  |
  +-------> ServiceResultAggregate:
               value_cid ------------<value_store>----> JValue
               tetraplet_cid --------<tetraplet_store>----> SecurityTetraplet
               argument_hash: String
```
`Stream` variant is similar, however, `Unused` is different: it has value CID only, but the value is not stored into the `value_store`:

```
Unused(Rc<CID<JValue>>) ---> X
```

Co-authored-by: Mike Voronov <michail.vms@gmail.com>
2023-03-21 19:12:04 +07:00
raftedproc
631abd4ec4
chore(execution-engine): this commit adds a set of trace-related negative tests for UncatchableError [fixes VM-263] (#532)
chore(execution-engine): this commit adds a set of trace-related
negative tests for UncatchableError [fixes VM-263]
2023-03-21 00:31:36 +03:00
renovate[bot]
2c8d02d271
chore(deps): update rust crate serde to 1.0.158 (#536)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-21 00:28:18 +07:00
renovate[bot]
282ff9de70
chore(deps): update rust crate thiserror to 1.0.40 (#537)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-20 23:23:46 +07:00
Anatolios Laskaris
0a524a5863
chore: Remove versions from dev deps (#526)
Remove versions from dev deps
2023-03-20 14:44:07 +02:00
raftedproc
548e458f1c
chore(execution-engine): this removes useless InvalidCanonStreamInData error (#529) 2023-03-17 17:15:28 +03:00
Mike Voronov
93c54431b9
chore(execution-engine): remove unnecessary value_to_pos logic (#527)
remove unncessary value_to_pos logic
2023-03-16 21:12:43 +03:00
raftedproc
f1975becb3
chore(execution-engine): a set of trace-unrelated negative tests for UncatableError [fixes VM-263] (#519) 2023-03-16 19:06:26 +03:00
fluencebot
eb55564369
chore: release master (#524)
* chore: release master

* chore: Bump air-interpreter version to 0.38.0
2023-03-15 17:32:29 +02:00
Anatoly Laskaris
5d2d9a9a60 Fix test-utils version 2023-03-15 17:30:04 +02:00
Anatolios Laskaris
a22e2dd3fb
chore: Revert "chore: release master (#520)" (#523)
Revert "chore: release master (#520)"

This reverts commit 7aa5d4bef5a86085dc9ead723e8799a89bd544e7.
2023-03-15 17:21:47 +02:00
fluencebot
7aa5d4bef5
chore: release master (#520)
* chore: release master

* chore: Bump air-interpreter version to 0.38.0
2023-03-15 17:35:44 +03:00
Ivan Boldyrev
a96a52db27
chore: fix some Cargo.tomls (#521)
* chore: fix some Cargo.tomls

* chore: publish `air-testing-framework`

As it is a dev dependency to `aquavm-air` crate.
2023-03-15 21:28:10 +07:00
Valery Antopol
126d5507c8
feat(avm)!: integrate Marine 0.26.0 (#461) 2023-03-15 17:11:53 +03:00