You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DecodeSliceError::OutputSliceTooSmall is now conservative rather than precise. That is, the error will only occur if the decoded output cannot fit, meaning that Engine::decode_slice can now be used with exactly-sized output slices. As part of this, Engine::internal_decode now returns DecodeSliceError instead of DecodeError, but that is not expected to affect any external callers.
DecodeError::InvalidLength now refers specifically to the number of valid symbols being invalid (i.e. len % 4 == 1), rather than just the number of input bytes. This avoids confusing scenarios when based on interpretation you could make a case for either InvalidLength or InvalidByte being appropriate.
engine::general_purpose::STANDARD.encode() or prelude::BASE64_STANDARD.encode()
encode_config()
engine.encode()
encode_config_buf()
engine.encode_string()
encode_config_slice()
engine.encode_slice()
decode()
engine::general_purpose::STANDARD.decode() or prelude::BASE64_STANDARD.decode()
decode_config()
engine.decode()
decode_config_buf()
engine.decode_vec()
decode_config_slice()
engine.decode_slice()
The short-lived 0.20 functions were the 0.13 functions with config replaced with engine.
Padding
If applicable, use the preset engines engine::STANDARD, engine::STANDARD_NO_PAD, engine::URL_SAFE,
or engine::URL_SAFE_NO_PAD.
The NO_PAD ones require that padding is absent when decoding, and the others require that
canonical padding is present .
If you need the < 0.20 behavior that did not care about padding, or want to recreate < 0.20.0's predefined Configs
precisely, see the following table.
Decoding can now either ignore padding, require correct padding, or require no padding. The default is to require
correct padding.
The NO_PAD config now requires that padding be absent when decoding.
0.20.0-alpha.1
Breaking changes
Extended the Config concept into the Engine abstraction, allowing the user to pick different encoding / decoding
implementations.
What was formerly the only algorithm is now the FastPortable engine, so named because it's portable (works on
any CPU) and relatively fast.
This opens the door to a portable constant-time
implementation (#153,
presumably ConstantTimePortable?) for security-sensitive applications that need side-channel resistance, and
CPU-specific SIMD implementations for more speed.
Standard base64 per the RFC is available via DEFAULT_ENGINE. To use different alphabets or other settings (
padding, etc), create your own engine instance.
CharacterSet is now Alphabet (per the RFC), and allows creating custom alphabets. The corresponding tables that
were previously code-generated are now built dynamically.
Since there are already multiple breaking changes, various functions are renamed to be more consistent and
discoverable.
MSRV is now 1.47.0 to allow various things to use const fn.
DecoderReader now owns its inner reader, and can expose it via into_inner(). For symmetry, EncoderWriter can do
the same with its writer.
encoded_len is now public so you can size encode buffers precisely.
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
If you want to rebase/retry this PR, check this box
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path examples/substreams-powered-subgraph/Cargo.toml --package base64@0.13.1 --precise 0.22.1
Updating crates.io index
error: failed to select a version for the requirement `base64 = "^0.13"`
candidate versions found which didn't match: 0.22.1
location searched: crates.io index
required by package `substreams-entity-change v1.3.0`
... which satisfies dependency `substreams-entity-change = "^1.3"` (locked to 1.3.0) of package `substreams-ethereum-quickstart v1.0.0 (/tmp/renovate/repos/github/graphprotocol/graph-tooling/examples/substreams-powered-subgraph)`
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dependenciesPull requests that update a dependency file
0 participants
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.13->0.22Release Notes
marshallpierce/rust-base64 (base64)
v0.22.1Compare Source
alphabet::BIN_HEX.v0.22.0Compare Source
DecodeSliceError::OutputSliceTooSmallis now conservative rather than precise. That is, the error will only occur if the decoded output cannot fit, meaning thatEngine::decode_slicecan now be used with exactly-sized output slices. As part of this,Engine::internal_decodenow returnsDecodeSliceErrorinstead ofDecodeError, but that is not expected to affect any external callers.DecodeError::InvalidLengthnow refers specifically to the number of valid symbols being invalid (i.e.len % 4 == 1), rather than just the number of input bytes. This avoids confusing scenarios when based on interpretation you could make a case for eitherInvalidLengthorInvalidBytebeing appropriate.v0.21.7Compare Source
Alphabet::as_str()v0.21.6Compare Source
v0.21.5Compare Source
DebugandCloneimpls for the general purpose Enginev0.21.4Compare Source
encoded_lenconst, allowing the creation of arrays sized to encode compile-time-known data lengthsv0.21.3Compare Source
sourceinstead ofcauseon Error typesv0.21.2Compare Source
v0.21.1Compare Source
DecoderReaderno longer sometimes erroneously ignorespadding #226
Breaking changes
Engine.internal_decodereturn type changedv0.21.0Compare Source
Migration
Functions
encode()engine::general_purpose::STANDARD.encode()orprelude::BASE64_STANDARD.encode()encode_config()engine.encode()encode_config_buf()engine.encode_string()encode_config_slice()engine.encode_slice()decode()engine::general_purpose::STANDARD.decode()orprelude::BASE64_STANDARD.decode()decode_config()engine.decode()decode_config_buf()engine.decode_vec()decode_config_slice()engine.decode_slice()The short-lived 0.20 functions were the 0.13 functions with
configreplaced withengine.Padding
If applicable, use the preset engines
engine::STANDARD,engine::STANDARD_NO_PAD,engine::URL_SAFE,or
engine::URL_SAFE_NO_PAD.The
NO_PADones require that padding is absent when decoding, and the others require thatcanonical padding is present .
If you need the < 0.20 behavior that did not care about padding, or want to recreate < 0.20.0's predefined
Configsprecisely, see the following table.
encode_paddingdecode_padding_modev0.20.0Compare Source
Breaking changes
correct padding.
NO_PADconfig now requires that padding be absent when decoding.0.20.0-alpha.1
Breaking changes
Configconcept into theEngineabstraction, allowing the user to pick different encoding / decodingimplementations.
FastPortableengine, so named because it's portable (works onany CPU) and relatively fast.
implementation (#153,
presumably
ConstantTimePortable?) for security-sensitive applications that need side-channel resistance, andCPU-specific SIMD implementations for more speed.
DEFAULT_ENGINE. To use different alphabets or other settings (padding, etc), create your own engine instance.
CharacterSetis nowAlphabet(per the RFC), and allows creating custom alphabets. The corresponding tables thatwere previously code-generated are now built dynamically.
discoverable.
const fn.DecoderReadernow owns its inner reader, and can expose it viainto_inner(). For symmetry,EncoderWritercan dothe same with its writer.
encoded_lenis now public so you can size encode buffers precisely.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.