60 Commits

Author SHA1 Message Date
Mike Voronov
62fdd74805
chore: remove unused dependecies (#626)
remove unused dependecies
2023-07-03 12:31:56 +03: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
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
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]
695937d450
chore(deps): update rust crate num-traits to 0.2.15 (#570)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-04-10 03:22:22 +07:00
raftedproc
b2116c7ea4
chore(trace-handler): fix fmt and clippy warnings (#567)
chore(trace-handler): remove some line breaks to sync with cargo fmt
2023-04-07 12:50:00 +03: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
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]
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
renovate[bot]
8388a95bf4
chore(deps): update rust crate bimap to 0.6.3 (#539)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-20 23:19:21 +07: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
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
fluencebot
3ac1d03868
chore: release master (#515)
* chore: release master

* chore: Bump air-interpreter version to 0.37.1
2023-03-15 19:29:59 +07:00
Anatolios Laskaris
8cf969762a
chore: Rename air-parser (#518)
* Rename air-parser

* Fix

* Set version

* Fix

* Fix?

* Fix?

* Fix
2023-03-15 14:10:25 +02:00
Ivan Boldyrev
79ac153f1d
feat(tools): merge some tools into the air CLI tool (#509)
* feat(tools): merge some tools into the `air` CLI tool

`air-beautify` and `air-trace` are merged into a single `air` tool.  Its
crate name is `fluence-air-cli` as otherwise it confilicts with `air`
interpreter crate.  The tool has subcommands `beautify`, `run`
and `stats`.

* Add one-letter aliases to `air` CLI subcommands

+ `air beautify` => `air b`
+ `air run` => `air r`
+ `air stats` => `air s`

---------

Co-authored-by: Mike Voronov <michail.vms@gmail.com>
2023-03-15 16:59:30 +07:00
renovate[bot]
f87d1cb373
chore(deps): update rust crate thiserror to 1.0.39 (#507)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-11 13:28:33 +03:00
renovate[bot]
c985e39824
chore(deps): update rust crate serde_json to 1.0.94 (#499)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-07 11:04:55 +03:00
fluencebot
c9eb5cd47a
chore: release master (#481) 2023-02-21 21:54:12 +03:00
renovate[bot]
91189a1d9d
chore(deps): update rust crate serde_json to 1.0.93 (#462)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-02-13 12:17:52 +03:00
fluencebot
5aa3c75875
chore: release master (#454)
* chore: release master

* chore: Bump air-interpreter-wasm version to 0.35.4
2023-02-08 15:28:17 +03:00
Anatolios Laskaris
e168d2a55e
chore(ci): Revert previous release, prepare for new release [fixed FLU-271] (#453)
* Add versions everywhere

* Revert "chore(air-trace): release master (#452)"

This reverts commit 3452b6b24d5b838241a353ff3a7a536899421fed.

* Fix

* Fix versions
2023-02-08 12:08:51 +02:00
fluencebot
3452b6b24d
chore(air-trace): release master (#452)
chore: release master
2023-02-07 21:33:57 +03:00
renovate[bot]
84af9c6185
chore(deps): update rust crate serde_json to 1.0.92 (#448)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-02-06 16:44:20 +03:00
Ivan Boldyrev
8f587b7803
feature(execution-engine): Canon data with CID (#419)
* Use CID values for tetraplets and `canon` vectors.

* Rename `cid_store` to `value_store`

It is consistent with the new `tetraplet_store` and `canon_store`
fields.

* Make canon data more typeful

The `CanonResult` doesn't take a JSON value anymore that is further
deserialized elsewhere, but is a struct that has all data deserialized.

* Typeful `CID` type

The `CID` type has a phantom type paramter defining its value's type.

* Group cid stores and trackers

Group cid stores into `CidInfo` struct, and trackers into `ExecutionCidState` struct.
2023-01-09 13:22:57 +07:00
renovate[bot]
b01ad36cdb
chore(deps): update rust crate serde_json to 1.0.91 (#407)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-12-27 00:24:38 +03:00
renovate[bot]
d9cfa9cf15
chore(deps): update rust crate thiserror to 1.0.38 (#408)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-12-27 00:19:10 +03:00
Ivan Boldyrev
0226c062f8
feat!(execution-engine): Store call executed values as CIDs in the data (#401)
The trace stores CID strings for call result values.  These strings are to be resolved to real values with `InterpreterData::cid_store` map.
2022-12-26 15:45:14 +07:00
renovate[bot]
d3bda16e71
fix(deps): update all non-major rust dependencies (#369)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-24 12:54:40 +03:00
renovate[bot]
bbc521ce53
fix(deps): update all non-major rust dependencies (#338)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-10-15 21:08:46 +03:00
Mike Voronov
a60b61e1a1
fix(execution-engine): save order between current generations (#366)
Co-authored-by: Valery Antopol <valery.antopol@gmail.com>
2022-10-12 04:29:31 +03:00
Mike Voronov
bf8aee7f15
fix(execution-engine): fix invalid iteration over stream (#362)
This PR is mostly a revertion of #357, that is needed to make stream work correctly in fold itrerations.

Closes #363.
2022-10-11 01:41:22 +03:00
Mike Voronov
eafdec5d86
fix(aquavm): temporary fix entire value in canon (#358) 2022-10-10 22:15:28 +03:00
Mike Voronov
910f1665eb
fix(trace-handler): fix fold and canon compatibility (#357)
Fixes bug of traces divergence when `canon` is used inside `fold`.

Closes #356.
2022-10-09 12:56:12 +03:00
Mike Voronov
cd598c28ae
refactor(aquavm): improve readability of ap merger and handler (#354)
At the moment `Ap` state contains vector of generations, although the ap instruction itself allow to specify only one stream. It was done to support several streams in a result position in a future. But the current realization allows to handle empty vector that was implemented to support states for scalars and it turned out (for more info see #326) that states for scalars aren't actually needed.

Closes #355.
2022-10-07 14:38:29 +03:00
Mike Voronov
a8b227caf5
refactor(aquavm): getting rid of CallOutputValue in call merger (#353)
This PR refactors call merger of `TraceHandler`. Previously it requires `CallOutputValue` to determine a type of call output value (stream or scalar). And internally it checked correspondence between data result and call output type and return a error if they are not equal. Although execution engine component also had a match over these values and does nothing if they are not matched since `TraceHandler` did this job. This PR eliminate such behaviour and improve isolation of AquaVM modules.
2022-10-06 19:59:47 +03:00
Valery Antopol
dd0c458339
fix: cannon treats ap with different generations as incompatible (#350)
Fixes #348.
2022-09-30 21:43:51 +03:00
Ivan Boldyrev
2e98712cb2
fix(execution-engine) Restricted stream bugfix (#337)
Use proper stream generation structures for call results merged from current data.

Closes #302.

Co-authored-by: vms <michail.vms@gmail.com>
2022-09-30 03:10:24 +07:00
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
renovate[bot]
ad504bce8b
Update all non-major Rust dependencies (#330)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-09-19 14:07:34 +03:00
renovate[bot]
b4195175db
Update all non-major Rust dependencies (#309)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Anatoly Laskaris <github_me@nahsi.dev>
2022-09-07 12:10:07 +03:00
Ivan Boldyrev
619e8829a9
Get rid of unsafe code in the interpreter (#303)
* 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.
2022-09-06 00:03:30 +07:00
Mike Voronov
5072fba9d6
Introduce canon instruction (#292) 2022-08-26 00:43:43 +03:00
Mike Voronov
dcab0023d8
fix bug with ap merger #295 (#296) 2022-08-18 22:31:29 +03:00
Mike Voronov
0d9390d333
make clippy happy (#291) 2022-08-10 12:27:06 +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