You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In order to keep Copilot effectively working in the current Haskell ecosystem, as well as new versions of GHC, we need to extend the versions of dependencies that Copilot can be installed with. For example, containers has seen release 0.8, but copilot-language, copilot-libraries and copilot-theorem need versions strictly lower than 0.8. The same is true for random, of which we depend on versions prior to 1.3 but version 1.3 has been released.
For those libraries that have introduced no breaking changes affecting Copilot, we should extend the version bounds.
Type
Management: update versions of dependencies.
Additional context
None.
Requester
Ivan Perez.
Method to check presence of bug
Not applicable (not a bug).
Expected result
Copilot can be installed with the most recent version of all dependencies published on hackage that do not require a change to the Haskell code.
Desired result
Copilot can be installed with the most recent version of all dependencies published on hackage that do not require a change to the Haskell code.
Proposed solution
Copilot can be installed with the most recent version of all dependencies published on hackage that do not require a change to the Haskell code.
Copying this here from current Stackage Nightly build-constraints (we just moved to ghc-9.12):
copilot < 0 # tried copilot-4.5, but its library requires optparse-applicative >=0.14 && < 0.19 and the snapshot contains optparse-applicative-0.19.0.0
copilot-language < 0 # tried copilot-language-4.5, but its library requires the disabled package: copilot-theorem
copilot-libraries < 0 # tried copilot-libraries-4.5, but its library requires the disabled package: copilot-language
copilot-theorem < 0 # tried copilot-theorem-4.5, but its library requires random >=1.1 && < 1.3 and the snapshot contains random-1.3.1
The solution proposed produces the expected result. Details:
The following Dockerfile installs copilot forcing the version of random and optparse-applicative to be the latest major currently available, after which it prints the message "Success". We cannot check that Copilot can be installed iwth the latest major release of containers due to it being included with the compiler and causing issues when one attempts to constraint the version of containers during installation.
FROM ubuntu:focal
RUN apt-get update
RUN apt-get install --yes libz-dev
RUN apt-get install --yes git
RUN apt-get install --yes wget
RUN mkdir -p $HOME/.ghcup/bin
RUN wget https://downloads.haskell.org/~ghcup/0.1.19.2/x86_64-linux-ghcup-0.1.19.2 -O $HOME/.ghcup/bin/ghcup
RUN chmod a+x $HOME/.ghcup/bin/ghcup
ENV PATH=$PATH:/root/.ghcup/bin/
ENV PATH=$PATH:/root/.cabal/bin/
RUN apt-get install --yes curl
RUN apt-get install --yes gcc g++ make libgmp3-dev
SHELL ["/bin/bash", "-c"]
RUN ghcup install ghc 9.4
RUN ghcup install cabal 3.8
RUN ghcup set ghc 9.4.8
RUN cabal update
CMD git clone $REPO \
&& cd $NAME \
&& git checkout $COMMIT \
&& echo " copilot-verifier/copilot-verifier.cabal" >> cabal.project \
&& cabal install --lib \
copilot/ \
copilot-bluespec/ \
copilot-c99/ \
copilot-core/ \
copilot-prettyprinter/ \
copilot-interpreter/ \
copilot-language/ \
copilot-libraries/ \
copilot-theorem/ \
--constraint="optparse-applicative>=0.19" \
--constraint="random>=1.3.1" \
&& echo Success
Command (substitute variables based on new path after merge):
$ docker run -e REPO=https://github.com/ivanperez-keera/copilot -e NAME=copilot -e COMMIT=c24a34c88cb1dbaf619ee533717aceaff591f732 copilot-verify-603
Implementation is documented. Details:
No updates needed; change is to the dependencies.
Change history is clear.
Commit messages are clear.
Changelogs are updated.
Examples are updated. Details:
No updates needed; change is to the dependencies.
Author is internal or has provided signed CLA.
Required version bumps are evaluated. Details:
Bump not needed; relaxes version constraints but does not affect Copilot's public API.
Activity
ivanperez-keera commentedon Mar 7, 2025
Change Manager: Confirmed that the issue exists.
ivanperez-keera commentedon Mar 7, 2025
Technical Lead: Confirmed that the issue should be addressed.
juhp commentedon Jul 20, 2025
Copying this here from current Stackage Nightly build-constraints (we just moved to ghc-9.12):
ivanperez-keera commentedon Jan 8, 2026
Technical Lead: Issue scheduled for fixing in Copilot 4.6.1.
Fix assigned to: @ivanperez-keera .
EDIT (2026-01-08): Modified to adjust the actual version of Copilot after release.
4 remaining items
copilot-libraries: Relax version constraint on containers. Refs Copil…
copilot: Relax version constraint on optparse-applicative. Refs Copil…
copilot-theorem: Document changes in CHANGELOG. Refs Copilot-Language…
copilot-language: Document changes in CHANGELOG. Refs Copilot-Languag…
copilot-libraries: Document changes in CHANGELOG. Refs Copilot-Langua…
copilot: Document changes in CHANGELOG. Refs Copilot-Language#603.
ivanperez-keera commentedon Jan 8, 2026
Implementor: Solution implemented, review requested.
ivanperez-keera commentedon Jan 8, 2026
Change Manager: Verified that:
Build log: https://app.travis-ci.com/github/Copilot-Language/copilot/builds/277192917
The following Dockerfile installs copilot forcing the version of
randomandoptparse-applicativeto be the latest major currently available, after which it prints the message "Success". We cannot check that Copilot can be installed iwth the latest major release ofcontainersdue to it being included with the compiler and causing issues when one attempts to constraint the version ofcontainersduring installation.No updates needed; change is to the dependencies.
No updates needed; change is to the dependencies.
Bump not needed; relaxes version constraints but does not affect Copilot's public API.
ivanperez-keera commentedon Jan 8, 2026
Change Manager: Implementation ready to be merged.
Merge branch 'develop-bump-version-constraints'. Close Copilot-Langua…