359 Commits

Author SHA1 Message Date
Ivan Boldyrev
c38a1b9343 Implement RawString in testing-framework
Keep original string type to avoid incorrect transformed script
generation.
2024-08-20 15:34:26 +02:00
Ivan Boldyrev
7b746e3288 Support embed in testing-framework 2024-08-19 18:40:28 +02:00
Ivan Boldyrev
721e61eff7 Support raw strings in testing-framework 2024-08-19 18:02:26 +02:00
Ivan Boldyrev
97fe1cec4b Use raw strings #".."# for embed
1. `EmbedString` is removed from lexer
2. `#".."#` is parsed as a string.  It can contain quotation marks and
    hash signs inside, but `"#` combination ends it.

The raw strings can be used everywhere where string can be used.

`(#...#)` cannot be used because it can exist in real code (for example,
canon stream in call triplet).
2024-08-01 15:54:02 +02:00
Ivan Boldyrev
8a4bb18ca3 Make fmt happy 2024-08-01 13:19:26 +02:00
Ivan Boldyrev
646796ba79 Make clippy happy 2024-08-01 13:10:06 +02:00
Ivan Boldyrev
d601a48238 Some comments 2024-08-01 00:04:04 +02:00
Ivan Boldyrev
5aa104d778 Revert "Simplify returning error"
This reverts commit 3300d870bcda76f904697c54e9392cf5a6085c0b.

It seems to be more convenient to work with typed result in the AquaVM.
2024-08-01 00:04:04 +02:00
Ivan Boldyrev
9239cb68d1 Execute embed statement 2024-08-01 00:04:04 +02:00
Ivan Boldyrev
f916166ed7 Remove dbg output 2024-08-01 00:04:04 +02:00
Ivan Boldyrev
0e4c9f5bdf Implement validator for embed 2024-08-01 00:04:04 +02:00
Ivan Boldyrev
e06aaa21be starlark's get_tetraplet returns list
As theoretically many tetraplets may be associated with a value,
we return all of them instead of just one.
2024-08-01 00:04:04 +02:00
Ivan Boldyrev
804ba8c2fa Add embed parser tests 2024-08-01 00:04:04 +02:00
Ivan Boldyrev
d6650f93bf More starlark tests 2024-08-01 00:04:04 +02:00
Ivan Boldyrev
224c5eeae7 Add embed syntax to AIR parser 2024-08-01 00:04:04 +02:00
Ivan Boldyrev
322101655f Add an embedded script support to AIR lexer
Everything between `(#` and `#)` is considered an embedded script.  The
script itself is not analyzed.
2024-08-01 00:04:04 +02:00
Ivan Boldyrev
5fb484617b Simplify returning error
Make `Fail` one of variants of the `ExecutionResult`, not a nested result.
2024-08-01 00:04:04 +02:00
Ivan Boldyrev
7d788e7c5d Arrange Starlark error handling
Make it more compatible with AquaVM approach
2024-08-01 00:04:04 +02:00
Ivan Boldyrev
2727fe5530 Add Starlark tetraplet and value tests 2024-08-01 00:04:04 +02:00
Ivan Boldyrev
6d209ca4b4 TODO catchable 2024-08-01 00:04:04 +02:00
Ivan Boldyrev
38cd002f18 Implement interpreter invocation 2024-08-01 00:04:01 +02:00
Ivan Boldyrev
a5e551d021 Implement starlark traits for JValue
Guarded by `starlark` feature flag.
2024-08-01 00:02:35 +02:00
fluencebot
12db38a6ec
chore: release master (#849)
Co-authored-by: Ivan Boldyrev <ivan@cloudless.dev>
2024-07-23 02:43:42 +07:00
Ivan Boldyrev
58a5f3046a
fix(value): remove unused code (#850)
* fix(value): remove unused code

It breaks compilation.
2024-07-22 23:53:16 +07:00
fluencebot
c423434fa1
chore: release master (#846)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.64.1
2024-07-22 20:07:07 +07:00
fluencebot
c611ae584b
chore: release master (#841)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.64.0
2024-06-28 11:12:03 +01:00
Mike Voronov
4bdc881c7a
chore: change license to AGPL-3 (#844) 2024-06-26 12:34:36 +03:00
Ivan Boldyrev
acb07a3364
chore(deps): update rust crate borsh to 1.5.0 (#838) 2024-05-26 03:00:56 +07:00
Ivan Boldyrev
04bacb7039
feat(cli)!: hopon virtual instruction in the beautifier (#840)
AIR beautifier may output virtual `hopon` instruction based on specific pattern generated by the Aqua compiler.

The `air_beatifier::beatify` function has now an extra argument that determines if to perform the virtual instruction detection, giving more readable output.

The `air-beautify-wasm` crate has behavior of the `beautify` function changed: the functions now extracts virtual instructions, so it is a drop-in replacement for previous version with new functionality.  New exported function `beautify_raw` is added, that doesn't look for virtual instructions' patterns, formatting the code as is.
2024-05-24 19:27:51 +07:00
fluencebot
c04d8f889e
chore: release master (#825)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.63.0
2024-04-17 14:16:37 +04:00
Valery Antopol
bf9414e8d4
feat(runtime)!: switch to async marine (#815)
* bench results for sync marine

* WIP

* start updating tests

* most of initial issues fixed

* tests compile without warnings

* rustfmt

* merge with master

* use git dependency

* merge fix + fmt

* fix bench builder

* add Cargo.lock

* fix + fmt after merge

* fix build with latest marine

* use released marine
2024-04-15 19:17:17 +04:00
fluencebot
a600c1735c
chore: release master (#823) 2024-02-23 01:18:15 +03:00
Ivan Boldyrev
bab0c002f5
chore: Rust channel update dedicated to ENIAC Day (#822)
It requires updating minor version of curve25519-dalek and ahash crates in the
Cargo.lock.  If you need to use older version of nightly rustc, use
curve25519-dalek-4.1.1 and ahash-07.8/0.8.9.  It affects Cargo.lock only.
2024-02-23 04:29:22 +07:00
fluencebot
9cc62cbb9a
chore: release master (#821) 2024-02-22 14:05:33 +03:00
Valery Antopol
08e85478b4
feat!: update marine-rs-sdk to 0.14.0, remove all of json_path remains (#820)
* support call_parameters v2

* remove old comment

* use released marine

* fix test wasm

* update sdk marine use lens

* fix test module

* WIP fixing the tests to use lens

* WIP tetraplet field renaming test fixes

* rename more lambda to lens

* fix build

* Fix gen-bench-data compilation

* Update gen-bench-data Cargo.lock

* Fix signature tests

---------

Co-authored-by: drrtuy <roman@fluence.one>
Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
2024-02-22 11:57:27 +04:00
fluencebot
b9f04dfbaf
chore: release master (#810)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.60.0
2024-02-20 15:37:21 +03:00
raftedproc
2ed1901dbc
feat(avm-server): a convenience method to hide implementation from nox and fix for items ordering bug (#818) 2024-02-20 10:35:50 +03:00
raftedproc
5afd5cb3a1
feat(execution-engine): aquavm args limits (#811)
* feat(preparation,memory):  AquaVM preparation step now checks input arguments sizes [fixes VM-425]
2024-02-15 19:55:25 +03:00
Ivan Boldyrev
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
Ivan Boldyrev
9d4094dc99
chore(performance): use fluence-blake3 with wasm32 SIMD support (#806)
* chore(preformance): use fluence-blake3

Enable wasm32 SIMD on the appropriate target.  It gives a noticeable performance improvement.

The smaller memory size on benchmarks is due to unrelated stack size reduction.
2024-02-04 21:27:49 +07:00
fluencebot
d0ca93c231
chore: release master (#797)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.59.0
2024-01-24 20:41:11 +07:00
renovate[bot]
a33e853812
fix(deps): update rust crate marine-rs-sdk to 0.10.3 (#782)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-15 20:14:57 +07:00
fluencebot
d7d33ddb7f
chore: release master (#793)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.58.0

* Set minimal interpreter version to 0.58.0

---------

Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
2024-01-11 18:56:03 +07:00
Ivan Boldyrev
d6b1da9bdc
feat(air,air-cli): pretty-printing binary interpreter data (#794)
Add new interpreter method `to_human_readable_data` and `air data` subcommand to convert binary data to JSON with indentation.
2024-01-11 17:46:16 +07:00
Ivan Boldyrev
2e0b54c2d4
feat(data)!: Rkyv for InterprerterData (#783)
* Refactor out the `InterpreterDataEnvelope`

It is an envelope for the data that makes `version` info accessible in
standard non-changing way.  Inner data in `InterpreterDataEnv` is a binary blob.

* Use `rkyv` for `InterpreterData`
* `InterpreterDataEnvelope` uses MsgPack directly

It will be changed when `interpreter-sede` will support types with serde borrows.
2024-01-10 00:22:11 +07:00
fluencebot
38677832f6
chore: release master (#789)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.57.0
2024-01-09 22:40:00 +07:00
Ivan Boldyrev
325eea7e91
feat(interface)!: Use MessagePack for calls (#780)
Top-level structs use multicodec-prefixed MessagePack, the nested
structures (arguments, tetraplets) use just ordinary MessagePack.

* JS-compatible `CallResults`

Binary format implementations like `rmp-serde` do not bother converting keys from strings, unlike `serde_json`.
So, we use `CallResults` with string keys, as JS client cannot produce anything else.

---------

Co-authored-by: Mike Voronov <michail.vms@gmail.com>
2024-01-08 18:01:58 +07:00
fluencebot
0d3ce3bcd9
chore: release master (#771)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.56.0

* temporary disable risc-0

* remove the risc-0 part from the release-please at all

---------

Co-authored-by: Mike Voronov <michail.vms@gmail.com>
2024-01-08 17:32:49 +07:00
renovate[bot]
ecfabaa02d
chore(deps): update rust crate criterion to 0.5.1 (#746)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 19:13:01 +07:00
raftedproc
c6f157a6e3
feat(air-parser): VM-347 After next validator fold check (#774) 2023-12-28 20:48:16 +03:00