Skip to content

Releases: ssg/SimpleBase

4.0.0

10 Nov 23:03
@ssg ssg
Compare
Choose a tag to compare

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 return byte[]'s instead of Span<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 returns false 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() and Base58.Bitcoin.TryDecodeCheck() methods.
  • Added Base58.Bitcoin.EncodeCb58() and Base58.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

24 May 22:27
@ssg ssg
Compare
Choose a tag to compare

Improvements

  • Added FileCoin flavor to Base32 (contributed by @farukterzioglu).
  • Upgraded test and benchmark projects to .NET Core 3.1 (LTS).

3.0.2

12 Dec 00:16
@ssg ssg
Compare
Choose a tag to compare

Fixes

  • Fixed output buffer was too small error for certain Base58 cases.
  • Avoid redundant memory copy operations.
  • Introduce an additional buffer overrun check for Base32.

3.0.1

14 Feb 23:09
@ssg ssg
Compare
Choose a tag to compare

Fixes

  • Fixed padding being ignored by Base32, thanks to @skwasjer!

2.1.0

21 Jan 05:27
@ssg ssg
aa69776
Compare
Choose a tag to compare

Improvements

  • Produce native .NET 4.7.2 binaries which hopefully removes the scaffolding overhead

3.0.0

24 Dec 23:27
@ssg ssg
fce6997
Compare
Choose a tag to compare

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 and Base16.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

12 Oct 22:11
@ssg ssg
c3cdb90
Compare
Choose a tag to compare

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

1.7.1

04 Dec 21:05
@ssg ssg
Compare
Choose a tag to compare
  • Minor code analysis fixes

1.7.0

17 Nov 08:42
@ssg ssg
Compare
Choose a tag to compare

New features:

  • Stream-based methods for Base16/Base32/Base85 (Base58 isn't suitable by nature)
  • New ReadOnlySpan overloads to Decode functions

Improvements:

  • Slightly better decoding performance on Base16 and Base32