Skip to content

refactoring: Isolate clarity VM behind feature gate for lightweight serialization #6239

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 31 commits into
base: develop
Choose a base branch
from

Conversation

Jiloc
Copy link
Contributor

@Jiloc Jiloc commented Jul 1, 2025

Description

This PR builds on top of #6238, and will be rebased once the other PR will be merged.

The primary goal is to separate the core Clarity data types and their serialization/deserialization logic from the heavyweight components of the full Clarity Virtual Machine.

Currently, any project using the clarity crate, even for simple value serialization, must include the entire VM with all its heavy dependencies. This results in unnecessarily large binaries and slower compile times for tools that only need to interact with Clarity data structures.

This PR introduces a vm feature flag that gates all VM-related code, including parsing, analysis, and execution. This allows developers to use the clarity crate in a lightweight, serialization-only mode by disabling default features.

Key Changes:

  • Introduced vm Feature Flag:

    • A new vm feature has been added to Cargo.toml.
    • Many dependencies (rand, integer-sqrt, serde_stacker, rusqlite, etc.) are now optional and included as part of the vm feature.
    • The testing, developer-mode, devtools, and disable-costs features now imply the vm feature.
  • Gated VM Modules and Functionality:

    • The core VM engine, analysis passes (type_checker, read_only_checker, etc.), and execution logic are now conditionally compiled with #[cfg(feature = "vm")].
    • This ensures that projects only needing data structures and serialization do not compile the full virtual machine.

comparison between buidling with default flags and --no-default-flags

franc@ASUS-VIVOBOOK:~/stacks-core$ cargo clean && time cargo build --package clarity
real    0m57.571s
user    5m32.915s
sys     0m14.679s

franc@ASUS-VIVOBOOK:~/stacks-core$ cargo clean && time cargo build --package clarity --no-default-features
real    0m18.373s
user    3m16.690s
sys     0m9.888s

This change is fully backward compatible. The default features in Cargo.toml are configured to include vm, so existing projects will experience no breaking changes.

OPEN TO SUGGESTIONS TO IMPROVE IT!

Applicable issues

Additional info (benefits, drawbacks, caveats)

Checklist

  • Test coverage for new or modified code paths
  • Changelog is updated
  • Required documentation changes (e.g., docs/rpc/openapi.yaml and rpc-endpoints.md for v2 endpoints, event-dispatcher.md for new events)
  • New clarity functions have corresponding PR in clarity-benchmarking repo
  • New integration test(s) added to bitcoin-tests.yml

@Jiloc Jiloc added this to the 3.1.0.0.13 milestone Jul 1, 2025
@Jiloc Jiloc self-assigned this Jul 1, 2025
@Jiloc Jiloc requested review from a team as code owners July 1, 2025 17:56
@obycode obycode modified the milestones: 3.1.0.0.13, 3.1.0.0.14 Jul 1, 2025
@Jiloc Jiloc moved this to Status: In Review in Stacks Core Eng Jul 2, 2025
@Jiloc Jiloc requested a review from a team as a code owner July 2, 2025 09:36
@raress96
Copy link

raress96 commented Jul 2, 2025

Hello,

There is an issue when compiling with this for CosmWasm context.

The issue comes from getrandom dependency, which is used in rand.

error: the wasm*-unknown-unknown targets are not supported by default, you may need to enable the "js" feature. For more information see: https://docs.rs/getrandom/#webassembly-support
   --> /usr/local/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/getrandom-0.2.16/src/lib.rs:346:9
    |
346 | /         compile_error!("the wasm*-unknown-unknown targets are not supported by \
347 | |                         default, you may need to enable the \"js\" feature. \
348 | |                         For more information see: \
349 | |                         https://docs.rs/getrandom/#webassembly-support");

It is similar to this issue:
cosmos/solidity-ibc-eureka#155
I also found a similar discussion here:
CosmWasm/cosmwasm#1143

The js feature can't be used since it is not available in CosmWasm context.

Can you take a look at the rand / getrandom dependency and how this is used in the clarity or stacks-common crate? Maybe it can be conditionally enabled.

To reproduce locally, you can get the code from this branch:
Trust-Machines/axelar-amplifier#8

And run the CosmWasm Optimizer build using Docker:

docker run --rm -v "$(pwd)":/code \
  --mount type=volume,source="$(basename "$(pwd)")_cache",target=/target \
  --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
  cosmwasm/optimizer:0.16.1

@raress96
Copy link

raress96 commented Jul 4, 2025

Hello, commit d64ad0b88671d841959334ff1be2108c14073402 successfully compiled in CosmWasm context. However, the latest commit 526c0d15808847096df4fc8a752d3b6dcb0b7069 no longer compiles, it fails with these errors:

--> /usr/local/cargo/git/checkouts/stacks-core-a7710d651838f98d/526c0d1/stacks-common/./src/util/secp256k1/wasm.rs:200:43
    |
200 |     let recovered_pub_key = libsecp256k1::recover(&message, &signature, &recovery_id)?;
    |                                           ^^^^^^^ not found in `libsecp256k1`
    |
note: found an item that was configured out
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/libsecp256k1-0.7.2/src/lib.rs:808:8
    |
808 | pub fn recover(
    |        ^^^^^^^
note: the item is gated here
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/libsecp256k1-0.7.2/src/lib.rs:806:1
    |
806 | #[cfg(any(feature = "static-context", feature = "lazy-static-context"))]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0425]: cannot find function `verify` in crate `libsecp256k1`
   --> /usr/local/cargo/git/checkouts/stacks-core-a7710d651838f98d/526c0d1/stacks-common/./src/util/secp256k1/wasm.rs:217:29
    |
217 |     let res = libsecp256k1::verify(&message, &signature, &pubkey);
    |                             ^^^^^^ not found in `libsecp256k1`
    |
note: found an item that was configured out
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/libsecp256k1-0.7.2/src/lib.rs:790:8
    |
790 | pub fn verify(message: &Message, signature: &Signature, pubkey: &PublicKey) -> bool {
    |        ^^^^^^
note: the item is gated here
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/libsecp256k1-0.7.2/src/lib.rs:788:1
    |
788 | #[cfg(any(feature = "static-context", feature = "lazy-static-context"))]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0425]: cannot find function `sign` in crate `libsecp256k1`
   --> /usr/local/cargo/git/checkouts/stacks-core-a7710d651838f98d/526c0d1/stacks-common/./src/util/secp256k1/wasm.rs:338:42
    |
338 |         let (sig, recid) = libsecp256k1::sign(&message, &self.key);
    |                                          ^^^^ not found in `libsecp256k1`
    |
note: found an item that was configured out
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/libsecp256k1-0.7.2/src/lib.rs:857:8
    |
857 | pub fn sign(message: &Message, seckey: &SecretKey) -> (Signature, RecoveryId) {
    |        ^^^^
note: the item is gated here
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/libsecp256k1-0.7.2/src/lib.rs:852:1
    |
852 | / #[cfg(all(
853 | |     feature = "hmac",
854 | |     any(feature = "static-context", feature = "lazy-static-context")
855 | | ))]
    | |___^

error[E0599]: no function or associated item named `from_secret_key` found for struct `libsecp256k1::PublicKey` in the current scope
   --> /usr/local/cargo/git/checkouts/stacks-core-a7710d651838f98d/526c0d1/stacks-common/./src/util/secp256k1/wasm.rs:107:42
    |
107 |         let key = LibSecp256k1PublicKey::from_secret_key(&privk.key);
    |                                          ^^^^^^^^^^^^^^^ function or associated item not found in `PublicKey`
    |
note: if you're trying to build a new `libsecp256k1::PublicKey` consider using one of the following associated functions:
      libsecp256k1::PublicKey::from_secret_key_with_context
      libsecp256k1::PublicKey::parse_slice
      libsecp256k1::PublicKey::parse
      libsecp256k1::PublicKey::parse_compressed
      libsecp256k1::PublicKey::combine
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/libsecp256k1-0.7.2/src/lib.rs:107:5
    |
107 | /     pub fn from_secret_key_with_context(
108 | |         seckey: &SecretKey,
109 | |         context: &ECMultGenContext,
110 | |     ) -> PublicKey {
    | |__________________^
...
123 |       pub fn parse_slice(p: &[u8], format: Option<PublicKeyFormat>) -> Result<PublicKey, Error> {
    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
158 |       pub fn parse(p: &[u8; util::FULL_PUBLIC_KEY_SIZE]) -> Result<PublicKey, Error> {
    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
192 | /     pub fn parse_compressed(
193 | |         p: &[u8; util::COMPRESSED_PUBLIC_KEY_SIZE],
194 | |     ) -> Result<PublicKey, Error> {
    | |_________________________________^
...
299 |       pub fn combine(keys: &[PublicKey]) -> Result<Self, Error> {
    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: there is an associated function `from_secret_key_with_context` with a similar name
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/libsecp256k1-0.7.2/src/lib.rs:107:5
    |
107 | /     pub fn from_secret_key_with_context(
108 | |         seckey: &SecretKey,
109 | |         context: &ECMultGenContext,
110 | |     ) -> PublicKey {
    | |__________________^

@Jiloc
Copy link
Contributor Author

Jiloc commented Jul 4, 2025

@raress96 can you try building stacks-core with the 'wasm-deterministic' feature flag?

stacks-common = { git = "https://github.com/Jiloc/stacks-core", branch = "chore/clarity-vm-feature-gate", default-features = false, features = ["wasm-deterministic"] }

@raress96
Copy link

raress96 commented Jul 4, 2025

@raress96 can you try building stacks-core with the 'wasm-deterministic' feature flag?

stacks-common = { git = "https://github.com/Jiloc/stacks-core", branch = "chore/clarity-vm-feature-gate", default-features = false, features = ["wasm-deterministic"] }

It compiles fine with this, thanks.

Copy link

codecov bot commented Jul 4, 2025

Codecov Report

Attention: Patch coverage is 85.14957% with 278 lines in your changes missing coverage. Please review.

Project coverage is 82.46%. Comparing base (1e60445) to head (9f9d721).
Report is 29 commits behind head on develop.

Files with missing lines Patch % Lines
clarity/src/vm/costs/tracker.rs 82.90% 159 Missing ⚠️
clarity/src/vm/ast/ast_builder.rs 82.43% 75 Missing ⚠️
clarity/src/vm/core.rs 90.15% 38 Missing ⚠️
clarity/src/vm/analysis/engine.rs 94.94% 5 Missing ⚠️
clarity/src/vm/representations.rs 91.66% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #6239      +/-   ##
===========================================
+ Coverage    77.31%   82.46%   +5.15%     
===========================================
  Files          541      541              
  Lines       344258   344528     +270     
  Branches       323      323              
===========================================
+ Hits        266166   284124   +17958     
+ Misses       78084    60396   -17688     
  Partials         8        8              
Files with missing lines Coverage Δ
clarity/src/libclarity.rs 55.55% <ø> (ø)
...larity/src/vm/analysis/arithmetic_checker/tests.rs 98.51% <100.00%> (ø)
...c/vm/analysis/type_checker/v2_1/tests/contracts.rs 95.69% <100.00%> (+5.01%) ⬆️
clarity/src/vm/ast/parser/v2/lexer/mod.rs 94.76% <100.00%> (ø)
clarity/src/vm/ast/parser/v2/parser_impl.rs 55.46% <ø> (ø)
clarity/src/vm/callables.rs 96.28% <ø> (+0.11%) ⬆️
clarity/src/vm/contexts.rs 91.69% <ø> (ø)
clarity/src/vm/costs/mod.rs 57.14% <ø> (-25.47%) ⬇️
clarity/src/vm/database/sqlite.rs 81.97% <ø> (ø)
clarity/src/vm/docs/mod.rs 90.09% <ø> (+37.32%) ⬆️
... and 18 more

... and 255 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1e60445...9f9d721. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@raress96
Copy link

raress96 commented Jul 9, 2025

Hello, coming back to another issue from CosmWasm. Even though the contracts compile, when trying to deploy to the chain, the following error happens:

Error: rpc error: code = Unknown desc = rpc error: code = Unknown desc = failed to execute message; message index: 0: Error calling the VM: Error during static Wasm validation: Wasm contract requires unsupported import: "__wbindgen_placeholder__.__wbindgen_object_drop_ref". Required imports: {"__wbindgen_externref_xform__.__wbindgen_externref_table_grow", "__wbindgen_externref_xform__.__wbindgen_externref_table_set_null", ... 20 more}. Available imports: ["env.abort", "env.db_read", "env.db_write", "env.db_remove", "env.addr_validate", "env.addr_canonicalize", "env.addr_humanize", "env.secp256k1_verify", "env.secp256k1_recover_pubkey", "env.ed25519_verify", "env.ed25519_batch_verify", "env.debug", "env.query_chain", "env.db_scan", "env.db_next", "env.db_next_key", "env.db_next_value"].: create wasm contract failed [CosmWasm/wasmd@v0.34.1/x/wasm/keeper/keeper.go:169] With gas wanted: '0' and gas used: '11352913' : unknown request

If I use cosmwasm-check tool, I get a similar error:

Error during static Wasm validation: Wasm contract requires unsupported import: "__wbindgen_placeholder__.__wbindgen_describe". Required imports: {"__wbindgen_externref_xform__.__wbindgen_externref_table_grow", "__wbindgen_externref_xform__.__wbindgen_externref_table_set_null", "__wbindgen_placeholder__.__wbindgen_describe", ... 16 more}. Available imports: ["env.abort", "env.db_read", "env.db_write", "env.db_remove", "env.addr_validate", "env.addr_canonicalize", "env.addr_humanize", "env.bls12_381_aggregate_g1", "env.bls12_381_aggregate_g2", "env.bls12_381_pairing_equality", "env.bls12_381_hash_to_g1", "env.bls12_381_hash_to_g2", "env.secp256k1_verify", "env.secp256k1_recover_pubkey", "env.secp256r1_verify", "env.secp256r1_recover_pubkey", "env.ed25519_verify", "env.ed25519_batch_verify", "env.debug", "env.query_chain", "env.db_scan", "env.db_next", "env.db_next_key", "env.db_next_value"].

Seems that wasm-bindgen is used somewhere in the dependency tree here, which should not be included in CosmWasm compilation, only in WASM compilation for Javascript environments.

Maybe we can use wasm-snip to remove these bindings, but I am not sure if that is a good idea or if they are actually used somewhere in the Clarity crate.

@Jiloc
Copy link
Contributor Author

Jiloc commented Jul 9, 2025

Hello, coming back to another issue from CosmWasm. Even though the contracts compile, when trying to deploy to the chain, the following error happens:

Error: rpc error: code = Unknown desc = rpc error: code = Unknown desc = failed to execute message; message index: 0: Error calling the VM: Error during static Wasm validation: Wasm contract requires unsupported import: "__wbindgen_placeholder__.__wbindgen_object_drop_ref". Required imports: {"__wbindgen_externref_xform__.__wbindgen_externref_table_grow", "__wbindgen_externref_xform__.__wbindgen_externref_table_set_null", ... 20 more}. Available imports: ["env.abort", "env.db_read", "env.db_write", "env.db_remove", "env.addr_validate", "env.addr_canonicalize", "env.addr_humanize", "env.secp256k1_verify", "env.secp256k1_recover_pubkey", "env.ed25519_verify", "env.ed25519_batch_verify", "env.debug", "env.query_chain", "env.db_scan", "env.db_next", "env.db_next_key", "env.db_next_value"].: create wasm contract failed [CosmWasm/wasmd@v0.34.1/x/wasm/keeper/keeper.go:169] With gas wanted: '0' and gas used: '11352913' : unknown request

If I use cosmwasm-check tool, I get a similar error:

Error during static Wasm validation: Wasm contract requires unsupported import: "__wbindgen_placeholder__.__wbindgen_describe". Required imports: {"__wbindgen_externref_xform__.__wbindgen_externref_table_grow", "__wbindgen_externref_xform__.__wbindgen_externref_table_set_null", "__wbindgen_placeholder__.__wbindgen_describe", ... 16 more}. Available imports: ["env.abort", "env.db_read", "env.db_write", "env.db_remove", "env.addr_validate", "env.addr_canonicalize", "env.addr_humanize", "env.bls12_381_aggregate_g1", "env.bls12_381_aggregate_g2", "env.bls12_381_pairing_equality", "env.bls12_381_hash_to_g1", "env.bls12_381_hash_to_g2", "env.secp256k1_verify", "env.secp256k1_recover_pubkey", "env.secp256r1_verify", "env.secp256r1_recover_pubkey", "env.ed25519_verify", "env.ed25519_batch_verify", "env.debug", "env.query_chain", "env.db_scan", "env.db_next", "env.db_next_key", "env.db_next_value"].

Seems that wasm-bindgen is used somewhere in the dependency tree here, which should not be included in CosmWasm compilation, only in WASM compilation for Javascript environments.

Maybe we can use wasm-snip to remove these bindings, but I am not sure if that is a good idea or if they are actually used somewhere in the Clarity crate.

@raress96 Thanks for reporting the issue! Hopefully it's now fixed. The issue was caused by stacks-common depending on chrono for the the logging feature. It was implicitly pulling in wasm-bindgen when targeting wasm32-unknown-unknown.

I've cleaned up the dependency tree by removing unnecessary features from chrono (and many other packages) and it looks we are now clean from wasm-bindgen!

here is the current dependency tree when building the clarity crate for wasm.

fcargo tree -p clarity --no-default-features --features=wasm-deterministic --target wasm32-unknown-unknown 
clarity v0.0.1 (/home/franc/stacks-core/clarity)
├── hashbrown v0.15.2
│   ├── allocator-api2 v0.2.16
│   ├── equivalent v1.0.1
│   ├── foldhash v0.1.4
│   └── serde v1.0.196
│       └── serde_derive v1.0.196 (proc-macro)
│           ├── proc-macro2 v1.0.78
│           │   └── unicode-ident v1.0.12
│           ├── quote v1.0.35
│           │   └── proc-macro2 v1.0.78 (*)
│           └── syn v2.0.58
│               ├── proc-macro2 v1.0.78 (*)
│               ├── quote v1.0.35 (*)
│               └── unicode-ident v1.0.12
├── lazy_static v1.4.0
├── regex v1.10.3
│   ├── regex-automata v0.4.5
│   │   └── regex-syntax v0.8.2
│   └── regex-syntax v0.8.2
├── serde v1.0.196 (*)
├── serde_derive v1.0.196 (proc-macro) (*)
├── serde_json v1.0.113
│   ├── itoa v1.0.10
│   ├── ryu v1.0.16
│   └── serde v1.0.196 (*)
├── slog v2.7.0
└── stacks-common v0.0.1 (/home/franc/stacks-core/stacks-common)
    ├── chrono v0.4.41
    │   └── num-traits v0.2.18
    │       [build-dependencies]
    │       └── autocfg v1.1.0
    ├── curve25519-dalek v4.1.3
    │   ├── cfg-if v1.0.0
    │   ├── digest v0.10.7
    │   │   ├── block-buffer v0.10.4
    │   │   │   └── generic-array v0.14.7
    │   │   │       └── typenum v1.17.0
    │   │   │       [build-dependencies]
    │   │   │       └── version_check v0.9.4
    │   │   └── crypto-common v0.1.6
    │   │       ├── generic-array v0.14.7 (*)
    │   │       └── typenum v1.17.0
    │   ├── serde v1.0.196 (*)
    │   └── subtle v2.5.0
    │   [build-dependencies]
    │   └── rustc_version v0.4.0
    │       └── semver v1.0.21
    ├── ed25519-dalek v2.1.1
    │   ├── curve25519-dalek v4.1.3 (*)
    │   ├── ed25519 v2.2.3
    │   │   └── signature v2.2.0
    │   ├── sha2 v0.10.8
    │   │   ├── cfg-if v1.0.0
    │   │   └── digest v0.10.7 (*)
    │   └── subtle v2.5.0
    ├── getrandom v0.2.12
    │   └── cfg-if v1.0.0
    ├── hashbrown v0.15.2 (*)
    ├── lazy_static v1.4.0
    ├── libsecp256k1 v0.7.1
    │   ├── arrayref v0.3.9
    │   ├── base64 v0.13.1
    │   ├── digest v0.9.0
    │   │   └── generic-array v0.14.7 (*)
    │   ├── hmac-drbg v0.3.0
    │   │   ├── digest v0.9.0 (*)
    │   │   ├── generic-array v0.14.7 (*)
    │   │   └── hmac v0.8.1
    │   │       ├── crypto-mac v0.8.0
    │   │       │   ├── generic-array v0.14.7 (*)
    │   │       │   └── subtle v2.5.0
    │   │       └── digest v0.9.0 (*)
    │   ├── libsecp256k1-core v0.3.0
    │   │   ├── crunchy v0.2.3
    │   │   ├── digest v0.9.0 (*)
    │   │   └── subtle v2.5.0
    │   ├── rand v0.8.5
    │   │   └── rand_core v0.6.4
    │   ├── serde v1.0.196 (*)
    │   ├── sha2 v0.9.9
    │   │   ├── block-buffer v0.9.0
    │   │   │   └── generic-array v0.14.7 (*)
    │   │   ├── cfg-if v1.0.0
    │   │   ├── digest v0.9.0 (*)
    │   │   └── opaque-debug v0.3.0
    │   └── typenum v1.17.0
    │   [build-dependencies]
    │   ├── libsecp256k1-gen-ecmult v0.3.0
    │   │   └── libsecp256k1-core v0.3.0
    │   │       ├── crunchy v0.2.3
    │   │       ├── digest v0.9.0
    │   │       │   └── generic-array v0.14.7
    │   │       │       └── typenum v1.17.0
    │   │       │       [build-dependencies]
    │   │       │       └── version_check v0.9.4
    │   │       └── subtle v2.5.0
    │   └── libsecp256k1-gen-genmult v0.3.0
    │       └── libsecp256k1-core v0.3.0 (*)
    ├── ripemd v0.1.3
    │   └── digest v0.10.7 (*)
    ├── serde v1.0.196 (*)
    ├── serde_derive v1.0.196 (proc-macro) (*)
    ├── serde_json v1.0.113 (*)
    ├── sha2 v0.10.8 (*)
    ├── sha3 v0.10.8
    │   ├── digest v0.10.7 (*)
    │   └── keccak v0.1.5
    ├── slog v2.7.0
    └── slog-term v2.9.0
        ├── atty v0.2.14
        ├── slog v2.7.0
        ├── term v0.7.0
        │   └── dirs-next v2.0.0
        │       ├── cfg-if v1.0.0
        │       └── dirs-sys-next v0.1.2
        ├── thread_local v1.1.7
        │   ├── cfg-if v1.0.0
        │   └── once_cell v1.19.0
        └── time v0.3.36
            ├── deranged v0.3.11
            │   └── powerfmt v0.2.0
            ├── itoa v1.0.10
            ├── num-conv v0.1.0
            ├── powerfmt v0.2.0
            ├── time-core v0.1.2
            └── time-macros v0.2.18 (proc-macro)
                ├── num-conv v0.1.0
                └── time-core v0.1.2
    [build-dependencies]
    └── toml v0.5.11
        └── serde v1.0.196
[dev-dependencies]
├── assert-json-diff v1.1.0
│   ├── extend v0.1.2 (proc-macro)
│   │   ├── proc-macro-error v1.0.4
│   │   │   ├── proc-macro-error-attr v1.0.4 (proc-macro)
│   │   │   │   ├── proc-macro2 v1.0.78 (*)
│   │   │   │   └── quote v1.0.35 (*)
│   │   │   │   [build-dependencies]
│   │   │   │   └── version_check v0.9.4
│   │   │   ├── proc-macro2 v1.0.78 (*)
│   │   │   ├── quote v1.0.35 (*)
│   │   │   └── syn v1.0.109
│   │   │       ├── proc-macro2 v1.0.78 (*)
│   │   │       ├── quote v1.0.35 (*)
│   │   │       └── unicode-ident v1.0.12
│   │   │   [build-dependencies]
│   │   │   └── version_check v0.9.4
│   │   ├── proc-macro2 v1.0.78 (*)
│   │   ├── quote v1.0.35 (*)
│   │   └── syn v1.0.109 (*)
│   ├── serde v1.0.196 (*)
│   └── serde_json v1.0.113 (*)
└── mutants v0.0.3 (proc-macro)

Could you please test the latest updates (no flag changes needed this time)? Please keep me updated in case you find any other issue!

@raress96
Copy link

Thanks @Jiloc , I can confirm that everything is now working, deployed & tested the CosmWasm contracts we use successfully with the latest fixes.

@aldur aldur requested a review from fdefelici July 10, 2025 14:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Status: In Review
Development

Successfully merging this pull request may close these issues.

3 participants