Hi folks, when is the last day you will consider PRs for 8.17 milestone then?
That's undefined. Just let me know which PRs you think should go in and are almost ready / undergoing review.
I will, thanks
Need to review them myself
I was thinking about removing some deprecated statements from stdlib (in the spirit of #14819, but stdlib only) but I will not be able to do it before early December. Is it reasonable to try something for 8.17?
If it requires overlays, then probably this will be too late. But is this an issue if this removal only lands in Coq 8.18?
But is this an issue if this removal only lands in Coq 8.18?
Not really, just that with the two-versions delay for deprecation, it makes things long for renaming operations for example (at least 4 versions). I will try to focus on such deprecations and see if they induce overlays. If it is OK with you I try to do it very early December and we see at this point if it could make it for 8.17 or not (8.18 should not be a big problem).
I've cleaned up my PR's milestones; there are two important ones I'd like to see in 8.17 (and IMHO ready, modulo review) , the rest are postponed.
Olivier Laurent said:
But is this an issue if this removal only lands in Coq 8.18?
Not really, just that with the two-versions delay for deprecation, it makes things long for renaming operations for example (at least 4 versions). I will try to focus on such deprecations and see if they induce overlays. If it is OK with you I try to do it very early December and we see at this point if it could make it for 8.17 or not (8.18 should not be a big problem).
What I meant to understand was: if this removal lands in Coq 8.17, will that unlock work in Coq 8.18 that would otherwise need to be postponed?
What I meant to understand was: if this removal lands in Coq 8.17, will that unlock work in Coq 8.18 that would otherwise need to be postponed?
I think we agree. Concretely I would say maybe no unlock for Coq 8.18 but possibly for Coq 8.19 (two-versions deprecation delay), and I will first focus on removals having such a possible impact then.
@Erik Martin-Dorel The v8.17
branch has been created. We should start working on making Docker-Coq images available.
It is a bit strange because currently we have a https://gitlab.com/api/v4/projects/19687072/ref/master/trigger/pipeline?token=XXXX&variables[CRON_MODE]=rebuild-keyword&variables[ITEM]=dev
webhook set for push events to the master
branch and a https://gitlab.com/api/v4/projects/19687072/ref/master/trigger/pipeline?token=XXXX&variables[CRON_MODE]=rebuild-keyword&variables[ITEM]=8.13
webhook set for push events to the v8.13
branch. It looks like the latter is completely outdated. Should I replace it with the equivalent for v8.17
?
@Théo Zimmermann usually we start by creating the 8.17.dev
opam package. But now there are split packages, right? So one needs to add coq-core.8.17.dev
and coq-stdlib.8.17.dev
, etc.
Yes, indeed. On the model of the coq.dev
package.
The release notes are unusually terse about this step.
But I have some doubts that Docker-Coq actually uses the definition in the core-dev repository. IINM, it uses the opam definitions from the repo directly.
isn't that only for the dev image?
Well, isn't an image that corresponds to a branch always a dev image?
not sure, I guess Erik can/will comment. In any case, would be good to have core-dev
opam packages for testing
:+1: please someone do it :star_struck:
I'll do it tomorrow night unless someone beats me to it.
Théo Zimmermann said:
It is a bit strange because currently we have a
https://gitlab.com/api/v4/projects/19687072/ref/master/trigger/pipeline?token=XXXX&variables[CRON_MODE]=rebuild-keyword&variables[ITEM]=dev
webhook set for push events to themaster
branch and ahttps://gitlab.com/api/v4/projects/19687072/ref/master/trigger/pipeline?token=XXXX&variables[CRON_MODE]=rebuild-keyword&variables[ITEM]=8.13
webhook set for push events to thev8.13
branch. It looks like the latter is completely outdated. Should I replace it with the equivalent forv8.17
?
exactly. This latter trigger amounts to providing up-to-date alpha images (before the beta release), and it just happens we had only provided beta images directly for the past few releases.
So yes, just replace (v8.13
, [ITEM]=8.13
) with (v8.17
, [ITEM]=8.17
) for now, but later on (or now as well if you want), I'd ask you to add one such trigger for all (v8.8 ≤ v8.16
) branches as well → see https://github.com/coq-community/docker-coq/issues/49
@Erik Martin-Dorel I've set the webhook for v8.17 for now. You didn't clarify if the Docker-Coq building process currently uses the opam definitions from the repo or from opam-coq-archive. The conclusion from the discussion you linked was that we should prefer the opam definition from opam-coq-archive for better maintainability. OTOH, for a new branch like v8.17
, these definitions might not be available yet, so using the opam definition from the repo will allow creating Docker images earlier.
@Erik Martin-Dorel The webhook for v8.17 does not seem to be sufficient for the Docker-Coq images to build for this branch without any other action. This pipeline https://gitlab.com/coq-community/docker-coq/-/pipelines/705952743 was triggered from the v8.17 branch with ITEM=8.17 set and it didn't do anything new.
Yes @Théo Zimmermann I know, I need to uncomment/check/push the 8.17 config in docker-coq master.
Sorry, was swamped with exam prep.
I'll push this very soon (unless you open a PR faster!, targeting the images.yml
file)
@Théo Zimmermann has it been decided if 8.17.0 will be compatible with OCaml 5 or not? Or perhaps 8.17.1?
(or I should say, if there is any chance of 8.17.0 or 8.17.1 being compatible with OCaml 5)
I think there is a chance, but that won't be an objective for 8.17.0.
For what is worth, I am able to compile the standard library with a Coq compiled with OCaml 5. (But I have not tried to run the testsuite nor any contribution.)
https://github.com/coq/coq/wiki/Coq-Call-2022-11-30 says
no-naked-pointers not an issue anymore
what changed?
It should rather say that it is an issue only for native_compute
, which people do not mind disabling if the compiler is OCaml 5.
Corrected
Guillaume Melquiond said:
For what is worth, I am able to compile the standard library with a Coq compiled with OCaml 5. (But I have not tried to run the testsuite nor any contribution.)
#15494 was able to run the test-suite with trunk (now 5.0) a few times in the past, so at least we have that data point.
FWIW, I'm waiting for coq/coq#16997, coq/coq#16981, and a decision on what to do with coq/coq#16994 before preparing the changelog PR and tagging 8.17+rc1. AFAICT, the rest of the issues / PRs in the 8.17+rc1 milestone are non-blocking.
#16978 is IMO important too; I'll fix the logic leading to the performance regression, that shouldn't be hard; indeed gtk
already has the get_iter_at_line_index
to be able to compute char positions efficiently, it is just that the code we have now got extremely convoluted as it had to workaround Coq returning incorrect parsing locations.
as usual, we need three things after the release of 8.17+rc1 to enable testing in CI:
if bignums or serapi tags could even be done before rc1, that might speed things up.
Can't we just pick the head of the v8.17 branch?
For SerAPI I mean
I'm doing the bignums chores
I think we should always use packages based on tags for testing release candidates
in particular, we shouldn't have to refresh the 8.17 docker for the rc until 8.17.0 comes out (or there is an rc2, which hasn't happened yet)
for example, see here for what generally happens to a Docker that uses a package that changes (it rebuilds the package and every dep in every CI run)
Karl Palmskog said:
if bignums or serapi tags could even be done before rc1, that might speed things up.
Please don't.
The principle with the rc1 is that after it is tagged, there is a commitment not to merge PRs with overlays. (The tag that was made for rc1 should still work for the final release.)
But if people start tagging before the rc1, then there is no way for the RM to signal that things are stable now.
Emilio Jesús Gallego Arias said:
#16978 is IMO important too; I'll fix the logic leading to the performance regression, that shouldn't be hard; indeed
gtk
already has theget_iter_at_line_index
to be able to compute char positions efficiently, it is just that the code we have now got extremely convoluted as it had to workaround Coq returning incorrect parsing locations.
I didn't include it in my list because since it has no changelog and no overlays, it seemed like it could easily be included between the rc1 and the final release.
My testing did go well and I'm convinced that the code is fine (both on wire protocol and UI) , however, we lack test-cases for many of the code paths, as Jim has noted, so it wouldn't hurt to have the CoqIDE fixes to see some testing just in case.
If what you are hoping for is user testing, then I'm afraid that the rc1 rarely gets any user testing (this was the starting point for moving from a beta to a rc BTW).
Karl Palmskog said:
as usual, we need three things after the release of 8.17+rc1 to enable testing in CI:
- a release of bignums
here it is: https://github.com/coq/opam-coq-archive/pull/2421
Théo Zimmermann said:
If what you are hoping for is user testing, then I'm afraid that the rc1 rarely gets any user testing (this was the starting point for moving from a beta to a rc BTW).
Indeed I'm not hoping for a lot of user testing, but I guess that should give us some more time in case a problem appears.
we did actually test like 10+ projects in Coq-community with 8.16+rc1
and I meant that bignums is special w.r.t. tagging, it should be obvious whether it has a chance of failing with v8.17
vs. 8.17+rc1, and it's present by default when testing rc1 via Docker
Worst case is that we release 8.17 with a known serious issue.
if we want to make a serious effort with larger scale testing of the rc, that's fine by me, but please flag up how you want this to happen. Right now, I basically wait for the Docker with rc1 and then start to use this in every Coq project I (co-)maintain. But we could start pushing it more.
@Emilio Jesús Gallego Arias so do you think there will be a SerAPI tag for the rc? If there won't be a tag, then we should discuss changes to the Docker setup with @Erik Martin-Dorel (e.g., possibly dropping the SerAPI-related packages from both rc and regular Coq Docker). I think it's very valuable to have SerAPI packages preinstalled due to Alectryon usage, but it's not an absolute requirement from my side.
@Karl Palmskog there will be a tag for the RC if you folks need it, up to you
in fact I think both you and Theo have push rights so feel free to push the tag when you need it
format is quite easy I think
OK, then I can push a SerAPI tag after Théo tags rc1
Karl Palmskog said:
and I meant that bignums is special w.r.t. tagging, it should be obvious whether it has a chance of failing with
v8.17
vs. 8.17+rc1, and it's present by default when testing rc1 via Docker
Some of the PRs that I listed still have overlays for plugins in Coq's CI. This happens not to include bignums, but it could have.
Karl Palmskog said:
we did actually test like 10+ projects in Coq-community with 8.16+rc1
We do test compatibility with CI, but here I was talking about testing CoqIDE.
OK, I think you have to say something more specific than "user testing" if you mean interface-level testing.
is there any manual test suite or similar for CoqIDE and/or VsCoq? Like, a list of typical workflows with specific clicks and keyboard commands, and expected results.
No, there is none, unfortunately.
Anyway, my point was just not to expect such testing to happen, not that I wanted to act to make things change.
OK, if there's nothing I think the minimum we do is just ask someone to run some basic commands in IDEs, in worst case we do it ourselves
Most of the testing we need IDE side could be automated in the test-suite, using fake_ide or a UI test system; for coq-lsp
we are hoping to add a quite complete test-suite
Otherwise development is not possible
@Erik Martin-Dorel when we do the 8.17+rc1 Docker, would be very useful to have one with OCaml 5, e.g., coq-8.17-ocaml-5.0-flambda
. Is this doable, and should I open an issue as reminder?
FYI the 8.17+rc1 tag has been set.
is coq-stdlib
really supposed to have this awkward non-Dune part in the build?
[ "./configure"
"-prefix" prefix
"-mandir" man
"-libdir" "%{lib}%/coq"
"-native-compiler" "yes" {coq-native:installed} "no" {!coq-native:installed}
]
[ make "dunestrap" "COQ_DUNE_EXTRA_OPT=-split" ]
(I was under the impression we were dropping the configure
s)
We still need to create the module coq_config.ml
(as well as a bunch of other files) before the compilation. In fact, even Dune creates that file by calling ./configure
. But Dune does not call it with the arguments we want for the Opam package. So, we call it manually beforehand.
are plugins supposed to start to depend directly on coq-core
and coq-stdlib
now in opam?
Except for plugins that depend purely on coq-core
, I would say no, as it would make writing package dependencies a bit painful, e.g., coq | (coq-core & coq-stdlib)
.
hmm, but why would you need the coq |
in an 8.17 plugin? The coq
package is implicitly sufficient since it depends on coq-core
/coq-stdlib
.
You are implicitly assuming that the plugin is not compatible with Coq 8.16 here.
sure, but that's generally the case. Plugins I've worked with have been compatible across major versions maybe 1-2 times out of 20.
But is that for a good reason? For example, the next Opam release of Bignums will be marked coq >= 8.17
, but I would not be surprised if it was compatible with 8.16 too. So, are plugins really incompatible or is it just that people just assume that they are?
my default assumption is that they are incompatible across major versions, yes. So by default, I set opam constraints for a single version. But there aren't really any adverse consequences to this, since we do one plugin release per major version anyway
It looks like the only three changes that were merged in bignums between 8.16 and 8.17 are indeed backward-compatible, but that's often not the case.
It also varies from plugin to plugin, paramcoq or coq-elpi for instance certainly wouldn't build on more than one version.
@Emilio Jesús Gallego Arias fair warning that I plan to do some small fiddling with the SerAPI v8.17
branch so we can have tag to go in the 8.17+rc1 Docker image
seems like the consensus is to continue to depend on coq
in opam in nearly all places (e.g., I guess HoTT might want to go coq-core
)
HoTT cannot go coq-core because coq-core doesn't work out of the box despite the name.
There are still a few things to cleanup there that nobody has the time to do.
I started looking at the changelog, and it's pretty weird to me that although -rectypes
is no longer required as stated there, coq_makefile
still seemingly uses it for ML code... intentional?
To avoid having to deal with backward compat issues
we could remove it from the default flags
feel free to make a PR (the coq_makefile flags come from configure.ml through a twisted process for historical reasons, so that's what you would edit)
OK, will do. But bottom line, at least for plugins, it makes sense to drop it (-rectypes
) everywhere?
(and compilation will fail if I really need it?)
yes
can we maybe add some note and/or comment w.r.t. OCaml 5 performance for 8.17.0? I feel there is a risk of disappointed users creating lots of issues and forum questions. Fine with me if it's not done formally in release notes but in some forum like Discourse.
for example:
The OCaml runtime system, and in particular its garbage collector, was completely rewritten for multicore support in OCaml 5.0.0. Hence, Coq performance when compiled with OCaml 5 may be slightly to significantly worse than when compiled with OCaml 4, depending on the Coq project. We expect Coq performance to improve with future releases of OCaml, in particular as the OCaml 5 garbage collector improves. If Coq performance is critical, we advise users to continue to compile Coq using OCaml 4 for the time being.
@Karl Palmskog feel free to do whatever you need with the SerAPI repos, including a release , thanks!
For the 5.0 comment, I'm unsure what to say, IMHO it is still too early to claim anything. I think clearly OCaml 5.0 support should be marked "experimental" and the recommended setup for all users is 4.14 + flambda I think
I tried Verdi Raft locally side by side 4.14+flambda and 5.0.0+flambda. The latter took several minutes longer in user time, consistent with the bench. I'm pretty certain people will see for themselves similar things after 8.17.0 is out.
if it was only a few tens of seconds or even a minute or two, sure, but we are talking like 4-5 minutes slower.
Yes, 5.0 support is experimental it is normal
I mean the statement is a bit too precise, we still don't understand why 5.0 is slower, could it be for the VM for example. So I think it good to be conservative and just set 5.0 as experimental
I think most technical people when they hear "experimental" think "faster, but it may crash or behave strangely". This is not the case here, so that's why I think an explicit performance heads-up is warranted.
In my book when something is experimental == use at your own risk and don't expect it to work
I've started using OCaml 5 for daily work, and functionally haven't had any trouble at all.
to be frank, the experience is like a throttled 4.14.
The statement says "in particular as the OCaml 5 garbage collector improves" however we don't know if the GC is the culprit.
All we know is that it is experimental and shouldn't be used except for people willing to experiment
You can indeed say that performance will be wrose
fine with me to drop the specifics about GC then
yup let's wait until the multicore team finished their analysis
just indeed say no one should use 5.0 for now except to experiment
Actually I was thinking to have an "enhaced" Coq opam package for 8.17, where I put a lot of the patches that are needed for coq-lsp , and why not, multithread proof checking
so users could install coq-mt
instead of coq
if wanted
we will see tho
We will more the tracking of the 5.0 issues to github soon so everyone can comment
Emilio Jesús Gallego Arias said:
so users could install
coq-mt
instead ofcoq
if wanted
It would be nice to avoid using the name coq-mt given the clash with CoqMT, IMHO.
probably better to use something explicit like coq-multicore
one more attempt:
The OCaml runtime system was completely rewritten for multicore support in OCaml 5.0.0. Hence, using OCaml 5 to compile Coq is considered experimental, and Coq performance may be worse than when compiled with OCaml 4. Consequently, if Coq stability and performance is critical, we advise users to continue to compile Coq using OCaml 4 for the time being.
Sounds good @Karl Palmskog!
@Emilio Jesús Gallego Arias Consider requesting a preview release to be included in the Coq Platform, like what Jim had done with the debugger before it was merged.
@Erik Martin-Dorel all ingredients are there in the opam archive for a Docker for 8.17+rc1. Can/should I submit a docker-coq PR with the metadata for that?
LGTM @Karl Palmskog , tho I would maybe invert the way the content is delivered, the important thing for Coq users is in the last sentence, something like:
"Coq 8.17 supports OCaml 5.0, however such support is experimental and not recommended for end-users. In particular, we have observed some performance degradation and some Coq infrastructure such as the native reduciton tactics are not available when using OCaml 5.x"
Karl Palmskog said:
Erik Martin-Dorel all ingredients are there in the opam archive for a Docker for 8.17+rc1. Can/should I submit a docker-coq PR with the metadata for that?
Thanks @Karl Palmskog ! I'm precisely working on this (first, two builds of coqorg/base
are on-going), I'll let you know in this thread!
thanks to the 8.17 Docker, I've tested 8.17+rc1 in a large number of projects in Coq-community and elsewhere. Everything seems to work as expected.
however, as yet there is no released version of MathComp compatible with 8.17, which restricts some of the scope of testing.
Karl Palmskog said:
however, as yet there is no released version of MathComp compatible with 8.17, which restricts some of the scope of testing.
OK!
but I believe a MC release is pending… maybe @Cyril Cohen or @Pierre Roux could comment.
looks like plugin releases for 8.17 are rolling in just fine, but we hope to see a certain parametric one...
Since I just released Coq Platform 2022.09.1 it is due time to look into Coq Platform 2023.03/04.
Since 8.17+rc1 is already tagged I guess I should send out the "please pick" issues asap?
Is there already a schedule for 8.17.0? I usually put the planned date into the "please pick" issues. Also the Coq Platform release name (2023.03 or 2023.04) depends on it.
Is there already a schedule for 8.17.0?
The planned schedule was today IIRC, but it won't be met. So it is ASAP instead.
OK, I will start working on a beta pick for 8.17 then and do the issues as soon as I know the status.
Btw: who is the release manager for 8.17? Emilio?
Théo is the RM for 8.17. The backup (co-)RM is Gaëtan
@Théo Zimmermann : looking at the release schedule of Coq 8.17, I guess we should target Coq Platform 2023.03 with a preview release in early February, a beta in early March and a release end of March or early April.
I'm confused, how are the preview and the beta different again?
BTW, when you plan for something to be ready for end of March at the earliest, I would recommend naming it 2022.04, so that you have more chances of the name being adapted (and if you release before April, nobody is going to frown).
The preview has an incomplete and not maintainer approved package list (basically what works) which is mostly intended for maintainers to create the packages for the beta. The beta has a mostly complete and mostly maintainer approved package list.
For the preview I don't provide installers or a release. It is a state of Coq Platform main in which I drive the new package list as far as I can without support from the maintainers. The maintainers start from there.
So I guess the word "release" is misleading. It is essentially the point in time where I create the "please tag" issues.
OK thanks for clarifying. In this case, I think that we are already in a good enough state to start creating a preview. So this really depends on when you have time to allocate to this. As for the beta, it really depends on how many packages are not compatible yet in the preview and how long their maintainers need to create a tag.
Yes. It is about a day of work to create the initial pick. I try to squeeze it in either this week or early next week.
Would it help if we had some place, e.g., a wiki page, where we can collectively list known compatible tags or commits (in case there is no tag) of Coq Platform packages? I think a lot of such information is already available to opam archive and nixpkgs maintainers and it wouldn't be difficult to collect it.
I use "opam show" to inform myself about the status of a package. I think this is sufficient. The work starts when important packages are not compatible and need patching. The effort varies. For 8.16 the effort was large cause of the ocamlfind issues and the new rules for plugin naming rules. It can also be smooth.
@Théo Zimmermann : I just wanted to create a first pick for 8.17, but as it looks the 8.17.0 tag is not yet there. Should I base it on 8.17+rc1?
Yes. Please base it on 8.17+rc1.
Should I update OCaml? I am currently on 4.13.1
.
I think that people testing 4.14 have not reported any issue, so I'd say yes.
(This includes Coq's own CI BTW.)
My reports should have linked issues that 4.14 fixes
(I mean my issue/MRs on the platform)
Ocaml code using "-Werror" (turning warnings into error) might fail on 4.14 deprecations, but they shouldn't use "Werror" anyway
now it's finally possibly to test (dev
package free) any project depending on MathComp with 8.17+rc1, since MC 1.16.0 is out on opam
Hi folks, I was wondering whether https://github.com/coq/coq/pull/17200 would be considered for backport?
cc: @Gaëtan Gilbert @Théo Zimmermann
IDK
it's not great to need overlays this late
maybe you can put the add_known_plugin and init_known_plugin APIs back for the backport
even then I don't know how interested @Théo Zimmermann is in new backports
The overlays are not needed in the sense that both 8.17 branches already work, but in the CI are pinned
I can update the refs
it's not great to need to update the refs this late
Yes, I agree, I could put the API back, but it is very trivial. IMO the overlays are a non-issue, the real question is whether the backport is risky, and the bug is important enough to risk it.
I am happy having users pin my branch, I was just wondering that maybe it would be best to directly backport this instead of doing all the "use my branch" stuff
So far the new code has been working pretty well.
Sorry, I had missed the mention for some reason.
I was not planning to backport this fix given that the bug has already been there for a long time and that we are very close to the final release.
I also would not like to break any plugin between the rc1 and the final release.
Hi @Théo Zimmermann , ok thanks for the info. (The plugin breakage is not a problem as can be trivially solved) but indeed I understand the reasons.
I will just provide my own tree to users for now.
also what are we doing about https://github.com/coq/coq/issues/17023 (coqide tooltips)? is it blocker?
also should we open a 8.17.1 milestone?
Yes, we should.
Gaëtan Gilbert said:
also what are we doing about https://github.com/coq/coq/issues/17023 (coqide tooltips)? is it blocker?
The conclusion from another Zulip discussion that I cannot locate ATM is revert the PRs that broke the things.
If someone wants to open a v8.17 PR reverting the two relevant PRs, that would be convenient.
Note that one of the reverts has to be partial, that is to say, only the coqide part, the fix in the lexer should stay
In that case, it would really be better if you could open the PR so that I don't mess it up.
FWIW 8.17+rc1 lacks a pre-release on https://github.com/coq/coq/releases, like https://github.com/coq/coq/releases/tag/V8.16%2Brc1
That's weird, it is there https://github.com/coq/coq/releases/tag/V8.17%2Brc1
Not sure why it isn't shown in the main releases page
Hmm I guess there is a "set as latest release" option that needs to be ticked, but I don't have permission for that
uh, works for me now? https://github.com/coq/coq/releases
Very weird, I guess somebody at Github was tweaking something
I went to the edit dialogue, changed nothing, and pressed "update release" (which probably I shouldn't have?)
I guess that fixed it
and "Latest" on https://github.com/coq/coq still says 8.16.1 _as it most likely should_ :-)
there is nothing strange to me with 8.1X+rc1 appearing before 8.1(X-1).1 or 8.1(X-1).2
The strange thing was rather that it wasn't appearing at all, if I understood Paolo correctly.
Yep, because that made me think the RC hadn't been released yet, unlike I thought
Working on the 2023.03 pick for 8.17, I see a lot of errors:
Error: The default value for hint locality is currently "local" in a section
and "global" otherwise, but is scheduled to change in a future release. For
the time being, adding hints outside of sections without specifying an
explicit locality attribute is therefore deprecated. It is recommended to use
"export" whenever possible. Use the attributes #[local], #[global] and
#[export] depending on your choice. For example: "#[export] Hint Unfold foo :
bar." [deprecated-hint-without-locality,deprecated]
The error is fine, but shouldn't we rework the message? It seems to fit more to the case when this was a warning.
That's a good question, but IIRC the error can still be turned back into a warning, right?
But it might be good to change "a future release" to a concrete one ("Coq 8.18"?), if that's been decided.
It is a warning. Just one that is made fatal by default.
And yes, future release should be the next one.
Please open an issue so this is tracked.
@Théo Zimmermann : I am about to create the "please tag" issues for all Coq Platform components. Usually I give a planned data for the .0 release in there. What date should I use?
The 8.17.0 release is expected very soon and has been delayed because of other things taking all of my bandwidth. I guess you could say ~2023-03-07 as a planned date (but expect it could come before or after depending on how long actually making the release happen takes).
Thanks. I state this as "expected" date, so some deviation is OK.
Emilio Jesús Gallego Arias said:
Note that one of the reverts has to be partial, that is to say, only the coqide part, the fix in the lexer should stay
Hello @Emilio Jesús Gallego Arias, don't forget about preparing this partial revert ASAP. Thanks!
I have not Théo, thanks for the reminder! Will likely happen tomorrow.
If someone could prepare the revert so I can put just the fix after that'd be helpful
In particular prepare the revert and check that the behavior of that revert is OK
So then I have an easier job testing that the fix is not observable from CoqIDE / XML protocol clients
Just out of curiosity, any idea when the release is gonna happen?
according to https://github.com/coq/coq/milestone/48, it seems Coq itself is basically done (up to https://github.com/coq/coq/pull/17343), and the blocker might be CoqIDE?
Yes, basically there are regressions in CoqIDE that should be solved by https://github.com/coq/coq/pull/17348, but this breaks coq-lsp, so @Emilio Jesús Gallego Arias said he would refine this PR to avoid the regressions in CoqIDE without creating regressions in coq-lsp...
I've not merged https://github.com/coq/coq/pull/17343 yet to leave time for feedback on the exact message, but I can merge it at any time when the release is ready.
We might also want to fix https://github.com/coq/coq/issues/17374 by documenting the use of dune install
better (@Rodolphe Lepigre you sound like a knowledgeable candidate to open a PR for this one).
Yes all we are missing is to ensure that #17348, which should revert 8.17 CoqIDE to 8.16 behavior is working fine.
Well, "working fine" here means having the same bugs that 8.16
I just created https://github.com/coq/coq/pull/17383 for https://github.com/coq/coq/issues/17374.
Thanks a lot!
@Théo Zimmermann maybe I missed something, but did anyone "claim" the task of doing opam for 8.17.0 yet?
(it's more work than usual due to the split packages, but I guess I'll do it if nobody else picks it up)
Indeed! But no, nobody did.
OK, planning to do the opam-repository PRs, split for "pure Coq" and CoqIDE, tonight (and I will tag RM and Platform manager in PR)
A status update on Coq Platform:
So nothing serious, but it takes a bit of time.
sed 's/8.14/4.14/'
in your message, I guess
in case anyone not pinged is interested: https://github.com/ocaml/opam-repository/pull/23584
can anyone more knowledgeable with Dune/OCaml/Coq-building help out in the opam-repository PR?
#=== ERROR while compiling coq-core.8.17.0 ====================================#
# context 2.2.0~alpha~dev | linux/ppc64 | ocaml-base-compiler.5.0.0 | pinned(https://github.com/coq/coq/archive/refs/tags/V8.17.0.tar.gz)
# path ~/.opam/5.0/.opam-switch/build/coq-core.8.17.0
# command ~/.opam/opam-init/hooks/sandbox.sh build dune build -p coq-core -j 175 @install
# exit-code 1
# env-file ~/.opam/log/coq-core-7-4e7521.env
# output-file ~/.opam/log/coq-core-7-4e7521.out
### output ###
# File "topbin/dune", line 22, characters 7-15:
# 22 | (name coqc_bin)
# ^^^^^^^^
# Error: No rule found for topbin/coqc_bin.exe
# (cd _build/default/kernel/byterun && /usr/bin/gcc -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -D_FILE_OFFSET_BITS=64 -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -Wall -Wno-unused -g -O2 -g -I /home/opam/.opam/5.0/lib/ocaml -o coq_interp.o -c coq_interp.c)
# coq_interp.c: In function 'coq_interprete':
# coq_interp.c:817:11: warning: assignment discards 'volatile' qualifier from pointer target type [-Wdiscarded-qualifiers]
# 817 | p = &Field(accu, 0);
# | ^
the tests for the coqide-server
opam package seemingly doesn't work, as seen for example here:
[ERROR] The compilation of coqide-server.8.17.0 failed at "dune build -p coqide-server -j 11 @install @runtest".
#=== ERROR while compiling coqide-server.8.17.0 ===============================#
# context 2.1.4 | macos/x86_64 | ocaml-base-compiler.5.0.0 | pinned(https://github.com/coq/coq/archive/refs/tags/V8.17.0.tar.gz)
# path ~/.opam/5.0.0/.opam-switch/build/coqide-server.8.17.0
# command ~/.opam/opam-init/hooks/sandbox.sh build dune build -p coqide-server -j 11 @install @runtest
# exit-code 1
# env-file ~/.opam/log/coqide-server-86598-7e7888.env
# output-file ~/.opam/log/coqide-server-86598-7e7888.out
### output ###
# File "test-suite/dune", line 11, characters 0-145:
# 11 | (rule
# 12 | (targets bin.inc)
# 13 | (action (with-stdout-to %{targets} (run ./ocaml_pwd.exe -quoted -trailing-slash ../../install/%{context_name}/bin/ ))))
# (cd _build/default/test-suite && ./ocaml_pwd.exe -quoted -trailing-slash ../../install/default/bin/) > _build/default/test-suite/bin.inc
# Fatal error: exception Sys_error("../../install/default/bin/: No such file or directory")
# File "test-suite/dune", line 7, characters 0-137:
# 7 | (rule
# 8 | (targets libpath.inc)
# 9 | (action (with-stdout-to %{targets} (run ./ocaml_pwd.exe -quoted ../../install/%{context_name}/lib/coq/ ))))
# (cd _build/default/test-suite && ./ocaml_pwd.exe -quoted ../../install/default/lib/coq/) > _build/default/test-suite/libpath.inc
# Fatal error: exception Sys_error("../../install/default/lib/coq/: No such file or directory")
should I disable the (Dune) tests in this package? Are they even meant to work?
Based only on the quote, that test lacks dependencies, but building @install THEN @runtest (in a separate dune invocation) should fix that problem?
But this is something I and @Rodolphe Lepigre need anyway soon, I might try later
I don't know how dune -p something @runtest
works
which package does the test suite believe it belongs to?
is it going to try running the test suite for each package? but then coq-core should fail too?
coq/dune
:
; Use summary.log as the target
(alias
(name runtest)
(package coqide-server)
(deps test-suite/summary.log))
AFAICT, -p foo
means other packages are treated as non-existing — they must already be installed — but the above runtest
is part of the coqide-server
package. The target itself depends on all of coq:
(rule
(targets summary.log)
(deps
; [...]
(package coq-core)
(package coq-stdlib)
; For fake_ide
(package coqide-server)
indeed, I just reproduced this without -p
$ dune clean
$ dune b test-suite/summary.log
ocamlc test-suite/.ocaml_pwd.eobjs/byte/dune__exe__Ocaml_pwd.{cmi,cmo,cmt}
ocamlopt test-suite/.ocaml_pwd.eobjs/native/dune__exe__Ocaml_pwd.{cmx,o}
ocamlopt test-suite/ocaml_pwd.exe
File "test-suite/dune", line 11, characters 0-145:
11 | (rule
12 | (targets bin.inc)
13 | (action (with-stdout-to %{targets} (run ./ocaml_pwd.exe -quoted -trailing-slash ../../install/%{context_name}/bin/ ))))
ocaml_pwd test-suite/bin.inc (exit 2)
Fatal error: exception Sys_error("../../install/default/bin/: No such file or directory")
File "test-suite/dune", line 7, characters 0-137:
7 | (rule
8 | (targets libpath.inc)
9 | (action (with-stdout-to %{targets} (run ./ocaml_pwd.exe -quoted ../../install/%{context_name}/lib/coq/ ))))
ocaml_pwd test-suite/libpath.inc (exit 2)
Fatal error: exception Sys_error("../../install/default/lib/coq/: No such file or directory")
...
OTOH, building @install
first isn't enough — dune b -p coq-core,coq-stdlib,coqide-server @install; dune b -p coq-core,coq-stdlib,coqide-server @runtest
also fails, if only on ../../install/default/lib/coq/
. Ditto dune b --release @runtest
.
is that with dunestrap?
just remembered, yeah
that is, after dune b @install
(which failed because gtk), runtest
asked me to run make world
but doesn't look like ../../install/default/lib/coq/
can work with -p coqide-server
— the coq-stdlib
is installed, not built locally
it also seems that runtest
should be a no-op on other packages (coq-core
/ coq-stdlib
) — even after dune clean; make dunestrap; $ dune b -p coq-core,coq-stdlib @install
, DUNE_CACHE=disabled dune b -p coq-core,coq-stdlib @runtest
appears to do nothing
@Théo Zimmermann here is a dilemma regarding packages that use Coq as a depopt
in opam: even though the coq
package may not be installed, they detect the coqc
executable from coq-core
and try to use Coq and may fail to build.
Well, add a version constraint for Coq 8.17.0 and let them deal with better detection mechanisms...
(Maybe ping the maintainers to let them know of the problem.)
just adding "coq" {< "8.17"}
unfortunately doesn't work, it has to be a conflict with coq-core
, that's the only thing I can think of
Indeed, you're right!
Is it possible to do a conditional conflict like "if coq-stdlib is not installed the conflict coq-core"?
I guess not https://opam.ocaml.org/doc/Manual.html#opamfield-conflicts
the whole update-revdep-packages thing is seemingly a bottomless rabbit hole. Now the packages I added conflicts with are failing due to not being compatible with OCaml 5, not being linted, etc.
we got some help from the opam maintainers, so now there's a better chance of getting merged later today or tomorrow
8.17.0 is finally out on opam (opam update
)
@Emilio Jesús Gallego Arias we need a "proper" release of SerAPI for 8.17 in the OCaml opam repo for Docker images to work as expected, can I just make a release from the v8.17
SerAPI branch?
@Michael Soegtrop all plugin packages and the like for 8.17 except for SerAPI should now be out on the released
opam repo.
Thanks! I am currently doing a Coq Platform update sweep and plan to update to 8.17.0 and release a beta. There is one "full" package behind, though QuickChick. Otherwise the "opens" are mostly working packages without feedback.
I just finished the sweep. Missing are QuickChick (they are working on it, but no ETA), MetaCoq (ETA next week) and fiat-crypto (they are working on it, but no ETA). Otherwise I need to check if the update to 8.17.0 works, there are a few updates (VST, Eprover) and for a few working packages I didn't get feedback on the please pick issues (which is fine for a beta).
My plan is to do the beta without QuickChick, MetaCoq and FiatCrypto on Monday, but to push that they are there in 2 weeks.
There are btw. still CI issues (Windows and Snap), which I hope to fix over the weekend.
Can we have a Zenodo entry for 8.17? https://zenodo.org/record/7313584
No, that's still on my to-do (but I had forgotten about it).
Last updated: Sep 09 2024 at 05:02 UTC