Add rocq-certirocq.dev - #3807
Open
JasonGross wants to merge 2 commits into
Open
Conversation
JasonGross
force-pushed
the
claude/certirocq-dev
branch
from
July 31, 2026 20:03
c6b0105 to
81ed6f5
Compare
JasonGross
force-pushed
the
claude/certirocq-dev
branch
from
August 6, 2026 04:08
81ed6f5 to
971ae74
Compare
JasonGross
marked this pull request as ready for review
August 6, 2026 04:10
Member
Author
|
How does one get
On CI? |
CertiRocq (https://github.com/CertiRocq/certirocq) is the Rocq-era successor of CertiCoq. The archive already has released/packages/rocq-certirocq/rocq-certirocq.0.9.1+9.1 but no dev package, so there is nothing tracking the development branch. The file is upstream's in-tree rocq-certirocq.opam with the "version:" field dropped and a url block added, plus the dependency relaxations needed for a dev package: * "coq" {>= "9.1" & < "9.2~"} is replaced by rocq-core + rocq-stdlib (main uses "From Stdlib Require") and coq-core, which is the package that actually provides the coq_makefile binary the CertiRocq Makefiles invoke. The upper bound is dropped, as usual for a .dev package. * The "=" pins on coq-compcert and rocq-equations become lower bounds. * conf-python-3 {build} is added: "make plugins" runs plugins/manifests/generate.py to regenerate the plugin _CoqProject and .mlpack files. * rocq-metarocq-{erasure,safechecker}-plugin are pinned to "dev": CertiRocq main requires MetaRocq.Erasure.EImplementLazyForce, which does not exist in the 1.5.1 releases (checked against the v1.5.1-9.2 tag), only on MetaRocq main. * coq-wasm is pinned to "dev" as a consequence of the previous point. The dev MetaRocq plugins pull in rocq-metarocq-utils.dev, which requires rocq-core {= "dev"}, while the newest released coq-wasm (2.2.0) requires coq {>= "8.20" & < "9.2~"}. No released coq-wasm can therefore ever coexist with a dev MetaRocq, so a lower bound would be dead text. This makes the package depend on rocq-prover#3693, which adds coq-wasm.dev. CertiRocq ships exactly one opam file (rocq-certirocq.opam) covering the theories, both plugins, the C runtime and the bootstrapped compiler, so this is the only package added. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L9BGQT7XUuubV6C619DW4b
Removed comment about coq-wasm dependency being blocked.
JasonGross
force-pushed
the
claude/certirocq-dev
branch
from
August 7, 2026 03:35
33cbdd6 to
15e12d1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft; blocked on #3693. This cannot go green or merge until that PR lands. The dependency bounds would also benefit from review.
Adds
extra-dev/packages/rocq-certirocq/rocq-certirocq.dev/opam, tracking CertiRocq'smainbranch. The existingreleased/packages/rocq-certirocq/rocq-certirocq.0.9.1+9.1remains unchanged, as doesextra-dev/packages/coq-certicoq/coq-certicoq.dev, which tracks the oldCertiCoq/certicoqrepository for Coq 8.20.Why #3693 is required
All three
opam-buildjobs (4.09.0,4.14.2,5.3.0) stopped before compilation:Both the
--show-actionprobe and--show-action --update-invariantretry inscripts/opam-coq-install-removereturnedPackage conflict!.rocq-metarocq-{erasure,safechecker}-plugin {= "dev"}pulls inrocq-metarocq-utils.dev, which requires"rocq-core" { = "dev" }, whilereleased/packages/coq-wasm/coq-wasm.2.2.0requires"coq" {>= "8.20" & < "9.2~"}. Nocoq-wasm.devcurrently exists, and no assignment satisfies both constraints. #3693 adds that package, so this uses"coq-wasm" {= "dev"};{>= "2.2.0"}could not coexist with dev MetaRocq.Package and dependencies
CertiRocq has one root opam file,
rocq-certirocq.opam. Itsmake installinstalls the theories,plugins/pluginas findlibrocq-certirocq,plugins/cpluginas findlibrocq-certirocq-vanilla, the C runtime underruntime/, and the compiler underbootstrap/. SeparateMETAfiles do not represent separate opam packages.main(default branch, HEAD45a1950, 2026-06-25) is the development branch.masterandcoq-9.1share commit59f1103, 2026-05-04, corresponding to the existing 9.1 package.The package follows upstream's file, dropping its dune-style header and
version:and appending the usualurl { src: ... }block. These dependency changes are also proposed inCertiRocq/certirocq#159:"coq" {>= "9.1" & < "9.2~"}"rocq-core" {>= "9.1"},"rocq-stdlib" {>= "9.1"},"coq-core" {>= "9.1"}mainhas 220From Stdlib Requireoccurrences.coq-coreprovides thecoq_makefilebinary invoked byMakefile,libraries/Makefile, and the plugin Makefiles; on a 9.4+alpha switch,bin/coq_makefilebelongs tocoq-core, notrocq-core. As usual for.dev, there is no upper bound."coq-compcert" {= "3.17"}"coq-compcert" {>= "3.17"}"rocq-equations" {= "1.3.1+9.1"}"rocq-equations" {>= "1.3.1+9.1"}rocq-equations.dev."coq-wasm" {= "2.2.0"}"coq-wasm" {= "dev"}"rocq-metarocq-erasure-plugin" {>= "1.5.1"},"rocq-metarocq-safechecker-plugin" {>= "1.5.1"}{= "dev"}theories/Compiler/metarocq_pipeline.v:19importsEImplementBox EImplementLazyForce;EImplementLazyForce.vis absent from tagv1.5.1-9.2and exists only on MetaRocqmain."conf-python-3" {build}make pluginsrunspython3 plugins/manifests/generate.pyforplugins/*/\_CoqProjectandplugins/*/*.mlpack. Although generated files are checked in, their rule depends on the always-rebuilttheories/Extraction/extraction.vo.Verification limits
opam lint --warn=-21 --check-upstreampasses under opam 2.1.2, the version pinned by.gitlab-ci.yml.There is no successful build evidence for this package from CI or locally. CI reached only the solver failure above. A local Rocq-dev build could not complete without mutating the switch:
9242c14(2026-07-15) predatesEImplementLazyForce; thereMonomorphic_entrywas nullary. MetaRocqmainate8bb91d(2026-07-29) restores theContextSet.targument used bytheories/LambdaANF/PrototypeGenFrame.v. Source inspection suggests both errors are resolved on currentmain, but MetaRocqmainwas not built to confirm.coq-compcert-64, installed underlib/coq-variant/compcert64/, rather thancoq-compcert.coq-wasm.devinstalls a partialcompcerttree intouser-contrib/compcert(Archi,lib/{Coqlib,Floats,IEEE754_extra,Integers,Zbits},common/Memdata), colliding with a realcoq-compcertinstallation. Aconflicts:field may be appropriate, but is out of scope.Once #3693 lets CI pass the solver, its result will be the first build signal.
Wordsmithed by Codex.