NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4332 most downloaded on crates.io
Encode and decode values of arbitrary shapes to SCALE bytes
Last release 7 months ago
17 Feb 2026
Release timing varies
gaps range from 8 days to 11 months
Most releases are documented
notes for 25 of 28 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
28 releases · first in 2022
One column per quarter.
Nothing published for this version
Nothing published for this version
This release makes scale-value entirely no_std which is now using core::Error instead of std::Error as it was using before behind the std feature. Bec
This release makes scale-value entirely no_std which is now using core::error::Error instead of std::error::Error as it was using before behind
the std feature. Because of that the std feature is now removed and the MSRV is bumped to 1.81.0. In addition it bumps a few dependencies to their latest versions.
scale-decode to v0.16.0scale-encode to v0.10.0yap to v0.12.0scale-bits to v0.7.0scale-info dependency and the re-export PortableRegistryderive_more with thiserrorFull Changelog: v0.17.0...v0.18.0
Bumps derive_more from 0.99 to 1.0
This release:
derive_more from 0.99 to 1.0 (#57)scale-decode from 0.13 to 0.14 (#58)scale-encode from 0.7 to 0.8 (#59)frame-metadata dependency (#60)Full Changelog: v0.16.2...v0.17.0
This release exports scale_value::ValueVisitor , allowing the values to be created from functions like scale_decode::decode_with_visitor.
This release exports scale_value::scale::ValueVisitor<TypeResolver>, allowing the values to be created from functions like scale_decode::visitor::decode_with_visitor.
This release adds scale_value::to_writer and scale_value::to_writer_custom (to align with the already present scale_value::from_str_custom ), and also
This release adds scale_value::stringify::to_writer and scale_value::stringify::to_writer_custom (to align with the already present scale_value::stringify::from_str_custom), and also exposes a new scale_value::stringiy::custom_formatters containing a formatter for displaying things as hex.
scale_value::stringify::to_writer_custom allows for custom formatting of values, including a "pretty" spaced/indented formatting and a "compact" formatting which removes all unnecessary spaces. It also allows customising of the indentation and for custom formatters to be applied, as well as displaying the contexts of values if desired.
See #52 for more information.
Adds a "tracing decoder" (via scale_value::tracing::{decode_as_type,*} ), which is like scale_value::decode_as_type , but traces and hands back much m
This release:
scale_value::scale::tracing::{decode_as_type,*}), which is like scale_value::scale::decode_as_type, but traces and hands back much more detail in case of a decoding failure, so that it's easier to track down where decoding failed. This is particularly useful when working with historic type information, which must be provided independently and could easily be misaligned with reality. (#52)Bumps scale-decode to its latest version (0.13.0).
This release:
scale-decode to its latest version (0.13.0).Fix an infinite loop when trying to encode Composite values of the wrong shape ((#48)[https://github.com/paritytech/scale-value/pull/48])
This release bumps scale-type-resolver , scale-encode , scale-decode and scale-bits to their latest versions.
This release bumps scale-type-resolver, scale-encode, scale-decode and scale-bits to their latest versions.
A scale_value::decode_as_fields function was added that can decode a series of values from some bytes given an iterator of type ids. Previously it was
A scale_value::decode_as_fields function was added that can decode a series of values from some bytes given an iterator of type ids. Previously it was only possible through the scale_decode::DecodeAsFields implementation of scale_value::Composite<()>. With the new function scale_value::Composite<R::TypeId>'s can be decoded for any type resolver R.
The crate now uses scale-type-resolver to be generic over the provider of type information that is used when encoding and decoding Value s.
The crate now uses scale-type-resolver to be generic over the provider of type information that is used when encoding and decoding Values.
One implication is that scale_decode::IntoVisitor is now only implemented for Value<()> and no longer for Value<u32>. So Value::decode_from_type() cannot be used anymore to create a Value<u32> that keeps type id information. Instead you now use scale_value::scale::decode_as_type() which can return the desired Value<u32>.
Bumps scale-decode to its latest version.
This release:
scale-decode to its latest version.Bumps scale-encode and scale-decode to their latest versions (0.5 and 0.9 respectively).
Bumps scale-encode and scale-decode to their latest versions (0.5 and 0.9 respectively).
One effect that this has is that structs containing compact encoded values, after being encoded, now decode to composite types that better
reflect their original shape. For example, Compact(MyWrapper { inner: 123 }), when encoded, used to decode to Value::u128(123),
but now it decodes to Value::named_composite(vec![("inner", Value::u128(123))]).
Adds support for no_std environments; disable the "std" feature flag for this. (#38) This PR makes a couple of small breaking changes:
no_std environments; disable the "std" feature flag for this. (#38)
This PR makes a couple of small breaking changes:
from_string feature flag is now from-string.ErrorKind's in from_string no logner impl std::error::Error.ParseErrorKind::Custom errors are now strings rather than boxed std::error::Errors to play nicer with no_std.value! macro to make constructing Value's much easier; think serde_json::value!. (#36)scale-encode and scale-decode to their latest versions (0.4 and 0.8 respectively).bumps scale-encode and scale-decode to their latest versions.
This release:
scale-encode and scale-decode to their latest versions.bumps scale-encode and scale-decode to their latest versions.
This release:
scale-encode and scale-decode to their latest versions.Changes how composite Value's are encoded to improve the likelihood that values will encode correctly.
This patch release:
Value's are encoded to improve the likelihood that values will encode correctly. (#32)Bumps to using scale-info 2.5.0 and uses field rather than method accessors as introduced by that change.
This release:
scale-info 2.5.0 and uses field rather than method accessors as introduced by that change.scale_value::stringify::from_str_custom(), which allows you to construct a Value parser that can inject custom parsing logic while parsing strings into Values.stringify::custom_parsers module for parsing hex values and ss58 addresses. These can be used in conjunction with the above.There should be no breaking API changes.
The main change in this release is that it makes use of a new scale-encode crate and updated scale-decode crate for the SCALE encoding and decoding of
The main change in this release is that it makes use of a new scale-encode crate and updated scale-decode crate for the SCALE encoding and decoding of Values.
DecodeAsType and EncodeAsType.DecodeAsFields.TypeId passed to the encode and decode methods is now a plain u32 for simplicity, rather than a newtype struct.It should be very straightforward to update to this release as the changes are mainly additive in nature.
scale-decode and new scale-encode crate for SCALE encoding and decoding Values. (#25)Here we move to scale_bits from bitvec to handle our encode/decode logic and provide a simple type to decode bits into. We also now add a WASM CI test
Here we move to scale_bits from bitvec to handle our encode/decode logic and provide a simple type to decode bits into. We also now add a WASM CI test, and will expect this crate (potentially via features in the future) to be WASM compatible.
scale-bits for BitSequence decoding etc and enable WASM test. (#24)The main user-facing change in this release is that the SCALE bytes for compact-encoded _structs_ previously decoded into Composite values with the sa
The main user-facing change in this release is that the SCALE bytes for compact-encoded structs previously decoded into Composite values with the same degree of nesting (ie if the compact encoded value was nested within 2 structs, it would be decoded into a value nested inside 2 Composites). This nesting has now been removed, and the compact value is returned directly. This should have no impact on re-encoding the Value, since encoding into single-field composites will just delegrate to the inner field type as needed.
Internally, the SCALE decoding logic has mostly moved to scale-decode, simplifying the logic in this crate (and exposing a more general/lower level decoding interface via that crate).
Full list of changes:
scale-decode for Value decoding. (#22)…into Values. There are also various small breaking changes as a result of tidying up various constructors, which will hopefully in general allow you t…
The main addition in this release is the At trait (and corresponding .at() method) for indexing into Values. There are also various small breaking changes as a result of tidying up various constructors, which will hopefully in general allow you to construct Values with a little less verbosity. The uint/int constructors have been made more consistent with their siblings and have been renamed to u128 and i128.
Full list of changes:
This release introduces a small breaking change: scale_value::encode_value_as_type now takes a reference to a value rather than ownership of it, since…
This release introduces a small breaking change: scale_value::scale::encode_value_as_type now takes a reference to a value rather than ownership of it, since on the happy path this shouldnt affect performance, and it would often mean cloning the entire value before passing it in, anyway.
Full list of changes:
Fix compile error on 32-bit architectures owing to BitVec not supporting a store type of u64 on them. Also fix an internal naming mixup w.r.t bitvec t
Added a string syntax for values, and the ability to parse Value's from strings or encode them into strings (see the new stringify module exposed at t
Value's from strings or encode them into strings (see the new stringify module exposed at the crate root). Parsing from strings requires the from_string feature to be enabled. (#7)Added a Value type that can be SCALE encoded and decoded using a scale_info::PortableRegistry, as well as serialized and deserialized to things via se
The initial release.
Value type that can be SCALE encoded and decoded using a scale_info::PortableRegistry, as well as serialized and deserialized to things via serde. (#1)Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →