[core] Improved state protection against memprof-limits interruptions#19177
[core] Improved state protection against memprof-limits interruptions#19177coqbot-app[bot] merged 1 commit intorocq-prover:masterfrom
Conversation
|
I can still corrupt the parser state with this (on the other hand, interrupting the initial requires seems to behave much better). I'll try to figure out next week what's missing (likely we need to protect some of the code that was added for 8.17 to enable backtracking of grammars?) edit: protecting the summaries made my test-suite pass (in ultra interruption mode), tho I found a couple of anomalies (which can be recovered) "memprof limits, token is set" But that is very good news. |
|
Marking this 8.20 ; it is non-controversial IMHO, and would be a pity for UI users to have to keep patching Coq in order to get reliable interruptions. |
With memprof-limits, the code to be audited for problems like this should first be strictly delineated by the memprof-limits tasks (e.g. one only need to look at the functions passed as arguments to the memprof-limits limits). Then, those functions:
Note that local state (i.e. local to the task) is fine (e.g. no need to rewrite the whole program to pass state around). Keeping global state can technically work but it makes things much more difficult for the monitor to keep track that nothing unwind-unsafe escapes.
I had a quick glance at the changes and those are the questions that came to mind. |
|
Still draft, postponing. |
|
@coqbot bench |
Maybe I should rebase and re-run? |
|
bench seems to be running fine, no need to do it on rebase |
| Credit X.Leroy, D.Remy. *) | ||
| val try_finally: ('a -> 'b) -> 'a -> ('c -> unit) -> 'c -> 'b | ||
|
|
||
| val protect_ref : scope:(unit -> 'a) -> 'b ref -> 'a |
There was a problem hiding this comment.
Have a new version that documents all this, will upload after the bench completes.
There was a problem hiding this comment.
👍
Ok, will do tomorrow. If we decide to ship this in 8.20 (hopefully) it shouldn't be too much of a PITA as it doesn't need overlays.
There was a problem hiding this comment.
I mainly wanna be sure the version I push passes all my testing, which takes a little bit.
Thanks @gadmm , indeed in
Yes! I proposed this in 2019 as a key UI task, however it was deemed too costly I guess (never got an answer to my proposal tho), however this is still a critical point, for example it is not possible to use Coq printer from another domain without doing pretty complex (and fragile) tricks. In #10041 we did a large effort to at least separate the proof state. Still, the biggest obstacle is Coq's use of camlp5 parsing engine, which is pretty hard to functionalize.
That's the situation now, fortunately most global state is encapsulated in the summary (not all tho, quite a few offenders actually), so we can either protect the summary (will likely do for 8.20 if not performance impact), or just try to research bad summary unfreeze functions. Most of the state is just setting a ref, so it can be recovered easily.
It was indeed quite tricky, but I develop a bit of improved infra in
This is in a sense what we do, but we have stuff like dynload and camlp5 which are not easy (or just impossible) to functionalize, but what you propose is likely what we will end up adopting, unless we find performance problems. Do you expect masking to introduce performance problems ? As of today we typically mask once per-sentence (tho this is not the case exactly in
Thanks a lot for all your help, I find the scope resource style much much better than what we had before with |
|
@gadmm actually could you have a look at the new function here |
|
🏁 Bench results: INFO: failed to install coq-mathcomp-fingroup (dependency coq-mathcomp-ssreflect failed) 🐢 Top 25 slow downs┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 15.9710 17.0410 1.0700 6.70% 828 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Jacobian/CoZ.v.html │ │ 46.2340 46.9080 0.6740 1.46% 110 coq-bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html │ │ 3.0280 3.5990 0.5710 18.86% 490 coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html │ │ 36.8190 37.3740 0.5550 1.51% 548 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/MMIO.v.html │ │ 2.3590 2.9000 0.5410 22.93% 487 coq-stdlib/Numbers/HexadecimalFacts.v.html │ │ 46.0350 46.4730 0.4380 0.95% 110 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html │ │ 23.7870 24.1820 0.3950 1.66% 49 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html │ │ 33.9310 34.3120 0.3810 1.12% 1333 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │ │ 49.0880 49.4610 0.3730 0.76% 558 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 12.2040 12.5710 0.3670 3.01% 194 coq-fiat-crypto-with-bedrock/src/Fancy/Barrett256.v.html │ │ 235.3730 235.7380 0.3650 0.16% 141 coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html │ │ 25.9730 26.3200 0.3470 1.34% 129 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Projective.v.html │ │ 17.7160 18.0470 0.3310 1.87% 31 coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html │ │ 4.5790 4.9090 0.3300 7.21% 195 coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html │ │ 28.7510 29.0790 0.3280 1.14% 79 coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html │ │ 38.3650 38.6840 0.3190 0.83% 224 coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html │ │ 18.1780 18.4810 0.3030 1.67% 481 coq-verdi-raft/theories/RaftProofs/EndToEndLinearizability.v.html │ │ 1.6480 1.9440 0.2960 17.96% 196 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 17.4650 17.7490 0.2840 1.63% 32 coq-performance-tests-lite/src/pattern.v.html │ │ 21.3340 21.6080 0.2740 1.28% 376 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvMetric.v.html │ │ 3.1610 3.4080 0.2470 7.81% 4023 coq-unimath/UniMath/HomologicalAlgebra/MappingCone.v.html │ │ 0.6740 0.9180 0.2440 36.20% 813 coq-stdlib/MSets/MSetRBT.v.html │ │ 39.3320 39.5600 0.2280 0.58% 236 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html │ │ 36.5080 36.7330 0.2250 0.62% 139 coq-fiat-parsers/src/Parsers/Refinement/SharpenedJSON.v.html │ │ 0.5190 0.7300 0.2110 40.66% 190 coq-stdlib/setoid_ring/Ncring_tac.v.html │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 183.3420 181.7810 -1.5610 -0.85% 233 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │ │ 97.3660 96.1030 -1.2630 -1.30% 968 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 97.2700 96.0440 -1.2260 -1.26% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 4.9820 3.8100 -1.1720 -23.52% 22 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html │ │ 200.4350 199.3530 -1.0820 -0.54% 8 coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html │ │ 66.7690 65.7000 -1.0690 -1.60% 27 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ToFancyWithCasts.v.html │ │ 154.4540 153.4930 -0.9610 -0.62% 1190 coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html │ │ 64.0040 63.1830 -0.8210 -1.28% 609 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 3.3680 2.6090 -0.7590 -22.54% 34 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html │ │ 37.8190 37.1370 -0.6820 -1.80% 3 coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.v.html │ │ 29.3340 28.7000 -0.6340 -2.16% 32 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.v.html │ │ 18.6300 18.0940 -0.5360 -2.88% 708 coq-fiat-crypto-with-bedrock/src/Rewriter/RulesProofs.v.html │ │ 46.7560 46.2380 -0.5180 -1.11% 926 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 17.3850 16.9010 -0.4840 -2.78% 24 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/MulSplit.v.html │ │ 13.1400 12.6700 -0.4700 -3.58% 1555 coq-fiat-crypto-with-bedrock/src/Util/FSets/FMapTrie.v.html │ │ 25.7580 25.3270 -0.4310 -1.67% 24 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/MultiRetSplit.v.html │ │ 27.3110 26.8850 -0.4260 -1.56% 35 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.v.html │ │ 13.3730 12.9930 -0.3800 -2.84% 1028 coq-unimath/UniMath/CategoryTheory/LocalizingClass.v.html │ │ 26.2330 25.8560 -0.3770 -1.44% 345 coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/XZProofs.v.html │ │ 21.4570 21.0970 -0.3600 -1.68% 213 coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html │ │ 15.3070 14.9560 -0.3510 -2.29% 1382 coq-rewriter/src/Rewriter/Language/Wf.v.html │ │ 19.8700 19.5250 -0.3450 -1.74% 1286 coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html │ │ 13.2850 12.9520 -0.3330 -2.51% 17 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 13.2280 12.9070 -0.3210 -2.43% 22 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 39.9480 39.6310 -0.3170 -0.79% 835 coq-fiat-crypto-with-bedrock/src/Fancy/Compiler.v.html │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
|
@SkySkimmer indeed bench found some trouble, will rebase and re-run. |
1789c91 to
7419e7e
Compare
|
@coqbot bench |
|
🏁 Bench results: INFO: failed to install 🐢 Top 25 slow downs┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 179.9630 183.9870 4.0240 2.24% 233 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │ │ 153.1760 154.9030 1.7270 1.13% 1190 coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html │ │ 95.4980 96.9140 1.4160 1.48% 968 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 95.8020 97.0070 1.2050 1.26% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 12.9020 13.8560 0.9540 7.39% 2103 coq-mathcomp-ssreflect/mathcomp/ssreflect/order.v.html │ │ 46.8500 47.7930 0.9430 2.01% 110 coq-bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html │ │ 38.7790 39.6610 0.8820 2.27% 224 coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html │ │ 72.4970 73.3500 0.8530 1.18% 905 coq-unimath/UniMath/ModelCategories/Generated/LNWFSCocomplete.v.html │ │ 3.1460 3.9660 0.8200 26.06% 27 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ToFancyWithCasts.v.html │ │ 17.8180 18.5520 0.7340 4.12% 481 coq-verdi-raft/theories/RaftProofs/EndToEndLinearizability.v.html │ │ 1.7030 2.3200 0.6170 36.23% 196 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 46.7990 47.4160 0.6170 1.32% 110 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html │ │ 4.2620 4.8610 0.5990 14.05% 4414 coq-unimath/UniMath/HomologicalAlgebra/MappingCone.v.html │ │ 46.7980 47.3380 0.5400 1.15% 926 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 33.8610 34.3290 0.4680 1.38% 839 coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html │ │ 235.6780 236.1150 0.4370 0.19% 141 coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html │ │ 10.5280 10.9400 0.4120 3.91% 2089 coq-mathcomp-ssreflect/mathcomp/ssreflect/order.v.html │ │ 4.3840 4.7830 0.3990 9.10% 733 coq-category-theory/Construction/Comma/Adjunction.v.html │ │ 18.7440 19.1300 0.3860 2.06% 6 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeEncodeCSR.v.html │ │ 21.9890 22.3710 0.3820 1.74% 587 coq-unimath/UniMath/AlgebraicTheories/RepresentationTheorem.v.html │ │ 10.0340 10.4130 0.3790 3.78% 768 coq-unimath/UniMath/CategoryTheory/Actegories/ConstructionOfActegoryMorphisms.v.html │ │ 31.0150 31.3660 0.3510 1.13% 12 coq-fourcolor/theories/job254to270.v.html │ │ 9.8140 10.1570 0.3430 3.50% 496 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Wf.v.html │ │ 3.7460 4.0860 0.3400 9.08% 275 coq-category-theory/Construction/Comma/Adjunction.v.html │ │ 3.9450 4.2780 0.3330 8.44% 240 coq-category-theory/Construction/Comma/Adjunction.v.html │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 64.5770 62.3090 -2.2680 -3.51% 609 coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 35.0560 33.3320 -1.7240 -4.92% 1333 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │ │ 37.8920 36.4020 -1.4900 -3.93% 548 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/MMIO.v.html │ │ 50.4070 49.0890 -1.3180 -2.61% 558 coq-bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 50.4860 49.3670 -1.1190 -2.22% 558 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 27.2340 26.6430 -0.5910 -2.17% 12 coq-fourcolor/theories/job190to206.v.html │ │ 132.5390 131.9570 -0.5820 -0.44% 22 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html │ │ 4.3100 3.7660 -0.5440 -12.62% 490 coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html │ │ 39.0050 38.5680 -0.4370 -1.12% 338 coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html │ │ 37.8760 37.4450 -0.4310 -1.14% 3 coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/with_bedrock2_fiat_crypto.v.html │ │ 7.6990 7.3020 -0.3970 -5.16% 602 coq-unimath/UniMath/CategoryTheory/EnrichedCats/Limits/Examples/StructureEnrichedLimits.v.html │ │ 25.3980 25.0010 -0.3970 -1.56% 12 coq-fourcolor/theories/job227to230.v.html │ │ 36.5030 36.1290 -0.3740 -1.02% 139 coq-fiat-parsers/src/Parsers/Refinement/SharpenedJSON.v.html │ │ 28.9930 28.6690 -0.3240 -1.12% 144 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html │ │ 103.2940 102.9710 -0.3230 -0.31% 20 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/NBE.v.html │ │ 1.4490 1.1320 -0.3170 -21.88% 854 coq-stdlib/FSets/FMapAVL.v.html │ │ 27.3790 27.0630 -0.3160 -1.15% 147 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html │ │ 96.9840 96.6780 -0.3060 -0.32% 376 coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html │ │ 3.2580 2.9690 -0.2890 -8.87% 3222 coq-metacoq-pcuic/pcuic/theories/PCUICConfluence.v.html │ │ 2.6610 2.3790 -0.2820 -10.60% 487 coq-stdlib/Numbers/HexadecimalFacts.v.html │ │ 83.1720 82.8920 -0.2800 -0.34% 48 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html │ │ 33.0780 32.8020 -0.2760 -0.83% 12 coq-fourcolor/theories/job439to465.v.html │ │ 29.8040 29.5280 -0.2760 -0.93% 79 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html │ │ 23.8300 23.5640 -0.2660 -1.12% 12 coq-fourcolor/theories/job295to298.v.html │ │ 2.7470 2.4890 -0.2580 -9.39% 698 coq-category-theory/Construction/Comma/Adjunction.v.html │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
|
IMHO noise / no-effect (we should actually have a different metric that %, as for equations 11 seconds runtime, 2% is not significative) @SkySkimmer how would it best to go ahead with this? Depending PR is IMHO ready, this one too but I cannot undraft it until we merge the other one. |
|
@ejgallego you should probably rebase and undraft quickly if you want this in 8.20. |
Yes, when is the deadline? Running the test suite for this unfortunately not trivial. |
7419e7e to
95627c3
Compare
CHANGES: ------------------------ - [fleche] fix quick fixes for errors being lost due to incorrect handling of `send_diags_extra_data` (@ejgallego, rocq-community/rocq-lsp#850) - [vscode] Syntax highlighting for Coq 8.17-8.20 (@4ever2, rocq-community/rocq-lsp#872) - [build] Adapt to Coq -> Rocq renaming (@ejgallego, @proux, rocq-community/rocq-lsp#879) - [js worker] Update js_of_ocaml to 5.9.1 , thanks a lot to Hugo Heuzard for longstanding continued support of the jsCoq and coq-lsp projects (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Update stubs (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Fix build for Coq -> Rocq renaming and stdlib split (@ejgallego, rocq-community/rocq-lsp#881) - [general] Adapt to Coq -> Rocq renaming (@ejgallego, @SkySkimmer, rocq-community/rocq-lsp#883) - [general] [js] Adapt to Rocq stdlib split (@ejgallego, rocq-community/rocq-lsp#890) - [ci] Bump setup-ocaml to v3 (@ejgallego, rocq-community/rocq-lsp#890) - [ci] [windows] Use Opam 2.2 to build on windows (@ejgallego, rocq-community/rocq-lsp#815, rocq-community/rocq-lsp#890) - [petanque] `petanque/start` now fails when the theorem was parsed but not successfully executed (@ejgallego, reported by @gbdrt, rocq-community/rocq-lsp#901, fixes rocq-community/rocq-lsp#886) - [ci] Test Ocaml 5.3 (@ejgallego, rocq-community/rocq-lsp#904) - [js worker] Add Shachar Itzhaky's trampoline patch; this greatly reduces the Stack Overflow in the proof engine (@ejgallego, @corwin-of-amber, rocq-community/rocq-lsp#905) - [js worker] [build] Include Coq WaterProof in the default Web Worker build (@ejgallego, waterproof team, rocq-community/rocq-lsp#905, closes rocq-community/rocq-lsp#888) - [vscode] [web] Fix web extension not exporting the coq-lsp extension API (@ejgallego, reported by @amblafont, rocq-community/rocq-lsp#911, fixes rocq-community/rocq-lsp#877) - [build] [general] Rename our internal `Lsp` library to `Fleche_lsp`; this should help avoiding conflicts with the OCaml `lsp` library (@ejgallego, reported by @blackbird1128, rocq-community/rocq-lsp#912, fixes rocq-community/rocq-lsp#861) - [workspace] Remove support legacy ML-search path semantics. These were basically unused since Coq 8.16. As a consequence, `coq-lsp` / `fcc` don't accept the `-I` flag anymore, use `OCAMLPATH` or the `--ocamlpath=` option to pass extra `findlib` paths. We still respect the -I flag in `_CoqMakefile` (@ejgallego, rocq-community/rocq-lsp#916) - [lsp] [debug] Respect `$/setTrace` call , refactor logging system, and allow file logging of protocol traces again (@ejgallego, rocq-community/rocq-lsp#919, fixes rocq-community/rocq-lsp#868) - [coq] Support Coq relocatable mode (@SkySkimmer, rocq-community/rocq-lsp#891) - [ci] [deps] Remove support for OCaml 4.12 and 4.13, following upstream's rocq-prover/rocq#20576 Note that these compiler versions have been unsupported for a long time, please upgrade (@ejgallego, rocq-community/rocq-lsp#951) - [hover] New option `show_state_hash_on_hover` that displays state hash on hover for debug (@ejgallego, rocq-community/rocq-lsp#954) - [doc] [faq] Updated FAQ to account for VSCoq 2 release in 2023, thanks to Patrick Nicodemus for pointing out the outdated documentation (@ejgallego, rocq-community/rocq-lsp#846, fixes rocq-community/rocq-lsp#817) - [vscode] [macos] Resolve keybinding conflict with Cmd+N and Cmd+Enter, we now use Alt+N and Alt+Shift+Enter, (Andrei Listochkin, rocq-community/rocq-lsp#926) - [rocq] [fleche] Disable memprof-limits interruption backend by default, as released Rocq versions are not safe yet. If you want to enable it, you can still do it with the `--int_backend=Mp` command line option (@ejgallego, rocq-community/rocq-lsp#957, fixes rocq-community/rocq-lsp#857, reported by @dariusf, cc: rocq-prover/rocq#19177) - [lsp] [controller] Include Rocq feedback on request errors, using the optional `data` field. This is useful to still be able to obtain feedback messages such as debug messages even when a request fails. This also opens the door to better protocol handling and petanque integration (@ejgallego, rocq-community/rocq-lsp#959, rocq-community/rocq-lsp#961) - [petanque] Add feedback field to `Run_result.t`, this is important for many use cases. We also return feedback on petanque errors. (@ejgallego, @JulesViennotFranca, rocq-community/rocq-lsp#960) - [petanque] new `get_state_at_pos` and `get_root_state` calls, that allow to retrieve a petanque proof state from position (@JulesViennotFranca, @ejgallego, rocq-community/rocq-lsp#962) - [doc] [petanque] Document petanque v1, improve readme (@ejgallego, rocq-community/rocq-lsp#963) - [plugin] [astdump] Make the JSON and SEXP output into a line per object by default (@blackbird1128, @ejgallego, rocq-community/rocq-lsp#874) - [doc] [emacs] [protocol] Improve documentation for `proof/goals`, add link to official emacs mode by Josselin Poiret (@ejgallego, rocq-community/rocq-lsp#969, thanks to @jpoiret, cc: rocq-community/rocq-lsp#941) - [goals] Include `range` in `proof/goals` answer. This is useful for clients willing to do highlighting (@ejgallego, @jpoiret, rocq-community/rocq-lsp#970)
|
I'm planning to branch 9.1 next week, it would be nice if this could be finished before that. |
CHANGES: ------------------------ - [fleche] fix quick fixes for errors being lost due to incorrect handling of `send_diags_extra_data` (@ejgallego, rocq-community/rocq-lsp#850) - [vscode] Syntax highlighting for Coq 8.17-8.20 (@4ever2, rocq-community/rocq-lsp#872) - [build] Adapt to Coq -> Rocq renaming (@ejgallego, @proux, rocq-community/rocq-lsp#879) - [js worker] Update js_of_ocaml to 5.9.1 , thanks a lot to Hugo Heuzard for longstanding continued support of the jsCoq and coq-lsp projects (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Update stubs (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Fix build for Coq -> Rocq renaming and stdlib split (@ejgallego, rocq-community/rocq-lsp#881) - [general] Adapt to Coq -> Rocq renaming (@ejgallego, @SkySkimmer, rocq-community/rocq-lsp#883) - [general] [js] Adapt to Rocq stdlib split (@ejgallego, rocq-community/rocq-lsp#890) - [ci] Bump setup-ocaml to v3 (@ejgallego, rocq-community/rocq-lsp#890) - [ci] [windows] Use Opam 2.2 to build on windows (@ejgallego, rocq-community/rocq-lsp#815, rocq-community/rocq-lsp#890) - [petanque] `petanque/start` now fails when the theorem was parsed but not successfully executed (@ejgallego, reported by @gbdrt, rocq-community/rocq-lsp#901, fixes rocq-community/rocq-lsp#886) - [ci] Test Ocaml 5.3 (@ejgallego, rocq-community/rocq-lsp#904) - [js worker] Add Shachar Itzhaky's trampoline patch; this greatly reduces the Stack Overflow in the proof engine (@ejgallego, @corwin-of-amber, rocq-community/rocq-lsp#905) - [js worker] [build] Include Coq WaterProof in the default Web Worker build (@ejgallego, waterproof team, rocq-community/rocq-lsp#905, closes rocq-community/rocq-lsp#888) - [vscode] [web] Fix web extension not exporting the coq-lsp extension API (@ejgallego, reported by @amblafont, rocq-community/rocq-lsp#911, fixes rocq-community/rocq-lsp#877) - [build] [general] Rename our internal `Lsp` library to `Fleche_lsp`; this should help avoiding conflicts with the OCaml `lsp` library (@ejgallego, reported by @blackbird1128, rocq-community/rocq-lsp#912, fixes rocq-community/rocq-lsp#861) - [workspace] Remove support legacy ML-search path semantics. These were basically unused since Coq 8.16. As a consequence, `coq-lsp` / `fcc` don't accept the `-I` flag anymore, use `OCAMLPATH` or the `--ocamlpath=` option to pass extra `findlib` paths. We still respect the -I flag in `_CoqMakefile` (@ejgallego, rocq-community/rocq-lsp#916) - [lsp] [debug] Respect `$/setTrace` call , refactor logging system, and allow file logging of protocol traces again (@ejgallego, rocq-community/rocq-lsp#919, fixes rocq-community/rocq-lsp#868) - [coq] Support Coq relocatable mode (@SkySkimmer, rocq-community/rocq-lsp#891) - [ci] [deps] Remove support for OCaml 4.12 and 4.13, following upstream's rocq-prover/rocq#20576 Note that these compiler versions have been unsupported for a long time, please upgrade (@ejgallego, rocq-community/rocq-lsp#951) - [hover] New option `show_state_hash_on_hover` that displays state hash on hover for debug (@ejgallego, rocq-community/rocq-lsp#954) - [doc] [faq] Updated FAQ to account for VSCoq 2 release in 2023, thanks to Patrick Nicodemus for pointing out the outdated documentation (@ejgallego, rocq-community/rocq-lsp#846, fixes rocq-community/rocq-lsp#817) - [vscode] [macos] Resolve keybinding conflict with Cmd+N and Cmd+Enter, we now use Alt+N and Alt+Shift+Enter, (Andrei Listochkin, rocq-community/rocq-lsp#926) - [rocq] [fleche] Disable memprof-limits interruption backend by default, as released Rocq versions are not safe yet. If you want to enable it, you can still do it with the `--int_backend=Mp` command line option (@ejgallego, rocq-community/rocq-lsp#957, fixes rocq-community/rocq-lsp#857, reported by @dariusf, cc: rocq-prover/rocq#19177) - [lsp] [controller] Include Rocq feedback on request errors, using the optional `data` field. This is useful to still be able to obtain feedback messages such as debug messages even when a request fails. This also opens the door to better protocol handling and petanque integration (@ejgallego, rocq-community/rocq-lsp#959, rocq-community/rocq-lsp#961) - [petanque] Add feedback field to `Run_result.t`, this is important for many use cases. We also return feedback on petanque errors. (@ejgallego, @JulesViennotFranca, rocq-community/rocq-lsp#960) - [petanque] new `get_state_at_pos` and `get_root_state` calls, that allow to retrieve a petanque proof state from position (@JulesViennotFranca, @ejgallego, rocq-community/rocq-lsp#962) - [doc] [petanque] Document petanque v1, improve readme (@ejgallego, rocq-community/rocq-lsp#963) - [plugin] [astdump] Make the JSON and SEXP output into a line per object by default (@blackbird1128, @ejgallego, rocq-community/rocq-lsp#874) - [doc] [emacs] [protocol] Improve documentation for `proof/goals`, add link to official emacs mode by Josselin Poiret (@ejgallego, rocq-community/rocq-lsp#969, thanks to @jpoiret, cc: rocq-community/rocq-lsp#941) - [goals] Include `range` in `proof/goals` answer. This is useful for clients willing to do highlighting (@ejgallego, @jpoiret, rocq-community/rocq-lsp#970)
CHANGES: ------------------------ - [fleche] fix quick fixes for errors being lost due to incorrect handling of `send_diags_extra_data` (@ejgallego, rocq-community/rocq-lsp#850) - [vscode] Syntax highlighting for Coq 8.17-8.20 (@4ever2, rocq-community/rocq-lsp#872) - [build] Adapt to Coq -> Rocq renaming (@ejgallego, @proux, rocq-community/rocq-lsp#879) - [js worker] Update js_of_ocaml to 5.9.1 , thanks a lot to Hugo Heuzard for longstanding continued support of the jsCoq and coq-lsp projects (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Update stubs (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Fix build for Coq -> Rocq renaming and stdlib split (@ejgallego, rocq-community/rocq-lsp#881) - [general] Adapt to Coq -> Rocq renaming (@ejgallego, @SkySkimmer, rocq-community/rocq-lsp#883) - [general] [js] Adapt to Rocq stdlib split (@ejgallego, rocq-community/rocq-lsp#890) - [ci] Bump setup-ocaml to v3 (@ejgallego, rocq-community/rocq-lsp#890) - [ci] [windows] Use Opam 2.2 to build on windows (@ejgallego, rocq-community/rocq-lsp#815, rocq-community/rocq-lsp#890) - [petanque] `petanque/start` now fails when the theorem was parsed but not successfully executed (@ejgallego, reported by @gbdrt, rocq-community/rocq-lsp#901, fixes rocq-community/rocq-lsp#886) - [ci] Test Ocaml 5.3 (@ejgallego, rocq-community/rocq-lsp#904) - [js worker] Add Shachar Itzhaky's trampoline patch; this greatly reduces the Stack Overflow in the proof engine (@ejgallego, @corwin-of-amber, rocq-community/rocq-lsp#905) - [js worker] [build] Include Coq WaterProof in the default Web Worker build (@ejgallego, waterproof team, rocq-community/rocq-lsp#905, closes rocq-community/rocq-lsp#888) - [vscode] [web] Fix web extension not exporting the coq-lsp extension API (@ejgallego, reported by @amblafont, rocq-community/rocq-lsp#911, fixes rocq-community/rocq-lsp#877) - [build] [general] Rename our internal `Lsp` library to `Fleche_lsp`; this should help avoiding conflicts with the OCaml `lsp` library (@ejgallego, reported by @blackbird1128, rocq-community/rocq-lsp#912, fixes rocq-community/rocq-lsp#861) - [workspace] Remove support legacy ML-search path semantics. These were basically unused since Coq 8.16. As a consequence, `coq-lsp` / `fcc` don't accept the `-I` flag anymore, use `OCAMLPATH` or the `--ocamlpath=` option to pass extra `findlib` paths. We still respect the -I flag in `_CoqMakefile` (@ejgallego, rocq-community/rocq-lsp#916) - [lsp] [debug] Respect `$/setTrace` call , refactor logging system, and allow file logging of protocol traces again (@ejgallego, rocq-community/rocq-lsp#919, fixes rocq-community/rocq-lsp#868) - [coq] Support Coq relocatable mode (@SkySkimmer, rocq-community/rocq-lsp#891) - [ci] [deps] Remove support for OCaml 4.12 and 4.13, following upstream's rocq-prover/rocq#20576 Note that these compiler versions have been unsupported for a long time, please upgrade (@ejgallego, rocq-community/rocq-lsp#951) - [hover] New option `show_state_hash_on_hover` that displays state hash on hover for debug (@ejgallego, rocq-community/rocq-lsp#954) - [doc] [faq] Updated FAQ to account for VSCoq 2 release in 2023, thanks to Patrick Nicodemus for pointing out the outdated documentation (@ejgallego, rocq-community/rocq-lsp#846, fixes rocq-community/rocq-lsp#817) - [vscode] [macos] Resolve keybinding conflict with Cmd+N and Cmd+Enter, we now use Alt+N and Alt+Shift+Enter, (Andrei Listochkin, rocq-community/rocq-lsp#926) - [rocq] [fleche] Disable memprof-limits interruption backend by default, as released Rocq versions are not safe yet. If you want to enable it, you can still do it with the `--int_backend=Mp` command line option (@ejgallego, rocq-community/rocq-lsp#957, fixes rocq-community/rocq-lsp#857, reported by @dariusf, cc: rocq-prover/rocq#19177) - [lsp] [controller] Include Rocq feedback on request errors, using the optional `data` field. This is useful to still be able to obtain feedback messages such as debug messages even when a request fails. This also opens the door to better protocol handling and petanque integration (@ejgallego, rocq-community/rocq-lsp#959, rocq-community/rocq-lsp#961) - [petanque] Add feedback field to `Run_result.t`, this is important for many use cases. We also return feedback on petanque errors. (@ejgallego, @JulesViennotFranca, rocq-community/rocq-lsp#960) - [petanque] new `get_state_at_pos` and `get_root_state` calls, that allow to retrieve a petanque proof state from position (@JulesViennotFranca, @ejgallego, rocq-community/rocq-lsp#962) - [doc] [petanque] Document petanque v1, improve readme (@ejgallego, rocq-community/rocq-lsp#963) - [plugin] [astdump] Make the JSON and SEXP output into a line per object by default (@blackbird1128, @ejgallego, rocq-community/rocq-lsp#874) - [doc] [emacs] [protocol] Improve documentation for `proof/goals`, add link to official emacs mode by Josselin Poiret (@ejgallego, rocq-community/rocq-lsp#969, thanks to @jpoiret, cc: rocq-community/rocq-lsp#941) - [goals] Include `range` in `proof/goals` answer. This is useful for clients willing to do highlighting (@ejgallego, @jpoiret, rocq-community/rocq-lsp#970)
CHANGES: ------------------------ - [fleche] fix quick fixes for errors being lost due to incorrect handling of `send_diags_extra_data` (@ejgallego, rocq-community/rocq-lsp#850) - [vscode] Syntax highlighting for Coq 8.17-8.20 (@4ever2, rocq-community/rocq-lsp#872) - [build] Adapt to Coq -> Rocq renaming (@ejgallego, @proux, rocq-community/rocq-lsp#879) - [js worker] Update js_of_ocaml to 5.9.1 , thanks a lot to Hugo Heuzard for longstanding continued support of the jsCoq and coq-lsp projects (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Update stubs (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Fix build for Coq -> Rocq renaming and stdlib split (@ejgallego, rocq-community/rocq-lsp#881) - [general] Adapt to Coq -> Rocq renaming (@ejgallego, @SkySkimmer, rocq-community/rocq-lsp#883) - [general] [js] Adapt to Rocq stdlib split (@ejgallego, rocq-community/rocq-lsp#890) - [ci] Bump setup-ocaml to v3 (@ejgallego, rocq-community/rocq-lsp#890) - [ci] [windows] Use Opam 2.2 to build on windows (@ejgallego, rocq-community/rocq-lsp#815, rocq-community/rocq-lsp#890) - [petanque] `petanque/start` now fails when the theorem was parsed but not successfully executed (@ejgallego, reported by @gbdrt, rocq-community/rocq-lsp#901, fixes rocq-community/rocq-lsp#886) - [ci] Test Ocaml 5.3 (@ejgallego, rocq-community/rocq-lsp#904) - [js worker] Add Shachar Itzhaky's trampoline patch; this greatly reduces the Stack Overflow in the proof engine (@ejgallego, @corwin-of-amber, rocq-community/rocq-lsp#905) - [js worker] [build] Include Coq WaterProof in the default Web Worker build (@ejgallego, waterproof team, rocq-community/rocq-lsp#905, closes rocq-community/rocq-lsp#888) - [vscode] [web] Fix web extension not exporting the coq-lsp extension API (@ejgallego, reported by @amblafont, rocq-community/rocq-lsp#911, fixes rocq-community/rocq-lsp#877) - [build] [general] Rename our internal `Lsp` library to `Fleche_lsp`; this should help avoiding conflicts with the OCaml `lsp` library (@ejgallego, reported by @blackbird1128, rocq-community/rocq-lsp#912, fixes rocq-community/rocq-lsp#861) - [workspace] Remove support legacy ML-search path semantics. These were basically unused since Coq 8.16. As a consequence, `coq-lsp` / `fcc` don't accept the `-I` flag anymore, use `OCAMLPATH` or the `--ocamlpath=` option to pass extra `findlib` paths. We still respect the -I flag in `_CoqMakefile` (@ejgallego, rocq-community/rocq-lsp#916) - [lsp] [debug] Respect `$/setTrace` call , refactor logging system, and allow file logging of protocol traces again (@ejgallego, rocq-community/rocq-lsp#919, fixes rocq-community/rocq-lsp#868) - [coq] Support Coq relocatable mode (@SkySkimmer, rocq-community/rocq-lsp#891) - [ci] [deps] Remove support for OCaml 4.12 and 4.13, following upstream's rocq-prover/rocq#20576 Note that these compiler versions have been unsupported for a long time, please upgrade (@ejgallego, rocq-community/rocq-lsp#951) - [hover] New option `show_state_hash_on_hover` that displays state hash on hover for debug (@ejgallego, rocq-community/rocq-lsp#954) - [doc] [faq] Updated FAQ to account for VSCoq 2 release in 2023, thanks to Patrick Nicodemus for pointing out the outdated documentation (@ejgallego, rocq-community/rocq-lsp#846, fixes rocq-community/rocq-lsp#817) - [vscode] [macos] Resolve keybinding conflict with Cmd+N and Cmd+Enter, we now use Alt+N and Alt+Shift+Enter, (Andrei Listochkin, rocq-community/rocq-lsp#926) - [rocq] [fleche] Disable memprof-limits interruption backend by default, as released Rocq versions are not safe yet. If you want to enable it, you can still do it with the `--int_backend=Mp` command line option (@ejgallego, rocq-community/rocq-lsp#957, fixes rocq-community/rocq-lsp#857, reported by @dariusf, cc: rocq-prover/rocq#19177) - [lsp] [controller] Include Rocq feedback on request errors, using the optional `data` field. This is useful to still be able to obtain feedback messages such as debug messages even when a request fails. This also opens the door to better protocol handling and petanque integration (@ejgallego, rocq-community/rocq-lsp#959, rocq-community/rocq-lsp#961) - [petanque] Add feedback field to `Run_result.t`, this is important for many use cases. We also return feedback on petanque errors. (@ejgallego, @JulesViennotFranca, rocq-community/rocq-lsp#960) - [petanque] new `get_state_at_pos` and `get_root_state` calls, that allow to retrieve a petanque proof state from position (@JulesViennotFranca, @ejgallego, rocq-community/rocq-lsp#962) - [doc] [petanque] Document petanque v1, improve readme (@ejgallego, rocq-community/rocq-lsp#963) - [plugin] [astdump] Make the JSON and SEXP output into a line per object by default (@blackbird1128, @ejgallego, rocq-community/rocq-lsp#874) - [doc] [emacs] [protocol] Improve documentation for `proof/goals`, add link to official emacs mode by Josselin Poiret (@ejgallego, rocq-community/rocq-lsp#969, thanks to @jpoiret, cc: rocq-community/rocq-lsp#941) - [goals] Include `range` in `proof/goals` answer. This is useful for clients willing to do highlighting (@ejgallego, @jpoiret, rocq-community/rocq-lsp#970)
CHANGES: ------------------------ - [fleche] fix quick fixes for errors being lost due to incorrect handling of `send_diags_extra_data` (@ejgallego, rocq-community/rocq-lsp#850) - [vscode] Syntax highlighting for Coq 8.17-8.20 (@4ever2, rocq-community/rocq-lsp#872) - [build] Adapt to Coq -> Rocq renaming (@ejgallego, @proux, rocq-community/rocq-lsp#879) - [js worker] Update js_of_ocaml to 5.9.1 , thanks a lot to Hugo Heuzard for longstanding continued support of the jsCoq and coq-lsp projects (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Update stubs (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Fix build for Coq -> Rocq renaming and stdlib split (@ejgallego, rocq-community/rocq-lsp#881) - [general] Adapt to Coq -> Rocq renaming (@ejgallego, @SkySkimmer, rocq-community/rocq-lsp#883) - [general] [js] Adapt to Rocq stdlib split (@ejgallego, rocq-community/rocq-lsp#890) - [ci] Bump setup-ocaml to v3 (@ejgallego, rocq-community/rocq-lsp#890) - [ci] [windows] Use Opam 2.2 to build on windows (@ejgallego, rocq-community/rocq-lsp#815, rocq-community/rocq-lsp#890) - [petanque] `petanque/start` now fails when the theorem was parsed but not successfully executed (@ejgallego, reported by @gbdrt, rocq-community/rocq-lsp#901, fixes rocq-community/rocq-lsp#886) - [ci] Test Ocaml 5.3 (@ejgallego, rocq-community/rocq-lsp#904) - [js worker] Add Shachar Itzhaky's trampoline patch; this greatly reduces the Stack Overflow in the proof engine (@ejgallego, @corwin-of-amber, rocq-community/rocq-lsp#905) - [js worker] [build] Include Coq WaterProof in the default Web Worker build (@ejgallego, waterproof team, rocq-community/rocq-lsp#905, closes rocq-community/rocq-lsp#888) - [vscode] [web] Fix web extension not exporting the coq-lsp extension API (@ejgallego, reported by @amblafont, rocq-community/rocq-lsp#911, fixes rocq-community/rocq-lsp#877) - [build] [general] Rename our internal `Lsp` library to `Fleche_lsp`; this should help avoiding conflicts with the OCaml `lsp` library (@ejgallego, reported by @blackbird1128, rocq-community/rocq-lsp#912, fixes rocq-community/rocq-lsp#861) - [workspace] Remove support legacy ML-search path semantics. These were basically unused since Coq 8.16. As a consequence, `coq-lsp` / `fcc` don't accept the `-I` flag anymore, use `OCAMLPATH` or the `--ocamlpath=` option to pass extra `findlib` paths. We still respect the -I flag in `_CoqMakefile` (@ejgallego, rocq-community/rocq-lsp#916) - [lsp] [debug] Respect `$/setTrace` call , refactor logging system, and allow file logging of protocol traces again (@ejgallego, rocq-community/rocq-lsp#919, fixes rocq-community/rocq-lsp#868) - [coq] Support Coq relocatable mode (@SkySkimmer, rocq-community/rocq-lsp#891) - [ci] [deps] Remove support for OCaml 4.12 and 4.13, following upstream's rocq-prover/rocq#20576 Note that these compiler versions have been unsupported for a long time, please upgrade (@ejgallego, rocq-community/rocq-lsp#951) - [hover] New option `show_state_hash_on_hover` that displays state hash on hover for debug (@ejgallego, rocq-community/rocq-lsp#954) - [doc] [faq] Updated FAQ to account for VSCoq 2 release in 2023, thanks to Patrick Nicodemus for pointing out the outdated documentation (@ejgallego, rocq-community/rocq-lsp#846, fixes rocq-community/rocq-lsp#817) - [vscode] [macos] Resolve keybinding conflict with Cmd+N and Cmd+Enter, we now use Alt+N and Alt+Shift+Enter, (Andrei Listochkin, rocq-community/rocq-lsp#926) - [rocq] [fleche] Disable memprof-limits interruption backend by default, as released Rocq versions are not safe yet. If you want to enable it, you can still do it with the `--int_backend=Mp` command line option (@ejgallego, rocq-community/rocq-lsp#957, fixes rocq-community/rocq-lsp#857, reported by @dariusf, cc: rocq-prover/rocq#19177) - [lsp] [controller] Include Rocq feedback on request errors, using the optional `data` field. This is useful to still be able to obtain feedback messages such as debug messages even when a request fails. This also opens the door to better protocol handling and petanque integration (@ejgallego, rocq-community/rocq-lsp#959, rocq-community/rocq-lsp#961) - [petanque] Add feedback field to `Run_result.t`, this is important for many use cases. We also return feedback on petanque errors. (@ejgallego, @JulesViennotFranca, rocq-community/rocq-lsp#960) - [petanque] new `get_state_at_pos` and `get_root_state` calls, that allow to retrieve a petanque proof state from position (@JulesViennotFranca, @ejgallego, rocq-community/rocq-lsp#962) - [doc] [petanque] Document petanque v1, improve readme (@ejgallego, rocq-community/rocq-lsp#963) - [plugin] [astdump] Make the JSON and SEXP output into a line per object by default (@blackbird1128, @ejgallego, rocq-community/rocq-lsp#874) - [doc] [emacs] [protocol] Improve documentation for `proof/goals`, add link to official emacs mode by Josselin Poiret (@ejgallego, rocq-community/rocq-lsp#969, thanks to @jpoiret, cc: rocq-community/rocq-lsp#941) - [goals] Include `range` in `proof/goals` answer. This is useful for clients willing to do highlighting (@ejgallego, @jpoiret, rocq-community/rocq-lsp#970)
CHANGES: ------------------------ - [fleche] fix quick fixes for errors being lost due to incorrect handling of `send_diags_extra_data` (@ejgallego, rocq-community/rocq-lsp#850) - [vscode] Syntax highlighting for Coq 8.17-8.20 (@4ever2, rocq-community/rocq-lsp#872) - [build] Adapt to Coq -> Rocq renaming (@ejgallego, @proux, rocq-community/rocq-lsp#879) - [js worker] Update js_of_ocaml to 5.9.1 , thanks a lot to Hugo Heuzard for longstanding continued support of the jsCoq and coq-lsp projects (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Update stubs (@ejgallego, @hhugo, rocq-community/rocq-lsp#881) - [js worker] Fix build for Coq -> Rocq renaming and stdlib split (@ejgallego, rocq-community/rocq-lsp#881) - [general] Adapt to Coq -> Rocq renaming (@ejgallego, @SkySkimmer, rocq-community/rocq-lsp#883) - [general] [js] Adapt to Rocq stdlib split (@ejgallego, rocq-community/rocq-lsp#890) - [ci] Bump setup-ocaml to v3 (@ejgallego, rocq-community/rocq-lsp#890) - [ci] [windows] Use Opam 2.2 to build on windows (@ejgallego, rocq-community/rocq-lsp#815, rocq-community/rocq-lsp#890) - [petanque] `petanque/start` now fails when the theorem was parsed but not successfully executed (@ejgallego, reported by @gbdrt, rocq-community/rocq-lsp#901, fixes rocq-community/rocq-lsp#886) - [ci] Test Ocaml 5.3 (@ejgallego, rocq-community/rocq-lsp#904) - [js worker] Add Shachar Itzhaky's trampoline patch; this greatly reduces the Stack Overflow in the proof engine (@ejgallego, @corwin-of-amber, rocq-community/rocq-lsp#905) - [js worker] [build] Include Coq WaterProof in the default Web Worker build (@ejgallego, waterproof team, rocq-community/rocq-lsp#905, closes rocq-community/rocq-lsp#888) - [vscode] [web] Fix web extension not exporting the coq-lsp extension API (@ejgallego, reported by @amblafont, rocq-community/rocq-lsp#911, fixes rocq-community/rocq-lsp#877) - [build] [general] Rename our internal `Lsp` library to `Fleche_lsp`; this should help avoiding conflicts with the OCaml `lsp` library (@ejgallego, reported by @blackbird1128, rocq-community/rocq-lsp#912, fixes rocq-community/rocq-lsp#861) - [workspace] Remove support legacy ML-search path semantics. These were basically unused since Coq 8.16. As a consequence, `coq-lsp` / `fcc` don't accept the `-I` flag anymore, use `OCAMLPATH` or the `--ocamlpath=` option to pass extra `findlib` paths. We still respect the -I flag in `_CoqMakefile` (@ejgallego, rocq-community/rocq-lsp#916) - [lsp] [debug] Respect `$/setTrace` call , refactor logging system, and allow file logging of protocol traces again (@ejgallego, rocq-community/rocq-lsp#919, fixes rocq-community/rocq-lsp#868) - [coq] Support Coq relocatable mode (@SkySkimmer, rocq-community/rocq-lsp#891) - [ci] [deps] Remove support for OCaml 4.12 and 4.13, following upstream's rocq-prover/rocq#20576 Note that these compiler versions have been unsupported for a long time, please upgrade (@ejgallego, rocq-community/rocq-lsp#951) - [hover] New option `show_state_hash_on_hover` that displays state hash on hover for debug (@ejgallego, rocq-community/rocq-lsp#954) - [doc] [faq] Updated FAQ to account for VSCoq 2 release in 2023, thanks to Patrick Nicodemus for pointing out the outdated documentation (@ejgallego, rocq-community/rocq-lsp#846, fixes rocq-community/rocq-lsp#817) - [vscode] [macos] Resolve keybinding conflict with Cmd+N and Cmd+Enter, we now use Alt+N and Alt+Shift+Enter, (Andrei Listochkin, rocq-community/rocq-lsp#926) - [rocq] [fleche] Disable memprof-limits interruption backend by default, as released Rocq versions are not safe yet. If you want to enable it, you can still do it with the `--int_backend=Mp` command line option (@ejgallego, rocq-community/rocq-lsp#957, fixes rocq-community/rocq-lsp#857, reported by @dariusf, cc: rocq-prover/rocq#19177) - [lsp] [controller] Include Rocq feedback on request errors, using the optional `data` field. This is useful to still be able to obtain feedback messages such as debug messages even when a request fails. This also opens the door to better protocol handling and petanque integration (@ejgallego, rocq-community/rocq-lsp#959, rocq-community/rocq-lsp#961) - [petanque] Add feedback field to `Run_result.t`, this is important for many use cases. We also return feedback on petanque errors. (@ejgallego, @JulesViennotFranca, rocq-community/rocq-lsp#960) - [petanque] new `get_state_at_pos` and `get_root_state` calls, that allow to retrieve a petanque proof state from position (@JulesViennotFranca, @ejgallego, rocq-community/rocq-lsp#962) - [doc] [petanque] Document petanque v1, improve readme (@ejgallego, rocq-community/rocq-lsp#963) - [plugin] [astdump] Make the JSON and SEXP output into a line per object by default (@blackbird1128, @ejgallego, rocq-community/rocq-lsp#874) - [doc] [emacs] [protocol] Improve documentation for `proof/goals`, add link to official emacs mode by Josselin Poiret (@ejgallego, rocq-community/rocq-lsp#969, thanks to @jpoiret, cc: rocq-community/rocq-lsp#941) - [goals] Include `range` in `proof/goals` answer. This is useful for clients willing to do highlighting (@ejgallego, @jpoiret, rocq-community/rocq-lsp#970)
|
memprof-limits 0.3.0 with support for OCaml ≥ 5.3 has been released |
5761860 to
a41fc98
Compare
See discussion in rocq-prover#19177 , indeed, there are some parts of Coq code that set some global imperative flags in a scoped way; this is tricky to get right and maintain, and given the current uses, we should not favor this style but instead make it deprecated. As of today we have 2 kinds of these flags: - printing: IMO it is a priority to make the printer fully functional, which will remove the uses here - debug flags: they should be disabled in production, so shouldn't matter a lot
a41fc98 to
7f71eb0
Compare
This is a proof-of-concept (based on rocq-prover#19175), but could be merged as is. It should fix a few bugs we had when interrupting Coq: - `Pcoq.unfreeze` caused grammar state to go wrong (in a non recoverable way) - Interrupting module dynlink was also leaving the system in a bad state. It is hard to review the codebase for potential problems like this.
7f71eb0 to
f0345e7
Compare
|
@coqbot run full ci |
SkySkimmer
left a comment
There was a problem hiding this comment.
I'm going to merge this, we can finish whatever remains later.
|
@coqbot merge now |
This is a proof-of-concept (based on #19175), but could be merged as
is.
It should fix a few bugs we had when interrupting Coq:
Pcoq.unfreezecaused grammar state to go wrong (in a nonrecoverable way)
state.
It is hard to review the codebase for potential problems like this.