* Provide a clearer error message when a required tagKey for a constructor is missing, thanks to Guru Devanla.
The error message now looks like this: `Error in $: parsing Types.SomeType failed, expected Object with key "tag" containing one of ["nullary","unary","product","record","list"], key "tag" not found`
* Add `formatPath` and `formatRelativePath` functions to turn a `JSONPath` into a `String`, thanks to Robbie McMichael
* Expose `(<?>)`, `JSONPath` and `JSONPathElement(..)` from `Data.Aeson.Types`. Previously only available through internal modules. Thanks to Luke Clifton.
* Support for base-compat 0.11, thanks to Ryan Scott.
* Travis build for GHC 8.8, thanks to Oleg Grenrus.
This release introduces bounds on the size of `Scientific` numbers when they are converted to other arbitrary precision types that do not represent them efficiently in memory.
This means that trying to decode a number such as `1e1000000000` into an `Integer` will now fail instead of using a lot of memory. If you need to represent large numbers you can add a newtype (preferably over `Scientific`) and providing a parser using `withScientific`.
The following instances are affected by this:
* `FromJSON Natural`
* `FromJSONKey Natural`
* `FromJSON Integer`
* `FromJSONKey Integer`
* `FromJSON NominalDiffTime`
For the same reasons the following instances & functions have been removed:
* Remove `FromJSON Data.Attoparsec.Number` instance. Note that `Data.Attoparsec.Number` is deprecated.
* Remove deprecated `withNumber`, use `withScientific` instead.
Finally, encoding integral values with large exponents now uses scientific notation, this saves space for large numbers.
### 1.3.1.1
* Catch 0 denominators when parsing Ratio
### 1.3.1.0
* Fix bug in generically derived `FromJSON` instances that are using `unwrapUnaryRecords`, thanks to Xia Li-yao
* Allow base-compat 0.10.*, thanks to Oleg Grenrus
## 1.3.0.0
Breaking changes:
* `GKeyValue` has been renamed to `KeyValuePair`, thanks to Xia Li-yao
* Removed unused `FromJSON` constraint in `withEmbeddedJson`, thanks to Tristan Seligmann
Other improvements:
* Optimizations of TH toEncoding, thanks to Xia Li-yao
* Optimizations of hex decoding when using the default/pure unescape implementation, thanks to Xia Li-yao
* Improved error message on `Day` parse failures, thanks to Gershom Bazerman
* Add `encodeFile` as well as `decodeFile*` variants, thanks to Markus Hauck
* Add `Ord` instance for `JSONPathElement`, thanks to Simon Hengel.
* Added `withEmbeddedJSON` to help parse JSON embedded inside a JSON string, thanks to Jesse Kempf.
* Memory usage improvements to the default (pure) parser, thanks to Jonathan Paugh. Also thanks to Neil Mitchell & Oleg Grenrus for contributing a benchmark.
* `omitNothingFields` now works for the `Option` newtype, thanks to Xia Li-yao.
* Some documentation fixes, thanks to Jonathan Paug & Philippe Crama.
* Add `FromJSON` and `ToJSON` instances for
* `DiffTime`, thanks to Víctor López Juan.
* `CTime`, thanks to Daniel Díaz.
* Fix handling of fractions when parsing Natural, thanks to Yuriy Syrovetskiy.
* Change text in error messages for Integral types to make them follow the common pattern, thanks to Yuriy Syrovetskiy.
* Add missing `INCOHERENT` pragma for `RecordToPair`, thanks to Xia Li-yao.
* Everything related to `Options` is now exported from `Data.Aeson`, thanks to Xia Li-yao.
* Optimizations to not escape text in clear cases, thanks to Oleg Grenrus.
* Some documentation fixes, thanks to Phil de Joux & Xia Li-yao.
* Add `parserThrowError` and `parserCatchError` combinators, thanks to Oleg Grenrus.
* Add `Generic` instance for `Value`, thanks to Xia Li-yao.
* Fix a mistake in the 1.2.0.0 changelog, the `cffi` flag is disabled by default! Thanks to dbaynard.
* `tagSingleConstructors`, an option to encode single-constructor types as tagged sums was added to `Options`. It is disabled by default for backward compatibility.
* The `cffi` flag is now turned off (`False`) by default, this means C FFI code is no longer used by default. You can flip the flag to get C implementation.
* The `Options` constructor is no longer exposed to prevent new options from being breaking changes, use `defaultOptions` instead.
* The contents of `GToJSON` and `GToEncoding` are no longer exposed.
* Some INLINE pragmas were removed to avoid GHC running out of simplifier ticks.