aeson-schemas v1.3.0 Release Notes
Release Date: 2020-09-25 // over 3 years ago-
💥 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 }
- 🔨 Refactored types to be correct by construction. Namely, the