From 1619f4601035d88c30879ef0974316f2e23c7feb0950c77cc13eca40c2d6835d Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 1 Mar 2024 19:00:04 +0000 Subject: [PATCH] osc copypac from project:devel:languages:haskell:ghc-9.8.x package:ghc-aeson revision:2, using keep-link OBS-URL: https://build.opensuse.org/package/show/devel:languages:haskell/ghc-aeson?expand=0&rev=86 --- aeson-2.1.2.1.tar.gz | 3 - aeson-2.2.1.0.tar.gz | 3 + aeson.cabal | 147 +++++++++++++++++++++++-------------------- ghc-aeson.changes | 69 ++++++++++++++++++++ ghc-aeson.spec | 18 +++--- 5 files changed, 161 insertions(+), 79 deletions(-) delete mode 100644 aeson-2.1.2.1.tar.gz create mode 100644 aeson-2.2.1.0.tar.gz diff --git a/aeson-2.1.2.1.tar.gz b/aeson-2.1.2.1.tar.gz deleted file mode 100644 index 440846a..0000000 --- a/aeson-2.1.2.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5d4042b903ce181ee023bbf908f37a3f55e820c5f0df102683b87f963e3522c6 -size 335908 diff --git a/aeson-2.2.1.0.tar.gz b/aeson-2.2.1.0.tar.gz new file mode 100644 index 0000000..7c91730 --- /dev/null +++ b/aeson-2.2.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:914eefd0e80d12db5c721daa2cbab427acee39795f125c5460c1fe48cf9a5d7f +size 341038 diff --git a/aeson.cabal b/aeson.cabal index 1a5930e..fce03b8 100644 --- a/aeson.cabal +++ b/aeson.cabal @@ -1,6 +1,6 @@ name: aeson -version: 2.1.2.1 -x-revision: 3 +version: 2.2.1.0 +x-revision: 1 license: BSD3 license-file: LICENSE category: Text, Web, JSON @@ -12,19 +12,19 @@ author: Bryan O'Sullivan maintainer: Adam Bergmark stability: experimental tested-with: - GHC ==8.0.2 - || ==8.2.2 + GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 - || ==9.2.7 - || ==9.4.4 - || ==9.6.1 + || ==9.2.8 + || ==9.4.7 + || ==9.6.3 + || ==9.8.1 synopsis: Fast JSON parsing and encoding -cabal-version: >=1.10 +cabal-version: 1.12 homepage: https://github.com/haskell/aeson bug-reports: https://github.com/haskell/aeson/issues build-type: Simple @@ -40,24 +40,14 @@ description: extra-source-files: *.yaml benchmarks/json-data/*.json - cbits/*.c changelog.md README.markdown - src-ffi/Data/Aeson/Parser/*.hs - src-pure/Data/Aeson/Parser/*.hs tests/golden/*.expected tests/JSONTestSuite/results/*.tok tests/JSONTestSuite/results/*.txt tests/JSONTestSuite/test_parsing/*.json tests/JSONTestSuite/test_transform/*.json -flag cffi - description: - Controls whether to include c-ffi bits or pure haskell. Default to False for security. - - default: False - manual: True - flag ordered-keymap description: Use ordered @Data.Map.Strict@ for KeyMap implementation. default: True @@ -65,100 +55,96 @@ flag ordered-keymap library default-language: Haskell2010 - hs-source-dirs: src attoparsec-iso8601/src + hs-source-dirs: src exposed-modules: Data.Aeson Data.Aeson.Decoding Data.Aeson.Decoding.ByteString Data.Aeson.Decoding.ByteString.Lazy + Data.Aeson.Decoding.Text Data.Aeson.Decoding.Tokens Data.Aeson.Encoding Data.Aeson.Encoding.Internal - Data.Aeson.Internal - Data.Aeson.Internal.Time Data.Aeson.Key Data.Aeson.KeyMap - Data.Aeson.Parser - Data.Aeson.Parser.Internal Data.Aeson.QQ.Simple + Data.Aeson.RFC8785 Data.Aeson.Text Data.Aeson.TH Data.Aeson.Types other-modules: + Data.Aeson.Decoding.Conversion Data.Aeson.Decoding.Internal Data.Aeson.Encoding.Builder Data.Aeson.Internal.ByteString Data.Aeson.Internal.Functions - Data.Aeson.Internal.Integer + Data.Aeson.Internal.Prelude + Data.Aeson.Internal.Scientific Data.Aeson.Internal.Text Data.Aeson.Internal.TH + Data.Aeson.Internal.Unescape + Data.Aeson.Internal.UnescapeFromText Data.Aeson.Internal.Word8 + Data.Aeson.Internal.Word16 Data.Aeson.Parser.Time - Data.Aeson.Parser.Unescape Data.Aeson.Types.Class Data.Aeson.Types.FromJSON Data.Aeson.Types.Generic Data.Aeson.Types.Internal Data.Aeson.Types.ToJSON - Data.Attoparsec.Time - Data.Attoparsec.Time.Internal -- GHC bundled libs build-depends: - base >=4.9.0.0 && <5 - , bytestring >=0.10.8.1 && <0.12 - , containers >=0.5.7.1 && <0.7 - , deepseq >=1.4.2.0 && <1.5 + base >=4.10.0.0 && <5 + , bytestring >=0.10.8.2 && <0.13 + , containers >=0.5.10.2 && <0.7 + , deepseq >=1.4.3.0 && <1.6 , exceptions >=0.10.4 && <0.11 - , ghc-prim >=0.5.0.0 && <0.11 - , template-haskell >=2.11.0.0 && <2.21 - , text >=1.2.3.0 && <1.3 || >=2.0 && <2.1 - , time >=1.6.0.1 && <1.13 + , ghc-prim >=0.5.0.0 && <0.12 + , template-haskell >=2.12.0.0 && <2.22 + , text >=1.2.3.0 && <1.3 || >=2.0 && <2.2 + , time >=1.8.0.2 && <1.13 -- Compat build-depends: - base-compat-batteries >=0.10.0 && <0.14 - , generically >=0.1 && <0.2 - , time-compat >=1.9.6 && <1.10 + generically >=0.1 && <0.2 + , time-compat >=1.9.6 && <1.10 if !impl(ghc >=8.6) build-depends: contravariant >=1.4.1 && <1.6 + if !impl(ghc >=9.0) + build-depends: integer-gmp + -- Other dependencies build-depends: - attoparsec >=0.14.2 && <0.15 - , data-fix >=0.3.2 && <0.4 - , dlist >=0.8.0.4 && <1.1 - , hashable >=1.3.5.0 && <1.5 + data-fix >=0.3.2 && <0.4 + , dlist >=1.0 && <1.1 + , hashable >=1.4.2.0 && <1.5 , indexed-traversable >=0.1.2 && <0.2 - , OneTuple >=0.3.1 && <0.5 - , primitive >=0.7.3.0 && <0.9 - , QuickCheck >=2.14.2 && <2.15 + , integer-conversion >=0.1 && <0.2 + , integer-logarithms >=1.0.3.1 && <1.1 + , network-uri >=2.6.4.1 && <2.7 + , OneTuple >=0.4.1.1 && <0.5 + , primitive >=0.8.0.0 && <0.10 + , QuickCheck >=2.14.3 && <2.15 , scientific >=0.3.7.0 && <0.4 - , semialign >=1.2 && <1.4 - , strict >=0.4 && <0.6 - , tagged >=0.8.6 && <0.9 + , semialign >=1.3 && <1.4 + , strict >=0.5 && <0.6 + , tagged >=0.8.7 && <0.9 + , text-iso8601 >=0.1 && <0.2 , text-short >=0.1.5 && <0.2 - , th-abstraction >=0.3.0.0 && <0.6 - , these >=1.1.1.1 && <1.3 + , th-abstraction >=0.5.0.0 && <0.7 + , these >=1.2 && <1.3 , unordered-containers >=0.2.10.0 && <0.3 , uuid-types >=1.0.5 && <1.1 - , vector >=0.12.0.1 && <0.14 + , vector >=0.13.0.0 && <0.14 , witherable >=0.4.2 && <0.5 ghc-options: -Wall - if (impl(ghcjs) || !flag(cffi)) - hs-source-dirs: src-pure - other-modules: Data.Aeson.Parser.UnescapePure - - else - c-sources: cbits/unescape_string.c - cpp-options: -DCFFI - hs-source-dirs: src-ffi - other-modules: Data.Aeson.Parser.UnescapeFFI - build-depends: text <2.0 + -- String unescaping if flag(ordered-keymap) cpp-options: -DUSE_ORDEREDMAP=1 @@ -170,10 +156,12 @@ test-suite aeson-tests main-is: Tests.hs ghc-options: -Wall -threaded -rtsopts other-modules: + CastFloat DataFamilies.Encoders DataFamilies.Instances DataFamilies.Properties DataFamilies.Types + DoubleToScientific Encoders ErrorMessages Functions @@ -188,36 +176,53 @@ test-suite aeson-tests PropertyRTFunctors PropertyTH PropUtils + Regression.Issue351 + Regression.Issue571 + Regression.Issue687 Regression.Issue967 + RFC8785 SerializationFormatSpec Types UnitTests + UnitTests.FromJSONKey + UnitTests.Hashable + UnitTests.KeyMapInsertWith + UnitTests.MonadFix + UnitTests.NoThunks UnitTests.NullaryConstructors + UnitTests.OmitNothingFieldsNote + UnitTests.OptionalFields + UnitTests.OptionalFields.Common + UnitTests.OptionalFields.Generics + UnitTests.OptionalFields.Manual + UnitTests.OptionalFields.TH + UnitTests.UTCTime build-depends: aeson - , attoparsec , base , base-compat - , base-orphans >=0.5.3 && <0.10 + , base-orphans >=0.5.3 && <0.10 , base16-bytestring , bytestring , containers , data-fix - , Diff >=0.4 && <0.5 + , deepseq + , Diff >=0.4 && <0.5 , directory , dlist , filepath - , generic-deriving >=1.10 && <1.15 + , generic-deriving >=1.10 && <1.15 , generically , ghc-prim >=0.2 , hashable , indexed-traversable - , integer-logarithms >=1 && <1.1 + , integer-logarithms >=1 && <1.1 + , network-uri , OneTuple , primitive - , QuickCheck >=2.14.2 && <2.15 - , quickcheck-instances >=0.3.29 && <0.4 + , QuickCheck >=2.14.2 && <2.15 + , quickcheck-instances >=0.3.29 && <0.4 , scientific , strict , tagged @@ -235,6 +240,12 @@ test-suite aeson-tests , uuid-types , vector + if !impl(ghc >=9.0) + build-depends: integer-gmp + + if impl(ghc >=9.2 && <9.7) + build-depends: nothunks >=0.1.4 && <0.2 + source-repository head type: git location: git://github.com/haskell/aeson.git diff --git a/ghc-aeson.changes b/ghc-aeson.changes index 00ef811..6417053 100644 --- a/ghc-aeson.changes +++ b/ghc-aeson.changes @@ -1,3 +1,72 @@ +------------------------------------------------------------------- +Mon Oct 16 15:54:05 UTC 2023 - Peter Simons + +- Update aeson to version 2.2.1.0 revision 1. + ### 2.2.1.0 + + * Add `Data.Aeson.RFC8785`, a JSON Canonicalization Scheme implementation + https://datatracker.ietf.org/doc/html/rfc8785 + * Add Data.Aeson.Decoding.Text, decodeStrictText :: Text -> ... + + We avoid intermediate `ByteString` copy by not doing + `decode . TE.encodeUtf8`, but instead working on `Text` value directly. + As we know that the stream is valid Unicode (UTF8 or UTF16), + we can also take some shortcuts. + + One gotcha is that internal `Text` values (in `Key`s or `Value` `String`s) + will most likely retain the original input `Text` value (its underlying `Array`). + It shouldn't be an issue if the `Value` is then decoded to something else so these + `Text` values disapper, but if not (e.g. `Object` keys survive) + then users might want to use `Data.Text.copy`. + + ### 2.2.0.0 + + * Rework how `omitNothingFields` works. Add `allowOmittedFields` as a parsing counterpart. + + New type-class members were added: `omitField :: a -> Bool` to `ToJSON` and `omittedField :: Maybe a` to `FromJSON`. + These control which fields can be omitted. + The `.:?=`, `.:!=` and `.?=` operators were added to make use of these new members. + + GHC.Generics and Template Haskell deriving has been updated accordingly. + Note: They behave as the parsers have been written with `.:!=`, i.e. + if the field value is `null` it's passed to the underlying parser. + This doesn't make difference for `Maybe` or `Option`, but does make for + types which parser doesn't accept `null`. + (`()` parser accepts everything and `Proxy` accepts `null). + + In addition to `Maybe` (and `Option`) fields the `Data.Monoid.First` and `Data.Monoid.Last` are also omitted, + as well as the most newtype wrappers, when their wrap omittable type (e.g. newtypes in `Data.Monoid` and `Data.Semigroup`, `Identity`, `Const`, `Tagged`, `Compose`). + Additionall "boring" types like `()` and `Proxy` are omitted as well. + As the omitting is now uniform, type arguments are also omitted (also in `Generic1` derived instance). + + Resolves issues: + + - [#687](https://github.com/haskell/aeson/issues/687) Derived ToJSON1 instance does not respect omitNothingFields = True, + - [#571](https://github.com/haskell/aeson/issues/571) omitNothingFields not used in Generic Decode, + - [#792](https://github.com/haskell/aeson/issues/792) Make Proxy fields optional. + + * Use `Data.Aeson.Decoding` parsing functions (introduced in version 2.1.2.0) as default in `Data.Aeson`. + As one side-effect, `decode` and `decode'` etc pair functions are operationally the same. + All variants use an intermediate `Value` in normal form. + + The lazier variant could had `Value` thunks inside `Array` (i.e. `Vector`), but the record had been value strict since version `0.4.0.0` (before that the lazy `Data.Map` was used as `Object`). + + * Move `Data.Aeson.Parser` module into separate [`attoparsec-aeson`](https://hackage.haskell.org/package/attoparsec-aeson) package, as these parsers are not used by `aeson` itself anymore. + * Use [`text-iso8601`](https://hackage.haskell.org/package/text-iso8601) package for parsing `time` types. These are slightly faster than previously used (copy of) `attoparsec-iso8601`. + Formats accepted is slightly changed: + - The space between time and timezone offset (in `UTCTime` and `ZonedTime`) is disallowed. ISO8601 explictly forbidds it. + - The timezone offsets can be in range -23:59..23:59. This is how Python, joda-time etc seems to do. (Previously the range was -12..+14) + + * Remove internal `Data.Aeson.Internal` and `Data.Aeson.Internal.Time` modules. Everything from the former is exported elsewhere (`Data.Aeson.Types`), the latter was truly internal. + * Remove `cffi` flag. Toggling the flag made `aeson` use a C implementation for string unescaping (used for `text <2` versions). + The new native Haskell implementation (introduced in version 2.0.3.0) is at least as fast. + * Drop instances for `Number` from `attoparsec` package. + * Improve `Arbitrary Value` instance. + * Add instances for `URI` from `network-uri`. + * add instances for `Down` from `Data.Ord`. + * Use `integer-conversion` for converting `Text` and `ByteString`s into `Integer`s. + * Bump lower bounds of non GHC-boot lib dependencies. + ------------------------------------------------------------------- Tue Aug 22 09:29:21 UTC 2023 - Peter Simons diff --git a/ghc-aeson.spec b/ghc-aeson.spec index 92a07c3..0e86c8f 100644 --- a/ghc-aeson.spec +++ b/ghc-aeson.spec @@ -20,22 +20,18 @@ %global pkgver %{pkg_name}-%{version} %bcond_with tests Name: ghc-%{pkg_name} -Version: 2.1.2.1 +Version: 2.2.1.0 Release: 0 Summary: Fast JSON parsing and encoding License: BSD-3-Clause URL: https://hackage.haskell.org/package/%{pkg_name} Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz -Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/3.cabal#/%{pkg_name}.cabal +Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal#/%{pkg_name}.cabal BuildRequires: ghc-Cabal-devel BuildRequires: ghc-OneTuple-devel BuildRequires: ghc-OneTuple-prof BuildRequires: ghc-QuickCheck-devel BuildRequires: ghc-QuickCheck-prof -BuildRequires: ghc-attoparsec-devel -BuildRequires: ghc-attoparsec-prof -BuildRequires: ghc-base-compat-batteries-devel -BuildRequires: ghc-base-compat-batteries-prof BuildRequires: ghc-base-devel BuildRequires: ghc-base-prof BuildRequires: ghc-bytestring-devel @@ -56,6 +52,12 @@ BuildRequires: ghc-hashable-devel BuildRequires: ghc-hashable-prof BuildRequires: ghc-indexed-traversable-devel BuildRequires: ghc-indexed-traversable-prof +BuildRequires: ghc-integer-conversion-devel +BuildRequires: ghc-integer-conversion-prof +BuildRequires: ghc-integer-logarithms-devel +BuildRequires: ghc-integer-logarithms-prof +BuildRequires: ghc-network-uri-devel +BuildRequires: ghc-network-uri-prof BuildRequires: ghc-primitive-devel BuildRequires: ghc-primitive-prof BuildRequires: ghc-rpm-macros @@ -70,6 +72,8 @@ BuildRequires: ghc-tagged-prof BuildRequires: ghc-template-haskell-devel BuildRequires: ghc-template-haskell-prof BuildRequires: ghc-text-devel +BuildRequires: ghc-text-iso8601-devel +BuildRequires: ghc-text-iso8601-prof BuildRequires: ghc-text-prof BuildRequires: ghc-text-short-devel BuildRequires: ghc-text-short-prof @@ -105,8 +109,6 @@ BuildRequires: ghc-filepath-devel BuildRequires: ghc-filepath-prof BuildRequires: ghc-generic-deriving-devel BuildRequires: ghc-generic-deriving-prof -BuildRequires: ghc-integer-logarithms-devel -BuildRequires: ghc-integer-logarithms-prof BuildRequires: ghc-quickcheck-instances-devel BuildRequires: ghc-quickcheck-instances-prof BuildRequires: ghc-tasty-devel