Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ghc-aeson for openSUSE:Factory checked in at 2026-06-10 15:57:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-aeson (Old) and /work/SRC/openSUSE:Factory/.ghc-aeson.new.2375 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-aeson" Wed Jun 10 15:57:35 2026 rev:50 rq:1358326 version:2.2.5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-aeson/ghc-aeson.changes 2025-07-02 12:08:39.348598028 +0200 +++ /work/SRC/openSUSE:Factory/.ghc-aeson.new.2375/ghc-aeson.changes 2026-06-10 15:57:58.012686675 +0200 @@ -1,0 +2,12 @@ +Tue May 12 15:10:27 UTC 2026 - Peter Simons <[email protected]> + +- Update aeson to version 2.2.5.0. + ### 2.2.5.0 + + * Support `semialign-1.4` + + ### 2.2.4.0 + + * Check for control characters in text literals everywhere + +------------------------------------------------------------------- Old: ---- aeson-2.2.3.0.tar.gz aeson.cabal New: ---- aeson-2.2.5.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-aeson.spec ++++++ --- /var/tmp/diff_new_pack.y10iEt/_old 2026-06-10 15:57:59.212736404 +0200 +++ /var/tmp/diff_new_pack.y10iEt/_new 2026-06-10 15:57:59.212736404 +0200 @@ -1,7 +1,7 @@ # # spec file for package ghc-aeson # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,13 +20,12 @@ %global pkgver %{pkg_name}-%{version} %bcond_with tests Name: ghc-%{pkg_name} -Version: 2.2.3.0 +Version: 2.2.5.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/4.cabal#/%{pkg_name}.cabal BuildRequires: ghc-Cabal-devel BuildRequires: ghc-OneTuple-devel BuildRequires: ghc-OneTuple-prof @@ -48,8 +47,6 @@ BuildRequires: ghc-dlist-prof BuildRequires: ghc-exceptions-devel BuildRequires: ghc-exceptions-prof -BuildRequires: ghc-generically-devel -BuildRequires: ghc-generically-prof BuildRequires: ghc-hashable-devel BuildRequires: ghc-hashable-prof BuildRequires: ghc-indexed-traversable-devel @@ -111,6 +108,8 @@ BuildRequires: ghc-filepath-prof BuildRequires: ghc-generic-deriving-devel BuildRequires: ghc-generic-deriving-prof +BuildRequires: ghc-generically-devel +BuildRequires: ghc-generically-prof BuildRequires: ghc-quickcheck-instances-devel BuildRequires: ghc-quickcheck-instances-prof BuildRequires: ghc-tasty-devel @@ -159,7 +158,6 @@ %prep %autosetup -n %{pkg_name}-%{version} -cp -p %{SOURCE1} %{pkg_name}.cabal %build %ghc_lib_build ++++++ aeson-2.2.3.0.tar.gz -> aeson-2.2.5.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/README.markdown new/aeson-2.2.5.0/README.markdown --- old/aeson-2.2.3.0/README.markdown 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/README.markdown 2001-09-09 03:46:40.000000000 +0200 @@ -14,7 +14,7 @@ Master [git repository](http://github.com/haskell/aeson): -* `git clone git://github.com/haskell/aeson.git` +* `git clone https://github.com/haskell/aeson.git` See what's changed in recent (and upcoming) releases: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/aeson.cabal new/aeson-2.2.5.0/aeson.cabal --- old/aeson-2.2.3.0/aeson.cabal 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/aeson.cabal 2001-09-09 03:46:40.000000000 +0200 @@ -1,6 +1,6 @@ cabal-version: 2.2 name: aeson -version: 2.2.3.0 +version: 2.2.5.0 license: BSD-3-Clause license-file: LICENSE category: Text, Web, JSON @@ -18,9 +18,11 @@ || ==9.0.2 || ==9.2.8 || ==9.4.8 - || ==9.6.5 - || ==9.8.2 - || ==9.10.1 + || ==9.6.6 + || ==9.8.4 + || ==9.10.3 + || ==9.12.4 + || ==9.14.1 synopsis: Fast JSON parsing and encoding homepage: https://github.com/haskell/aeson @@ -94,19 +96,20 @@ build-depends: , base >=4.12.0.0 && <5 , bytestring >=0.10.8.2 && <0.13 - , containers >=0.6.0.1 && <0.8 + , containers >=0.6.0.1 && <0.9 , deepseq >=1.4.4.0 && <1.6 , exceptions >=0.10.4 && <0.11 - , ghc-prim >=0.5.0.0 && <0.12 - , template-haskell >=2.14.0.0 && <2.23 + , template-haskell >=2.14.0.0 && <2.25 , text >=1.2.3.0 && <1.3 || >=2.0 && <2.2 - , time >=1.8.0.2 && <1.13 + , time >=1.8.0.2 && <1.16 -- Compat build-depends: - , generically >=0.1 && <0.2 , time-compat >=1.9.6 && <1.10 + if !impl(ghc >=9.4) + build-depends: generically >=0.1 && <0.2 + if !impl(ghc >=9.0) build-depends: integer-gmp @@ -115,16 +118,16 @@ , character-ps ^>=0.1 , data-fix ^>=0.3.2 , dlist ^>=1.0 - , hashable ^>=1.4.6.0 + , hashable ^>=1.4.6.0 || ^>=1.5.0.0 , indexed-traversable ^>=0.1.2 , integer-conversion ^>=0.1 , integer-logarithms ^>=1.0.3.1 , network-uri ^>=2.6.4.1 , OneTuple ^>=0.4.1.1 , primitive ^>=0.8.0.0 || ^>=0.9.0.0 - , QuickCheck ^>=2.14.3 || ^>=2.15 + , QuickCheck ^>=2.14.3 || ^>=2.15 || ^>=2.16.0.0 || ^>=2.17.1.0 || ^>=2.18.0.0 , scientific ^>=0.3.7.0 - , semialign ^>=1.3 + , semialign ^>=1.3 || ^>=1.4 , strict ^>=0.5 , tagged ^>=0.8.7 , text-iso8601 ^>=0.1.1 @@ -134,7 +137,7 @@ , unordered-containers ^>=0.2.10.0 , uuid-types ^>=1.0.5 , vector ^>=0.13.0.0 - , witherable ^>=0.4.2 || ^>=0.5 + , witherable ^>=0.4.2 || ^>=0.5 ghc-options: -Wall @@ -174,6 +177,7 @@ Regression.Issue571 Regression.Issue687 Regression.Issue967 + Regression.Issue1138 RFC8785 SerializationFormatSpec Types @@ -201,22 +205,19 @@ , bytestring , containers , data-fix - , deepseq - , Diff >=0.4 && <0.6 + , Diff >=0.4 && <0.6 || ^>=1.0.2 , directory , dlist , filepath , generic-deriving >=1.10 && <1.15 , generically - , ghc-prim >=0.2 , hashable , indexed-traversable , integer-logarithms >=1 && <1.1 , network-uri , OneTuple - , primitive - , QuickCheck >=2.14.2 && <2.16 - , quickcheck-instances >=0.3.29 && <0.4 + , QuickCheck + , quickcheck-instances >=0.3.29 && <0.5 , scientific , strict , tagged @@ -224,7 +225,6 @@ , tasty-golden , tasty-hunit , tasty-quickcheck - , template-haskell , text , text-short , these @@ -242,4 +242,4 @@ source-repository head type: git - location: git://github.com/haskell/aeson.git + location: https://github.com/haskell/aeson.git diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/changelog.md new/aeson-2.2.5.0/changelog.md --- old/aeson-2.2.3.0/changelog.md 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/changelog.md 2001-09-09 03:46:40.000000000 +0200 @@ -1,5 +1,13 @@ For the latest version of this document, please see [https://github.com/haskell/aeson/blob/master/changelog.md](https://github.com/haskell/aeson/blob/master/changelog.md). +### 2.2.5.0 + +* Support `semialign-1.4` + +### 2.2.4.0 + +* Check for control characters in text literals everywhere + ### 2.2.3.0 * Support `hashable-1.4.6.0`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/src/Data/Aeson/Decoding/ByteString/Lazy.hs new/aeson-2.2.5.0/src/Data/Aeson/Decoding/ByteString/Lazy.hs --- old/aeson-2.2.3.0/src/Data/Aeson/Decoding/ByteString/Lazy.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/src/Data/Aeson/Decoding/ByteString/Lazy.hs 2001-09-09 03:46:40.000000000 +0200 @@ -159,7 +159,9 @@ Right t -> ok t (lbsDrop (n + 1) bs0) Left e -> err (show e) Just (92, bs') -> goSlash (n + 1) bs' - Just (_, bs') -> goEsc (n + 1) bs' + Just (w8, bs') + | w8 < 0x20 -> errCC + | otherwise -> goEsc (n + 1) bs' goSlash :: Int -> ByteString -> r goSlash !n !bs = case LBS.uncons bs of diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/src/Data/Aeson/Decoding/ByteString.hs new/aeson-2.2.5.0/src/Data/Aeson/Decoding/ByteString.hs --- old/aeson-2.2.3.0/src/Data/Aeson/Decoding/ByteString.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/src/Data/Aeson/Decoding/ByteString.hs 2001-09-09 03:46:40.000000000 +0200 @@ -153,7 +153,9 @@ Right t -> ok t (BS.drop (n + 1) bs0) Left e -> err (show e) Just (92, bs') -> goSlash (n + 1) bs' - Just (_, bs') -> goEsc (n + 1) bs' + Just (w8, bs') + | w8 < 0x20 -> errCC + | otherwise -> goEsc (n + 1) bs' goSlash :: Int -> ByteString -> r goSlash !n !bs = case BS.uncons bs of diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/src/Data/Aeson/Decoding/Text.hs new/aeson-2.2.5.0/src/Data/Aeson/Decoding/Text.hs --- old/aeson-2.2.3.0/src/Data/Aeson/Decoding/Text.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/src/Data/Aeson/Decoding/Text.hs 2001-09-09 03:46:40.000000000 +0200 @@ -36,7 +36,7 @@ #endif --- | Lex (and parse) strict 'ByteString' into 'Tokens' stream. +-- | Lex (and parse) strict 'Text' into 'Tokens' stream. -- -- @since 2.2.1.0 -- @@ -163,7 +163,9 @@ Right t -> ok t (unsafeDropPoints (n + 1) bs0) Left e -> err (show e) Just (92, bs') -> goSlash (n + 1) bs' - Just (_, bs') -> goEsc (n + 1) bs' + Just (w8, bs') + | w8 < 0x20 -> errCC + | otherwise -> goEsc (n + 1) bs' goSlash :: Int -> Text -> r goSlash !n !bs = case unconsPoint bs of diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/src/Data/Aeson/KeyMap.hs new/aeson-2.2.5.0/src/Data/Aeson/KeyMap.hs --- old/aeson-2.2.3.0/src/Data/Aeson/KeyMap.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/src/Data/Aeson/KeyMap.hs 2001-09-09 03:46:40.000000000 +0200 @@ -690,6 +690,12 @@ -- semialign ------------------------------------------------------------------------------- +-- | +-- +-- @since 2.2.5.0 +instance SA.Unzip KeyMap where + unzip = SA.unzipDefault + instance SA.Zip KeyMap where zipWith = intersectionWith diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/src/Data/Aeson/TH.hs new/aeson-2.2.5.0/src/Data/Aeson/TH.hs --- old/aeson-2.2.3.0/src/Data/Aeson/TH.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/src/Data/Aeson/TH.hs 2001-09-09 03:46:40.000000000 +0200 @@ -945,7 +945,7 @@ (appE [|show|] (varE unknownFields))) [] ] - x:xs = [ lookupField argTy + (x,xs) = nonEmpty [ lookupField argTy `appE` dispatchParseJSON jc conName tvMap argTy `appE` litE (stringL $ show tName) `appE` litE (stringL $ constructorTagModifier opts $ nameBase conName) @@ -955,6 +955,11 @@ | (field, argTy) <- zip fields argTys ] +-- A hack, as I'm too lazy to changge code to not assume fields are non empty. +nonEmpty :: [a] -> (a, [a]) +nonEmpty (x:xs) = (x,xs) +nonEmpty [] = error "unexpected empty list" + getValField :: Name -> String -> [MatchQ] -> Q Exp getValField obj valFieldName matches = do val <- newName "val" @@ -1056,12 +1061,12 @@ -> [Type] -- ^ The argument types of the constructor. -> Name -- ^ Name of the type to which the constructor belongs. -> Name -- ^ 'Con'structor name. - -> Integer -- ^ 'Con'structor arity. + -> Integer -- ^ 'Con'structor arity. >= 1 -> [Q Match] parseProduct jc tvMap argTys tName conName numArgs = [ do arr <- newName "arr" -- List of: "parseJSON (arr `V.unsafeIndex` <IX>)" - let x:xs = [ dispatchParseJSON jc conName tvMap argTy + let (x,xs) = nonEmpty [ dispatchParseJSON jc conName tvMap argTy `appE` infixApp (varE arr) [|V.unsafeIndex|] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/src/Data/Aeson/Types/ToJSON.hs new/aeson-2.2.5.0/src/Data/Aeson/Types/ToJSON.hs --- old/aeson-2.2.3.0/src/Data/Aeson/Types/ToJSON.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/src/Data/Aeson/Types/ToJSON.hs 2001-09-09 03:46:40.000000000 +0200 @@ -371,7 +371,7 @@ explicitToField f name value = KM.singleton name (f value) {-# INLINE explicitToField #-} --- | An optional key-value pair for envoding to a JSON object +-- | An optional key-value pair for encoding to a JSON object -- -- @since 2.2.0.0 -- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/src/Data/Aeson.hs new/aeson-2.2.5.0/src/Data/Aeson.hs --- old/aeson-2.2.3.0/src/Data/Aeson.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/src/Data/Aeson.hs 2001-09-09 03:46:40.000000000 +0200 @@ -253,7 +253,7 @@ -- | Like 'decodeFileStrict'' but returns an error message when decoding fails. -- --- Since @2.2.0.0@ an alias for 'eitherDecodeFileStrict''. +-- Since @2.2.0.0@ an alias for 'eitherDecodeFileStrict'. eitherDecodeFileStrict' :: (FromJSON a) => FilePath -> IO (Either String a) eitherDecodeFileStrict' = eitherDecodeFileStrict {-# INLINE eitherDecodeFileStrict' #-} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/tests/Instances.hs new/aeson-2.2.5.0/tests/Instances.hs --- old/aeson-2.2.3.0/tests/Instances.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/tests/Instances.hs 2001-09-09 03:46:40.000000000 +0200 @@ -28,6 +28,11 @@ import Data.Orphans () import Test.QuickCheck.Instances () +#if !MIN_VERSION_base(4,16,0) +import Data.Semigroup (Option (..)) +import Data.Tuple.Solo (Solo (..)) +#endif + -- "System" types. instance Arbitrary DotNetTime where @@ -157,9 +162,13 @@ #if !MIN_VERSION_base(4,16,0) instance Arbitrary OptionField where - arbitrary = OptionField <$> arbitrary + arbitrary = OptionField . Option <$> arbitrary #endif +#if !MIN_VERSION_base(4,16,0) && MIN_VERSION_QuickCheck(2,17,0) +instance Arbitrary a => Arbitrary (Solo a) where + arbitrary = MkSolo <$> arbitrary +#endif instance ApproxEq Char where (=~) = (==) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/tests/Regression/Issue1138.hs new/aeson-2.2.5.0/tests/Regression/Issue1138.hs --- old/aeson-2.2.3.0/tests/Regression/Issue1138.hs 1970-01-01 01:00:00.000000000 +0100 +++ new/aeson-2.2.5.0/tests/Regression/Issue1138.hs 2001-09-09 03:46:40.000000000 +0200 @@ -0,0 +1,23 @@ +{-# LANGUAGE OverloadedStrings #-} +module Regression.Issue1138 (issue1138) where + +import Test.Tasty (TestTree, testGroup) +import Test.Tasty.HUnit (testCase, assertFailure) + +import Data.Aeson + +assertDecodeFailure :: Either String Value -> IO () +assertDecodeFailure (Right v) = assertFailure $ "Unexpected success: " ++ show v +assertDecodeFailure (Left _) = return () + +issue1138 :: TestTree +issue1138 = testGroup "Issue #1138" $ map (testCase "-") + [ assertDecodeFailure $ eitherDecode "\"\t\"" + , assertDecodeFailure $ eitherDecode "\"\\\\\t\"" + + , assertDecodeFailure $ eitherDecodeStrict "\"\t\"" + , assertDecodeFailure $ eitherDecodeStrict "\"\\\\\t\"" + + , assertDecodeFailure $ eitherDecodeStrictText "\"\t\"" + , assertDecodeFailure $ eitherDecodeStrictText "\"\\\\\t\"" + ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aeson-2.2.3.0/tests/UnitTests.hs new/aeson-2.2.5.0/tests/UnitTests.hs --- old/aeson-2.2.3.0/tests/UnitTests.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/aeson-2.2.5.0/tests/UnitTests.hs 2001-09-09 03:46:40.000000000 +0200 @@ -64,6 +64,7 @@ import Regression.Issue571 import Regression.Issue687 import Regression.Issue967 +import Regression.Issue1138 import UnitTests.OmitNothingFieldsNote import UnitTests.FromJSONKey import UnitTests.Hashable @@ -568,6 +569,7 @@ , issue571 , issue687 , issue967 + , issue1138 , keyMapInsertWithTests , omitNothingFieldsNoteTests , noThunksTests
