- Drop support for GHC 9.4 + 9.6
- Add support for GHC 9.10 + 9.12
- Fix benchmarks for GHC 9.8
- Drop support for GHC 8.10 + 9.0 + 9.2
- Add support for GHC 9.8
- Add support for GHC 9.6
- Add support for GHC 9.4
- Drop support for GHC < 8.10
- Drop support for megaparsec < 7
- Fix benchmarks for
aeson-2
- Support
aeson-2.0.0.0
- Support
template-haskell-2.17.0.0
for GHC 9
- Fix test failure in newer Stack snapshots
Performance:
- Optimized including other schemas in a schema, which previously caused a huge slowdown, and possibly even out-of-memory errors.
Bug fixes:
- Update extra-source-files with files needed for testing
Breaking changes:
- Refactored types to be correct by construction. Namely, the
schema
parameter inObject schema
now has kindSchema
instead ofSchemaType
, which prevents the possibility of a non-object schema stored in anObject
. This means that any schemas previously annotated with theSchemaType
kind should now be annotated asSchema
. - Instead of using
IsSchemaObject
is obviated because of this change, so it's been removed. You may use the newIsSchema
instead, if you need it. SchemaResult
has been removed from the export list ofData.Aeson.Schema
. You probably won't need this in typical usage of this library, but if you need it, you can always get it fromData.Aeson.Schema.Internal
.
New features:
- Add support for unwrapping into included schemas
- Add
toMap
- Re-export
showSchema
inData.Aeson.Schema
Bug fixes:
- Avoid requiring
TypeApplications
when usingget
quasiquoter (#16) - Allow optional quotes around keys, both in getter-expressions and in schema definitions
- Allow
//
at the beginning of phantom keys (were previously parsed as comments)
Performance:
-
We've added benchmarks! To view performance metrics, you can clone the repo and run
stack bench
. You may also view the benchmark statistics in CI, but due to Circle CI's memory limitations, we're forced to run them with--fast
, so it'll be a factor slower than it would actually be at runtime. -
Fixed the
Show
instance from beingO(n^2)
toO(n)
, wheren
is the depth of the object. -
In order to fix some bugs and implement new features, the
schema
quasiquoter took a performance hit. The biggest slowdown occurs if you're including other schemas like:{ user: #UserSchema }
If this causes your build to be noticeably slower, please open an issue. Thanks!
Miscellaneous changes:
- The
Show
instance for objects added some whitespace, from{"foo": 0}
to{ "foo": 0 }
New features:
- Add support for phantom keys
- Add support for
Try
schemas
New features:
- Added support for unions
- Added
ToJSON
instance for enums generated withmkEnum
Support GHC 8.8
Bundle test data files in release tarball
Add support with first-class-families-0.6.0.0
Initial release:
- Defining JSON schemas with the
schema
quasiquoter - Extract JSON data using the
get
quasiquoter - Extracting intermediate schemas with the
unwrap
quasiquoter - Include
mkGetter
helper function for generating correspondingget
andunwrap
expressions.