148 Commits

Author SHA1 Message Date
raftedproc
7f6a69851f
fix: Rename CallResultsNotEmpty into UnprocessedCallResult (#490)
fix(execution-engine): rename CallResultsNotEmpty into UnprocessedCallResult
2023-03-01 20:36:35 +03:00
fluencebot
357ae63732
chore: release master (#488)
* chore: release master

* chore: Bump air-interpreter version to 0.35.5
2023-02-27 17:24:49 +03:00
mikhail-1e20
9d739906ff
docs: README re-organized (#477)
* docs: README re-organized

* add repository structure

* fix docs

* docs: A few minor fixes following an earlier discussion

---------

Co-authored-by: vms <michail.vms@gmail.com>
2023-02-22 19:54:47 +03:00
renovate[bot]
e700d7126b
chore(deps): update rust crate once_cell to 1.17.1 (#476)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-02-21 20:29:54 +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
Mike Voronov
87f7e2f361
feat(execution-engine)!: make fold convergent wrt errors (#351)
fold over a stream was not convergent when errors are produced inside a fold body. After iteration, it produces if there were several errors, only the last one is bubbled up. But on the same peer, there could different last (and first) errors, and it'll become non-convergent and moreover non-deterministic.

After this PR fold won't bubble any errors to make execution convergent and deterministic. To obtain errors from a fold body one should wrap this body into xor and push errors into some stream. Then fold over this stream and handle errors.
2023-02-09 17:09:24 +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
Mike Voronov
367546b82c
feat(trace-handler): improve data deserialization version check (#451) 2023-02-07 21:07:02 +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
5fdc8e68ac
feat(tools): VM-194 performance metering (#440)
* Experimental performance metering
* Average on repeated runs with `--repeat` option
* Add "version" field to the report
The version is got from `air/Cargo.toml`.

* Allow disabling preparing binaries
with the `--no-prepare-binaries` option.

* Human-readable execution time in the report

* Add dashboard benchmark
* Human-readable text report
2023-02-03 23:26:06 +07:00
Anatolios Laskaris
603785f6c0
chore(deps): Bump fluence-app-service to 0.23.0 (#427) 2023-01-09 16:57:30 +02: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]
9b1e4d1bd8
chore(deps): update rust crate once_cell to 1.17.0 (#424)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-12-31 20:49:27 +07:00
renovate[bot]
fce3262221
chore(deps): update rust crate serde to 1.0.152 (#421)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-12-31 20:47:04 +07:00
Mike Voronov
86fce01e67
chore(execution-engine): more handy way to work with subgraph_complete (#416) 2022-12-28 14:09:03 +03:00
Mike Voronov
1fc132d0d0
chore(execution-engine): rename air folder to instructions (#417) 2022-12-27 18:40:10 +03:00
renovate[bot]
58748f48cd
chore(deps): update rust crate semver to 1.0.16 (#405)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Mike Voronov <michail.vms@gmail.com>
2022-12-27 01:20:34 +03: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
89f7cd09f7
fix(interpreter-interface): Remove the cid field (#414)
The `InterpreterOutcome::cid` field is not really needed, but makes integration more difficult.
2022-12-26 23:20:11 +07:00
renovate[bot]
9cf326f1dd
chore(deps): update rust crate serde to 1.0.151 (#398)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-12-26 21:45:08 +07: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
Ivan Boldyrev
004ce10abd
Make unstable clippy happy with clippy --fix (#402)
Most of changes either move variables into `format!` templates
or remove excessive clones.
2022-12-12 22:37:05 +07:00
Mike Voronov
9fe7afb897
feat(all): reduce stream usage scope (#298)
This PR intended to reduce stream usage scope in order to make AquaVM truly deterministic.

Refs: #297.

Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
Co-authored-by: Anatoly Laskaris <github_me@nahsi.dev>
2022-11-30 17:38:32 +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
4e86da7eda
feat(testing-framework): Testing framework major refactoring (#372)
1. Network can be shared between several execution, being used by an Rc-handle.
2. The neighborhood is just network's all peers with removed/inserted hosts delta with respect to network.
3. An AIR script is transformed into a separate value of type `TransformedAirScript`.  It allows running several
particles on the same parsed AIR script, sharing state.
4. `TestExecutor` was renamed to `AirScriptExecutor`.  It also has a constructor that accepts a `TransformedAirScript`.
2022-11-24 23:33:55 +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
Ivan Boldyrev
fb344084a7
Make new clippy happy (#384) 2022-11-23 21:02:28 +07:00
Anatolios Laskaris
9896306573
chore: Fix needless-borrow warning(#379) 2022-11-16 14:12:31 +02:00
Ivan Boldyrev
9c88567e59
More convenient error messages (#374)
Data is printed last as it is very long and made it difficult to find
the original error message.
2022-11-01 15:06:56 +07: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
8c3f9a3090
feat(interpreter-data): add interpreter version in data (#367) 2022-10-13 12:50:32 +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
Ivan Boldyrev
076045124c
feat(testing) Testing framework chapter 1, asserts and comments (#342)
* seq_result` -> `seq_ok`; add `seq_err`

`seq_ok` and `seq_err` are consistent with `ok` and `err`, but produce
results sequentially.

* Accept `;;` and longer comments in the sexp parser

Currently they are just dropped, and resulting AIR has different
character positions in the error messages.

* Add "map" assertion

Lookup result in a map by service's first argument.
2022-10-11 01:05:20 +07:00
Mike Voronov
01bbca72c2
fix(air-parser): allow non used streams in validator (#360)
Validator checks that stream used in `canon` is populated by a value in a supplied script. This PR removes this check, because it's useful for code generation.
2022-10-10 15:51:03 +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
Mike Voronov
c3aa8efa04
chore(tests): rename all *.clj files to *.air (#352) 2022-10-06 15:56:31 +03:00
Mike Voronov
ccbd3262a3
feat(aquavm): allow to set last instruction of fold (#349) 2022-10-01 23:41:30 +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
8889291af8
fix(execution-engine): treat non-defined stream as empty in canon (#347)
This PR forces `canon` instruction to treat streams as empty, it's crucial for deterministic behaviour.

Closes #346.
2022-09-29 23:05:04 +03:00
Ivan Boldyrev
4a2e8be178
refactor(parser): use AirPos type for AIR script position (#341)
Use a dedicated wrapper type for better type safety and self-documented code.
2022-09-29 00:16:37 +03: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
Mike Voronov
20bb230a3a
Introduce never instruction (#335) 2022-09-19 14:36:46 +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