From 57807d5e2e91f682b19b1074dd67316d562e365c Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Thu, 30 May 2024 14:02:59 -0400 Subject: [PATCH] Prepare release 1.5.0 --- CHANGELOG.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea1a87b..22f91c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,45 @@ Operators, you should copy/paste content of this content straight to your projec If you were at `firehose-core` version `1.0.0` and are bumping to `1.1.0`, you should copy the content between those 2 version to your own repository, replacing placeholder value `fire{chain}` with your chain's own binary. +## v1.5.0 + +### Highlights + +- Substreams engine is now able run Rust code that depends on `solana_program` in Solana land to decode and `alloy/ether-rs` in Ethereum land + +#### How to use `solana_program` or `alloy`/`ether-rs` + +Those libraries when used in a `wasm32-unknown-unknown` context creates in a bunch of [wasmbindgen](https://rustwasm.github.io/wasm-bindgen/) imports in the resulting Substreams Rust code, imports that led to runtime errors because Substreams engine didn't know about those special imports until today. + +The Substreams engine is now able to "shims" those `wasmbindgen` imports enabling you to run code that depends libraries like `solana_program` and `alloy/ether-rs` which are known to pull those `wasmbindgen` imports. This is going to work as long as you do not actually call those special imports. Normal usage of those libraries don't accidentally call those methods normally. If they are called, the WASM module will fail at runtime and stall the Substreams module from going forward. + +To enable this feature, you need to explicitly opt-in by appending a `+wasm-bindgen-shims` at the end of the binary's type in your Substreams manifest: + +```yaml +binaries: + default: + type: wasm/rust-v1 + file: +``` + +to become + +```yaml +binaries: + default: + type: wasm/rust-v1+wasm-bindgen-shims + file: +``` + +### Others + +* Substreams clients now enable gzip compression over the network (already supported by servers). + +* Substreams binary type can now be optionally composed of runtime extensions by appending a `+,[]` at the end of the binary type. Extensions are `key[=value]` that are runtime specifics. + + > [!NOTE] + > If you were a library author and parsing generic Substreams manifest(s), you will now need to handle that possibility in the binary type. If you were reading the field without any processing, you don't have to change nothing. + ## v1.4.2 * Fix parsing of flag 'common-index-block-sizes' from yaml config file