marshallpierce/rust-base64 (base64)
### [`v0.22.1`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0221)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.22.0...v0.22.1)
- Correct the symbols used for the predefined `alphabet::BIN_HEX`.
### [`v0.22.0`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0220)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.7...v0.22.0)
- `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`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0217)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.6...v0.21.7)
- Support getting an alphabet's contents as a str via `Alphabet::as_str()`
### [`v0.21.6`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0216)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.5...v0.21.6)
- Improved introductory documentation and example
### [`v0.21.5`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0215)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.4...v0.21.5)
- Add `Debug` and `Clone` impls for the general purpose Engine
### [`v0.21.4`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0214)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.3...v0.21.4)
- Make `encoded_len` `const`, allowing the creation of arrays sized to encode compile-time-known data lengths
### [`v0.21.3`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0213)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.2...v0.21.3)
- 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`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0212)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.1...v0.21.2)
- Rollback MSRV to 1.57.0 -- only dev dependencies need 1.60, not the main code
### [`v0.21.1`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0211)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.0...v0.21.1)
- Remove the possibility of panicking during decoded length calculations
- `DecoderReader` no longer sometimes erroneously ignores
padding [#226](https://redirect.github.com/marshallpierce/rust-base64/issues/226)
#### Breaking changes
- `Engine.internal_decode` return type changed
- Update MSRV to 1.60.0
### [`v0.21.0`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0210)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.20.0...v0.21.0)
#### 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 `Config`s
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`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0200)
[Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.13.1...v0.20.0)
#### 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](https://redirect.github.com/marshallpierce/rust-base64/pull/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
This PR contains the following updates:
0.13.0
->0.22.0
Release Notes
marshallpierce/rust-base64 (base64)
### [`v0.22.1`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0221) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.22.0...v0.22.1) - Correct the symbols used for the predefined `alphabet::BIN_HEX`. ### [`v0.22.0`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0220) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.7...v0.22.0) - `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`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0217) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.6...v0.21.7) - Support getting an alphabet's contents as a str via `Alphabet::as_str()` ### [`v0.21.6`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0216) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.5...v0.21.6) - Improved introductory documentation and example ### [`v0.21.5`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0215) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.4...v0.21.5) - Add `Debug` and `Clone` impls for the general purpose Engine ### [`v0.21.4`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0214) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.3...v0.21.4) - Make `encoded_len` `const`, allowing the creation of arrays sized to encode compile-time-known data lengths ### [`v0.21.3`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0213) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.2...v0.21.3) - 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`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0212) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.1...v0.21.2) - Rollback MSRV to 1.57.0 -- only dev dependencies need 1.60, not the main code ### [`v0.21.1`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0211) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.21.0...v0.21.1) - Remove the possibility of panicking during decoded length calculations - `DecoderReader` no longer sometimes erroneously ignores padding [#226](https://redirect.github.com/marshallpierce/rust-base64/issues/226) #### Breaking changes - `Engine.internal_decode` return type changed - Update MSRV to 1.60.0 ### [`v0.21.0`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0210) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.20.0...v0.21.0) #### 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 `Config`s 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`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0200) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.13.1...v0.20.0) #### 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](https://redirect.github.com/marshallpierce/rust-base64/pull/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.
This PR was generated by Mend Renovate. View the repository job log.