From 3810d7bc846131863352d153f44a00acf7ed6977 Mon Sep 17 00:00:00 2001 From: Brandon Chinn Date: Fri, 9 Oct 2026 12:29:11 -0700 Subject: [PATCH 1/3] Bump lower bound to GHC 9.6 --- .github/workflows/ci.yml | 9 +-------- stack-8.10.yaml | 6 ------ stack-9.0.yaml => stack-9.12.yaml | 2 +- stack-9.2.yaml | 6 ------ stack-9.4.yaml | 6 ------ 5 files changed, 2 insertions(+), 27 deletions(-) delete mode 100644 stack-8.10.yaml rename stack-9.0.yaml => stack-9.12.yaml (61%) delete mode 100644 stack-9.2.yaml delete mode 100644 stack-9.4.yaml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dfd3b23ee..afd4719ad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,10 +17,6 @@ jobs: cabal: - "latest" ghc: - - "8.10.7" - - "9.0.2" - - "9.2.8" - - "9.4.8" - "9.6.6" - "9.8.2" - "9.10.3" @@ -64,13 +60,10 @@ jobs: # ghc must match each snapshot's compiler exactly, since we build # with --system-ghc against the GHC provisioned by the setup action. plan: - - { resolver: "--stack-yaml ./stack-8.10.yaml", ghc: "8.10.7" } - - { resolver: "--stack-yaml ./stack-9.0.yaml", ghc: "9.0.2" } - - { resolver: "--stack-yaml ./stack-9.2.yaml", ghc: "9.2.8" } - - { resolver: "--stack-yaml ./stack-9.4.yaml", ghc: "9.4.8" } - { resolver: "--stack-yaml ./stack-9.6.yaml", ghc: "9.6.6" } - { resolver: "--stack-yaml ./stack-9.8.yaml", ghc: "9.8.4" } - { resolver: "--stack-yaml ./stack-9.10.yaml", ghc: "9.10.3" } + - { resolver: "--stack-yaml ./stack-9.12.yaml", ghc: "9.12.4" } steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 diff --git a/stack-8.10.yaml b/stack-8.10.yaml deleted file mode 100644 index 68e5260b0..000000000 --- a/stack-8.10.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -resolver: lts-18.28 -flags: {} -packages: - - '.' -extra-deps: [] diff --git a/stack-9.0.yaml b/stack-9.12.yaml similarity index 61% rename from stack-9.0.yaml rename to stack-9.12.yaml index 3be543604..b17394ba9 100644 --- a/stack-9.0.yaml +++ b/stack-9.12.yaml @@ -1,5 +1,5 @@ --- -resolver: lts-19.33 +resolver: nightly-2026-10-09 flags: {} packages: - "." diff --git a/stack-9.2.yaml b/stack-9.2.yaml deleted file mode 100644 index 287d01ca2..000000000 --- a/stack-9.2.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -resolver: lts-20.26 -flags: {} -packages: - - "." -extra-deps: [] diff --git a/stack-9.4.yaml b/stack-9.4.yaml deleted file mode 100644 index 58ac959cd..000000000 --- a/stack-9.4.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -resolver: lts-21.25 -flags: {} -packages: - - "." -extra-deps: [] From aa5085c7a6de8e01cae983a0724e463578b46dca Mon Sep 17 00:00:00 2001 From: Matthew Wraith Date: Fri, 9 Oct 2026 13:42:58 -0700 Subject: [PATCH 2/3] Clean up after dropping GHC < 9.6 - Raise base lower bound to 4.18, add tested-with, bump to 2.5.0 - Remove imports that are redundant with Prelude (<$>, <>, Monoid, Semigroup) and the unnecessary Typeable deriving on KeyError - Delete the stale .travis.yml and .hgignore Co-Authored-By: Claude Sonnet 5.5 --- .hgignore | 11 ------- .travis.yml | 32 ------------------- CHANGELOG.md | 5 +++ prometheus.cabal | 5 +-- .../Metrics/Prometheus/Concurrent/Registry.hs | 1 - .../Prometheus/Concurrent/RegistryT.hs | 1 - src/System/Metrics/Prometheus/Encode/Text.hs | 1 - .../Prometheus/Encode/Text/Histogram.hs | 1 - .../Prometheus/Encode/Text/MetricId.hs | 1 - src/System/Metrics/Prometheus/Http/Scrape.hs | 1 - .../Metrics/Prometheus/Metric/Counter.hs | 1 - src/System/Metrics/Prometheus/Metric/Gauge.hs | 1 - .../Metrics/Prometheus/Metric/Histogram.hs | 1 - src/System/Metrics/Prometheus/MetricId.hs | 2 -- src/System/Metrics/Prometheus/Registry.hs | 6 +--- src/System/Metrics/Prometheus/RegistryT.hs | 1 - 16 files changed, 9 insertions(+), 62 deletions(-) delete mode 100644 .hgignore delete mode 100644 .travis.yml diff --git a/.hgignore b/.hgignore deleted file mode 100644 index 427cb183d..000000000 --- a/.hgignore +++ /dev/null @@ -1,11 +0,0 @@ -syntax: regexp -~$ -\#.*\#$ -\.\# -\.DS_Store$ -\.cabal-sandbox/ -\.hpc/ -\.tix$ -cabal\.sandbox\.config$ -dist/ -\.stack-work/ diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d2e276380..000000000 --- a/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -sudo: required - -os: linux -dist: xenial - -env: - - GHCVER=8.0.2 - - GHCVER=8.2.2 - - GHCVER=8.4.4 - - GHCVER=8.6.5 - -cache: - directories: - - $HOME/.ghc - - $HOME/.cabal - -before_install: - - sudo add-apt-repository -y ppa:hvr/ghc - - sudo apt-get update - - sudo apt-get install alex-3.1.7 happy-1.19.5 cabal-install-3.0 ghc-$GHCVER - - export PATH=/opt/cabal/bin:/opt/ghc/$GHCVER/bin:/opt/alex/3.1.7/bin:/opt/happy/1.19.5/bin:$PATH - -install: - - cabal-3.0 update - -script: - - cabal-3.0 configure --enable-tests - - cabal-3.0 build - - cabal-3.0 test --test-show-details=streaming - - cabal-3.0 check - - cabal-3.0 haddock - - cabal-3.0 sdist diff --git a/CHANGELOG.md b/CHANGELOG.md index 57954c745..1364fda33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ +## 2.5.0 + +* Raise the minimum supported GHC to 9.6 (`base >= 4.18`). Older compilers + are no longer tested in CI. + ## 2.4.0 * Add a `reset` function to the diff --git a/prometheus.cabal b/prometheus.cabal index db57a7874..548de12f0 100644 --- a/prometheus.cabal +++ b/prometheus.cabal @@ -1,5 +1,5 @@ name: prometheus -version: 2.4.0 +version: 2.5.0 synopsis: Prometheus Haskell Client homepage: http://github.com/bitnomial/prometheus bug-reports: http://github.com/bitnomial/prometheus/issues @@ -10,6 +10,7 @@ maintainer: luke@bitnomial.com, opensource@bitnomial.com copyright: Bitnomial, Inc. (c) 2016-2023 category: Metrics, Monitoring, Web, System build-type: Simple +tested-with: GHC == 9.6.6, GHC == 9.8.2, GHC == 9.8.4, GHC == 9.10.3, GHC == 9.12.4 cabal-version: >=1.10 description: @@ -88,7 +89,7 @@ library , System.Metrics.Prometheus.Registry , System.Metrics.Prometheus.RegistryT - build-depends: base >= 4.9 && < 5 + build-depends: base >= 4.18 && < 5 , atomic-primops >= 0.8 && < 0.9 , bytestring >= 0.10 && < 0.13 , containers >= 0.5 && < 0.8 diff --git a/src/System/Metrics/Prometheus/Concurrent/Registry.hs b/src/System/Metrics/Prometheus/Concurrent/Registry.hs index 123791433..6f1e69ab3 100644 --- a/src/System/Metrics/Prometheus/Concurrent/Registry.hs +++ b/src/System/Metrics/Prometheus/Concurrent/Registry.hs @@ -9,7 +9,6 @@ module System.Metrics.Prometheus.Concurrent.Registry ( sample, ) where -import Control.Applicative ((<$>)) import Control.Concurrent.MVar ( MVar, modifyMVarMasked, diff --git a/src/System/Metrics/Prometheus/Concurrent/RegistryT.hs b/src/System/Metrics/Prometheus/Concurrent/RegistryT.hs index 3b2b9208f..446fa8a5c 100644 --- a/src/System/Metrics/Prometheus/Concurrent/RegistryT.hs +++ b/src/System/Metrics/Prometheus/Concurrent/RegistryT.hs @@ -2,7 +2,6 @@ module System.Metrics.Prometheus.Concurrent.RegistryT where -import Control.Applicative ((<$>)) import Control.Monad.IO.Class (MonadIO, liftIO) import Control.Monad.Trans.Class (MonadTrans) import Control.Monad.Trans.Reader ( diff --git a/src/System/Metrics/Prometheus/Encode/Text.hs b/src/System/Metrics/Prometheus/Encode/Text.hs index f18a5d3b7..4b1f36055 100644 --- a/src/System/Metrics/Prometheus/Encode/Text.hs +++ b/src/System/Metrics/Prometheus/Encode/Text.hs @@ -9,7 +9,6 @@ import Data.List ( intersperse, ) import qualified Data.Map as Map -import Data.Monoid ((<>)) import System.Metrics.Prometheus.Encode.Text.Histogram (encodeHistogram) import System.Metrics.Prometheus.Encode.Text.MetricId ( diff --git a/src/System/Metrics/Prometheus/Encode/Text/Histogram.hs b/src/System/Metrics/Prometheus/Encode/Text/Histogram.hs index 97889b2fe..943841c71 100644 --- a/src/System/Metrics/Prometheus/Encode/Text/Histogram.hs +++ b/src/System/Metrics/Prometheus/Encode/Text/Histogram.hs @@ -7,7 +7,6 @@ module System.Metrics.Prometheus.Encode.Text.Histogram ( import Data.ByteString.Builder (Builder) import Data.List (intersperse) import qualified Data.Map as Map -import Data.Monoid ((<>)) import System.Metrics.Prometheus.Encode.Text.MetricId ( encodeDouble, diff --git a/src/System/Metrics/Prometheus/Encode/Text/MetricId.hs b/src/System/Metrics/Prometheus/Encode/Text/MetricId.hs index 7b6326e7b..f7ea06fcc 100644 --- a/src/System/Metrics/Prometheus/Encode/Text/MetricId.hs +++ b/src/System/Metrics/Prometheus/Encode/Text/MetricId.hs @@ -20,7 +20,6 @@ import Data.ByteString.Builder ( intDec, ) import Data.List (intersperse) -import Data.Monoid ((<>)) import Data.Text (Text, replace) import Data.Text.Encoding (encodeUtf8) import Data.Text.Lazy (toStrict) diff --git a/src/System/Metrics/Prometheus/Http/Scrape.hs b/src/System/Metrics/Prometheus/Http/Scrape.hs index be1bf7686..a6a1790bc 100644 --- a/src/System/Metrics/Prometheus/Http/Scrape.hs +++ b/src/System/Metrics/Prometheus/Http/Scrape.hs @@ -7,7 +7,6 @@ module System.Metrics.Prometheus.Http.Scrape ( prometheusApp, ) where -import Control.Applicative ((<$>)) import Control.Monad.IO.Class ( MonadIO, liftIO, diff --git a/src/System/Metrics/Prometheus/Metric/Counter.hs b/src/System/Metrics/Prometheus/Metric/Counter.hs index 70d8148f4..2800a72a8 100644 --- a/src/System/Metrics/Prometheus/Metric/Counter.hs +++ b/src/System/Metrics/Prometheus/Metric/Counter.hs @@ -9,7 +9,6 @@ module System.Metrics.Prometheus.Metric.Counter ( set, ) where -import Control.Applicative ((<$>)) import Control.Monad (when) import Data.Atomics.Counter (AtomicCounter, incrCounter, newCounter, writeCounter) diff --git a/src/System/Metrics/Prometheus/Metric/Gauge.hs b/src/System/Metrics/Prometheus/Metric/Gauge.hs index 3c0852e2c..fdea3080e 100644 --- a/src/System/Metrics/Prometheus/Metric/Gauge.hs +++ b/src/System/Metrics/Prometheus/Metric/Gauge.hs @@ -11,7 +11,6 @@ module System.Metrics.Prometheus.Metric.Gauge ( modifyAndSample, ) where -import Control.Applicative ((<$>)) import Data.IORef (IORef, atomicModifyIORef', newIORef) diff --git a/src/System/Metrics/Prometheus/Metric/Histogram.hs b/src/System/Metrics/Prometheus/Metric/Histogram.hs index d1db1649f..4e227dab2 100644 --- a/src/System/Metrics/Prometheus/Metric/Histogram.hs +++ b/src/System/Metrics/Prometheus/Metric/Histogram.hs @@ -12,7 +12,6 @@ module System.Metrics.Prometheus.Metric.Histogram ( reset, ) where -import Control.Applicative ((<$>)) import Control.Monad (void) import Data.Bool (bool) import Data.IORef ( diff --git a/src/System/Metrics/Prometheus/MetricId.hs b/src/System/Metrics/Prometheus/MetricId.hs index 58d2c9438..0df301b86 100644 --- a/src/System/Metrics/Prometheus/MetricId.hs +++ b/src/System/Metrics/Prometheus/MetricId.hs @@ -7,8 +7,6 @@ import Data.Bifunctor (first) import Data.Char (isDigit) import Data.Map (Map) import qualified Data.Map as Map -import Data.Monoid (Monoid) -import Data.Semigroup (Semigroup) import Data.String (IsString (..)) import Data.Text (Text) import qualified Data.Text as Text diff --git a/src/System/Metrics/Prometheus/Registry.hs b/src/System/Metrics/Prometheus/Registry.hs index b39a5899b..17438c889 100644 --- a/src/System/Metrics/Prometheus/Registry.hs +++ b/src/System/Metrics/Prometheus/Registry.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} - module System.Metrics.Prometheus.Registry ( Registry, RegistrySample (..), @@ -12,11 +10,9 @@ module System.Metrics.Prometheus.Registry ( sample, ) where -import Control.Applicative ((<$>)) import Control.Exception (Exception, throw) import Data.Map (Map) import qualified Data.Map as Map -import Data.Typeable (Typeable) import System.Metrics.Prometheus.Metric ( Metric (..), @@ -42,7 +38,7 @@ newtype Registry = Registry {unRegistry :: Map MetricId Metric} newtype RegistrySample = RegistrySample {unRegistrySample :: Map MetricId MetricSample} -newtype KeyError = KeyError MetricId deriving (Show, Typeable) +newtype KeyError = KeyError MetricId deriving (Show) instance Exception KeyError diff --git a/src/System/Metrics/Prometheus/RegistryT.hs b/src/System/Metrics/Prometheus/RegistryT.hs index 5f34cbe5c..da93d72b7 100644 --- a/src/System/Metrics/Prometheus/RegistryT.hs +++ b/src/System/Metrics/Prometheus/RegistryT.hs @@ -2,7 +2,6 @@ module System.Metrics.Prometheus.RegistryT where -import Control.Applicative ((<$>)) import Control.Monad.IO.Class (MonadIO, liftIO) import Control.Monad.Trans.Class (MonadTrans) import Control.Monad.Trans.State.Strict ( From aa92fe4b156d6b349b11390949b4d9648fcdbb41 Mon Sep 17 00:00:00 2001 From: Matthew Wraith Date: Fri, 9 Oct 2026 13:48:09 -0700 Subject: [PATCH 3/3] Don't bump the package version in the cleanup prometheus-ghc-stats pins prometheus <2.5, so bumping to 2.5.0 broke dependency resolution for the in-tree ghc-stats build. Releasing is a separate decision, so list the change under "Unreleased" instead. Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 2 +- prometheus.cabal | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1364fda33..ff1d8914d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ -## 2.5.0 +## Unreleased * Raise the minimum supported GHC to 9.6 (`base >= 4.18`). Older compilers are no longer tested in CI. diff --git a/prometheus.cabal b/prometheus.cabal index 548de12f0..d48d4ac66 100644 --- a/prometheus.cabal +++ b/prometheus.cabal @@ -1,5 +1,5 @@ name: prometheus -version: 2.5.0 +version: 2.4.0 synopsis: Prometheus Haskell Client homepage: http://github.com/bitnomial/prometheus bug-reports: http://github.com/bitnomial/prometheus/issues