Metadata revisions for stock-aeson-0.1.0.0

Package maintainers and Hackage trustees are allowed to edit certain bits of package metadata after a release, without uploading a new tarball. Note that the tarball itself is never changed, just the metadata that is stored separately. For more information about metadata revisions, please refer to the Hackage Metadata Revisions FAQ.

No. Time User SHA256
-r5 2026-06-24T01:45:15Z BaldurBlondal b239538b286acc3017a09cd991d7ad174d7dac8e95e576ae78bd19f6ae0c2086
  • Changed description from

    The <https://hackage.haskell.org/package/stock stock> plugin
    provides a newtype
    __@<https://hackage-content.haskell.org/package/stock-0.1.0.0/docs/Stock.html#t:Stock Stock>@__ 
    for deriving and synthesising instances at compile
    time. __stock-aeson__ extends it to support
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    >
    > {-# language DerivingVia #-}
    >
    > import Stock
    > import Stock.Aeson
    >
    > data Person = P { name :: String, age :: Int }
    >   deriving (ToJSON, FromJSON) via
    >     Stock Person
    
    The wire format reproduces
    @<https://hackage.haskell.org/package/aeson aeson>@'s
    @genericToJSON@ \/ @genericParseJSON
    defaultOptions@. __stock-aeson__ is a drop-in for @deriving anyclass
    (ToJSON, FromJSON)@.
    
    __stock-aeson__ provides six instances, that signal to the plugin
    how to derive
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@.
    
    > instance DeriveStock  ToJSON    ..
    > instance DeriveStock1 ToJSON1   ..
    > instance DeriveStock2 ToJSON2   ..
    > instance DeriveStock  FromJSON  ..
    > instance DeriveStock1 FromJSON1 ..
    > instance DeriveStock2 FromJSON2 ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at
    runtime): parameter fields route through the supplied per-parameter
    encoders\/parsers, so the bytes still match @aeson@'s generic
    deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    <https://hackage.haskell.org/package/stock stock> companion packages include:
    
    * __@<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@__: @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
    * __@<https://hackage.haskell.org/package/stock-hashable stock-hashable>@__: @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
    * __@stock-aeson@__: @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
    * __@<https://hackage.haskell.org/package/stock-quickcheck stock-quickcheck>@__: @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
    * __@<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@__: @<https://hackage-content.haskell.org/package/profunctors-5.6.3/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
    to
    The <https://hackage.haskell.org/package/stock stock> plugin
    provides a newtype
    __@<https://hackage-content.haskell.org/package/stock-0.1.0.0/docs/Stock.html#t:Stock Stock>@__ 
    for deriving and synthesising instances at compile
    time. __stock-aeson__ extends it to support
    @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON FromJSON>@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    >
    > {-# language DerivingVia #-}
    >
    > import Stock
    > import Stock.Aeson
    >
    > data Person = P { name :: String, age :: Int }
    >   deriving (ToJSON, FromJSON) via
    >     Stock Person
    
    The wire format reproduces
    @<https://hackage.haskell.org/package/aeson aeson>@'s
    @genericToJSON@ \/ @genericParseJSON
    defaultOptions@. __stock-aeson__ is a drop-in for @deriving anyclass
    (ToJSON, FromJSON)@.
    
    __stock-aeson__ provides six instances, that signal to the plugin
    how to derive
    @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON FromJSON>@.
    
    > instance DeriveStock  ToJSON    ..
    > instance DeriveStock1 ToJSON1   ..
    > instance DeriveStock2 ToJSON2   ..
    > instance DeriveStock  FromJSON  ..
    > instance DeriveStock1 FromJSON1 ..
    > instance DeriveStock2 FromJSON2 ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at
    runtime): parameter fields route through the supplied per-parameter
    encoders\/parsers, so the bytes still match @aeson@'s generic
    deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    <https://hackage.haskell.org/package/stock stock> companion packages include:
    
    * __@<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@__: @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
    * __@<https://hackage.haskell.org/package/stock-hashable stock-hashable>@__: @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
    * __@stock-aeson@__: @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
    * __@<https://hackage.haskell.org/package/stock-quickcheck stock-quickcheck>@__: @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
    * __@<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@__: @<https://hackage-content.haskell.org/package/profunctors-5.6.3/docs/Data-Profunctor.html#t:Profunctor Profunctor>@

-r4 2026-06-24T00:23:27Z BaldurBlondal a0759f5a264da898a63d1c87bacbe392ca13984f6017dafee0a4ac82171b8a8a
  • Changed description from

    The @<https://hackage.haskell.org/package/stock stock>@ plugin
    provides a datatype for deriving and synthesising instances at
    compile time. __stock-aeson__ extends it to support
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    >
    > {-# language DerivingVia #-}
    >
    > import Stock
    > import Stock.Aeson
    >
    > data Person = P { name :: String, age :: Int }
    >   deriving (ToJSON, FromJSON) via
    >     Stock Person
    
    The wire format reproduces
    @<https://hackage.haskell.org/package/aeson aeson>@'s
    @genericToJSON@ \/ @genericParseJSON
    defaultOptions@. __stock-aeson__ is a drop-in for @deriving anyclass
    (ToJSON, FromJSON)@.
    
    __stock-aeson__ provides six instances, that signal to the plugin
    how to derive
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@.
    
    > instance DeriveStock  ToJSON    ..
    > instance DeriveStock1 ToJSON1   ..
    > instance DeriveStock2 ToJSON2   ..
    > instance DeriveStock  FromJSON  ..
    > instance DeriveStock1 FromJSON1 ..
    > instance DeriveStock2 FromJSON2 ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at
    runtime): parameter fields route through the supplied per-parameter
    encoders\/parsers, so the bytes still match @aeson@'s generic
    deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    @<https://hackage.haskell.org/package/stock-deepseq stock>@ companion packages include:
    
    * @<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@: @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
    * @<https://hackage.haskell.org/package/stock-hashable stock-hashable>@: @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
    * __stock-aeson__: @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
    * @<https://hackage.haskell.org/package/stock-quickcheck stock-quickcheck>@: @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
    * @<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@: @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
    to
    The <https://hackage.haskell.org/package/stock stock> plugin
    provides a newtype
    __@<https://hackage-content.haskell.org/package/stock-0.1.0.0/docs/Stock.html#t:Stock Stock>@__ 
    for deriving and synthesising instances at compile
    time. __stock-aeson__ extends it to support
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    >
    > {-# language DerivingVia #-}
    >
    > import Stock
    > import Stock.Aeson
    >
    > data Person = P { name :: String, age :: Int }
    >   deriving (ToJSON, FromJSON) via
    >     Stock Person
    
    The wire format reproduces
    @<https://hackage.haskell.org/package/aeson aeson>@'s
    @genericToJSON@ \/ @genericParseJSON
    defaultOptions@. __stock-aeson__ is a drop-in for @deriving anyclass
    (ToJSON, FromJSON)@.
    
    __stock-aeson__ provides six instances, that signal to the plugin
    how to derive
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@.
    
    > instance DeriveStock  ToJSON    ..
    > instance DeriveStock1 ToJSON1   ..
    > instance DeriveStock2 ToJSON2   ..
    > instance DeriveStock  FromJSON  ..
    > instance DeriveStock1 FromJSON1 ..
    > instance DeriveStock2 FromJSON2 ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at
    runtime): parameter fields route through the supplied per-parameter
    encoders\/parsers, so the bytes still match @aeson@'s generic
    deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    <https://hackage.haskell.org/package/stock stock> companion packages include:
    
    * __@<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@__: @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage-content.haskell.org/package/deepseq-1.5.2.0/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
    * __@<https://hackage.haskell.org/package/stock-hashable stock-hashable>@__: @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage-content.haskell.org/package/hashable-1.5.1.0/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
    * __@stock-aeson@__: @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage-content.haskell.org/package/aeson-2.3.0.0/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
    * __@<https://hackage.haskell.org/package/stock-quickcheck stock-quickcheck>@__: @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage-content.haskell.org/package/QuickCheck-2.18.0.0/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
    * __@<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@__: @<https://hackage-content.haskell.org/package/profunctors-5.6.3/docs/Data-Profunctor.html#t:Profunctor Profunctor>@

-r3 2026-06-23T19:51:47Z BaldurBlondal 7fab4483bf9390529a243f645a0f56d9b53818b794d567df1be15e218c1ae8d5
  • Changed description from

    The @<https://hackage.haskell.org/package/stock stock>@ plugin
    provides a datatype for deriving and synthesising instances at
    compile time. __stock-aeson__ extends it to support
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    > 
    > {-# language DerivingVia #-}
    > 
    > import Stock
    > import Stock.Aeson
    > 
    > data Person = P { name :: String, age :: Int }
    >   deriving (ToJSON, FromJSON) via 
    >     Stock Person
    
    The wire format reproduces aeson's @genericToJSON@ \/
    @genericParseJSON defaultOptions@ exactly, __stock-aeson__ is a
    drop-in for @deriving anyclass (ToJSON, FromJSON)@.
    
    __stock-aeson__ provides six instances, that signal to the plugin
    how to derive
    @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@.
    
    > instance DeriveStock  ToJSON    ..
    > instance DeriveStock1 ToJSON1   ..
    > instance DeriveStock2 ToJSON2   ..
    > instance DeriveStock  FromJSON  ..
    > instance DeriveStock1 FromJSON1 ..
    > instance DeriveStock2 FromJSON2 ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at
    runtime): parameter fields route through the supplied per-parameter
    encoders\/parsers, so the bytes still match @aeson@'s generic
    deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    @<https://hackage.haskell.org/package/stock-deepseq stock>@ companion packages include:
    
    * @<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@: @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
    * @<https://hackage.haskell.org/package/stock-hashable stock-hashable>@: @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
    * __stock-aeson__: @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
    * @<https://hackage.haskell.org/package/stock-quickcheck stock-quickcheck>@: @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
    * @<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@: @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@
    to
    The @<https://hackage.haskell.org/package/stock stock>@ plugin
    provides a datatype for deriving and synthesising instances at
    compile time. __stock-aeson__ extends it to support
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    >
    > {-# language DerivingVia #-}
    >
    > import Stock
    > import Stock.Aeson
    >
    > data Person = P { name :: String, age :: Int }
    >   deriving (ToJSON, FromJSON) via
    >     Stock Person
    
    The wire format reproduces
    @<https://hackage.haskell.org/package/aeson aeson>@'s
    @genericToJSON@ \/ @genericParseJSON
    defaultOptions@. __stock-aeson__ is a drop-in for @deriving anyclass
    (ToJSON, FromJSON)@.
    
    __stock-aeson__ provides six instances, that signal to the plugin
    how to derive
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@.
    
    > instance DeriveStock  ToJSON    ..
    > instance DeriveStock1 ToJSON1   ..
    > instance DeriveStock2 ToJSON2   ..
    > instance DeriveStock  FromJSON  ..
    > instance DeriveStock1 FromJSON1 ..
    > instance DeriveStock2 FromJSON2 ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at
    runtime): parameter fields route through the supplied per-parameter
    encoders\/parsers, so the bytes still match @aeson@'s generic
    deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    @<https://hackage.haskell.org/package/stock-deepseq stock>@ companion packages include:
    
    * @<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@: @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
    * @<https://hackage.haskell.org/package/stock-hashable stock-hashable>@: @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
    * __stock-aeson__: @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
    * @<https://hackage.haskell.org/package/stock-quickcheck stock-quickcheck>@: @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
    * @<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@: @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@

-r2 2026-06-23T19:49:47Z BaldurBlondal bd7fc2efd323fd6463327547d6198d3673e757cdd05976eb3f2bf21a79161934
  • Changed description from

    The <https://hackage.haskell.org/package/stock stock> plugin provides a datatype for deriving and synthesising
    instances at compile time. @stock-aeson@ extends the <https://hackage.haskell.org/package/stock stock> with
    support for @FromJSON@ and @ToJSON@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    > 
    > {-# language DerivingVia #-}
    > 
    > import Stock
    > import Stock.Aeson
    > 
    > data T = MkT Int String
    >   deriving (ToJSON, FromJSON) via Stock T
    
    The wire format reproduces aeson's @genericToJSON \/ genericParseJSON
    defaultOptions@ exactly (a self-inverse tagged object,
    @{ "tag": "Con", "contents": [field0, …] }@), so @stock-aeson@ is a drop-in
    for @deriving stock Generic@ + @deriving anyclass (ToJSON, FromJSON)@.
    
    > instance DeriveStock  ToJSON     ..
    > instance DeriveStock  FromJSON   ..
    > instance DeriveStock1 ToJSON1    ..
    > instance DeriveStock1 FromJSON1  ..
    > instance DeriveStock2 ToJSON2    ..
    > instance DeriveStock2 FromJSON2  ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at runtime):
    parameter fields route through the supplied per-parameter encoders\/parsers, so
    the bytes still match @aeson@'s generic deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    (@aeson@ has no @Generic2@; the arity-2 encoding is defined to coincide with
    the value encoding when both per-parameter encoders are @toJSON@.)
    to
    The @<https://hackage.haskell.org/package/stock stock>@ plugin
    provides a datatype for deriving and synthesising instances at
    compile time. __stock-aeson__ extends it to support
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@,
    @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    > 
    > {-# language DerivingVia #-}
    > 
    > import Stock
    > import Stock.Aeson
    > 
    > data Person = P { name :: String, age :: Int }
    >   deriving (ToJSON, FromJSON) via 
    >     Stock Person
    
    The wire format reproduces aeson's @genericToJSON@ \/
    @genericParseJSON defaultOptions@ exactly, __stock-aeson__ is a
    drop-in for @deriving anyclass (ToJSON, FromJSON)@.
    
    __stock-aeson__ provides six instances, that signal to the plugin
    how to derive
    @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@.
    
    > instance DeriveStock  ToJSON    ..
    > instance DeriveStock1 ToJSON1   ..
    > instance DeriveStock2 ToJSON2   ..
    > instance DeriveStock  FromJSON  ..
    > instance DeriveStock1 FromJSON1 ..
    > instance DeriveStock2 FromJSON2 ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at
    runtime): parameter fields route through the supplied per-parameter
    encoders\/parsers, so the bytes still match @aeson@'s generic
    deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    @<https://hackage.haskell.org/package/stock-deepseq stock>@ companion packages include:
    
    * @<https://hackage.haskell.org/package/stock-deepseq stock-deepseq>@: @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData NFData>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData1 NFData1>@, @<https://hackage.haskell.org/package/deepseq/docs/Control-DeepSeq.html#t:NFData2 NFData2>@
    * @<https://hackage.haskell.org/package/stock-hashable stock-hashable>@: @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable.html#t:Hashable Hashable>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable1 Hashable1>@, @<https://hackage.haskell.org/package/hashable/docs/Data-Hashable-Lifted.html#t:Hashable2 Hashable2>@
    * __stock-aeson__: @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON ToJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON1 ToJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:ToJSON2 ToJSON2>@; @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON FromJSON>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON1 FromJSON1>@, @<https://hackage.haskell.org/package/aeson/docs/Data-Aeson.html#t:FromJSON2 FromJSON2>@
    * @<https://hackage.haskell.org/package/stock-quickcheck stock-quickcheck>@: @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary Arbitrary>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary1 Arbitrary1>@, @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:Arbitrary2 Arbitrary2>@; @<https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck.html#t:CoArbitrary CoArbitrary>@
    * @<https://hackage.haskell.org/package/stock-profunctors stock-profunctors>@: @<https://hackage.haskell.org/package/profunctors/docs/Data-Profunctor.html#t:Profunctor Profunctor>@

-r1 2026-06-23T16:28:58Z BaldurBlondal 277e62dcc9da7843a6f15205ab1608751013632b651913493af30401a15f1767
  • Changed description from

    The @stock@ plugin provides a datatype for deriving and synthesising
    instances at compile time. @stock-aeson@ extends the @stock@ with
    support for @FromJSON@ and @ToJSON@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    > 
    > {-# language DerivingVia #-}
    > 
    > import Stock
    > import Stock.Aeson
    > 
    > data T = MkT Int String
    >   deriving (ToJSON, FromJSON) via Stock T
    
    The wire format reproduces aeson's @genericToJSON \/ genericParseJSON
    defaultOptions@ exactly (a self-inverse tagged object,
    @{ "tag": "Con", "contents": [field0, …] }@), so @stock-aeson@ is a drop-in
    for @deriving stock Generic@ + @deriving anyclass (ToJSON, FromJSON)@.
    
    > instance DeriveStock  ToJSON     ..
    > instance DeriveStock  FromJSON   ..
    > instance DeriveStock1 ToJSON1    ..
    > instance DeriveStock1 FromJSON1  ..
    > instance DeriveStock2 ToJSON2    ..
    > instance DeriveStock2 FromJSON2  ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at runtime):
    parameter fields route through the supplied per-parameter encoders\/parsers, so
    the bytes still match @aeson@'s generic deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    (@aeson@ has no @Generic2@; the arity-2 encoding is defined to coincide with
    the value encoding when both per-parameter encoders are @toJSON@.)
    to
    The <https://hackage.haskell.org/package/stock stock> plugin provides a datatype for deriving and synthesising
    instances at compile time. @stock-aeson@ extends the <https://hackage.haskell.org/package/stock stock> with
    support for @FromJSON@ and @ToJSON@, and their higher-kinded variants.
    
    > {-# options_ghc -fplugin Stock #-}
    > 
    > {-# language DerivingVia #-}
    > 
    > import Stock
    > import Stock.Aeson
    > 
    > data T = MkT Int String
    >   deriving (ToJSON, FromJSON) via Stock T
    
    The wire format reproduces aeson's @genericToJSON \/ genericParseJSON
    defaultOptions@ exactly (a self-inverse tagged object,
    @{ "tag": "Con", "contents": [field0, …] }@), so @stock-aeson@ is a drop-in
    for @deriving stock Generic@ + @deriving anyclass (ToJSON, FromJSON)@.
    
    > instance DeriveStock  ToJSON     ..
    > instance DeriveStock  FromJSON   ..
    > instance DeriveStock1 ToJSON1    ..
    > instance DeriveStock1 FromJSON1  ..
    > instance DeriveStock2 ToJSON2    ..
    > instance DeriveStock2 FromJSON2  ..
    
    The lifted variants derive the same zero-cost way (no @Generic@ at runtime):
    parameter fields route through the supplied per-parameter encoders\/parsers, so
    the bytes still match @aeson@'s generic deriving.
    
    > data F a   = MkF a [a]   deriving (ToJSON1, FromJSON1) via Stock1 F
    > data P a b = MkP a b [b] deriving (ToJSON2, FromJSON2) via Stock2 P
    
    (@aeson@ has no @Generic2@; the arity-2 encoding is defined to coincide with
    the value encoding when both per-parameter encoders are @toJSON@.)

-r0 2026-06-23T15:43:51Z BaldurBlondal d6d1bed18aac7777e788cc806921669445bb42f5caed112160a5cca38b9d4cc2