ANNOUNCE: waargonaut-0.6.0.0 (better mousetrap)

## Waargonaut 0.6.0.0 This release of Waargonaut sees several issues fixed and a generous helping of cleanups and refactoring. This is a breaking change as the API has been drastically altered for some parts. Other changes include more granular modules and generalisation. ### Bug fixes - Unicode was not being handled correctly, sometimes. The encoding/decoding to a `Text` or `String` value wasn't correct due to my own lack of understanding. - Upper-case hexadecimal input was being silently zeroed out during some conversion steps. Those issues should all be resolved now. In the process of fixing those issues, it tugged on a couple of threads for things I've been wanting to do. So I did them, see below: ### Changes: #### Decoding! Using `parseWith` and the requirement to DIY almost an entire parsing function is a thing of the past. Replaced with the following structure: Functions: - `decodeWith` - `decodeFromText` - `decodeFromString` - `decodeFromByteString` - `decodeWithInput` - as well as their pure variants These functions only require you provide a function from the respective input type and has an implementation of the `CharParsing` interface. The greatly simplifies the process of providing your own parsing function. #### Default Parsing Functions! Waargonaut now provides some default parsing functions using the `attoparsec` package. These are in the `Waargonaut.Attoparsec` module and should make it easier for people to be up and running with the package when requirements of a custom parser aren't important. #### New Optics! The `Waargonaut.Lens` module provides some Prisms for use with the `Json` type. Working in a similar way to the `lens-aeson` package. These optics are law abiding and they have tests to prove it. #### Better Builder To complement the more streamlined parsing functions, the encoder has had its builder internals reworked to support either `Text` or `ByteString`. In the style of "scrap your typeclasses" to keep things simple. Added tests to check their output matches. #### More modules! - Factored out components into more focused submodules: - UnescapedJChar - EscapedJChar - HexDigit4 - Elem - Elems - JAssoc - Decode.Runners - Builders for all `Json` types now live under `Waargonaut.Encode.Builder` #### Deprecate Traversal decoder The decoder in `Waargonaut.Decode.Traversal` has been marked as deprecated and will be removed in a future release. It is bit rotting somewhat compared to the succinct powered decoder and doesn't operate at anywhere near the same level of speed or memory efficiency. If people care they can open an issue to let me know. #### Test re-structure Tests have been reordered into more granular modules. Some tests have been removed or reworked to be more accurate. More tests have been added to try to protect from regressions. More tests have been added to confirm that various instances or functions are law abiding. As a consequence there have been a few instances and functions that have been removed.
participants (1)
-
Sean Chalmers