Skip to content
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

Update Rust crate base64 to 0.22 #28

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Sep 1, 2021

This PR contains the following updates:

Package Type Update Change
base64 dependencies minor 0.9 -> 0.22

Release Notes

marshallpierce/rust-base64 (base64)

v0.22.1

Compare Source

  • Correct the symbols used for the predefined alphabet::BIN_HEX.

v0.22.0

Compare Source

  • 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.
  • Decoding is somewhat faster (5-10%)

v0.21.7

Compare Source

  • Support getting an alphabet's contents as a str via Alphabet::as_str()

v0.21.6

Compare Source

  • Improved introductory documentation and example

v0.21.5

Compare Source

  • Add Debug and Clone impls for the general purpose Engine

v0.21.4

Compare Source

  • Make encoded_len const, allowing the creation of arrays sized to encode compile-time-known data lengths

v0.21.3

Compare Source

  • Implement source instead of cause on Error types
  • Roll back MSRV to 1.48.0 so Debian can continue to live in a time warp
  • Slightly faster chunked encoding for short inputs
  • Decrease binary size

v0.21.2

Compare Source

  • Rollback MSRV to 1.57.0 -- only dev dependencies need 1.60, not the main code

v0.21.1

Compare Source

  • Remove the possibility of panicking during decoded length calculations
  • DecoderReader no longer sometimes erroneously ignores
    padding #​226

Breaking changes

  • Engine.internal_decode return type changed
  • Update MSRV to 1.60.0

v0.21.0

Compare Source

Migration

Functions
< 0.20 function 0.21 equivalent
encode() 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.

0.13.1 Config 0.20.0+ alphabet encode_padding decode_padding_mode
STANDARD STANDARD true Indifferent
STANDARD_NO_PAD STANDARD false Indifferent
URL_SAFE URL_SAFE true Indifferent
URL_SAFE_NO_PAD URL_SAFE false Indifferent

v0.20.0

Compare Source

Breaking changes

  • Update MSRV to 1.57.0
  • 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.

v0.13.1

Compare Source

  • More precise decode buffer sizing, avoiding unnecessary allocation in decode_config.

v0.13.0

Compare Source

  • Config methods are const
  • Added EncoderStringWriter to allow encoding directly to a String
  • EncoderWriter now owns its delegate writer rather than keeping a reference to it (though refs still work)
    • As a consequence, it is now possible to extract the delegate writer from an EncoderWriter via finish(), which
      returns Result<W> instead of Result<()>. If you were calling finish() explicitly, you will now need to
      use let _ = foo.finish() instead of just foo.finish() to avoid a warning about the unused value.
  • When decoding input that has both an invalid length and an invalid symbol as the last byte, InvalidByte will be
    emitted instead of InvalidLength to make the problem more obvious.

v0.12.3

Compare Source

v0.12.2

Compare Source

  • Add BinHex alphabet

v0.12.1

Compare Source

  • Add Bcrypt alphabet

v0.12.0

Compare Source

  • A Read implementation (DecoderReader) to let users transparently decoded data from a b64 input source
  • IMAP's modified b64 alphabet
  • Relaxed type restrictions to just AsRef<[ut8]> for main encode*/decode* functions
  • A minor performance improvement in encoding

v0.11.0

Compare Source

  • Minimum rust version 1.34.0
  • no_std is now supported via the two new features alloc and std.

v0.10.1

Compare Source

  • Minimum rust version 1.27.2
  • Fix bug in streaming encoding (#​90): if the underlying writer
    didn't write all the bytes given to it, the remaining bytes would not be retried later. See the docs
    on EncoderWriter::write.
  • Make it configurable whether or not to return an error when decoding detects excess trailing bits.

v0.10.0

Compare Source

  • Remove line wrapping. Line wrapping was never a great conceptual fit in this library, and other features (streaming
    encoding, etc) either couldn't support it or could support only special cases of it with a great increase in
    complexity. Line wrapping has been pulled out into a line-wrap crate, so it's
    still available if you need it.
    • Base64Display creation no longer uses a Result because it can't fail, which means its helper methods for
      common
      configs that unwrap() for you are no longer needed
  • Add a streaming encoder Write impl to transparently base64 as you write.
  • Remove the remaining unsafe code.
  • Remove whitespace stripping to simplify no_std support. No out of the box configs use it, and it's trivial to do
    yourself if needed: filter(|b| !b" \n\t\r\x0b\x0c".contains(b).
  • Detect invalid trailing symbols when decoding and return an error rather than silently ignoring them.

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 is behind base branch, 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

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/base64-0.x branch 10 times, most recently from 8cc7c72 to 65393da Compare September 2, 2021 13:42
@renovate renovate bot changed the title Update Rust crate base64 to 0.13 Update Rust crate base64 to 0.21 Mar 16, 2023
@renovate renovate bot force-pushed the renovate/base64-0.x branch 2 times, most recently from e77cad8 to 3e0a860 Compare March 24, 2023 08:05
@renovate renovate bot changed the title Update Rust crate base64 to 0.21 Update Rust crate base64 to 0.22 Mar 2, 2024
@renovate renovate bot changed the title Update Rust crate base64 to 0.22 Update Rust crate base64 to 0.22.1 May 1, 2024
@renovate renovate bot changed the title Update Rust crate base64 to 0.22.1 Update Rust crate base64 to 0.22 May 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant