1# 0.13.0 2 3- Config methods are const 4- Added `EncoderStringWriter` to allow encoding directly to a String 5- `EncoderWriter` now owns its delegate writer rather than keeping a reference to it (though refs still work) 6 - 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. 7- 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. 8 9# 0.12.2 10 11- Add `BinHex` alphabet 12 13# 0.12.1 14 15- Add `Bcrypt` alphabet 16 17# 0.12.0 18 19- A `Read` implementation (`DecoderReader`) to let users transparently decoded data from a b64 input source 20- IMAP's modified b64 alphabet 21- Relaxed type restrictions to just `AsRef<[ut8]>` for main `encode*`/`decode*` functions 22- A minor performance improvement in encoding 23 24# 0.11.0 25- Minimum rust version 1.34.0 26- `no_std` is now supported via the two new features `alloc` and `std`. 27 28# 0.10.1 29 30- Minimum rust version 1.27.2 31- Fix bug in streaming encoding ([#90](https://github.com/marshallpierce/rust-base64/pull/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`. 32- Make it configurable whether or not to return an error when decoding detects excess trailing bits. 33 34# 0.10.0 35 36- 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](https://crates.io/crates/line-wrap) crate, so it's still available if you need it. 37 - `Base64Display` creation no longer uses a `Result` because it can't fail, which means its helper methods for common 38 configs that `unwrap()` for you are no longer needed 39- Add a streaming encoder `Write` impl to transparently base64 as you write. 40- Remove the remaining `unsafe` code. 41- 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)`. 42- Detect invalid trailing symbols when decoding and return an error rather than silently ignoring them. 43 44# 0.9.3 45 46- Update safemem 47 48# 0.9.2 49 50- Derive `Clone` for `DecodeError`. 51 52# 0.9.1 53 54- Add support for `crypt(3)`'s base64 variant. 55 56# 0.9.0 57 58- `decode_config_slice` function for no-allocation decoding, analogous to `encode_config_slice` 59- Decode performance optimization 60 61# 0.8.0 62 63- `encode_config_slice` function for no-allocation encoding 64 65# 0.7.0 66 67- `STANDARD_NO_PAD` config 68- `Base64Display` heap-free wrapper for use in format strings, etc 69 70# 0.6.0 71 72- Decode performance improvements 73- Use `unsafe` in fewer places 74- Added fuzzers 75 76# 0.5.2 77 78- Avoid usize overflow when calculating length 79- Better line wrapping performance 80 81# 0.5.1 82 83- Temporarily disable line wrapping 84- Add Apache 2.0 license 85 86# 0.5.0 87 88- MIME support, including configurable line endings and line wrapping 89- Removed `decode_ws` 90- Renamed `Base64Error` to `DecodeError` 91 92# 0.4.1 93 94- Allow decoding a `AsRef<[u8]>` instead of just a `&str` 95 96# 0.4.0 97 98- Configurable padding 99- Encode performance improvements 100 101# 0.3.0 102 103- Added encode/decode functions that do not allocate their own storage 104- Decode performance improvements 105- Extraneous padding bytes are no longer ignored. Now, an error will be returned. 106