All Versions
Latest Version
Avg Release Cycle
57 days
Latest Release

Changelog History
Page 2

  • v1.4.4.0

    June 25, 2019

    πŸ†• New features:

    • βž• Adds a parameterized parser jsonWith that can be used to choose how to handle duplicate keys in objects, thanks to Xia Li-Yao.

    • βž• Add generic implementations of FromJSONKey and ToJSONKey, thanks to Xia Li-Yao. Example:

    data Foo = Bar
      deriving Generic
    opts :: JSONKeyOptions
    opts = defaultJSONKeyOptions { keyModifier = toLower }
    instance ToJSONKey Foo where
      toJSONKey = genericToJSONKey opts
    instance FromJSONKey Foo where
      fromJSONKey = genericFromJSONKey opts


    • aeson now uses time-compat instead of time-locale-compat, thanks to Oleg Grenrus.
    • Prepare for MonadFail breakages in GHC 8.8, thanks to Oleg Grenrus.
    • πŸ— Require bytestring >= for newer GHCs to avoid build failures, thanks to Oleg Grenrus.
    • πŸ‘Œ Support primitive 0.7.*, thanks to Adam Bergmark.
    • Allow semigroups 0.19.* and hashable 1.3.*, thanks to Oleg Grenrus.
    • πŸ›  Fix a typo in the error message when parsing NonEmpty, thanks to Colin Woodbury.
    • Document surprising behavior when using omitNothingFields with type variables, thanks to Xia Li-Yao.

    Internal changes:

    • Code cleanup by Oleg Grenrus
    • πŸ›  Fix dependencies of the benchmarks on older GHC's, thanks to Xia Li-Yao.
  • v1.4.3.0

    April 28, 2019
    • πŸ‘Œ Improve error messages for FromJSON in existing instances and GHC Generic implementation. Thanks to Xia Li-Yao & Igor Pashev.
    • πŸ“š Tweak error-reporting combinators and their documentation. Thanks to Xia Li-Yao.
      • typeMismatch is now about comparing JSON types (i.e., the expected and actual names of the Value constructor).
      • withObject and other with* combinators now also mention the JSON types they expect
      • New unexpected and prependFailure combinators.
    • βž• Add Contravariant ToJSONKeyFunction instance. Thanks to Oleg Grenrus.
    • βž• Add KeyValue instance for Object. Thanks to Robert Hensing.
    • πŸ‘Œ Improve performance when parsing certain large numbers, thanks to Oleg Grenrus.
    • βž• Add Data.Aeson.QQ.Simple - A limited version of aeson-qq. Thanks to Oleg Grenrus.
    • πŸ”¦ Exposes internal helper functions like <?>, JSONPath, and parseIndexedJSON from Data.Aeson module. Thanks to Abid Uzair.
    • πŸ‘ Better error messages when there are syntax errors parsing objects and arrays. Thanks to Fintan Halpenny.
    • πŸ‘Œ Support building with th-abstraction- or later. Thanks to Ryan Scott.
  • v1.4.2.0

    November 24, 2018
    • βž• Add Data.Aeson.QQ.Simple which is a simpler version of the aeson-qq package, it does not support interpolation, thanks to Oleg Grenrus.
    • βž• Add Contravariant ToJSONKeyFunction instance, thanks to Oleg Grenrus.
    • βž• Add KeyValue Object instance, thanks to Robert Hensing
    • πŸ‘Œ Improved performance when parsing large numbers, thanks to Oleg Grenrus.
  • v1.4.1.0

    September 24, 2018
    • Optimizations of generics, thanks to RΓ©my Oudompheng, here are some numbers for GHC 8.4:
      • Compilation time: G/BigProduct.hs is 25% faster, G/BigRecord.hs is 2x faster.
      • Runtime performance: BigRecord/toJSON/generic and BigProduct/encode/generic are more than 2x faster.
    • βž• Added To/FromJSON instances for Void and Generics's V1, thanks to Will Yager
    • βž• Added To/FromJSON instances for primitive's Array, SmallArray, PrimArray and UnliftedArray, thanks to Andrew Thad.
    • πŸ›  Fixes handling of UTCTime wrt. leap seconds , thanks to Adam SchΓΈnemann
    • πŸ“š Warning and documentation fixes thanks to tom-bop, Gabor Greif, Ian Jeffries, and Mateusz CuryΕ‚o.
  • v1.4.0.0

    πŸš€ 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.

  • v1.3.1.1

    May 10, 2018
    • πŸ“œ Catch 0 denominators when parsing Ratio
  • v1.3.1.0

    April 07, 2018
    • πŸ›  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
  • v1.3.0.0

    March 07, 2018

    πŸ’₯ 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
    • 0️⃣ 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
    • πŸ“š Documentation fixes, thanks to Lennart Spitzner
    • CPP cleanup, thanks to Ryan Scott
  • v1.2.4.0

    • βž• Add Ord instance for JSONPathElement, thanks to Simon Hengel.
  • v1.2.3.0

    October 18, 2017
    • βž• Added withEmbeddedJSON to help parse JSON embedded inside a JSON string, thanks to Jesse Kempf.
    • 0️⃣ 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.