* remove read from the list of derived instances, partially closing #1773, #1203
* bump version
* adjusting a version bound because the next version breaks compilation
* make a RouteOpts type that allows for finer control over what instances are derived for a Route
* some lintings
* adjust versioning and changelog
* actually a more major version bump
* verified that export list is complete
* add @ since
The module `Data.Aeson.Parser` is moved into attoparsec-aeson for aeson >=2.2.
For aeson <2.2, attoparsec-aeson is an empty package, since the module exists within aeson.
Fixes https://github.com/yesodweb/yesod/issues/1771
This is done by adding a function to Yesod
typeclass which can match on any exception
and tell the framework if it should rethrow
or not.
I used an overridable function because it seemed
more flexible then a whitelist.
A user can now for example choose to throw
everything, or catch everything as easily.
add docs
bump
`setDescription` and `setDescriptionI` present a similar API to
`setTitle` and `setTitleI`, but unlike those functions the description
functions are not idempotent - so calling them multiple times inserts
multiple `<meta/>` tags in HTML `<head/>`.
This adds explicitly idempotent versions of those functions which are
handled in a similar way to the title, so that calling them multiple
times has the effect of taking the final value specified.
Because the non-idempotent behaviour of setDescription is not obvious,
this also adds warnings for that behaviour to make it clear what the
effect of multiple calls will be. Unfortunately, setDescriptionIdemp
can't be made a drop-in replacement because developers may have defined
their own layouts which need to take pageDescription into account.
Like setTitle, this function should really be idempotent so developers
don't add multiple conflicting meta descriptions to the page. Unlike
setTitle, the function currently fails its idempotency test.
This test sometimes fails on nix builds.
I'm not sure why, but it should be superflous with
"thread killed = 500" test anyway.
They test both for async exceptions.
Just a different one.