Module documentation for 0.3.0.0
Padded and unpadded base64 and base64url encodings for
ByteString values, along with their optics.
For the companion
Prisms and pattern synonyms, see base64-lens.
What does this library provide? Here is the summary:
- Better performance over existing Base64 libraries (2x and 3x for most use-cases - see PERFORMANCE.md)
- Support for unpadded Base64 and Base64-url
- Support for
Textencodings and decodings
- Optics for handling more complex structures with Base64 representations via the
There are no dependencies aside from
Haskell has two main libraries for Base64:
memory is geared towards integration with other memory primitives in the library, without much of an eye towards performance, while
base64-bytestring is built to exclusively address
ByteString encoding and decoding, and is very performant. Many great strides have been made in the realm of Base64 performance and vectorization just in the past 5 years, which this library attempts to capture. Additionally, we attempt to fix perceived shortcomings with both APIs in the support of unpadded Base64 and Base64-url support (which
memory provides, but not
base64-bytestring), as well as supporting
Text values (neither libraries provide).
Revision history for base64
0.3.0.0 – 2020-01-07
- After a discussion with lexilambda, we’re making ‘encodeBase64’ be
ByteString -> Textby default, offering
ByteString -> ByteStringas a secondary format.
decodeBase64Lenientto the API for phadej
- Fix unpadded decoding bug where garbage was appended to the end of garbage inputs. A cleaner way to do this is to simply encode as Base64 with padding and then strip padding chars until I come up with a workflow specific to unpadded inputs (I used to have this, so I’ll have to dig it up)
isBase64Urlto the API
- Performance is stable
0.2.0.0 – 2020-01-05
- After a discussion with phadej, we’re doing away with the flags, and splitting the optics out into their own separate library
- Removed unnecessary inline pragmas
0.1.0.0 – 2020-01-05
- Do away with the typeclasses, and just provide prisms + synonyms
- Continued performance improvements to decoding
- Corrected benchmarks
0.0.1.0 – 2020-01-03
- First version. Released on an unsuspecting world.
- Preliminary release