Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 18 additions & 13 deletions .github/workflows/haskell-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ jobs:
strategy:
matrix:
include:
- compiler: ghc-9.4.2
compilerKind: ghc
compilerVersion: 9.4.2
setup-method: ghcup
allow-failure: false
- compiler: ghc-9.2.4
compilerKind: ghc
compilerVersion: 9.2.4
Expand Down Expand Up @@ -177,8 +182,8 @@ jobs:
touch cabal.project
echo "packages: $GITHUB_WORKSPACE/source/strict-containers" >> cabal.project
echo "packages: $GITHUB_WORKSPACE/source/strict-containers-lens" >> cabal.project
echo "packages: $GITHUB_WORKSPACE/source/strict-containers-serialise" >> cabal.project
echo "packages: $GITHUB_WORKSPACE/source/strict-containers-tests" >> cabal.project
if [ $((HCNUMVER >= 80400)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/strict-containers-serialise" >> cabal.project ; fi
if [ $((HCNUMVER >= 80600)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/strict-containers-tests" >> cabal.project ; fi
cat cabal.project
- name: sdist
run: |
Expand All @@ -203,19 +208,19 @@ jobs:
touch cabal.project.local
echo "packages: ${PKGDIR_strict_containers}" >> cabal.project
echo "packages: ${PKGDIR_strict_containers_lens}" >> cabal.project
echo "packages: ${PKGDIR_strict_containers_serialise}" >> cabal.project
echo "packages: ${PKGDIR_strict_containers_tests}" >> cabal.project
if [ $((HCNUMVER >= 80400)) -ne 0 ] ; then echo "packages: ${PKGDIR_strict_containers_serialise}" >> cabal.project ; fi
if [ $((HCNUMVER >= 80600)) -ne 0 ] ; then echo "packages: ${PKGDIR_strict_containers_tests}" >> cabal.project ; fi
echo "package strict-containers" >> cabal.project
echo " ghc-options: -Werror=missing-methods" >> cabal.project
echo "package strict-containers-lens" >> cabal.project
echo " ghc-options: -Werror=missing-methods" >> cabal.project
echo "package strict-containers-serialise" >> cabal.project
echo " ghc-options: -Werror=missing-methods" >> cabal.project
echo "package strict-containers-tests" >> cabal.project
echo " ghc-options: -Werror=missing-methods" >> cabal.project
if [ $((HCNUMVER >= 80400)) -ne 0 ] ; then echo "package strict-containers-serialise" >> cabal.project ; fi
if [ $((HCNUMVER >= 80400)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
if [ $((HCNUMVER >= 80600)) -ne 0 ] ; then echo "package strict-containers-tests" >> cabal.project ; fi
if [ $((HCNUMVER >= 80600)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
cat >> cabal.project <<EOF
EOF
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(strict-containers|strict-containers-lens|strict-containers-serialise|strict-containers-tests)$/; }' >> cabal.project.local
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(binary|containers|ghc-heap|strict-containers|strict-containers-lens|strict-containers-serialise|strict-containers-tests|text)$/; }' >> cabal.project.local
cat cabal.project
cat cabal.project.local
- name: dump install plan
Expand Down Expand Up @@ -243,10 +248,10 @@ jobs:
${CABAL} -vnormal check
cd ${PKGDIR_strict_containers_lens} || false
${CABAL} -vnormal check
cd ${PKGDIR_strict_containers_serialise} || false
${CABAL} -vnormal check
cd ${PKGDIR_strict_containers_tests} || false
${CABAL} -vnormal check
if [ $((HCNUMVER >= 80400)) -ne 0 ] ; then cd ${PKGDIR_strict_containers_serialise} || false ; fi
if [ $((HCNUMVER >= 80400)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi
if [ $((HCNUMVER >= 80600)) -ne 0 ] ; then cd ${PKGDIR_strict_containers_tests} || false ; fi
if [ $((HCNUMVER >= 80600)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi
- name: haddock
run: |
$CABAL v2-haddock --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
Expand Down
5 changes: 5 additions & 0 deletions cabal.haskell-ci
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,8 @@ install-dependencies: False

-- to allow different set of packages per GHC versions
jobs-selection: any

-- we depend on containers which is a core package (comes installed with ghc)
-- by default, haskell-ci forbids these from being upgraded; override that here
-- also override the rdeps of containers, as per their haskell-ci config
installed: +all -containers -binary -text -ghc-heap
2 changes: 1 addition & 1 deletion contrib/containers
Submodule containers updated 64 files
+239 −0 .github/workflows/haskell-ci.yml
+0 −169 .travis.yml
+3 −4 cabal.haskell-ci
+29 −5 containers-tests/benchmarks/IntMap.hs
+1 −4 containers-tests/benchmarks/IntSet.hs
+1 −1 containers-tests/benchmarks/LookupGE/IntMap.hs
+1 −1 containers-tests/benchmarks/LookupGE/LookupGE_IntMap.hs
+1 −1 containers-tests/benchmarks/LookupGE/Map.hs
+3 −8 containers-tests/benchmarks/Map.hs
+4 −4 containers-tests/benchmarks/Sequence.hs
+1 −1 containers-tests/benchmarks/Set.hs
+1 −1 containers-tests/benchmarks/SetOperations/SetOperations.hs
+89 −197 containers-tests/containers-tests.cabal
+1 −1 containers-tests/tests/IntMapValidity.hs
+2 −2 containers-tests/tests/IntSetValidity.hs
+15 −0 containers-tests/tests/Utils/NoThunks.hs
+4 −8 containers-tests/tests/bitqueue-properties.hs
+15 −28 containers-tests/tests/intmap-properties.hs
+35 −16 containers-tests/tests/intmap-strictness.hs
+5 −6 containers-tests/tests/intset-properties.hs
+35 −5 containers-tests/tests/intset-strictness.hs
+4 −5 containers-tests/tests/listutils-properties.hs
+29 −7 containers-tests/tests/map-properties.hs
+47 −14 containers-tests/tests/map-strictness.hs
+35 −33 containers-tests/tests/seq-properties.hs
+24 −11 containers-tests/tests/set-properties.hs
+4 −5 containers-tests/tests/tree-properties.hs
+1 −1 containers/README.md
+33 −1 containers/changelog.md
+4 −4 containers/containers.cabal
+1 −1 containers/docs/sequence.rst
+3 −3 containers/docs/set.rst
+7 −18 containers/include/containers.h
+11 −18 containers/src/Data/Graph.hs
+6 −8 containers/src/Data/IntMap.hs
+134 −198 containers/src/Data/IntMap/Internal.hs
+4 −5 containers/src/Data/IntMap/Lazy.hs
+0 −13 containers/src/Data/IntMap/Merge/Lazy.hs
+0 −15 containers/src/Data/IntMap/Merge/Strict.hs
+4 −5 containers/src/Data/IntMap/Strict.hs
+52 −57 containers/src/Data/IntMap/Strict/Internal.hs
+4 −5 containers/src/Data/IntSet.hs
+75 −243 containers/src/Data/IntSet/Internal.hs
+173 −212 containers/src/Data/Map/Internal.hs
+3 −3 containers/src/Data/Map/Internal/Debug.hs
+3 −1 containers/src/Data/Map/Lazy.hs
+1 −14 containers/src/Data/Map/Merge/Lazy.hs
+1 −14 containers/src/Data/Map/Merge/Strict.hs
+3 −1 containers/src/Data/Map/Strict.hs
+68 −67 containers/src/Data/Map/Strict/Internal.hs
+2 −2 containers/src/Data/Sequence.hs
+82 −88 containers/src/Data/Sequence/Internal.hs
+1 −1 containers/src/Data/Sequence/Internal/sorting.md
+1 −1 containers/src/Data/Set.hs
+113 −116 containers/src/Data/Set/Internal.hs
+11 −28 containers/src/Data/Tree.hs
+1 −14 containers/src/Utils/Containers/Internal/BitQueue.hs
+1 −32 containers/src/Utils/Containers/Internal/BitUtil.hs
+3 −3 containers/src/Utils/Containers/Internal/Coercions.hs
+2 −11 containers/src/Utils/Containers/Internal/PtrEquality.hs
+6 −7 containers/src/Utils/Containers/Internal/State.hs
+0 −5 containers/src/Utils/Containers/Internal/StrictMaybe.hs
+3 −11 containers/src/Utils/Containers/Internal/TypeError.hs
+15 −0 containers/src/Utils/NoThunks.hs
2 changes: 1 addition & 1 deletion contrib/vector
Submodule vector updated 80 files
+30 −22 .github/workflows/ci.yml
+0 −30 LICENSE
+1 −0 LICENSE
+0 −6 README.md
+1 −0 README.md
+0 −82 benchmarks/Main.hs
+0 −47 benchmarks/TestData/Graph.hs
+0 −17 benchmarks/TestData/Random.hs
+0 −1 benchmarks/cabal.project
+0 −37 benchmarks/vector-benchmarks.cabal
+3 −1 cabal.project
+0 −20 include/vector.h
+2 −2 old-testsuite/microsuite/Test.hs
+0 −4 tests/doctests.hs
+7 −5 vector-stream/LICENSE
+6 −0 vector-stream/README.md
+0 −0 vector-stream/Setup.hs
+4 −0 vector-stream/changelog.md
+85 −68 vector-stream/src/Data/Stream/Monadic.hs
+52 −0 vector-stream/vector-stream.cabal
+32 −0 vector/LICENSE
+6 −0 vector/README.md
+0 −0 vector/Setup.hs
+0 −0 vector/benchmarks/Algo/AwShCC.hs
+24 −0 vector/benchmarks/Algo/FindIndexR.hs
+0 −0 vector/benchmarks/Algo/HybCC.hs
+0 −0 vector/benchmarks/Algo/Leaffix.hs
+0 −0 vector/benchmarks/Algo/ListRank.hs
+30 −0 vector/benchmarks/Algo/MutableSet.hs
+0 −0 vector/benchmarks/Algo/Quickhull.hs
+0 −0 vector/benchmarks/Algo/Rootfix.hs
+0 −0 vector/benchmarks/Algo/Spectral.hs
+0 −0 vector/benchmarks/Algo/Tridiag.hs
+85 −0 vector/benchmarks/Main.hs
+1 −1 vector/benchmarks/README.md
+41 −0 vector/benchmarks/TestData/Graph.hs
+0 −0 vector/benchmarks/TestData/ParenTree.hs
+73 −1 vector/changelog.md
+8 −0 vector/include/vector.h
+5 −4 vector/internal/GenUnboxTuple.hs
+20 −20 vector/internal/unbox-tuple-instances
+473 −255 vector/src/Data/Vector.hs
+10 −10 vector/src/Data/Vector/Fusion/Bundle.hs
+51 −42 vector/src/Data/Vector/Fusion/Bundle/Monadic.hs
+4 −1 vector/src/Data/Vector/Fusion/Bundle/Size.hs
+20 −0 vector/src/Data/Vector/Fusion/Stream/Monadic.hs
+6 −20 vector/src/Data/Vector/Fusion/Util.hs
+491 −291 vector/src/Data/Vector/Generic.hs
+29 −31 vector/src/Data/Vector/Generic/Base.hs
+223 −339 vector/src/Data/Vector/Generic/Mutable.hs
+25 −23 vector/src/Data/Vector/Generic/Mutable/Base.hs
+8 −4 vector/src/Data/Vector/Generic/New.hs
+38 −38 vector/src/Data/Vector/Internal/Check.hs
+113 −50 vector/src/Data/Vector/Mutable.hs
+406 −229 vector/src/Data/Vector/Primitive.hs
+139 −50 vector/src/Data/Vector/Primitive/Mutable.hs
+391 −237 vector/src/Data/Vector/Storable.hs
+5 −3 vector/src/Data/Vector/Storable/Internal.hs
+132 −92 vector/src/Data/Vector/Storable/Mutable.hs
+458 −231 vector/src/Data/Vector/Unboxed.hs
+290 −91 vector/src/Data/Vector/Unboxed/Base.hs
+94 −43 vector/src/Data/Vector/Unboxed/Mutable.hs
+19 −0 vector/tests-inspect/Inspect.hs
+75 −0 vector/tests-inspect/Inspect/DerivingVia.hs
+30 −0 vector/tests-inspect/Inspect/DerivingVia/OtherFoo.hs
+16 −0 vector/tests-inspect/main.hs
+0 −0 vector/tests/Boilerplater.hs
+0 −0 vector/tests/LICENSE
+0 −0 vector/tests/Main.hs
+0 −0 vector/tests/Setup.hs
+6 −10 vector/tests/Tests/Bundle.hs
+0 −0 vector/tests/Tests/Move.hs
+0 −0 vector/tests/Tests/Vector.hs
+7 −2 vector/tests/Tests/Vector/Boxed.hs
+9 −2 vector/tests/Tests/Vector/Primitive.hs
+65 −38 vector/tests/Tests/Vector/Property.hs
+9 −2 vector/tests/Tests/Vector/Storable.hs
+12 −4 vector/tests/Tests/Vector/Unboxed.hs
+31 −8 vector/tests/Tests/Vector/UnitTests.hs
+3 −3 vector/tests/Utilities.hs
+4 −0 vector/tests/doctests.hs
+78 −45 vector/vector.cabal
5 changes: 3 additions & 2 deletions strict-containers-lens/strict-containers-lens.cabal
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Name: strict-containers-lens
Version: 0.1.1
Version: 0.2
Synopsis: Strict containers - Lens instances
Category: Data, Data Structures, Lenses
Description:
Expand All @@ -21,6 +21,7 @@ tested-with:
|| ==8.10.7
|| ==9.0.2
|| ==9.2.4
|| ==9.4.2

library
default-language: Haskell2010
Expand All @@ -30,7 +31,7 @@ library
build-depends:
base >= 4.5.0.0 && < 5
, hashable >= 1.2.7.0 && < 1.5
, strict-containers >= 0.1
, strict-containers >= 0.2
, lens >= 4.19 && < 6

exposed-modules:
Expand Down
16 changes: 8 additions & 8 deletions strict-containers-serialise/strict-containers-serialise.cabal
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Name: strict-containers-serialise
Version: 0.1.1
Version: 0.2
Synopsis: Strict containers - Serialise instances
Category: Data, Data Structures, Codec
Description:
Expand All @@ -14,25 +14,25 @@ Build-type: Simple
extra-source-files:
CHANGELOG.md
tested-with:
GHC ==8.2.2
|| ==8.4.4
GHC ==8.4.4
|| ==8.6.5
|| ==8.8.4
|| ==8.10.7
|| ==9.0.2
|| ==9.2.4
|| ==9.4.2

library
default-language: Haskell2010
hs-source-dirs: src
ghc-options: -Wall

build-depends:
base >= 4.5.0.0 && < 5
, cborg >= 0.2 && < 0.3
, hashable >= 1.2.7.0 && < 1.5
, strict-containers >= 0.1
, serialise >= 0.2.3.0 && < 0.3
base >= 4.11.0.0 && < 5
, cborg >= 0.2 && < 0.3
, hashable >= 1.2.7.0 && < 1.5
, strict-containers >= 0.2
, serialise >= 0.2.6.0 && < 0.3

exposed-modules:
Data.Strict.Containers.Serialise
4 changes: 0 additions & 4 deletions strict-containers-tests/StrictTests.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@ module Main (main) where
import Test.Tasty (TestTree, defaultMain, testGroup)
import Test.Tasty.HUnit

#if __GLASGOW_HASKELL__ >= 806
import GHC.Exts.Heap
#else
import GHC.HeapView
#endif

import qualified Data.Strict.HashMap as SHM
import qualified Data.Strict.IntMap as SIM
Expand Down
23 changes: 9 additions & 14 deletions strict-containers-tests/strict-containers-tests.cabal
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Name: strict-containers-tests
Version: 0.1.1
Version: 0.2
Synopsis: Strict containers - test suite
Category: Data, Data Structures, Tests
Description: Test suite for @strict-containers@.
Expand All @@ -11,13 +11,12 @@ Homepage: https://github.com/haskellari/strict-containers
Cabal-Version: >= 1.10
Build-type: Simple
tested-with:
GHC ==8.2.2
|| ==8.4.4
|| ==8.6.5
GHC ==8.6.5
|| ==8.8.4
|| ==8.10.7
|| ==9.0.2
|| ==9.2.4
|| ==9.4.2

test-suite strictness-tests
default-language: Haskell2010
Expand All @@ -28,23 +27,19 @@ test-suite strictness-tests
strict-containers
, strict-containers-lens
, strict-containers-serialise
, base >=4.6 && <5
, base >= 4.6 && <5
, binary >= 0.8.4.1 && < 0.9
, binary-instances >= 1 && < 2
, containers >= 0.5.9.2 && < 0.7
, containers >= 0.6.6 && < 0.7
, lens >= 4.19 && < 6
, unordered-containers >= 0.2 && < 0.3
, unordered-containers >= 0.2.19.1 && < 0.3
, serialise >= 0.2.3.0 && < 0.3
, strict >= 0.4 && < 0.5
, vector >= 0.12 && < 0.13

if impl(ghc >= 8.6)
build-depends: ghc-heap
else
build-depends: ghc-heap-view
, vector >= 0.13.0.0 && < 0.14

build-depends:
HUnit
ghc-heap
, HUnit
, QuickCheck >=2.7.1
, tasty
, tasty-hunit
Expand Down
25 changes: 7 additions & 18 deletions strict-containers/include/containers.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,30 +12,19 @@
#include "MachDeps.h"
#endif

/*
* Define INSTANCE_TYPEABLE[0-2]
*/
#if __GLASGOW_HASKELL__ >= 707
#define INSTANCE_TYPEABLE0(tycon) deriving instance Typeable tycon
#define INSTANCE_TYPEABLE1(tycon) deriving instance Typeable tycon
#define INSTANCE_TYPEABLE2(tycon) deriving instance Typeable tycon
#elif defined(__GLASGOW_HASKELL__)
#define INSTANCE_TYPEABLE0(tycon) deriving instance Typeable tycon
#define INSTANCE_TYPEABLE1(tycon) deriving instance Typeable1 tycon
#define INSTANCE_TYPEABLE2(tycon) deriving instance Typeable2 tycon
#else
#define INSTANCE_TYPEABLE0(tycon)
#define INSTANCE_TYPEABLE1(tycon)
#define INSTANCE_TYPEABLE2(tycon)
#endif

#if __GLASGOW_HASKELL__ >= 800
#ifdef __GLASGOW_HASKELL__
#define DEFINE_PATTERN_SYNONYMS 1
#endif

#ifdef __GLASGOW_HASKELL__
# define USE_ST_MONAD 1
#ifndef WORDS_BIGENDIAN
/*
* Unboxed arrays are broken on big-endian architectures.
* See https://gitlab.haskell.org/ghc/ghc/-/issues/16998
*/
# define USE_UNBOXED_ARRAYS 1
#endif
#endif

#endif
8 changes: 8 additions & 0 deletions strict-containers/include/vector.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#define PHASE_FUSED [1]
#define PHASE_INNER [0]

#define INLINE_FUSED INLINE PHASE_FUSED
#define INLINE_INNER INLINE PHASE_INNER

#define PHASE_STREAM Please use "PHASE_FUSED" instead
#define INLINE_STREAM Please use "INLINE_FUSED" instead
59 changes: 35 additions & 24 deletions strict-containers/patches/HashMap.patch
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,11 @@ element into (or replace an existing one in) an Array.

For more discussion see https://github.com/haskell-unordered-containers/unordered-containers/issues/311

--- a/src/Data/Strict/HashMap/Autogen/Strict.hs
+++ b/src/Data/Strict/HashMap/Autogen/Strict.hs
@@ -99,13 +99,9 @@
, fromList
, fromListWith
, fromListWithKey
-
- -- ** HashSets
- , HS.keysSet
) where

import Data.Strict.HashMap.Autogen.Internal.Strict as HM
-import qualified Data.HashSet.Internal as HS
import Prelude ()

-- $strictness
diff --git a/src/Data/Strict/HashMap/Autogen/Internal.hs b/src/Data/Strict/HashMap/Autogen/Internal.hs
index 1cb01da..dfcae84 100644
--- a/src/Data/Strict/HashMap/Autogen/Internal.hs
+++ b/src/Data/Strict/HashMap/Autogen/Internal.hs
@@ -194,7 +194,7 @@
@@ -179,7 +179,7 @@ import qualified Language.Haskell.TH.Syntax as TH
hash :: H.Hashable a => a -> Hash
hash = fromIntegral . H.hash

Expand All @@ -34,21 +20,23 @@ For more discussion see https://github.com/haskell-unordered-containers/unordere
deriving (Eq)

instance (NFData k, NFData v) => NFData (Leaf k v) where
diff --git a/src/Data/Strict/HashMap/Autogen/Internal/Array.hs b/src/Data/Strict/HashMap/Autogen/Internal/Array.hs
index 7c89f50..e789d17 100644
--- a/src/Data/Strict/HashMap/Autogen/Internal/Array.hs
+++ b/src/Data/Strict/HashMap/Autogen/Internal/Array.hs
@@ -254,26 +254,30 @@
@@ -197,15 +197,19 @@ liftRnfArray rnf0 ary0 = go ary0 n0 0
-- state thread, with each element containing the specified initial
-- value.
new :: Int -> a -> ST s (MArray s a)
-new (I# n#) b =
-new _n@(I# n#) b =
+new i !b = new' i b
+{-# INLINE new #-}
+
+new' :: Int -> a -> ST s (MArray s a)
+new' (I# n#) b =
CHECK_GT("new",n,(0 :: Int))
+new' _n@(I# n#) b =
CHECK_GT("new",_n,(0 :: Int))
ST $ \s ->
case newArray# n# b s of
case newSmallArray# n# b s of
(# s', ary #) -> (# s', MArray ary #)
-{-# INLINE new #-}
+{-# INLINE new' #-}
Expand All @@ -57,6 +45,11 @@ For more discussion see https://github.com/haskell-unordered-containers/unordere
-new_ n = new n undefinedElem
+new_ n = new' n undefinedElem

-- | When 'Exts.shrinkSmallMutableArray#' is available, the returned array is the same as the array given, as it is shrunk in place.
-- Otherwise a copy is made.
@@ -222,11 +226,11 @@ shrink mary n = cloneM mary 0 n
{-# INLINE shrink #-}

singleton :: a -> Array a
-singleton x = runST (singletonM x)
+singleton !x = runST (singletonM x)
Expand All @@ -67,18 +60,36 @@ For more discussion see https://github.com/haskell-unordered-containers/unordere
+singletonM !x = new 1 x >>= unsafeFreeze
{-# INLINE singletonM #-}

snoc :: Array a -> a -> Array a
@@ -239,7 +243,7 @@ snoc ary x = run $ do
{-# INLINE snoc #-}

pair :: a -> a -> Array a
-pair x y = run $ do
+pair !x !y = run $ do
ary <- new 2 x
write ary 1 y
return ary
@@ -286,7 +290,7 @@
@@ -252,7 +256,7 @@ read ary _i@(I# i#) = ST $ \ s ->
{-# INLINE read #-}

write :: MArray s a -> Int -> a -> ST s ()
-write ary _i@(I# i#) b = ST $ \ s ->
+write ary _i@(I# i#) !b = ST $ \ s ->
CHECK_BOUNDS("write", lengthM ary, _i)
case writeArray# (unMArray ary) i# b s of
case writeSmallArray# (unMArray ary) i# b s of
s' -> (# s' , () #)
diff --git a/src/Data/Strict/HashMap/Autogen/Strict.hs b/src/Data/Strict/HashMap/Autogen/Strict.hs
index f40bf25..c1d2d04 100644
--- a/src/Data/Strict/HashMap/Autogen/Strict.hs
+++ b/src/Data/Strict/HashMap/Autogen/Strict.hs
@@ -100,9 +100,6 @@ module Data.Strict.HashMap.Autogen.Strict
, fromList
, fromListWith
, fromListWithKey
-
- -- ** HashSets
- , HS.keysSet
) where

import Data.Strict.HashMap.Autogen.Internal.Strict
4 changes: 3 additions & 1 deletion strict-containers/patches/IntMap.patch
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
diff --git a/src/Data/Strict/IntMap/Autogen/Internal.hs b/src/Data/Strict/IntMap/Autogen/Internal.hs
index 0d4baee..29ababb 100644
--- a/src/Data/Strict/IntMap/Autogen/Internal.hs
+++ b/src/Data/Strict/IntMap/Autogen/Internal.hs
@@ -379,7 +379,7 @@
@@ -359,7 +359,7 @@ data IntMap a = Bin {-# UNPACK #-} !Prefix
-- the left of the Mask bit.
-- Invariant: In (Bin prefix mask left right), left consists of the elements that
-- don't have the mask bit set; right is all the elements that do.
Expand Down
4 changes: 3 additions & 1 deletion strict-containers/patches/Map.patch
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
diff --git a/src/Data/Strict/Map/Autogen/Internal.hs b/src/Data/Strict/Map/Autogen/Internal.hs
index e5303ca..949b4f6 100644
--- a/src/Data/Strict/Map/Autogen/Internal.hs
+++ b/src/Data/Strict/Map/Autogen/Internal.hs
@@ -479,7 +479,7 @@
@@ -458,7 +458,7 @@ m1 \\ m2 = difference m1 m2
-- their union @m1 <> m2@ maps @k@ to @a1@.

-- See Note: Order of constructors
Expand Down
Loading