Commit Graph

324 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
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
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
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
c6f157a6e3 feat(air-parser): VM-347 After next validator fold check (#774) 2023-12-28 20:48:16 +03:00
518bb95a17 fix(deps): update rust crate marine-call-parameters to 0.10.3 (#781)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-28 20:40:29 +07:00
f1c7b43a1e feat(data)!: values are binary blobs (#775)
* Store deserialize values as raw JSON values

Values are parsed on-demand.
---------

Co-authored-by: Mike Voronov <michail.vms@gmail.com>
2023-12-26 18:42:40 +07:00
763bbcb663 fix(deps): update rust crate marine-call-parameters to 0.10.2 (#732)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-26 06:17:42 +07:00
b2da9afbdc fix(deps): update rust crate marine-rs-sdk to 0.10.2 (#770)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-26 04:56:28 +07:00
c9a0b87a4c fix(deps): update rust crate fluence-keypair to 0.10.4 (#752)
* Update ed25519-dalek and rand_chacha to compatible versions
* Make clippy happier

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
2023-12-26 04:13:57 +07:00
26429eaca2 feat(air-cli)!: introduce risc-0 extension (#681) 2023-12-21 16:51:15 +03:00
0a8827bb3c chore: use resolver 2 and 2021 edition (#769) 2023-12-18 18:48:46 +03:00
771d42dec4 feat(data)!: flexible serialization formats (#757)
New crate air_interpreter_sede introduces a flexible serialization and deserialization infrastructure.

Low level API: the Format trait and related. It includes simple and universal mechanisms for serializing any possible (e.g. implementing the Serde traits) value.

High level API: Representation trait and related. It allows declaring representation types that can serialize and deserialize only certain types (for example, InterpreterDataRepr can serialize only the InterpreterData, but deserialize InterpreterData and Versions` types), producing newtype values as serialization results.

The serialized representation of CallResults now contains byte arrays, not strings, because the new infrastructure serializes to byte arrays only.

Also, the basic support for multicodecs is added.
2023-12-15 21:23:09 +07:00
17d7ef6c5a chore: release master (#751)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.55.0
2023-12-13 00:15:36 +07:00
05fda3ee16 fix(deps): update rust crate marine-rs-sdk to 0.10.2 (#733)
---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
2023-12-12 23:24:11 +07:00
1673cdf06c feat(air-parser)!: optimize Instruction type layout (#767)
Instead of being boxed for each node, the `Instruction` type contains a boxed variable-size elements.  Thus `Instruction` is quite lean, and the allocator deals with variable-sized elements.

Total number of allocations is more or less same, but less space is wasted for unused memory: previously the Instruction's size was 112 bytes in WASM, now it is 16.

It reduces memory consumption on large AIR scripts (heap size decreased from 7.7MiB to 4.625MiB in parser-10000-100, and for the new parser-calls-10000-100 benchmark, it decreased from 5.115MiB to 4.375MiB).

This is a breaking change as the API changes (though the code that navigates the parsed tree generally should work as is).
2023-12-12 19:50:41 +07:00
f1b6c48987 chore(deps): update rust crate multihash to 0.19.1 (#748)
* chore(deps): update rust crate multihash to 0.19.1
* Coordinated update of `cid` and `multihash` crates

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
2023-12-08 00:32:16 +07:00
524c30243b feat(interpreter-cid,interpreter-data)!: Support for multiple hash types in CID verification (#722)
It will allow to change CID hash functions without breaking compatibility or use multiple CID hash functions.
2023-11-23 01:12:42 +07:00
1b7de5e659 chore(testing-framework): a new behavior to print service call parameters/result out to console (#723) 2023-11-08 14:10:05 +03:00
523dd6b219 chore(deps): update rust crate serde_json to 1.0.108 (#742)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-03 00:15:56 +07:00
15ce40a1cd feat(interpreter-data)!: allow only deterministic signature algorithms (#734)
Some public signature algorithms require a RNG, but it is not
available in certain environments like smartcontracts.
2023-11-02 21:43:35 +07:00
55da7a64aa chore(deps): update rust crate tracing to 0.1.40 (#745)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-29 21:18:50 +07:00
9558692421 chore(deps): update rust crate serde to 1.0.190 (#740)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-29 20:44:40 +07:00
10341c42fd chore(deps): update rust crate thiserror to 1.0.50 (#744)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-29 20:10:26 +07:00
7d4dfb76ea chore(deps): update rust crate multimap to 0.9.1 (#738)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-29 15:41:30 +07:00
9bac51f24e chore: release master (#725)
* chore: release master

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

* Update minimal version to 0.54.0

---------

Co-authored-by: Ivan Boldyrev <ivan@fluence.one>
2023-10-26 20:56:52 +07:00
776d81a1db feat(interpreter-cid)!: use Blake3 for CIDs (#729)
Change to more efficient cryptography hash implementation.
2023-10-23 20:16:15 +07:00
2b944eb348 chore(deps): update rust crate built to 0.7.1 (#730)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-23 16:02:33 +03:00
1d02b426b5 chore(deps): update rust crate num-traits to 0.2.17 (#669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-23 13:39:31 +03:00
f73e220ed1 chore(deps): update rust crate log to 0.4.20 (#661)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-23 13:03:15 +03:00
4d4c946eaa chore(deps): update rust crate regex to 1.10.2 (#603)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-23 12:11:13 +03:00
88e7dba5f2 fix(deps): update rust crate fluence-keypair to 0.10.3 (#620)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-19 19:00:15 +03:00
a84716dad6 chore(interpreter-cid): fix compilation with correct featureflag (#724)
fix(interpreter-cid): fix compilation with correct featureflag
2023-10-19 13:02:24 +03:00
cbc659e939 chore: release master (#721)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.53.0
2023-10-16 17:15:16 +03:00
c2108e0fa0 feat(execution-engine,test-utils,interpreter-data,interpreter-cid)!: Rc into CID (#718)
* Hide `Rc` inside `CID` type, making it cheap to clone.
* Introduce `CidRef` type that abstracts on `CID`'s inner type.

This change makes code cleaner, makes memory more optimal (single allocation vs two allocations) and makes it easier to change CID's internal representation from string to binary.
2023-10-16 20:35:42 +07:00
d2ad221597 chore: release master (#720)
* chore: release master

* chore: Bump air-interpreter and air-near-contract version to 0.52.0
2023-10-16 16:01:49 +03:00
cdcb86cb55 feat(execution-engine)!: intro farewell_if_error_macro (#719)
intro farewell_if_error_macro
2023-10-16 15:13:20 +03:00
0aa23318d9 chore: release master (#716) 2023-10-13 22:21:19 +03:00
8a07613027 feat(aquavm-air)!: signature checking (#607) 2023-10-13 22:19:02 +03:00
b6c4eaaddc chore: release master (#715) 2023-10-13 21:19:14 +03:00