Commit Graph

12 Commits

Author SHA1 Message Date
0d53f2bab1 feat(execution-engine): Rc-based JSON value (#813)
Use custom JSON value type with Rc inside.  It cannot be edited, but producing new values based on child element is very cheap.

This new type is used exclusively in AquaVM internals.  Interface APIs use serde_json's Value or JSON strings, as before.
---------

Co-authored-by: raftedproc <71657594+raftedproc@users.noreply.github.com>
2024-02-13 19:11:21 +07:00
8a07613027 feat(aquavm-air)!: signature checking (#607) 2023-10-13 22:19:02 +03:00
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
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
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
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
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
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
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
eafdec5d86 fix(aquavm): temporary fix entire value in canon (#358) 2022-10-10 22:15:28 +03:00
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
a4011ef038 Introduce length functor (#314) 2022-09-08 16:58:04 +03:00