Rename Aqua to AIR, move AVM from FCE (#99)

This commit is contained in:
Mike Voronov 2021-05-10 14:25:34 +03:00 committed by GitHub
parent 0ddc44bf52
commit 2ac0304d3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
123 changed files with 11960 additions and 5487 deletions

View File

@ -1,6 +1,6 @@
version: 2
jobs:
aqua:
air:
docker:
- image: circleci/rust:latest
resource_class: medium+
@ -11,7 +11,7 @@ jobs:
- checkout
- restore_cache:
keys:
- aqua01-{{ checksum "Cargo.lock" }}
- air01-{{ checksum "Cargo.lock" }}
- run: |
rustup toolchain install nightly-2021-03-24-x86_64-unknown-linux-gnu
rustup default nightly-2021-03-24-x86_64-unknown-linux-gnu
@ -20,13 +20,13 @@ jobs:
rustup component add rustfmt
rustup component add clippy
cargo install --force fcli --git https://github.com/fluencelabs/fce
cargo install --force fcli
# build a Wasm binary for interpreter
(cd interpreter; fce build --features fce)
(cd air-interpreter; fce build --features fce)
# build Wasm binaries for tests
(cd interpreter-lib/tests/; ./build_test_binaries.sh)
(cd air/tests/; ./build_test_binaries.sh)
cargo fmt --all -- --check --color always
cargo check
@ -37,9 +37,9 @@ jobs:
paths:
- ~/.cargo
- ~/.rustup
key: aqua01-{{ checksum "Cargo.lock" }}
key: air01-{{ checksum "Cargo.lock" }}
workflows:
version: 2
aqua:
air:
jobs:
- aqua
- air

View File

@ -36,7 +36,7 @@ jobs:
command: update
- name: fce build --release
working-directory: ./interpreter
working-directory: ./air-interpreter
shell: bash
run: fce build --release --features fce
@ -48,4 +48,4 @@ jobs:
prerelease: false
files: |
LICENSE
target/wasm32-wasi/release/aquamarine.wasm
target/wasm32-wasi/release/air_interpreter_server.wasm

View File

@ -10,7 +10,7 @@ on:
jobs:
npm-publish:
name: "Publish Aquamarine to NPM & crates.io"
name: "Publish AIR to NPM & crates.io"
runs-on: ubuntu-latest
defaults:
run:
@ -64,14 +64,18 @@ jobs:
# JQ version regex pattern
PAT="\\\\d+.\\\\d+.\\\\d+"
STEPPER_CARGO_TOML="interpreter/Cargo.toml"
INTERPRETER_CARGO_TOML="interpreter/Cargo.toml"
CARGO_TOML="crates/air-interpreter-wasm/Cargo.toml"
PACKAGE_JSON="avm/client/package.json"
# get package name from Cargo.toml
RS_PKG_NAME="$(toml get "$CARGO_TOML" package.name | tr -d \")"
JS_PKG_NAME="@fluencelabs/aquamarine-interpreter"
# get package name from package.json
JS_PKG_NAME="$(cat "$PACKAGE_JSON" | jq -r .name)"
# get version from Cargo.toml
STEPPER_RUST_VERSION="$(toml get "$STEPPER_CARGO_TOML" package.version | tr -d \")"
INTERPRETER_RUST_VERSION="$(toml get "$INTERPRETER_CARGO_TOML" package.version | tr -d \")"
LOCAL_RUST_VERSION="$(toml get "$CARGO_TOML" package.version | tr -d \")"
# get & increment version from NPM
@ -86,7 +90,7 @@ jobs:
NEXT_RS_VERSION="$(semver --increment patch "$MAX_RS_VERSION" || true)"
# take the highest version
MAX_VERSION="$(semver "$NEXT_JS_VERSION" "$NEXT_RS_VERSION" "$LOCAL_RUST_VERSION" "$STEPPER_RUST_VERSION" | tail -n1)"
MAX_VERSION="$(semver "$NEXT_JS_VERSION" "$NEXT_RS_VERSION" "$LOCAL_RUST_VERSION" "$INTERPRETER_RUST_VERSION" | tail -n1)"
echo "FINAL_VERSION=$MAX_VERSION" | tee -a $GITHUB_ENV
echo "JS_PKG_NAME=$JS_PKG_NAME" | tee -a $GITHUB_ENV
@ -97,7 +101,7 @@ jobs:
continue-on-error: true
- name: Build npm package
working-directory: npm
working-directory: avm/client
run: |
./build_wasm.sh
npm i
@ -106,7 +110,7 @@ jobs:
### Set version
- name: Set version to ${{ env.FINAL_VERSION }}
run: yarn version --new-version ${{ env.FINAL_VERSION }} --no-git-tag-version
working-directory: npm
working-directory: avm/client
### Publish to NPM registry
- uses: actions/setup-node@v1
@ -115,7 +119,7 @@ jobs:
registry-url: "https://registry.npmjs.org"
- run: npm publish --access public
working-directory: npm
working-directory: avm/client
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@ -131,16 +135,16 @@ jobs:
toml set Cargo.toml package.version "${{ env.FINAL_VERSION }}" | sponge Cargo.toml
)
(
cd interpreter-lib
cd air
toml set Cargo.toml package.version "${{ env.FINAL_VERSION }}" | sponge Cargo.toml
)
- name: Build aquamarine.wasm for node
run: fce build --release -p aquamarine --features fce
- name: Build air_interpreter_server.wasm for node
run: fce build --release -p air-interpreter --features fce
working-directory: interpreter
- name: Copy aquamarine.wasm to air-interpreter-wasm
run: cp target/wasm32-wasi/release/aquamarine.wasm crates/air-interpreter-wasm/aquamarine.wasm
- name: Copy air_interpreter_server.wasm to air-interpreter-wasm
run: cp target/wasm32-wasi/release/air_interpreter_server.wasm crates/air-interpreter-wasm/air_interpreter_server.wasm
- name: Set project version to ${{ env.FINAL_VERSION }}
run: |

View File

@ -71,8 +71,9 @@ jobs:
yarn global add semver
PATH="$(yarn global bin):$PATH"
INTERPRETER_CARGO_TOML="interpreter/Cargo.toml"
INTERPRETER_CARGO_TOML="air-interpreter/Cargo.toml"
CARGO_TOML="crates/air-interpreter-wasm/Cargo.toml"
PACKAGE_JSON="avm/client/package.json"
# sanitize branch name so it can be used as a semver suffix (replace [^0-9a-zA-Z-] with hyphen)
SANITIZED_BRANCH="$(echo -n "${{ env.BRANCH_NAME }}" | tr -C '[:alnum:]-' -)"
@ -81,7 +82,9 @@ jobs:
# get package name from Cargo.toml
PKG_NAME="$(toml get "$CARGO_TOML" package.name | tr -d \")"
JS_PKG_NAME="@fluencelabs/aquamarine-interpreter"
# get package name from package.json
JS_PKG_NAME="$(cat "$PACKAGE_JSON" | jq -r .name)"
### NPM
# take all versions from npm and replace single quotes with double quotes
@ -124,7 +127,7 @@ jobs:
continue-on-error: true
- name: Build npm package
working-directory: npm
working-directory: avm/client
run: |
./build_wasm.sh
npm i
@ -132,7 +135,7 @@ jobs:
### Set version to FINAL_VERSION
- run: yarn version --new-version ${{ env.FINAL_VERSION }} --no-git-tag-version || true
working-directory: npm
working-directory: avm/client
### Publish to NPM registry
- uses: actions/setup-node@v1
@ -141,7 +144,7 @@ jobs:
registry-url: "https://registry.npmjs.org"
- run: npm publish --access public --tag=beta
working-directory: npm
working-directory: avm/client
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@ -153,14 +156,14 @@ jobs:
run: |
PATH="~/.cargo/bin:$PATH"
toml set Cargo.toml package.version "${{ env.FINAL_VERSION }}" | sponge Cargo.toml
working-directory: interpreter-lib
working-directory: air
- name: Build aquamarine.wasm for node
run: fce build -p aquamarine --release --features fce
working-directory: interpreter
- name: Build air_interpreter_server.wasm for node
run: fce build -p air-interpreter --release --features fce
working-directory: air-interpreter
- name: Copy aquamarine.wasm to air-interpreter-wasm
run: cp target/wasm32-wasi/release/aquamarine.wasm crates/air-interpreter-wasm/aquamarine.wasm
- name: Copy air_interpreter_server.wasm to air-interpreter-wasm
run: cp target/wasm32-wasi/release/air_interpreter_server.wasm crates/air-interpreter-wasm/air_interpreter_server.wasm
- name: Set project name@version to ${{ env.PKG_NAME }}@${{ env.FINAL_VERSION }}
run: |

View File

@ -37,4 +37,4 @@ jobs:
publish_branch: gh-pages
publish_dir: ./target/doc
force_orphan: true
cname: aquamarine.fluence.dev
cname: air.fluence.dev

2
.gitignore vendored
View File

@ -1,6 +1,6 @@
.idea/
**/target
interpreter-lib/target
air/target
.DS_Store
.repl_history
*.wasm

View File

@ -1,22 +1,22 @@
## Version 0.1.3 (2020-11-11)
- Switched to the new LALRPOP parser ([PR 13](https://github.com/fluencelabs/aquamarine/pull/13)):
- Switched to the new LALRPOP parser ([PR 13](https://github.com/fluencelabs/air/pull/13)):
- arguments should be wrapped wit square braces []
- empty results in call allowed and lead to forget a call result
- Added a few benchmarks
- Fixed behaviour of the Xor instruction with inner Par instructions ([PR 19](https://github.com/fluencelabs/aquamarine/pull/19))
- Iterator in the Fold becomes resolvable ([PR 23](https://github.com/fluencelabs/aquamarine/pull/23))
- Fixed behaviour of the Xor instruction with inner Par instructions ([PR 19](https://github.com/fluencelabs/air/pull/19))
- Iterator in the Fold becomes resolvable ([PR 23](https://github.com/fluencelabs/air/pull/23))
## Version 0.1.2 (2020-10-29)
- Added new data format ([PR 12](https://github.com/fluencelabs/aquamarine/pull/12)):
- Added new data format ([PR 12](https://github.com/fluencelabs/air/pull/12)):
- previously data was a hashmap with variable names to values, and now it is call evidence path that contains call and par evidence states
- logger is refactored and supports now several log targets
- interpreter decoupled into two crates: `interpreter-lib` and `interpreter`. To build it for the FCE target the `fce` feature should be specified (`fce build --features fce`)
## Version 0.1.1 (2020-10-23)
- Added join behaviour ([PR 11](https://github.com/fluencelabs/aquamarine/pull/11)):
- Added join behaviour ([PR 11](https://github.com/fluencelabs/air/pull/11)):
- if `call` uses non existing variable, it is just being passed and isn't executed without any error
- `par` becomes completed when at least one of its subtree is completed

216
Cargo.lock generated
View File

@ -4,13 +4,59 @@ version = 3
[[package]]
name = "aho-corasick"
version = "0.7.15"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "air"
version = "0.9.0"
dependencies = [
"air-interpreter-interface",
"air-parser",
"air-test-utils",
"boolinator",
"criterion",
"csv",
"env_logger",
"fluence",
"fluence-app-service",
"jsonpath_lib-fl",
"log",
"maplit",
"once_cell",
"polyplets",
"pretty_assertions",
"serde",
"serde_json",
"thiserror",
"wasm-bindgen",
]
[[package]]
name = "air-interpreter"
version = "0.9.0"
dependencies = [
"air",
"fluence",
"log",
"serde",
"serde_json",
"wasm-bindgen",
]
[[package]]
name = "air-interpreter-interface"
version = "0.5.0"
dependencies = [
"fluence",
"fluence-it-types",
"serde",
]
[[package]]
name = "air-parser"
version = "0.7.0"
@ -29,6 +75,22 @@ dependencies = [
"thiserror",
]
[[package]]
name = "air-test-module"
version = "0.1.0"
dependencies = [
"fluence",
]
[[package]]
name = "air-test-utils"
version = "0.1.0"
dependencies = [
"avm-server",
"fluence",
"serde_json",
]
[[package]]
name = "ansi_term"
version = "0.11.0"
@ -44,69 +106,6 @@ version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b"
[[package]]
name = "aqua-interpreter-interface"
version = "0.5.0"
dependencies = [
"fluence",
"fluence-it-types",
"serde",
]
[[package]]
name = "aqua-interpreter-interface"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddaec44ed96baa11fbbefcad1a25c9bd3aca704398cb71d5b35eb879c9f2ac52"
dependencies = [
"fluence",
"fluence-it-types",
"serde",
]
[[package]]
name = "aqua-test-module"
version = "0.1.0"
dependencies = [
"fluence",
]
[[package]]
name = "aqua-test-utils"
version = "0.1.0"
dependencies = [
"aquamarine-vm",
"fluence",
"serde_json",
]
[[package]]
name = "aquamarine"
version = "0.9.0"
dependencies = [
"fluence",
"interpreter-lib",
"log",
"serde",
"serde_json",
"wasm-bindgen",
]
[[package]]
name = "aquamarine-vm"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "847f21c580fbb315673c1601a87101d5a1bcd4755cee6d5a0ed39ad92544cd44"
dependencies = [
"aqua-interpreter-interface 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"fluence-faas",
"log",
"maplit",
"parking_lot 0.11.1",
"serde",
"serde_json",
]
[[package]]
name = "array_tool"
version = "1.0.3"
@ -151,6 +150,20 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
[[package]]
name = "avm-server"
version = "0.7.0"
dependencies = [
"air-interpreter-interface",
"fluence-faas",
"log",
"maplit",
"parking_lot 0.11.1",
"serde",
"serde_json",
"thiserror",
]
[[package]]
name = "base64"
version = "0.13.0"
@ -221,9 +234,9 @@ checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9"
[[package]]
name = "bstr"
version = "0.2.15"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a40b47ad93e1a5404e6c18dec46b628214fee441c70f4ab5d6942142cc268a3d"
checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279"
dependencies = [
"lazy_static",
"memchr",
@ -464,9 +477,9 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
version = "0.9.3"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2584f639eb95fea8c798496315b297cf81b9b58b6d30ab066a75455333cf4b12"
checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94"
dependencies = [
"cfg-if 1.0.0",
"crossbeam-utils",
@ -477,9 +490,9 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
version = "0.8.3"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49"
checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278"
dependencies = [
"autocfg",
"cfg-if 1.0.0",
@ -1015,31 +1028,6 @@ dependencies = [
"cfg-if 1.0.0",
]
[[package]]
name = "interpreter-lib"
version = "0.9.0"
dependencies = [
"air-parser",
"aqua-interpreter-interface 0.5.0",
"aqua-test-utils",
"boolinator",
"criterion",
"csv",
"env_logger",
"fluence",
"fluence-app-service",
"jsonpath_lib-fl",
"log",
"maplit",
"once_cell",
"polyplets",
"pretty_assertions",
"serde",
"serde_json",
"thiserror",
"wasm-bindgen",
]
[[package]]
name = "inventory"
version = "0.1.10"
@ -1200,9 +1188,9 @@ dependencies = [
[[package]]
name = "lock_api"
version = "0.4.3"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a3c91c24eae6777794bb1997ad98bbb87daf92890acab859f7eaa4320333176"
checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb"
dependencies = [
"scopeguard",
]
@ -1224,9 +1212,9 @@ checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
[[package]]
name = "memchr"
version = "2.3.4"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
[[package]]
name = "memmap"
@ -1369,7 +1357,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
dependencies = [
"instant",
"lock_api 0.4.3",
"lock_api 0.4.4",
"parking_lot_core 0.8.3",
]
@ -1396,7 +1384,7 @@ dependencies = [
"cfg-if 1.0.0",
"instant",
"libc",
"redox_syscall 0.2.6",
"redox_syscall 0.2.8",
"smallvec",
"winapi",
]
@ -1437,9 +1425,9 @@ dependencies = [
[[package]]
name = "pico-args"
version = "0.4.0"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d70072c20945e1ab871c472a285fc772aefd4f5407723c206242f2c6f94595d6"
checksum = "7d7afeb98c5a10e0bffcc7fc16e105b04d06729fac5fd6384aebf7ff5cb5a67d"
[[package]]
name = "plotters"
@ -1580,9 +1568,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
[[package]]
name = "redox_syscall"
version = "0.2.6"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8270314b5ccceb518e7e578952f0b72b88222d02e8f77f5ecf7abbb673539041"
checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc"
dependencies = [
"bitflags",
]
@ -1600,9 +1588,9 @@ dependencies = [
[[package]]
name = "regex"
version = "1.4.6"
version = "1.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759"
checksum = "ce5f1ceb7f74abbce32601642fcf8e8508a8a8991e0621c7d750295b9095702b"
dependencies = [
"aho-corasick",
"memchr",
@ -1620,9 +1608,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
version = "0.6.23"
version = "0.6.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548"
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
[[package]]
name = "rust-argon2"
@ -1804,9 +1792,9 @@ checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2"
[[package]]
name = "syn"
version = "1.0.71"
version = "1.0.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373"
checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82"
dependencies = [
"proc-macro2",
"quote",
@ -1957,9 +1945,9 @@ checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
[[package]]
name = "unicode-xid"
version = "0.2.1"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
[[package]]
name = "uuid"

View File

@ -1,18 +1,19 @@
[workspace]
members = [
"air",
"air-interpreter",
"crates/air-parser",
"crates/polyplets",
"crates/interpreter-interface",
"crates/test-module",
"crates/test-utils",
"interpreter",
"interpreter-lib"
"avm/server",
]
exclude = [
"air/tests/security_tetraplets/auth_module",
"air/tests/security_tetraplets/log_storage",
"crates/air-interpreter-wasm",
"interpreter-lib/tests/security_tetraplets/auth_module",
"interpreter-lib/tests/security_tetraplets/log_storage",
]
[profile.release]

View File

@ -1,12 +1,12 @@
modules_dir = "./target/wasm32-wasi/release/"
[[module]]
name = "aqua_test_module"
name = "air_test_module"
mem_pages_count = 100
logger_enabled = true
[[module]]
name = "aquamarine"
name = "air_interpreter_server"
mem_pages_count = 100
logger_enabled = true

View File

@ -1,5 +1,5 @@
[![crates.io version](https://img.shields.io/crates/v/air-interpreter-wasm?style=flat-square)](https://crates.io/crates/air-interpreter-wasm)
[![npm version](https://img.shields.io/npm/v/@fluencelabs/aquamarine-interpreter)](https://www.npmjs.com/package/@fluencelabs/aquamarine-interpreter)
[![npm version](https://img.shields.io/npm/v/@fluencelabs/air-interpreter)](https://www.npmjs.com/package/@fluencelabs/air-interpreter)
# Aquamarine
@ -15,7 +15,7 @@
## Fluence stack
Fluence [nodes](https://github.com/fluencelabs/fluence) use aquamarine to coordinate requests between different services run by [FCE](https://github.com/fluencelabs/fce):
Fluence [nodes](https://github.com/fluencelabs/fluence) uses AIR to coordinate requests between different services run by [Marine](https://github.com/fluencelabs/marine):
<br/>
<p align="center" width="100%">
@ -88,4 +88,3 @@ Scripts written in AIR look like this:
- `null` takes no arguments
- does nothing, useful for code generation

View File

@ -1,20 +1,20 @@
[package]
name = "aquamarine"
name = "air-interpreter"
version = "0.9.0"
authors = ["Fluence Labs"]
edition = "2018"
[lib]
name = "aquamarine_client"
name = "air_interpreter_client"
crate-type = ["cdylib"]
path = "src/wasm_bindgen.rs"
[[bin]]
name = "aquamarine"
name = "air_interpreter_server"
path = "src/fce.rs"
[dependencies]
interpreter-lib = { path = "../interpreter-lib" }
air = { path = "../air" }
fluence = { version = "0.6.2", features = ["logger"] }
@ -26,4 +26,4 @@ serde = { version = "=1.0.118", features = [ "derive", "rc" ] }
serde_json = "1.0"
[features]
fce = ["interpreter-lib/fce"]
fce = ["air/fce"]

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
use interpreter_lib::parser::parse;
use air::parser::parse;
/// Parse AIR script and return it as minified JSON
pub fn ast(script: String) -> String {

View File

@ -29,17 +29,17 @@
mod ast;
mod logger;
use air::execute_air;
use air::InterpreterOutcome;
use fluence::fce;
use interpreter_lib::execute_aqua;
use interpreter_lib::InterpreterOutcome;
pub fn main() {
logger::init_logger();
}
#[fce]
pub fn invoke(init_peer_id: String, aqua: String, prev_data: Vec<u8>, data: Vec<u8>) -> InterpreterOutcome {
execute_aqua(init_peer_id, aqua, prev_data, data)
pub fn invoke(init_peer_id: String, air: String, prev_data: Vec<u8>, data: Vec<u8>) -> InterpreterOutcome {
execute_air(init_peer_id, air, prev_data, data)
}
#[fce]

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
use interpreter_lib::log_targets::TARGET_MAP;
use air::log_targets::TARGET_MAP;
pub fn init_logger() {
let target_map = TARGET_MAP.iter().cloned().collect();

View File

@ -29,7 +29,7 @@
mod ast;
mod logger;
use interpreter_lib::execute_aqua;
use air::execute_air;
use log::LevelFilter;
use wasm_bindgen::prelude::*;
@ -42,13 +42,13 @@ pub fn main() {
}
#[wasm_bindgen]
pub fn invoke(init_peer_id: String, aqua: String, prev_data: Vec<u8>, data: Vec<u8>, log_level: &str) -> String {
pub fn invoke(init_peer_id: String, air: String, prev_data: Vec<u8>, data: Vec<u8>, log_level: &str) -> String {
use std::str::FromStr;
let log_level = log::LevelFilter::from_str(log_level).unwrap_or(DEFAULT_LOG_LEVEL);
log::set_max_level(log_level);
let outcome = execute_aqua(init_peer_id, aqua, prev_data, data);
let outcome = execute_air(init_peer_id, air, prev_data, data);
serde_json::to_string(&outcome).expect("Cannot parse InterpreterOutcome")
}

View File

@ -1,18 +1,18 @@
[package]
name = "interpreter-lib"
name = "air"
version = "0.9.0"
authors = ["Fluence Labs"]
edition = "2018"
[lib]
name = "interpreter_lib"
name = "air"
path = "src/lib.rs"
[dependencies]
air-parser = { path = "../crates/air-parser" }
fluence = { version = "0.6.1", features = ["logger"] }
polyplets = { path = "../crates/polyplets" }
aqua-interpreter-interface = { path = "../crates/interpreter-interface" }
air-interpreter-interface = { path = "../crates/interpreter-interface" }
serde = { version = "=1.0.118", features = [ "derive", "rc" ] }
serde_json = "=1.0.61"
@ -27,7 +27,7 @@ thiserror = "1.0.23"
wasm-bindgen = "=0.2.65"
[dev_dependencies]
aqua-test-utils = { path = "../crates/test-utils" }
air-test-utils = { path = "../crates/test-utils" }
fluence-app-service = "0.7.0"
criterion = "0.3.3"

View File

@ -1,8 +1,8 @@
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::unit_call_service;
use aqua_test_utils::AquamarineVM;
use aqua_test_utils::AquamarineVMError;
use aqua_test_utils::InterpreterOutcome;
use air_test_utils::create_avm;
use air_test_utils::unit_call_service;
use air_test_utils::AVMError;
use air_test_utils::InterpreterOutcome;
use air_test_utils::AVM;
use criterion::criterion_group;
use criterion::criterion_main;
@ -10,7 +10,7 @@ use criterion::Criterion;
use std::cell::RefCell;
thread_local!(static VM: RefCell<AquamarineVM> = RefCell::new(create_aqua_vm(unit_call_service(), "test_peer_id")));
thread_local!(static VM: RefCell<AVM> = RefCell::new(create_avm(unit_call_service(), "test_peer_id")));
thread_local!(static SCRIPT: String = String::from(
r#"
(call "test_peer_id" ("local_service_id" "local_fn_name") [] result_name)
@ -18,7 +18,7 @@ thread_local!(static SCRIPT: String = String::from(
)
);
fn current_peer_id_call() -> Result<InterpreterOutcome, AquamarineVMError> {
fn current_peer_id_call() -> Result<InterpreterOutcome, AVMError> {
VM.with(|vm| SCRIPT.with(|script| vm.borrow_mut().call_with_prev_data("", script.clone(), "[]", "[]")))
}

View File

@ -1,11 +1,11 @@
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::unit_call_service;
use aqua_test_utils::AquamarineVM;
use aqua_test_utils::AquamarineVMError;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::InterpreterOutcome;
use aqua_test_utils::NEVec;
use air_test_utils::create_avm;
use air_test_utils::unit_call_service;
use air_test_utils::AVMError;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::InterpreterOutcome;
use air_test_utils::NEVec;
use air_test_utils::AVM;
use criterion::criterion_group;
use criterion::criterion_main;
@ -13,9 +13,9 @@ use criterion::Criterion;
use std::cell::RefCell;
thread_local!(static RELAY_1_VM: RefCell<AquamarineVM> = RefCell::new(create_aqua_vm(unit_call_service(), "Relay1")));
thread_local!(static RELAY_2_VM: RefCell<AquamarineVM> = RefCell::new(create_aqua_vm(unit_call_service(), "Relay2")));
thread_local!(static REMOTE_VM: RefCell<AquamarineVM> = RefCell::new({
thread_local!(static RELAY_1_VM: RefCell<AVM> = RefCell::new(create_avm(unit_call_service(), "Relay1")));
thread_local!(static RELAY_2_VM: RefCell<AVM> = RefCell::new(create_avm(unit_call_service(), "Relay2")));
thread_local!(static REMOTE_VM: RefCell<AVM> = RefCell::new({
let members_call_service: CallServiceClosure = Box::new(|_, _| -> Option<IValue> {
Some(IValue::Record(
NEVec::new(vec![
@ -26,12 +26,12 @@ thread_local!(static REMOTE_VM: RefCell<AquamarineVM> = RefCell::new({
))
});
create_aqua_vm(members_call_service, "Remote")
create_avm(members_call_service, "Remote")
}));
thread_local!(static CLIENT_1_VM: RefCell<AquamarineVM> = RefCell::new(create_aqua_vm(unit_call_service(), "A")));
thread_local!(static CLIENT_2_VM: RefCell<AquamarineVM> = RefCell::new(create_aqua_vm(unit_call_service(), "B")));
thread_local!(static CLIENT_1_VM: RefCell<AVM> = RefCell::new(create_avm(unit_call_service(), "A")));
thread_local!(static CLIENT_2_VM: RefCell<AVM> = RefCell::new(create_avm(unit_call_service(), "B")));
fn chat_sent_message_benchmark() -> Result<InterpreterOutcome, AquamarineVMError> {
fn chat_sent_message_benchmark() -> Result<InterpreterOutcome, AVMError> {
let script = String::from(
r#"
(seq

View File

@ -1,11 +1,11 @@
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::set_variables_call_service;
use aqua_test_utils::AquamarineVM;
use aqua_test_utils::AquamarineVMError;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::InterpreterOutcome;
use aqua_test_utils::NEVec;
use air_test_utils::create_avm;
use air_test_utils::set_variables_call_service;
use air_test_utils::AVMError;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::InterpreterOutcome;
use air_test_utils::NEVec;
use air_test_utils::AVM;
use serde_json::json;
@ -15,7 +15,7 @@ use criterion::Criterion;
use std::cell::RefCell;
thread_local!(static VM: RefCell<AquamarineVM> = RefCell::new({
thread_local!(static VM: RefCell<AVM> = RefCell::new({
let add_module_response = String::from("add_module response");
let add_blueprint_response = String::from("add_blueprint response");
let create_response = String::from("create response");
@ -38,10 +38,10 @@ thread_local!(static VM: RefCell<AquamarineVM> = RefCell::new({
))
});
create_aqua_vm(call_service, "A")
create_avm(call_service, "A")
}));
thread_local!(static SET_VARIABLES_VM: RefCell<AquamarineVM> = RefCell::new({
thread_local!(static SET_VARIABLES_VM: RefCell<AVM> = RefCell::new({
let module = "greeting";
let module_config = json!(
{
@ -65,10 +65,10 @@ thread_local!(static SET_VARIABLES_VM: RefCell<AquamarineVM> = RefCell::new({
String::from("blueprint") => blueprint.to_string(),
);
create_aqua_vm(set_variables_call_service(variables_mapping), "set_variables")
create_avm(set_variables_call_service(variables_mapping), "set_variables")
}));
fn create_service_benchmark() -> Result<InterpreterOutcome, AquamarineVMError> {
fn create_service_benchmark() -> Result<InterpreterOutcome, AVMError> {
let script = String::from(
r#"
(seq

View File

@ -20,35 +20,35 @@ use crate::execution::ExecutableInstruction;
use crate::preparation::prepare;
use crate::preparation::PreparationDescriptor;
use aqua_interpreter_interface::InterpreterOutcome;
use air_interpreter_interface::InterpreterOutcome;
pub fn execute_aqua(init_peer_id: String, aqua: String, prev_data: Vec<u8>, data: Vec<u8>) -> InterpreterOutcome {
pub fn execute_air(init_peer_id: String, air: String, prev_data: Vec<u8>, data: Vec<u8>) -> InterpreterOutcome {
use std::convert::identity;
log::trace!(
"aquamarine version is {}, init user id is {}",
"air interpreter version is {}, init user id is {}",
env!("CARGO_PKG_VERSION"),
init_peer_id
);
execute_aqua_impl(init_peer_id, aqua, prev_data, data).unwrap_or_else(identity)
execute_air_impl(init_peer_id, air, prev_data, data).unwrap_or_else(identity)
}
fn execute_aqua_impl(
fn execute_air_impl(
init_peer_id: String,
aqua: String,
air: String,
prev_data: Vec<u8>,
data: Vec<u8>,
) -> Result<InterpreterOutcome, InterpreterOutcome> {
let PreparationDescriptor {
mut exec_ctx,
mut trace_ctx,
aqua,
} = prepare(&prev_data, &data, aqua.as_str(), init_peer_id)
air,
} = prepare(&prev_data, &data, air.as_str(), init_peer_id)
// return the initial data in case of errors
.map_err(|e| outcome::from_preparation_error(data, e))?;
aqua.execute(&mut exec_ctx, &mut trace_ctx)
air.execute(&mut exec_ctx, &mut trace_ctx)
// return new collected trace in case of errors
.map_err(|e| outcome::from_execution_error(&trace_ctx.new_trace, exec_ctx.next_peer_pks.clone(), e))?;

View File

@ -30,7 +30,7 @@ use std::collections::VecDeque;
use std::rc::Rc;
/// Contains all necessary state needed to execute aqua script.
/// Contains all necessary state needed to execute AIR script.
#[derive(Default)]
pub(crate) struct ExecutionCtx<'i> {
/// Contains all set variables.
@ -40,10 +40,10 @@ pub(crate) struct ExecutionCtx<'i> {
/// Set of peer public keys that should receive resulted data.
pub next_peer_pks: Vec<String>,
/// PeerId of a peer executing this aqua script at the moment.
/// PeerId of a peer executing this AIR script at the moment.
pub current_peer_id: String,
/// PeerId of a peer send this aqua script.
/// PeerId of a peer send this AIR script.
pub init_peer_id: String,
/// Last error produced by local service.

View File

@ -71,14 +71,14 @@ mod tests {
use crate::contexts::execution_trace::ExecutionTrace;
use crate::JValue;
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::echo_string_call_service;
use aqua_test_utils::set_variable_call_service;
use aqua_test_utils::unit_call_service;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::NEVec;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::echo_string_call_service;
use air_test_utils::set_variable_call_service;
use air_test_utils::unit_call_service;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::NEVec;
use std::rc::Rc;
@ -90,7 +90,7 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let vm_peer_id = String::from("test_peer_id");
let mut vm = create_aqua_vm(unit_call_service(), vm_peer_id.clone());
let mut vm = create_avm(unit_call_service(), vm_peer_id.clone());
let service_id = String::from("local_service_id");
let function_name = String::from("local_fn_name");
@ -130,7 +130,7 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let some_local_peer_id = String::from("some_local_peer_id");
let mut vm = create_aqua_vm(echo_string_call_service(), some_local_peer_id.clone());
let mut vm = create_avm(echo_string_call_service(), some_local_peer_id.clone());
let remote_peer_id = String::from("some_remote_peer_id");
let script = format!(
@ -149,8 +149,8 @@ mod tests {
// Check that setting variables works as expected.
#[test]
fn variables() {
let mut vm = create_aqua_vm(unit_call_service(), "remote_peer_id");
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(r#""remote_peer_id""#), "set_variable");
let mut vm = create_avm(unit_call_service(), "remote_peer_id");
let mut set_variable_vm = create_avm(set_variable_call_service(r#""remote_peer_id""#), "set_variable");
let script = format!(
r#"
@ -170,7 +170,7 @@ mod tests {
// Check that duplicate variables are impossible.
#[test]
fn duplicate_variables() {
let mut vm = create_aqua_vm(unit_call_service(), "some_peer_id");
let mut vm = create_avm(unit_call_service(), "some_peer_id");
let script = format!(
r#"
@ -205,10 +205,10 @@ mod tests {
});
let vm_peer_id = String::from("A");
let mut vm = create_aqua_vm(call_service, vm_peer_id.clone());
let mut vm = create_avm(call_service, vm_peer_id.clone());
let set_variable_vm_peer_id = String::from("set_variable");
let mut set_variable_vm = create_aqua_vm(
let mut set_variable_vm = create_avm(
set_variable_call_service(r#""arg3_value""#),
set_variable_vm_peer_id.clone(),
);

View File

@ -159,13 +159,13 @@ mod tests {
use crate::contexts::execution_trace::ExecutionTrace;
use crate::JValue;
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::echo_number_call_service;
use aqua_test_utils::echo_string_call_service;
use aqua_test_utils::set_variable_call_service;
use aqua_test_utils::AquamarineVMError;
use aqua_test_utils::InterpreterOutcome;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::echo_number_call_service;
use air_test_utils::echo_string_call_service;
use air_test_utils::set_variable_call_service;
use air_test_utils::AVMError;
use air_test_utils::InterpreterOutcome;
use serde_json::json;
use std::rc::Rc;
@ -177,8 +177,8 @@ mod tests {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
let mut vm = create_aqua_vm(echo_number_call_service(), "A");
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(r#"["1","2","3","4","5"]"#), "set_variable");
let mut vm = create_avm(echo_number_call_service(), "A");
let mut set_variable_vm = create_avm(set_variable_call_service(r#"["1","2","3","4","5"]"#), "set_variable");
let lfold = String::from(
r#"
@ -210,8 +210,8 @@ mod tests {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
let mut vm = create_aqua_vm(echo_number_call_service(), "A");
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(r#"["1","2","3","4","5"]"#), "set_variable");
let mut vm = create_avm(echo_number_call_service(), "A");
let mut set_variable_vm = create_avm(set_variable_call_service(r#"["1","2","3","4","5"]"#), "set_variable");
let rfold = String::from(
r#"
@ -243,8 +243,8 @@ mod tests {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
let mut vm = create_aqua_vm(echo_number_call_service(), "A");
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(r#"["1","2","3","4","5"]"#), "set_variable");
let mut vm = create_avm(echo_number_call_service(), "A");
let mut set_variable_vm = create_avm(set_variable_call_service(r#"["1","2","3","4","5"]"#), "set_variable");
let script = String::from(
r#"
@ -287,7 +287,7 @@ mod tests {
#[test]
fn inner_fold_with_same_iterator() {
let mut vm = create_aqua_vm(set_variable_call_service(r#"["1","2","3","4","5"]"#), "set_variable");
let mut vm = create_avm(set_variable_call_service(r#"["1","2","3","4","5"]"#), "set_variable");
let script = String::from(
r#"
@ -320,8 +320,8 @@ mod tests {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
let mut vm = create_aqua_vm(echo_number_call_service(), "A");
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(r#"[]"#), "set_variable");
let mut vm = create_avm(echo_number_call_service(), "A");
let mut set_variable_vm = create_avm(set_variable_call_service(r#"[]"#), "set_variable");
let empty_fold = String::from(
r#"
@ -349,8 +349,8 @@ mod tests {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
let mut vm = create_aqua_vm(echo_number_call_service(), "A");
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(r#"{ "messages": [] }"#), "set_variable");
let mut vm = create_avm(echo_number_call_service(), "A");
let mut set_variable_vm = create_avm(set_variable_call_service(r#"{ "messages": [] }"#), "set_variable");
let empty_fold = r#"
(seq
@ -374,8 +374,8 @@ mod tests {
// Check that fold works with the join behaviour without hanging up.
#[test]
fn fold_with_join() {
let mut vm = create_aqua_vm(echo_number_call_service(), "A");
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(r#"["1","2"]"#), "set_variable");
let mut vm = create_avm(echo_number_call_service(), "A");
let mut set_variable_vm = create_avm(set_variable_call_service(r#"["1","2"]"#), "set_variable");
let fold_with_join = String::from(
r#"
@ -405,8 +405,8 @@ mod tests {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
let mut vm = create_aqua_vm(echo_number_call_service(), "A");
let mut set_variable_vm = create_aqua_vm(
let mut vm = create_avm(echo_number_call_service(), "A");
let mut set_variable_vm = create_avm(
set_variable_call_service(r#"{ "array": ["1","2","3","4","5"] }"#),
"set_variable",
);
@ -444,9 +444,9 @@ mod tests {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
let mut set_variables_vm = create_aqua_vm(set_variable_call_service(r#"["1","2"]"#), "set_variable");
let mut vm_a = create_aqua_vm(echo_string_call_service(), "A");
let mut vm_b = create_aqua_vm(echo_string_call_service(), "B");
let mut set_variables_vm = create_avm(set_variable_call_service(r#"["1","2"]"#), "set_variable");
let mut vm_a = create_avm(echo_string_call_service(), "A");
let mut vm_b = create_avm(echo_string_call_service(), "B");
let script = String::from(
r#"
@ -499,10 +499,10 @@ mod tests {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
fn execute_script(script: String) -> Result<InterpreterOutcome, AquamarineVMError> {
let mut set_variables_vm = create_aqua_vm(set_variable_call_service(r#"["1","2"]"#), "set_variable");
let mut vm_a = create_aqua_vm(echo_string_call_service(), "A");
let mut vm_b = create_aqua_vm(echo_string_call_service(), "B");
fn execute_script(script: String) -> Result<InterpreterOutcome, AVMError> {
let mut set_variables_vm = create_avm(set_variable_call_service(r#"["1","2"]"#), "set_variable");
let mut vm_a = create_avm(echo_string_call_service(), "A");
let mut vm_b = create_avm(echo_string_call_service(), "B");
let res = call_vm!(set_variables_vm, "", script.clone(), "[]", "[]");
let res = call_vm!(vm_a, "", script.clone(), "[]", res.data);

View File

@ -46,9 +46,9 @@ mod tests {
use crate::contexts::execution_trace::ExecutionTrace;
use crate::JValue;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::echo_string_call_service;
use aqua_test_utils::{call_vm, set_variable_call_service};
use air_test_utils::create_avm;
use air_test_utils::echo_string_call_service;
use air_test_utils::{call_vm, set_variable_call_service};
use std::rc::Rc;
@ -58,10 +58,10 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let set_variable_peer_id = "set_variable_peer_id";
let mut set_variable_vm = create_aqua_vm(echo_string_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(echo_string_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -96,10 +96,10 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let set_variable_peer_id = "set_variable_peer_id";
let mut set_variable_vm = create_aqua_vm(echo_string_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(echo_string_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -134,10 +134,10 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let set_variable_peer_id = "set_variable_peer_id";
let mut set_variable_vm = create_aqua_vm(echo_string_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(echo_string_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -169,10 +169,10 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let set_variable_peer_id = "set_variable_peer_id";
let mut set_variable_vm = create_aqua_vm(echo_string_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(echo_string_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -201,7 +201,7 @@ mod tests {
#[test]
fn match_with_equal_numbers() {
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = "
(xor
@ -218,10 +218,10 @@ mod tests {
#[test]
fn match_without_xor() {
let set_variable_peer_id = "set_variable_peer_id";
let mut set_variable_vm = create_aqua_vm(echo_string_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(echo_string_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -253,7 +253,7 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(
let mut vm = create_avm(
set_variable_call_service(serde_json::json!(false).to_string()),
local_peer_id,
);

View File

@ -46,10 +46,10 @@ mod tests {
use crate::contexts::execution_trace::ExecutionTrace;
use crate::JValue;
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::echo_string_call_service;
use aqua_test_utils::set_variable_call_service;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::echo_string_call_service;
use air_test_utils::set_variable_call_service;
use std::rc::Rc;
@ -59,10 +59,10 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let set_variable_peer_id = "set_variable_peer_id";
let mut set_variable_vm = create_aqua_vm(echo_string_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(echo_string_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -97,10 +97,10 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let set_variable_peer_id = "set_variable_peer_id";
let mut set_variable_vm = create_aqua_vm(echo_string_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(echo_string_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -135,10 +135,10 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let set_variable_peer_id = "set_variable_peer_id";
let mut set_variable_vm = create_aqua_vm(echo_string_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(echo_string_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -167,10 +167,10 @@ mod tests {
#[test]
fn mismatch_without_xor() {
let set_variable_peer_id = "set_variable_peer_id";
let mut set_variable_vm = create_aqua_vm(echo_string_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(echo_string_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -202,7 +202,7 @@ mod tests {
use crate::contexts::execution_trace::ExecutedState::*;
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(
let mut vm = create_avm(
set_variable_call_service(serde_json::json!(false).to_string()),
local_peer_id,
);

View File

@ -166,15 +166,15 @@ fn update_par_state(
#[cfg(test)]
mod tests {
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::unit_call_service;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::unit_call_service;
#[test]
fn par_remote_remote() {
use std::collections::HashSet;
let mut vm = create_aqua_vm(unit_call_service(), "");
let mut vm = create_avm(unit_call_service(), "");
let script = String::from(
r#"
@ -196,7 +196,7 @@ mod tests {
#[test]
fn par_local_remote() {
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(unit_call_service(), local_peer_id);
let mut vm = create_avm(unit_call_service(), local_peer_id);
let script = format!(
r#"

View File

@ -38,15 +38,15 @@ impl<'i> super::ExecutableInstruction<'i> for Seq<'i> {
#[cfg(test)]
mod tests {
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::unit_call_service;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::unit_call_service;
use serde_json::json;
#[test]
fn seq_remote_remote() {
let mut vm = create_aqua_vm(unit_call_service(), "");
let mut vm = create_avm(unit_call_service(), "");
let script = String::from(
r#"
@ -67,7 +67,7 @@ mod tests {
fn seq_local_remote() {
let local_peer_id = "local_peer_id";
let remote_peer_id = String::from("remote_peer_id");
let mut vm = create_aqua_vm(unit_call_service(), local_peer_id);
let mut vm = create_avm(unit_call_service(), local_peer_id);
let script = format!(
r#"

View File

@ -62,9 +62,9 @@ mod tests {
use crate::contexts::execution_trace::ExecutionTrace;
use crate::JValue;
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::fallible_call_service;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::fallible_call_service;
use std::rc::Rc;
@ -75,7 +75,7 @@ mod tests {
let local_peer_id = "local_peer_id";
let fallible_service_id = String::from("service_id_1");
let mut vm = create_aqua_vm(fallible_call_service(fallible_service_id), local_peer_id);
let mut vm = create_avm(fallible_call_service(fallible_service_id), local_peer_id);
let script = format!(
r#"
@ -117,10 +117,10 @@ mod tests {
fn xor_var_not_found() {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
use aqua_test_utils::echo_string_call_service;
use air_test_utils::echo_string_call_service;
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"
@ -144,13 +144,13 @@ mod tests {
fn xor_multiple_variables_found() {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
use aqua_test_utils::echo_string_call_service;
use air_test_utils::echo_string_call_service;
let set_variables_peer_id = "set_variables_peer_id";
let mut set_variables_vm = create_aqua_vm(echo_string_call_service(), set_variables_peer_id);
let mut set_variables_vm = create_avm(echo_string_call_service(), set_variables_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let test_string_1 = String::from("some_string");
let test_string_2 = String::from("expected_string");
@ -182,7 +182,7 @@ mod tests {
let fallible_service_id = String::from("service_id_1");
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(fallible_call_service(fallible_service_id.clone()), local_peer_id);
let mut vm = create_avm(fallible_call_service(fallible_service_id.clone()), local_peer_id);
let script = format!(
r#"
@ -232,12 +232,12 @@ mod tests {
fn last_error_with_xor() {
use crate::contexts::execution_trace::CallResult::*;
use crate::contexts::execution_trace::ExecutedState::*;
use aqua_test_utils::echo_string_call_service;
use air_test_utils::echo_string_call_service;
let faillible_peer_id = "failible_peer_id";
let mut faillible_vm = create_aqua_vm(fallible_call_service("service_id_1"), faillible_peer_id);
let mut faillible_vm = create_avm(fallible_call_service("service_id_1"), faillible_peer_id);
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(echo_string_call_service(), local_peer_id);
let mut vm = create_avm(echo_string_call_service(), local_peer_id);
let script = format!(
r#"

View File

@ -19,8 +19,8 @@ mod boxed_value;
mod errors;
mod utils;
pub(super) use air::ExecutableInstruction;
pub(super) use air::FoldState;
pub(super) use self::air::ExecutableInstruction;
pub(super) use self::air::FoldState;
pub(super) use errors::ExecutionError;
use std::rc::Rc;

View File

@ -31,15 +31,15 @@ mod contexts;
mod execution;
mod preparation;
mod aqua;
mod air;
pub mod log_targets;
pub use aqua_interpreter_interface::InterpreterOutcome;
pub use aqua_interpreter_interface::INTERPRETER_SUCCESS;
pub use air_interpreter_interface::InterpreterOutcome;
pub use air_interpreter_interface::INTERPRETER_SUCCESS;
pub use polyplets::ResolvedTriplet;
pub use polyplets::SecurityTetraplet;
pub use aqua::execute_aqua;
pub use crate::air::execute_air;
pub mod execution_trace {
pub use crate::contexts::execution_trace::CallResult;

View File

@ -80,7 +80,7 @@ impl fmt::Display for PreparationError {
use PreparationError::*;
match self {
AIRParseError(err_msg) => write!(f, "aqua script can't be parsed:\n{}", err_msg),
AIRParseError(err_msg) => write!(f, "air can't be parsed:\n{}", err_msg),
ExecutedTraceDeError(serde_error, executed_trace) => {
fn print_error(
f: &mut fmt::Formatter<'_>,

View File

@ -30,14 +30,14 @@ type PreparationResult<T> = Result<T, PreparationError>;
pub(crate) struct PreparationDescriptor<'ctx, 'i> {
pub(crate) exec_ctx: ExecutionCtx<'ctx>,
pub(crate) trace_ctx: ExecutionTraceCtx,
pub(crate) aqua: Instruction<'i>,
pub(crate) air: Instruction<'i>,
}
/// Parse and prepare supplied data and aqua script.
/// Parse and prepare supplied data and AIR script.
pub(crate) fn prepare<'i>(
prev_data: &[u8],
data: &[u8],
raw_aqua: &'i str,
raw_air: &'i str,
init_peer_id: String,
) -> PreparationResult<PreparationDescriptor<'static, 'i>> {
fn to_executed_trace(raw_data: &[u8]) -> PreparationResult<ExecutionTrace> {
@ -55,12 +55,12 @@ pub(crate) fn prepare<'i>(
let prev_trace = to_executed_trace(prev_data)?;
let trace = to_executed_trace(data)?;
let aqua: Instruction<'i> = *air_parser::parse(raw_aqua).map_err(PreparationError::AIRParseError)?;
let air: Instruction<'i> = *air_parser::parse(raw_air).map_err(PreparationError::AIRParseError)?;
log::trace!(
target: RUN_PARAMS,
"aqua: {:?}\nprev_trace: {:?}\ncurrent_trace: {:?}",
aqua,
"air: {:?}\nprev_trace: {:?}\ncurrent_trace: {:?}",
air,
prev_trace,
trace
);
@ -69,7 +69,7 @@ pub(crate) fn prepare<'i>(
let result = PreparationDescriptor {
exec_ctx,
trace_ctx,
aqua,
air,
};
Ok(result)

View File

@ -14,13 +14,13 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::set_variables_call_service;
use aqua_test_utils::unit_call_service;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::NEVec;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::set_variables_call_service;
use air_test_utils::unit_call_service;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::NEVec;
use serde_json::json;
@ -30,11 +30,11 @@ type JValue = serde_json::Value;
#[test]
fn seq_par_call() {
use interpreter_lib::execution_trace::CallResult::*;
use interpreter_lib::execution_trace::ExecutedState::{self, *};
use air::execution_trace::CallResult::*;
use air::execution_trace::ExecutedState::{self, *};
let vm_peer_id = String::from("some_peer_id");
let mut vm = create_aqua_vm(unit_call_service(), vm_peer_id.clone());
let mut vm = create_avm(unit_call_service(), vm_peer_id.clone());
let script = format!(
r#"
@ -66,11 +66,11 @@ fn seq_par_call() {
#[test]
fn par_par_call() {
use interpreter_lib::execution_trace::CallResult::*;
use interpreter_lib::execution_trace::ExecutedState::{self, *};
use air::execution_trace::CallResult::*;
use air::execution_trace::ExecutedState::{self, *};
let vm_peer_id = String::from("some_peer_id");
let mut vm = create_aqua_vm(unit_call_service(), vm_peer_id.clone());
let mut vm = create_avm(unit_call_service(), vm_peer_id.clone());
let script = format!(
r#"
@ -103,8 +103,8 @@ fn par_par_call() {
#[test]
fn create_service() {
use interpreter_lib::execution_trace::CallResult::*;
use interpreter_lib::execution_trace::ExecutedState::{self, *};
use air::execution_trace::CallResult::*;
use air::execution_trace::ExecutedState::{self, *};
let module = "greeting";
let module_config = json!(
@ -129,7 +129,7 @@ fn create_service() {
String::from("blueprint") => blueprint.to_string(),
);
let mut set_variables_vm = create_aqua_vm(set_variables_call_service(variables_mapping), "set_variables");
let mut set_variables_vm = create_avm(set_variables_call_service(variables_mapping), "set_variables");
let add_module_response = String::from("add_module response");
let add_blueprint_response = String::from("add_blueprint response");
@ -153,7 +153,7 @@ fn create_service() {
))
});
let mut vm = create_aqua_vm(call_service, "A");
let mut vm = create_avm(call_service, "A");
let script = include_str!("./scripts/create_service.clj");

View File

@ -14,13 +14,13 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::echo_number_call_service;
use aqua_test_utils::unit_call_service;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::NEVec;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::echo_number_call_service;
use air_test_utils::unit_call_service;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::NEVec;
use serde_json::json;
@ -30,11 +30,11 @@ type JValue = serde_json::Value;
#[test]
fn executed_trace_seq_par_call() {
use interpreter_lib::execution_trace::CallResult::*;
use interpreter_lib::execution_trace::ExecutedState::{self, *};
use air::execution_trace::CallResult::*;
use air::execution_trace::ExecutedState::{self, *};
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(unit_call_service(), local_peer_id);
let mut vm = create_avm(unit_call_service(), local_peer_id);
let script = format!(
r#"
@ -73,11 +73,11 @@ fn executed_trace_seq_par_call() {
#[test]
fn executed_trace_par_par_call() {
use interpreter_lib::execution_trace::CallResult::*;
use interpreter_lib::execution_trace::ExecutedState::{self, *};
use air::execution_trace::CallResult::*;
use air::execution_trace::ExecutedState::{self, *};
let local_peer_id = "local_peer_id";
let mut vm = create_aqua_vm(unit_call_service(), local_peer_id);
let mut vm = create_avm(unit_call_service(), local_peer_id);
let script = format!(
r#"
@ -118,13 +118,13 @@ fn executed_trace_par_par_call() {
#[test]
fn executed_trace_seq_seq() {
use interpreter_lib::execution_trace::CallResult::*;
use interpreter_lib::execution_trace::ExecutedState::{self, *};
use air::execution_trace::CallResult::*;
use air::execution_trace::ExecutedState::{self, *};
let peer_id_1 = String::from("12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er");
let peer_id_2 = String::from("12D3KooWAzJcYitiZrerycVB4Wryrx22CFKdDGx7c4u31PFdfTbR");
let mut vm1 = create_aqua_vm(unit_call_service(), peer_id_1.clone());
let mut vm2 = create_aqua_vm(unit_call_service(), peer_id_2.clone());
let mut vm1 = create_avm(unit_call_service(), peer_id_1.clone());
let mut vm2 = create_avm(unit_call_service(), peer_id_2.clone());
let script = format!(
r#"
@ -162,8 +162,8 @@ fn executed_trace_seq_seq() {
#[test]
fn executed_trace_create_service() {
use interpreter_lib::execution_trace::CallResult::*;
use interpreter_lib::execution_trace::ExecutedState::{self, *};
use air::execution_trace::CallResult::*;
use air::execution_trace::ExecutedState::{self, *};
let module = "greeting";
let module_config = json!(
@ -204,7 +204,7 @@ fn executed_trace_create_service() {
))
});
let mut vm = create_aqua_vm(call_service, "A");
let mut vm = create_avm(call_service, "A");
let script = include_str!("./scripts/create_service.clj");
@ -243,9 +243,9 @@ fn executed_trace_par_seq_fold_call() {
))
});
let mut vm1 = create_aqua_vm(return_numbers_call_service, "some_peer_id_1");
let mut vm2 = create_aqua_vm(echo_number_call_service(), "some_peer_id_2");
let mut vm3 = create_aqua_vm(unit_call_service(), "some_peer_id_3");
let mut vm1 = create_avm(return_numbers_call_service, "some_peer_id_1");
let mut vm2 = create_avm(echo_number_call_service(), "some_peer_id_2");
let mut vm3 = create_avm(unit_call_service(), "some_peer_id_3");
let script = String::from(
r#"
@ -319,9 +319,9 @@ fn executed_trace_par_seq_fold_in_cycle_call() {
))
});
let mut vm1 = create_aqua_vm(return_numbers_call_service, "some_peer_id_1");
let mut vm2 = create_aqua_vm(echo_number_call_service(), "some_peer_id_2");
let mut vm3 = create_aqua_vm(unit_call_service(), "some_peer_id_3");
let mut vm1 = create_avm(return_numbers_call_service, "some_peer_id_1");
let mut vm2 = create_avm(echo_number_call_service(), "some_peer_id_2");
let mut vm3 = create_avm(unit_call_service(), "some_peer_id_3");
let script = String::from(
r#"
@ -383,8 +383,8 @@ fn executed_trace_par_seq_fold_in_cycle_call() {
fn executed_trace_seq_par_seq_seq() {
let peer_id_1 = String::from("12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er");
let peer_id_2 = String::from("12D3KooWAzJcYitiZrerycVB4Wryrx22CFKdDGx7c4u31PFdfTbR");
let mut vm1 = create_aqua_vm(unit_call_service(), peer_id_1.clone());
let mut vm2 = create_aqua_vm(unit_call_service(), peer_id_2.clone());
let mut vm1 = create_avm(unit_call_service(), peer_id_1.clone());
let mut vm2 = create_avm(unit_call_service(), peer_id_2.clone());
let script = format!(
r#"
(seq

View File

@ -14,11 +14,11 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::IValue;
use aqua_test_utils::NEVec;
use aqua_test_utils::{AquamarineVM, CallServiceClosure};
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::IValue;
use air_test_utils::NEVec;
use air_test_utils::{CallServiceClosure, AVM};
use std::cell::RefCell;
use std::collections::HashSet;
@ -174,8 +174,8 @@ fn create_peer_host_function(peer_id: String, known_peer_ids: Vec<String>) -> Ca
)
}
struct AquaVMState {
vm: AquamarineVM,
struct AVMState {
vm: AVM,
peer_id: String,
prev_result: Vec<u8>,
}
@ -190,8 +190,8 @@ fn dashboard() {
let (host_function, all_info) = client_host_function(known_peer_ids.clone(), client_id.clone(), relay_id.clone());
let mut client = create_aqua_vm(host_function, client_id.clone());
let mut relay = create_aqua_vm(
let mut client = create_avm(host_function, client_id.clone());
let mut relay = create_avm(
create_peer_host_function(relay_id.clone(), known_peer_ids.clone()),
relay_id.clone(),
);
@ -200,11 +200,11 @@ fn dashboard() {
.iter()
.cloned()
.map(|peer_id| {
let vm = create_aqua_vm(
let vm = create_avm(
create_peer_host_function(peer_id.clone(), known_peer_ids.clone()),
peer_id.clone(),
);
AquaVMState {
AVMState {
vm,
peer_id,
prev_result: vec![],
@ -246,10 +246,10 @@ fn dashboard() {
let mut client_3_res = client_2_res.clone();
// peers 1 -> relay 2 -> client 3
for aqua_vm in known_peers.iter_mut() {
let prev_result = std::mem::replace(&mut aqua_vm.prev_result, vec![]);
for avm in known_peers.iter_mut() {
let prev_result = std::mem::replace(&mut avm.prev_result, vec![]);
let known_peer_res = call_vm!(
aqua_vm.vm,
avm.vm,
client_id.clone(),
script.clone(),
prev_result,
@ -257,14 +257,14 @@ fn dashboard() {
);
assert_eq!(known_peer_res.next_peer_pks, vec![relay_id.clone()]);
aqua_vm.prev_result = known_peer_res.data;
avm.prev_result = known_peer_res.data;
relay_2_res = call_vm!(
relay,
client_id.clone(),
script.clone(),
relay_2_res.data.clone(),
aqua_vm.prev_result.clone()
avm.prev_result.clone()
);
assert_eq!(relay_2_res.next_peer_pks, vec![client_id.clone()]);
@ -280,7 +280,7 @@ fn dashboard() {
*all_info.borrow(),
format!(
r#"["{peer_id}","{peer_id}_ident",["{peer_id}_interface_0","{peer_id}_interface_1","{peer_id}_interface_2"],["{peer_id}_blueprint_0","{peer_id}_blueprint_1","{peer_id}_blueprint_2"],["{peer_id}_module_0","{peer_id}_module_1","{peer_id}_module_2"]]"#,
peer_id = aqua_vm.peer_id
peer_id = avm.peer_id
)
)
}
@ -292,29 +292,29 @@ fn dashboard() {
let mut client_4_res = client_3_res.clone();
// peers 2 -> relay 3 -> client 4
for aqua_vm in known_peers.iter_mut() {
let prev_result = std::mem::replace(&mut aqua_vm.prev_result, vec![]);
for avm in known_peers.iter_mut() {
let prev_result = std::mem::replace(&mut avm.prev_result, vec![]);
let known_peer_res = call_vm!(
aqua_vm.vm,
avm.vm,
client_id.clone(),
script.clone(),
prev_result,
relay_1_res.data.clone()
);
all_peer_pks.remove(&aqua_vm.peer_id);
all_peer_pks.remove(&avm.peer_id);
let next_peer_pks = into_hashset(known_peer_res.next_peer_pks.clone());
assert_eq!(next_peer_pks, all_peer_pks);
all_peer_pks.insert(aqua_vm.peer_id.clone());
all_peer_pks.insert(avm.peer_id.clone());
aqua_vm.prev_result = known_peer_res.data;
avm.prev_result = known_peer_res.data;
relay_3_res = call_vm!(
relay,
client_id.clone(),
script.clone(),
relay_3_res.data.clone(),
aqua_vm.prev_result.clone()
avm.prev_result.clone()
);
assert_eq!(relay_3_res.next_peer_pks, vec![client_id.clone()]);
@ -331,7 +331,7 @@ fn dashboard() {
*all_info.borrow(),
format!(
r#"["{peer_id}","{peer_id}_ident",["{peer_id}_interface_0","{peer_id}_interface_1","{peer_id}_interface_2"],["{peer_id}_blueprint_0","{peer_id}_blueprint_1","{peer_id}_blueprint_2"],["{peer_id}_module_0","{peer_id}_module_1","{peer_id}_module_2"]]"#,
peer_id = aqua_vm.peer_id
peer_id = avm.peer_id
)
)
}

View File

@ -14,12 +14,12 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::set_variable_call_service;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::NEVec;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::set_variable_call_service;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::NEVec;
use pretty_assertions::assert_eq;
use serde_json::json;
@ -40,8 +40,8 @@ fn data_merge() {
))
});
let mut vm1 = create_aqua_vm(neighborhood_call_service1, "A");
let mut vm2 = create_aqua_vm(neighborhood_call_service2, "B");
let mut vm1 = create_avm(neighborhood_call_service1, "A");
let mut vm2 = create_avm(neighborhood_call_service2, "B");
let script = String::from(
r#"
@ -183,8 +183,8 @@ fn acc_merge() {
))
});
let mut vm1 = create_aqua_vm(set_variable_call_service(r#""peer_id""#), "A");
let mut vm2 = create_aqua_vm(neighborhood_call_service, "B");
let mut vm1 = create_avm(set_variable_call_service(r#""peer_id""#), "A");
let mut vm2 = create_avm(neighborhood_call_service, "B");
let script = String::from(
r#"

View File

@ -14,12 +14,12 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::set_variable_call_service;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::NEVec;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::set_variable_call_service;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::NEVec;
use serde_json::json;
@ -75,11 +75,11 @@ fn flattening_scalar_arrays() {
let scalar_array = serde_json::to_string(&scalar_array).expect("the default serializer shouldn't fail");
let set_variable_peer_id = "set_variable";
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(scalar_array), set_variable_peer_id);
let mut set_variable_vm = create_avm(set_variable_call_service(scalar_array), set_variable_peer_id);
let closure_call_args = ClosureCallArgs::default();
let local_peer_id = "local_peer_id";
let mut local_vm = create_aqua_vm(create_check_service_closure(closure_call_args.clone()), local_peer_id);
let mut local_vm = create_avm(create_check_service_closure(closure_call_args.clone()), local_peer_id);
let script = format!(
r#"
@ -119,11 +119,11 @@ fn flattening_streams() {
let stream_value = serde_json::to_string(&stream_value).expect("the default serializer shouldn't fail");
let set_variable_peer_id = "set_variable";
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(stream_value), set_variable_peer_id);
let mut set_variable_vm = create_avm(set_variable_call_service(stream_value), set_variable_peer_id);
let closure_call_args = ClosureCallArgs::default();
let local_peer_id = "local_peer_id";
let mut local_vm = create_aqua_vm(create_check_service_closure(closure_call_args.clone()), local_peer_id);
let mut local_vm = create_avm(create_check_service_closure(closure_call_args.clone()), local_peer_id);
let script = format!(
r#"
@ -169,11 +169,11 @@ fn test_handling_non_flattening_values() {
let stream_value = serde_json::to_string(&stream_value).expect("the default serializer shouldn't fail");
let set_variable_peer_id = "set_variable";
let mut set_variable_vm = create_aqua_vm(set_variable_call_service(stream_value), set_variable_peer_id);
let mut set_variable_vm = create_avm(set_variable_call_service(stream_value), set_variable_peer_id);
let closure_call_args = ClosureCallArgs::default();
let local_peer_id = "local_peer_id";
let mut local_vm = create_aqua_vm(create_check_service_closure(closure_call_args.clone()), local_peer_id);
let mut local_vm = create_avm(create_check_service_closure(closure_call_args.clone()), local_peer_id);
let script = format!(
r#"

View File

@ -14,12 +14,12 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::unit_call_service;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::NEVec;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::unit_call_service;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::NEVec;
use pretty_assertions::assert_eq;
use serde_json::json;
@ -40,11 +40,11 @@ fn join_chat() {
))
});
let mut relay_1 = create_aqua_vm(unit_call_service(), "Relay1");
let mut relay_2 = create_aqua_vm(unit_call_service(), "Relay2");
let mut remote = create_aqua_vm(members_call_service1, "Remote");
let mut client_1 = create_aqua_vm(unit_call_service(), "A");
let mut client_2 = create_aqua_vm(unit_call_service(), "B");
let mut relay_1 = create_avm(unit_call_service(), "Relay1");
let mut relay_2 = create_avm(unit_call_service(), "Relay2");
let mut remote = create_avm(members_call_service1, "Remote");
let mut client_1 = create_avm(unit_call_service(), "A");
let mut client_2 = create_avm(unit_call_service(), "B");
let script = String::from(
r#"
@ -203,9 +203,9 @@ fn join() {
))
});
let mut relay_1 = create_aqua_vm(unit_call_service(), "Relay1");
let mut remote = create_aqua_vm(members_call_service1, "Remote");
let mut client_1 = create_aqua_vm(unit_call_service(), "A");
let mut relay_1 = create_avm(unit_call_service(), "Relay1");
let mut remote = create_avm(members_call_service1, "Remote");
let mut client_1 = create_avm(unit_call_service(), "A");
let script = String::from(
r#"
@ -261,10 +261,10 @@ fn init_peer_id() {
let initiator_peer_id = String::from("initiator");
let mut relay_1 = create_aqua_vm(unit_call_service(), "Relay1");
let mut remote = create_aqua_vm(members_call_service1, "Remote");
let mut client_1 = create_aqua_vm(unit_call_service(), "A");
let mut initiator = create_aqua_vm(unit_call_service(), initiator_peer_id.clone());
let mut relay_1 = create_avm(unit_call_service(), "Relay1");
let mut remote = create_avm(members_call_service1, "Remote");
let mut client_1 = create_avm(unit_call_service(), "A");
let mut initiator = create_avm(unit_call_service(), initiator_peer_id.clone());
let script = String::from(
r#"(seq

View File

@ -14,10 +14,10 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::set_variables_call_service;
use aqua_test_utils::unit_call_service;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::set_variables_call_service;
use air_test_utils::unit_call_service;
use serde_json::json;
@ -39,10 +39,10 @@ fn non_wait_on_json_path() {
let set_variables_call_service = set_variables_call_service(variables);
let set_variable_peer_id = "set_variable";
let mut set_variable_vm = create_aqua_vm(set_variables_call_service, set_variable_peer_id);
let mut set_variable_vm = create_avm(set_variables_call_service, set_variable_peer_id);
let local_peer_id = "local_peer_id";
let mut local_vm = create_aqua_vm(unit_call_service(), local_peer_id);
let mut local_vm = create_avm(unit_call_service(), local_peer_id);
let script = format!(
r#"

View File

@ -14,14 +14,14 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::fallible_call_service;
use aqua_test_utils::unit_call_service;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::NEVec;
use interpreter_lib::SecurityTetraplet;
use air::SecurityTetraplet;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::fallible_call_service;
use air_test_utils::unit_call_service;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::NEVec;
use std::cell::RefCell;
use std::rc::Rc;
@ -60,16 +60,16 @@ fn create_check_service_closure(
#[test]
fn last_error_tetraplets() {
let set_variable_peer_id = "set_variable";
let mut set_variable_vm = create_aqua_vm(unit_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(unit_call_service(), set_variable_peer_id);
let fallible_peer_id = "fallible_peer_id";
let mut fallible_vm = create_aqua_vm(fallible_call_service("fallible_call_service"), fallible_peer_id);
let mut fallible_vm = create_avm(fallible_call_service("fallible_call_service"), fallible_peer_id);
let local_peer_id = "local_peer_id";
let args = Rc::new(RefCell::new(None));
let tetraplets = Rc::new(RefCell::new(None));
let mut local_vm = create_aqua_vm(
let mut local_vm = create_avm(
create_check_service_closure(args.clone(), tetraplets.clone()),
local_peer_id,
);
@ -98,13 +98,13 @@ fn last_error_tetraplets() {
#[test]
fn not_clear_last_error_in_match() {
let set_variable_peer_id = "set_variable";
let mut set_variable_vm = create_aqua_vm(unit_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(unit_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let args = Rc::new(RefCell::new(None));
let tetraplets = Rc::new(RefCell::new(None));
let mut local_vm = create_aqua_vm(
let mut local_vm = create_avm(
create_check_service_closure(args.clone(), tetraplets.clone()),
local_peer_id,
);
@ -136,13 +136,13 @@ fn not_clear_last_error_in_match() {
#[test]
fn not_clear_last_error_in_mismatch() {
let set_variable_peer_id = "set_variable";
let mut set_variable_vm = create_aqua_vm(unit_call_service(), set_variable_peer_id);
let mut set_variable_vm = create_avm(unit_call_service(), set_variable_peer_id);
let local_peer_id = "local_peer_id";
let args = Rc::new(RefCell::new(None));
let tetraplets = Rc::new(RefCell::new(None));
let mut local_vm = create_aqua_vm(
let mut local_vm = create_avm(
create_check_service_closure(args.clone(), tetraplets.clone()),
local_peer_id,
);

View File

@ -14,9 +14,9 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::set_variables_call_service;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::set_variables_call_service;
use serde_json::json;
@ -30,7 +30,7 @@ fn network_explore() {
);
let client_call_service = set_variables_call_service(set_variables_state);
let mut client = create_aqua_vm(
let mut client = create_avm(
client_call_service,
"12D3KooWEDU1WwGtvHUKpGCaMjhcLWyCUq3MQiRKZBLLFcBVVMck",
);
@ -38,16 +38,16 @@ fn network_explore() {
let client_1_id = String::from("12D3KooWFX27Tg3cNJkFk3W2iapnyRhwfwdQ4ZiTucsy1Go3MSGL");
let client_2_id = String::from("12D3KooWGNJoFmCNEHq8NpunB4pZSUh9UBHM53W1NwE7gM8L3RjZ");
let relay_call_service =
aqua_test_utils::set_variable_call_service(format!(r#"["{}", "{}"]"#, client_1_id, client_2_id));
let mut relay = create_aqua_vm(relay_call_service, relay_id.clone());
air_test_utils::set_variable_call_service(format!(r#"["{}", "{}"]"#, client_1_id, client_2_id));
let mut relay = create_avm(relay_call_service, relay_id.clone());
let client_1_call_service =
aqua_test_utils::set_variable_call_service(format!(r#"["{}", "{}"]"#, relay_id, client_2_id));
let mut client_1 = create_aqua_vm(client_1_call_service, client_1_id.clone());
air_test_utils::set_variable_call_service(format!(r#"["{}", "{}"]"#, relay_id, client_2_id));
let mut client_1 = create_avm(client_1_call_service, client_1_id.clone());
let client_2_call_service =
aqua_test_utils::set_variable_call_service(format!(r#"["{}", "{}"]"#, relay_id, client_1_id));
let mut client_2 = create_aqua_vm(client_2_call_service, client_2_id.clone());
air_test_utils::set_variable_call_service(format!(r#"["{}", "{}"]"#, relay_id, client_1_id));
let mut client_2 = create_avm(client_2_call_service, client_2_id.clone());
let script = include_str!("./scripts/network_explore.clj");

View File

@ -14,13 +14,13 @@
* limitations under the License.
*/
use aqua_test_utils::call_vm;
use aqua_test_utils::create_aqua_vm;
use aqua_test_utils::CallServiceClosure;
use aqua_test_utils::IValue;
use aqua_test_utils::NEVec;
use interpreter_lib::ResolvedTriplet;
use interpreter_lib::SecurityTetraplet;
use air::ResolvedTriplet;
use air::SecurityTetraplet;
use air_test_utils::call_vm;
use air_test_utils::create_avm;
use air_test_utils::CallServiceClosure;
use air_test_utils::IValue;
use air_test_utils::NEVec;
use std::cell::RefCell;
use std::rc::Rc;
@ -64,12 +64,12 @@ fn simple_fold() {
});
let set_variable_vm_peer_id = String::from("some_peer_id_1");
let mut set_variable_vm = create_aqua_vm(return_numbers_call_service, set_variable_vm_peer_id.clone());
let mut set_variable_vm = create_avm(return_numbers_call_service, set_variable_vm_peer_id.clone());
let mut client_vms = Vec::new();
for i in 1..=10 {
let (arg_host_func, arg_tetraplets) = arg_host_function();
let vm = create_aqua_vm(arg_host_func, i.to_string());
let vm = create_avm(arg_host_func, i.to_string());
client_vms.push((vm, arg_tetraplets))
}
@ -141,11 +141,11 @@ fn fold_json_path() {
});
let set_variable_vm_peer_id = String::from("some_peer_id_1");
let mut set_variable_vm = create_aqua_vm(return_numbers_call_service, set_variable_vm_peer_id.clone());
let mut set_variable_vm = create_avm(return_numbers_call_service, set_variable_vm_peer_id.clone());
let (arg_host_func, arg_tetraplets) = arg_host_function();
let client_peer_id = String::from("client_id");
let mut client_vm = create_aqua_vm(arg_host_func, client_peer_id.clone());
let mut client_vm = create_avm(arg_host_func, client_peer_id.clone());
let service_id = String::from("some_service_id");
let function_name = String::from("some_function_name");
@ -200,9 +200,9 @@ use fluence_app_service::AppServiceConfig;
use fluence_app_service::FaaSConfig;
use fluence_app_service::ModuleDescriptor;
use interpreter_lib::execution_trace::CallResult;
use interpreter_lib::execution_trace::ExecutedState;
use interpreter_lib::execution_trace::ExecutionTrace;
use air::execution_trace::CallResult;
use air::execution_trace::ExecutedState;
use air::execution_trace::ExecutionTrace;
use std::path::PathBuf;
fn construct_service_config(module_name: impl Into<String>) -> AppServiceConfig {
@ -301,7 +301,7 @@ fn tetraplet_with_wasm_modules() {
local_peer_id,
);
let mut vm = create_aqua_vm(host_func, local_peer_id);
let mut vm = create_avm(host_func, local_peer_id);
let result = call_vm!(vm, ADMIN_PEER_PK, script, "", "");
let actual_trace: ExecutionTrace = serde_json::from_slice(&result.data).unwrap();

View File

@ -11,6 +11,32 @@ dependencies = [
"memchr",
]
[[package]]
name = "air"
version = "0.9.0"
dependencies = [
"air-interpreter-interface",
"air-parser",
"boolinator",
"fluence",
"jsonpath_lib-fl",
"log",
"polyplets",
"serde",
"serde_json",
"thiserror",
"wasm-bindgen",
]
[[package]]
name = "air-interpreter-interface"
version = "0.5.0"
dependencies = [
"fluence",
"fluence-it-types",
"serde",
]
[[package]]
name = "air-parser"
version = "0.7.0"
@ -27,15 +53,6 @@ dependencies = [
"thiserror",
]
[[package]]
name = "aqua-interpreter-interface"
version = "0.5.0"
dependencies = [
"fluence",
"fluence-it-types",
"serde",
]
[[package]]
name = "array_tool"
version = "1.0.3"
@ -78,8 +95,8 @@ dependencies = [
name = "auth_module"
version = "0.1.0"
dependencies = [
"air",
"fluence",
"interpreter-lib",
]
[[package]]
@ -378,23 +395,6 @@ dependencies = [
"hashbrown",
]
[[package]]
name = "interpreter-lib"
version = "0.9.0"
dependencies = [
"air-parser",
"aqua-interpreter-interface",
"boolinator",
"fluence",
"jsonpath_lib-fl",
"log",
"polyplets",
"serde",
"serde_json",
"thiserror",
"wasm-bindgen",
]
[[package]]
name = "it-to-bytes"
version = "0.1.0"

View File

@ -9,7 +9,7 @@ name = "auth_module"
path = "src/main.rs"
[dependencies]
interpreter-lib = { path = "../../../../interpreter-lib" }
air = { path = "../../../../air" }
fluence = "0.6.1"
[workspace]

View File

@ -11,6 +11,32 @@ dependencies = [
"memchr",
]
[[package]]
name = "air"
version = "0.9.0"
dependencies = [
"air-interpreter-interface",
"air-parser",
"boolinator",
"fluence",
"jsonpath_lib-fl",
"log",
"polyplets",
"serde",
"serde_json",
"thiserror",
"wasm-bindgen",
]
[[package]]
name = "air-interpreter-interface"
version = "0.5.0"
dependencies = [
"fluence",
"fluence-it-types",
"serde",
]
[[package]]
name = "air-parser"
version = "0.7.0"
@ -27,15 +53,6 @@ dependencies = [
"thiserror",
]
[[package]]
name = "aqua-interpreter-interface"
version = "0.5.0"
dependencies = [
"fluence",
"fluence-it-types",
"serde",
]
[[package]]
name = "array_tool"
version = "1.0.3"
@ -370,23 +387,6 @@ dependencies = [
"hashbrown",
]
[[package]]
name = "interpreter-lib"
version = "0.9.0"
dependencies = [
"air-parser",
"aqua-interpreter-interface",
"boolinator",
"fluence",
"jsonpath_lib-fl",
"log",
"polyplets",
"serde",
"serde_json",
"thiserror",
"wasm-bindgen",
]
[[package]]
name = "it-to-bytes"
version = "0.1.0"
@ -478,8 +478,8 @@ dependencies = [
name = "log_storage"
version = "0.1.0"
dependencies = [
"air",
"fluence",
"interpreter-lib",
]
[[package]]

View File

@ -9,7 +9,7 @@ name = "log_storage"
path = "src/main.rs"
[dependencies]
interpreter-lib = { path = "../../../../interpreter-lib" }
air = { path = "../../../../air" }
fluence = "0.6.1"
[workspace]

View File

@ -1,8 +1,8 @@
New-Item -ItemType Directory -Force -Path ./wasm
wasm-pack build ../interpreter --no-typescript --release -d ../npm/wasm
wasm-pack build ../../air-interpreter --no-typescript --release -d wasm
$base64string = [Convert]::ToBase64String([IO.File]::ReadAllBytes('./npm/wasm/aquamarine_client_bg.wasm'))
$base64string = [Convert]::ToBase64String([IO.File]::ReadAllBytes('./wasm/air_interpreter_client_bg.wasm'))
$data = "// auto-generated

16
avm/client/build_wasm.sh Executable file
View File

@ -0,0 +1,16 @@
#!/bin/sh
## requires wasm-pack
## > curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
(
cd ../..;
mkdir -p ./avm/client/wasm || exit;
wasm-pack build ./air-interpreter --no-typescript --release -d ../avm/client/wasm
)
cat << EOF > ./src/wasm.js
// auto-generated
module.exports = "$(base64 -w0 wasm/air_interpreter_client_bg.wasm)";
EOF

10913
avm/client/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -20,7 +20,7 @@
},
"devDependencies": {
"@types/jest": "^26.0.23",
"jest": "^26.6.3",
"jest": "26.5.0",
"ts-jest": "^26.5.5",
"typescript": "^3.9.5"
}

View File

@ -43,7 +43,7 @@ export type ParticleHandler = (
) => CallServiceResult;
type ImportObject = {
'./aquamarine_client_bg.js': {
'./air_interpreter_client_bg.js': {
// fn call_service_impl(service_id: String, fn_name: String, args: String, security_tetraplets: String) -> String;
// prettier-ignore
__wbg_callserviceimpl_d5849c05cb19df30: (arg0: any, arg1: any, arg2: any, arg3: any, arg4: any, arg5: any, arg6: any, arg7: any, arg8: any, ) => void;
@ -131,7 +131,7 @@ function newImportObject(
return {
// __wbg_callserviceimpl_c0ca292e3c8c0c97 this is a function generated by bindgen. Could be changed.
// If so, an error with a new name will be occurred after wasm initialization.
'./aquamarine_client_bg.js': {
'./air_interpreter_client_bg.js': {
// prettier-ignore
__wbg_callserviceimpl_d5849c05cb19df30: (arg0: any, arg1: any, arg2: any, arg3: any, arg4: any, arg5: any, arg6: any, arg7: any, arg8: any) => {
let wasm = cfg.exports;

Some files were not shown because too many files have changed in this diff Show More