NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4932 most downloaded on crates.io
Standard library for Wasm based smart contracts on Cosmos blockchains
Last release today
07 Oct 2026
Release timing varies
gaps range from 8 days to 4 months
Most releases are documented
notes for 49 of the last 60 stable releases
6 versions withdrawn
withdrawn after publishing
6 years old
200 releases · first in 2020
One column per quarter.
cosmwasm-std: Add message_info and deprecate mock_info ([#2160])
cosmwasm-std: Deprecate "compact" serialization of Binary, HexBinary, Checksum ([#2128])
Binary, HexBinary,
Checksum (#2128)cosmwasm-std: Implement &T + T and &T op &T for Uint64, Uint128, Uint256 and Uint512; improve panic message for Uint64::add and Uint512::add ([#2092])
&T + T and &T op &T for Uint64, Uint128,
Uint256 and Uint512; improve panic message for Uint64::add and
Uint512::add (#2092)Uint{64,128,256,512}::strict_add and ::strict_sub which
are like the Add/Sub implementations but const. (#2098, #2107)cosmwasm-std: Correctly deallocate vectors that were turned into a Region via release_buffer ([#2062])
cosmwasm-std: Add SubMsgResponse::msg_responses and deprecate SubMsgResponse::data. Add new type MsgResponse. ([#1903])
SubMsg:reply_never constructor (#1929)IbcMsg::Transfer. (#1878)Reply::gas_used. (#1954)SubMsgResponse::msg_responses and deprecate
SubMsgResponse::data. Add new type MsgResponse. (#1903)cosmwasm_2_0 feature to enable 2.0 specific functionality.
(#1974)payload to SubMsg and Reply. This is binary
data the contract can set in a contract specific format and get back then the
reply entry point is called. SubMsg::with_payload allows setting the
payload on an existing SubMsg. (#2008)ContractInfoResponse::new with new (unstable)
constructor, remove SubMsgExecutionResponse (Use SubMsgResponse instead)
and remove PartialEq<&str> for Addr (validate the address and use
PartialEq<Addr> for Addr instead). (#1879)Uint{64,128}::full_mul now take Into<Self> as an argument.
(#1874)CacheOptions non-exhaustive and add a constructor.
(#1898)Coin::new now takes Into<Uint128> instead of u128 as the
first argument and DecCoin::new takes Into<Decimal256> instead of
Decimal256. (#1902)CanonicalAddr and Binary private and
add constructor for Binary. (#1876)Size private and add constructor. (#1876)serde-json-wasm 1.0. This means u128 and i128
are now serialized as numbers instead of strings. Use Uint128 and Int128
instead. (#1939)ack parameter to IbcReceiveResponse::new and remove
IbcReceiveResponse::set_ack (#1940)BalanceResponse, AllBalanceResponse,
DelegationRewardsResponse, DelegatorReward, DelegatorValidatorsResponse,
PortIdResponse, ListChannelsResponse, ChannelResponse,
BondedDenomResponse, AllDelegationsResponse, Delegation,
DelegationResponse, FullDelegation, AllValidatorsResponse,
ValidatorResponse and Validator non-exhaustive. Add Validator::create
and FullDelegation::create to allow creating them in a stable way. Use
Addr type for ContractInfoResponse::{creator, admin}. (#1883)DistributionQuerier::new to take IntoIterator instead
of HashMap. (#1941)instantiate entrypoint optional. (#1933)CosmosMsg::Stargate to CosmosMsg::Any and use a
nested msg struct like in other messages. (#1926)AnalysisReport::entrypoints and make
AnalysisReport::required_capabilities a BTreeSet. (#1949)Checksum type and change type of
CodeInfoResponse::checksum to that. (#1944)backtraces feature, use the RUST_BACKTRACE=1 env
variable instead. Error variants that previously only contained a backtrace
field with the feature enabled now always contain it. (#1967)backtraces feature, use the RUST_BACKTRACE=1 env
variable instead. All VmError variants now have a backtrace field.
(#1967)MockApi with bech32 implementation. (#1914)MockApi with bech32 implementation. (#1914)IbcReceiveResponse::acknowledgement optional and add
IbcReceiveResponse::without_ack constructor. (#1892)std feature and make it a default feature. (#1971)QueryRequest::Grpc and deprecate QueryRequest::Stargate.
(#1973)update_balance, set_denom_metadata,
set_withdraw_address, set_withdraw_addresses, clear_withdraw_addresses,
update_ibc and update_staking from MockQuerier and expose the underlying
queriers directly. (#1977)BackendApi::canonical_address/::human_address to
::addr_canonicalize/::addr_humanize for consistency.BackendApi::addr_validate to avoid having to do two calls
from Rust into Go.MODULE_SERIALIZATION_VERSION to
"v9". (#1992, #2042)GovMsg::vote to GovMsg::option (#1999)Region from Wasm memory as bytes and convert to Region
afterwards (#2005)check_wasm_functions and increase max function count and max parameter
count. (#1991)Mul<Decimal> for Uint128 and
Mul<Decimal256> for Uint256. Use Uint{128,256}::mul_floor instead.
(#1890)OverflowError,
ConversionOverflowError and DivideByZeroError. (#1896)IbcReceiveResponse's Default implementation. Use
IbcReceiveResponse::new instead. (#1942)InstanceOptions::print_debug flag. Set your own handler
using Instance::set_debug_handler. (#1953)allow_interface_version_7 feature and all related
functionality. (#1952)Checksum. Use cosmwasm_std::Checksum instead.
(#1944)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
cosmwasm-vm: Add Cache::store_code
Cache::store_codecosmwasm-vm: Fix CWA-2024-007 and CWA-2024-008.
cosmwasm-vm: Problem with caching related to CWA-2024-004. Please upgrade directly to this version instead of the previous one.
cosmwasm-std: Backport PR that changed the version pinned dependency k256 = { version = "=0.13.1", features = ["ecdsa"] } to the open version range ^0
cosmwasm-std: Deprecate "compact" serialization of Binary, HexBinary ([#2126])
Binary, HexBinary
(#2126)cosmwasm-std: Implement &T + T and &T op &T for Uint64, Uint128, Uint256 and Uint512; improve panic message for Uint64::add and Uint512::add ([#2092])
&T + T and &T op &T for Uint64, Uint128,
Uint256 and Uint512; improve panic message for Uint64::add and
Uint512::add (#2092)Uint{64,128,256,512}::strict_add and ::strict_sub which
are like the Add/Sub implementations but const. (#2098, #2107)Timestamp::plus_nanos/::minus_nanos use
Uint64::strict_add/::strict_sub and document overflows. (#2098, #2107)Region
via release_buffer (#2062)cosmwasm-vm: Read Region from Wasm memory as bytes and convert to Region afterwards ([#2005])
Region from Wasm memory as bytes and convert to Region
afterwards (#2005)cosmwasm-vm: Fix memory increase issue (1.3 -> 1.4 regression) by avoiding the use of a long running Wasmer Engine. ([#1978])
cosmwasm-vm: Add constructor CacheOptions::new
CacheOptions::newcosmwasm-std: Add to_json_{vec,binary,string} and from_json and deprecate to_{vec,binary} in favor of to_json_{vec,binary} and from_{slice,binary} in…
addr_make and with_prefix for
cosmwasm_std::testing::MockApi (#1905).abs and unsigned_abs for Int{64,128,256,512}
(#1854).From<Int{64,128,256}> for Int512,
TryFrom<Int{128,256,512}> for Int64, TryFrom<Int{256,512}> for Int128,
TryFrom<Int512> for Int256 and Int256::from_i128 for const contexts
(#1861).Int{64,128,256}::{checked_multiply_ratio, full_mul}
(#1866)is_negative for Int{64,128,256,512} (#1867).TryFrom<Uint{256,512}> for Uint64 and
TryFrom<Uint{A}> for Int{B} where A >= B (#1870).to_json_{vec,binary,string} and from_json and deprecate
to_{vec,binary} in favor of to_json_{vec,binary} and from_{slice,binary}
in favor of from_json. (#1886)SignedDecimal and SignedDecimal256 (#1807)..module extension to file names in the file system cache
(#1913).Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
cosmwasm-std: Implement Not for Uint{64,128,256} ([#1799]).
Not for Uint{64,128,256} (#1799).Coins (#1806).abs_diff const for Uint{256,512} and
Int{64,128,256,512}. It is now const for all integer types.TryFrom<Decimal256> for Decimal (#1832)StdAck. (#1512)db_next_{key, value} for iterating storage
keys / values only and make Storage::{range_keys, range_values} more
efficient. This requires the cosmwasm_1_4 feature to be enabled. (#1834)DistributionQuery::{DelegationRewards, DelegationTotalRewards, DelegatorValidators}.
This requires the cosmwasm_1_4 feature to be enabled. (#1788)cosmwasm_std::storage_keys with
namespace_with_key, to_length_prefixed and to_length_prefixed_nested to
make it easier to use the strandard storage key layout documented in
STORAGE_KEYS.md
in other libraries such as cw-storage-plus or indexers. (#1676)Module size in the file
system cache to prepare for the Wasmer 3 upgrade.print_debug the debug logs are now printed to
STDERR instead of STDOUT by default (#1667).Instance::set_debug_handler/unset_debug_handler to allow
customizing the handling of debug messages emitted by the contract (#1667).wasmparser for initial validation instead of parity-wasm
(#1786)Decimal{,256}::{percent,permille,bps} constdb_next_key import to make skip and nth
implementation of range iterators more efficient. This requires the
cosmwasm_1_4 feature to be enabled. (#1838)Nothing published for this version
Nothing published for this version
Nothing published for this version
cosmwasm-std: Implement into_empty for QuerierWrapper, Deps and DepsMut.
into_empty for QuerierWrapper, Deps and
DepsMut.cosmwasm-std: Export CoinFromStrError, CoinsError and DivisionError
CoinFromStrError, CoinsError and DivisionErrorcosmwasm-std: Export DelegatorWithdrawAddressResponse, DenomMetadataResponse and AllDenomMetadataResponse which were added in 1.3.0 ([#1795]).
cosmwasm-storage: All exports are deprecated because this crate will be removed with CosmWasm 2.0 ([#1596]).
pin.BankQuery::AllDenomMetadata to allow querying all
the denom metadata and BankQuery::DenomMetadata to query a specific one. In
order to use this query in a contract, the cosmwasm_1_3 feature needs to be
enabled for the cosmwasm_std dependency. This makes the contract
incompatible with chains running anything lower than CosmWasm 1.3.0.
(#1647)DistributionQuery::DelegatorWithdrawAddress. Also needs
the cosmwasm_1_3 feature (see above). (#1593)DistributionMsg::FundCommunityPool. Also needs the
cosmwasm_1_3 feature (see above). (#1747)FromStr impl for Coin. (#1684)Coins helper to handle multiple coins. (#1687)Cache::save_wasm_unchecked to save Wasm blobs that have
been checked before. This is useful for state-sync where we know the Wasm code
was checked when it was first uploaded. (#1635)Storage::range_keys and
Storage::range_values. The default implementations just use
Storage::range. Later this can be implemented more efficiently. (#1748)Int64, Int128, Int256 and Int512 signed integer
types. (#1718)MODULE_SERIALIZATION_VERSION to "v6". (#1664).wasm extension to stored wasm files (#1686).Nothing published for this version
Nothing published for this version
cosmwasm-std: Add << and <<= implementation for Uint{64,128,256,512} types. ([#1723])
<< and <<= implementation for Uint{64,128,256,512}
types. (#1723)Timestamp::{plus,minus}_{minutes, hours, days}. (#1729)Decimal::bps and Decimal256::bps to create a decimal
from a basis point value (#1715).Coin { 123 "ucosm" } format for Debug
(#1704)cosmwasm-vm: Bumped module serialization version from v4 to v5 to invalidate potentially corrupted caches caused by Rust update. See https://github.co
cosmwasm-std: The PartialEq implementations between Addr and &str/String are deprecated because they are not considered to be safe. In almost all case…
PartialEq for Addr == &Addr and &Addr == Addr as
well as Event == &Event and &Event == Event (#1672).#[must_use] annotations to Uint64, Uint128, Uint256,
Uint512, Decimal and Decimal256 math operations (#1678)Addr and &str/String
are deprecated because they are not considered to be safe. In almost all cases
you want to convert both sides of the equation to Addr first. If you really
want to do a string comparison, use Addr::as_str() explicitly. (#1671)cosmwasm-vm: Add call depths limit
cosmwasm-vm: Use saturating increments for Stats fields to ensure we don't run into overflow issues.
Stats fields to ensure we don't
run into overflow issues.cosmwasm-std: Add an IBC querier implementation to testing::MockQuerier ([#1620], [#1624]).
cosmwasm-std: Add Decimal{,256}::to_uint_floor and ::to_uint_ceil for efficient and explicit decimal to uint conversion ([#1603]).
Decimal{,256}::to_uint_floor and ::to_uint_ceil for
efficient and explicit decimal to uint conversion (#1603).WeightedVoteOption public to allow constructing
it (#1597).Debug output for Decimal and
Decimal256 (#1600).cosmwasm-std: Add GovMsg::VoteWeighted. In order to use this in a contract, the cosmwasm_1_2 feature needs to be enabled for the cosmwasm_std dependen
GovMsg::VoteWeighted. In order to use this in a contract,
the cosmwasm_1_2 feature needs to be enabled for the cosmwasm_std
dependency. This makes the contract incompatible with chains running versions
of CosmWasm earlier than 1.2.0 (#1481).instantiate2_address which allows calculating the
predictable addresses for MsgInstantiateContract2 (#1437, #1554).WasmMsg::Instantiate2 (requires cosmwasm_1_2, see
GovMsg::VoteWeighted above) to instantiate contracts at a predictable
address (#1436, #1554)).cosmwasm schema will now output a separate
JSON Schema file for each entrypoint in the raw subdirectory (#1478,
#1533).serde-json-wasm dependency to 0.5.0 which adds map
support to to_vec/to_binary and friends.AsRef<[u8]> for Binary and HexBinary (#1550).SupplyResponse via a Default
implementation (#1552, #1560).Never type which cannot be instantiated. This can be used
as the error type for ibc_packet_receive or ibc_packet_ack to gain
confidence that the implementations never errors and the transaction does not
get reverted. (#1513)WasmQuery::CodeInfo to get the checksum of a code ID
(#1561).Cache::remove_wasm to remove obsolete Wasm blobs and their
compiled modules.Display representation for embedding Wasmer
InstantiationErrors (#1508).MockApi to support addresses longer than 54 bytes (#1529).Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
cosmwasm-schema: Fix type fully qualified path to symbol QueryResponses in macro cosmwasm_schema::generate_api! ([#1527]).
QueryResponses in
macro cosmwasm_schema::generate_api! (#1527).cosmwasm-schema: Fix type params on QueryMsg causing a compiler error when used with the QueryResponses derive macro.
QueryMsg causing a compiler error when
used with the QueryResponses derive macro.Nothing published for this version
cosmwasm-std: Add From implementations to convert between CanonicalAddr/Binary as well as CanonicalAddr/HexBinary ([#1463]).
From implementations to convert between
CanonicalAddr/Binary as well as CanonicalAddr/HexBinary (#1463).From implementations to convert u8 arrays to
CanonicalAddr (#1463).PartialEq between CanonicalAddr and
HexBinary/Binary (#1463).-Zminimal-versions (#1465).draft-07 schemasQueryResponses derive now sets the JsonSchema trait bound
on the generated impl block. This allows the contract dev to not add a
JsonSchema trait bound on the type itself.cosmwasm-std: Add wrapping_add, wrapping_sub, wrapping_mul and wrapping_pow to Uint256/Uint512.
wrapping_add, wrapping_sub, wrapping_mul and
wrapping_pow to Uint256/Uint512.wasm32secp256k1_verify, secp256k1_recover_pubkey,
ed25519_verify and ed25519_batch_verify import implementations we now exit
early if the gas left is not sufficient to perform the operation.non_exhaustive from IBC types IbcChannelOpenMsg,
IbcChannelConnectMsg and IbcChannelCloseMsg in order to allow exhaustive
matching over the possible scenarios without an unused fallback case
(#1449).cosmwasm-schema: Properly analyze schemas generated for untagged enums
untagged enumscosmwasm-schema: IntegrityError is now public
IntegrityError is now publiccosmwasm-std: Add testing macro assert_approx_eq! for comparing two integers to be relatively close to each other ([#1417]).
cosmwasm-schema: Using QueryResponses with a QueryMsg containing a unit-like variant will no longer crash. The different variant types in Rust are: `r
QueryResponses with a QueryMsg containing a
unit-like variant will no longer crash. The different variant types in Rust
are:enum QueryMsg {
UnitLike,
Tuple(),
Struct {},
}
It's still recommended to only use struct variants, even if there are no
fields.serde or schemars as
a dependency in order to make cosmwasm-schema macros work.cosmwasm-vm: The check_contract example was deprecated. Please use the new crate cosmwasm-check instead ([#1371]).
Binary and u8 arrays.Uint{64,128,256,512}::one.Uint{64,128,256,512}::abs_diff and
Decimal{,256}::abs_diff (#1334).From<Decimal> for Decimal256.Rem/RemAssign for Decimal/Decimal256.checked_add/_sub/_div/_rem for
Decimal/Decimal256.pow/saturating_pow for Decimal/Decimal256.ceil/floor for Decimal/Decimal256.PartialEq for reference on one side and owned value
on the other for all Uint and Decimal typessaturating_add/sub/mul for
Decimal/Decimal256.BankQuery::Supply to allow querying the total supply
of a native token. In order to use this query in a contract, the
cosmwasm_1_1 feature needs to be enabled for the cosmwasm_std dependency.
This makes the contract incompatible with chains running CosmWasm 1.0.
(#1356)MIN const value for all Uint and Decimal typeschecked_div_euclid for Uint256/Uint512QuerierWrapper::query_wasm_contract_info - this is just a
convenience helper for querying WasmQuery::ContractInfo.abort feature by default. This provides more
helpful panic messages via a custom panic handler.Decimal{,256}::DECIMAL_PLACES a public u32 value.k256 0.10.4 -> 0.11 and digest 0.9 -> 0.10
(#1374).features_from_csv to capabilities_from_csv;CacheOptions::supported_features to
CacheOptions::available_capabilities;MockInstanceOptions::supported_features to
MockInstanceOptions::available_capabilitiesInstance::required_features to Instance::required_capabilitiesAnalysisReport::required_features to
AnalysisReport::required_capabilities.check_contract example was deprecated. Please use the new
crate cosmwasm-check instead
(#1371).Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →