Releases: ssg/SimpleBase
Releases · ssg/SimpleBase
4.0.2
4.0.1
4.0.0
Breaking changes
- This version is built with .NET 6 SDK.
- Benchmark now uses BenchmarkDotNet.
- Changed interface names from Encoder to Coder to signify encoding and
decoding functionality better. - Removed obsolete methods.
- Simple (aka allocating) versions of
Decode()
will now returnbyte[]
's instead ofSpan<byte>
's for correct
ownership semantics. It's even possible that some copying may be avoided in certain scenarios. Base16.TryDecode()
doesn't throw on invalid input, but returnsfalse
instead.Base32.Decode()
throws separate exceptions for encountered failures.
New features
- Added Bech32 flavor to Base32
- Added RFC 1924 (IPv6) flavor to Base85 along with
EncodeIpv6 and DecodeIpv6 functions https://tools.ietf.org/html/rfc1924 - Added
Base58.Bitcoin.EncodeCheck()
andBase58.Bitcoin.TryDecodeCheck()
methods. - Added
Base58.Bitcoin.EncodeCb58()
andBase58.Bitcoin.TryDecodeCb58()
methods.
Improvements
- Added more buffer overflow detection to Base32 coder
- Removed all unsafe code. New Span-based optimizations make the code come close to unsafe perf.
- Removed slow and hard to read optimizations like bit shift operations for multiplication and division
where compiler almost always does a better job of optimizing.
Fixes
- Fixed output buffer was too small error for certain Base58 cases.
- Avoid redundant memory copy operations
3.1.0
Improvements
- Added FileCoin flavor to Base32 (contributed by @farukterzioglu).
- Upgraded test and benchmark projects to .NET Core 3.1 (LTS).
3.0.2
3.0.1
2.1.0
3.0.0
Breaking changes
- This version only supports .NET Standard 2.1 (.NET Core 3.0) and up, because I started using nullable annotations and Span/Range constructs in the code. It's time to move to the future, folks!
- Base16 encoding/decoding methods have been moved to
Base16.UpperCase
andBase16.LowerCase
respectively. - Changed the static version of
Base16.Decode()
to receive a string as a parameter to avoid signature conflicts. (It's probably more practical this way) - Removed string/byte[] overloads for Encode functions as they are redundant with .NET Core 3.0. Only
Base16.Decode
remained as a string due to function signature conflicts. - Base32 is no longer whitespace tolerant.
New features
- New TryEncode/TryDecode interfaces for non-allocating encoding. Probably would be useful in massive number of encodings.
- Yubico's ModHex support for Base16.
Improvements
- More than 2x faster Base16 decoding
- Faster Base16 encoding
- More test coverage
- No more dependency to System.Runtime.Numerics
- Encoders now conform to common interfaces like IBaseEncoder, IBaseStreamEncoder, INonAllocatingBaseEncoder which make them pluggable, replacable with other implementations.
- Nullable reference annotations
Fixes
- Fix package license expression.
- Fix regression in Base16 optimizations.
2.0.0
Breaking changes
- Adapted to nullable references
- Encoder references are now properties instead of static fields
New stuff
- Async variants of Stream-based encoding/decoding methods
- New Base32 variants: z-base-32 and Geohash
- XML documentation is included in the package now
- SimpleBase is now on GitHub Package Repository
Improvements
- Base58 decoding is 100+% faster and encoding is slightly faster, too
- Reduced startup overhead
- Updated dependencies to newer packages
- Removed redundant null checking code
- Base58's Ripple and Flickr variants are now being tested