Code Monkey home page Code Monkey logo

coq-dpdgraph's Introduction

coq-dpdgraph

Docker CI Contributing Code of Conduct Zulip

Coq plugin that extracts the dependencies between Coq objects, and produces files with dependency information. Includes tools to visualize dependency graphs and find unused definitions.

Meta

  • Author(s):
    • Anne Pacalet
    • Yves Bertot
    • Olivier Pons
  • Coq-community maintainer(s):
  • License: GNU Lesser General Public License v2.1
  • Compatible Coq versions: master (use the corresponding branch or release for other Coq versions)
  • Compatible OCaml versions: 4.05.0 or later
  • Additional dependencies:
  • Coq namespace: dpdgraph
  • Related publication(s): none

What's inside?

First of all, it is a small tool (a Coq plugin) that extracts the dependencies between Coq objects, and produces a file (we suggest using the suffix .dpd) with this information.

The idea is that other small tools can be then developed to process the .dpd files. At the moment, there is:

  • dpd2dot that reads these .dpd files and produces a graph file using .dot format (cf. http://www.graphviz.org/) that makes possible to view them;
  • dpdusage: to find unused definitions.

Hope other tools later on to do more things. Feel free to contribute!

How to get it

You can:

Compilation

First download the archive and unpack it (or clone the repository), and change directory to the coq-dpdgraph directory.

Depending on how you got hold of the directory, you may be in one of three situations:

1/ Makefile is present

You should type the following command.

$ make && make install

2/ configure is present, but no Makefile

You should type the following command.

$ ./configure && make && make install

3/ configure is not present, Makefile is not present

You should type the following command.

$ autoconf
$ configure && make && make install

By default, compilation will fail if there is any warning emitted by the ocaml compiler. This can be disabled by type

make WARN_ERR=

instead of make in all previous commands.

Install using opam

If you use opam, you can install coq-dpdgraph and ocamlgraph using

$ opam repo add coq-released https://coq.inria.fr/opam/released
$ opam install coq-dpdgraph

Test

If you install the archive by cloning the git repository, you have a sub-directory containing test files. These can be tested using the following command.

$ make -s test

to check if everything is ok.

How to use it

Requirements

  • to have compiled the tools (see above)
  • a compiled Coq file. You can for instance use tests/Test.v (a modified clone of Coq List.v) and compile it doing :
  $ coqc tests/Test.v

Generation of .dpd files

The available commands are :

  • Generate dependencies between a list of objects:

      Print FileDependGraph <module name list>.
    

    A module can be a file, or a sub-module in a file. Example :

      Print FileDependGraph M M2.A.B.
    

    Take all the objects of the specified modules and build the dependencies between them.

  • Generate the dependencies of one objects:

      Print DependGraph my_lemma.
    

    Analyse recursively the dependencies of my_lemma.

  • Change the name of the generated file (default is graph.dpd):

      Set DependGraph File "f.dpd".
    

    Useful when one needs to build several files in one session.

Advice: you need to use Require to load the module that you want to explore, but don't use any Import/Export command because the tool is then unable to properly group the nodes by modules.

Example:

$ ledit coqtop -R . dpdgraph -I tests/
Welcome to Coq 8.5 (April 2016)

Coq < Require dpdgraph.dpdgraph.
[Loading ML file dpdgraph.cmxs ... done]

Coq < Require List.
Coq < Print FileDependGraph List.
Print FileDependGraph List.
Fetching opaque proofs from disk for Coq.Lists.List
Info: output dependencies in file graph.dpd
Coq < Set DependGraph File "graph2.dpd".
^D

dpd2dot: from a .dpd file to a .dot file

Graph generation

$ ./dpd2dot graph.dpd
Info: read file graph.dpd
Info: Graph output in graph.dot

There are some options :

$ ./dpd2dot -help
Usage : ./dpd2dot [options]
  -o : name of output file (default: name of input file .dot)
  -with-defs : show everything (default)
  -without-defs : show only Prop objects
  -rm-trans : remove transitive dependencies (default)
  -keep-trans : keep transitive dependencies
  -debug : set debug mode
  -help  Display this list of options
  --help  Display this list of options

If the name of the output file finishes with .dot, then the name before the .dot suffix is used as the graph name in the dot syntax. There are two exceptions: graph and digraph will be replaced with escaped_graph and escaped_digraph respectively.

The only useful option at the moment is -without-defs that export only Prop objects to the graph (Axiom, Theorem, Lemma, etc).

Graph visualisation

You need :

You can also convert .dot file to .svg file using :

$ dot -Tsvg file.dot > file.svg

You can then use firefox or inskape to view the .svg graph.

The main advantage of using firefox is that the nodes are linked to the coqdoc pages if they have been generated in the same directory. But the navigation (zoom, moves) is very poor and slow.

Graph interpretation

The graph can be interpreted like this :

  • edge n1 --> n2 : n1 uses n2
  • node :
    • green : proved lemma
    • orange : axiom/admitted lemma
    • dark pink : Definition, etc
    • light pink : Parameter, etc
    • violet : inductive,
    • blue : constructor,
    • multi-circled : not used (no predecessor in the graph)
  • yellow box : module
  • objects that are not in a yellow box are Coq objects.

dpdusage: find unused definitions via .dpd file

You can use dpdusage command to find unused definitions. Example:

$ ./dpdusage tests/graph2.dpd
Info: read file tests/graph2.dpd
Permutation_app_swap	(0)

In the example above it reports that Permutation_app_swap was references 0 times. You can specify max number of references allowed (default 0) via -threshold command line option.

Development information

Generated .dpd format description

graph : obj_list
obj : node | edge

node : "N: " node_id node_name node_attributes ';'
node_id : [0-9]+
node_name : '"' string '"'
node_attributes :
   | empty
   | '[' node_attribute_list ']'
node_attribute_list :
   | empty
   | node_attribute ',' node_attribute_list
node_attribute :
   | kind=[cnst|inductive|construct]
   | prop=[yes|no]
   | path="m0.m1.m2"
   | body=[yes|no]

edge : "E: "  node_id node_id edge_attributes ';'
edge_attributes :
   | empty
   | '[' edge_attribute_list ']'
edge_attribute_list :
   | empty
   | edge_attribute ',' edge_attribute_list
edge_attribute :
   | weight=NUM

The parser accept .dpd files as described above, but also any attribute for nodes and edges having the form : prop=val or prop="string..." or prop=NUM so that the generated .dpd can have new attributes without having to change the other tools. Each tool can then pick the attributes that it is able to handle; they are not supposed to raise an error whenever there is an unknown attribute.

More information

Also see:

coq-dpdgraph's People

Contributors

alizter avatar ejgallego avatar gares avatar herbelin avatar jashug avatar jasongross avatar karmaki avatar lasseblaauwbroek avatar maximedenes avatar mrhaandi avatar palmskog avatar ppedrot avatar simonboulier avatar skyskimmer avatar vbgl avatar villetaneuse avatar vzaliva avatar ybertot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

coq-dpdgraph's Issues

Fix compiler warnings

Dear coq-dpdgraph devs, as it is today, compiling the master version of the plugin produces quite a few deprecated warnings due to Coq API changes.

It would be really appreciated if you could fix those, it is usually trivial to do so as the deprecation message should indicate what has to be done.

Please pick the version you prefer for Coq 8.17 in Coq Platform 2023.03

The Coq team released Coq 8.17+rc1 on December 29th, 2022 and plans to release Coq 8.17.0 around March 7th, 2023.
The corresponding Coq Platform release 2023.03 should be released before April 14th, 2023.
It can be delayed in case of difficulties until June 30, 2023, but this should be an exception.

This issue is to inform you that the opam package we are currently testing in Coq Platform CI works fine with Coq 8.17+rc1.

Coq Platform CI is currently testing opam package coq-dpdgraph.1.0+8.16
from platform patch repository https://github.com/coq/platform/tree/main/opam/opam-coq-archive/released/packages/coq-dpdgraph/coq-dpdgraph.1.0+8.16/opam. This means we had to weaken some version restrictions in the opam package, but no other changes were required.

In case this is the version you want to see in Coq Platform, there is nothing to do for you - please just close this issue.

In case you would prefer to see an updated or an older version in the upcoming Coq Platform 2023.03, please inform us as soon as possible and before March 21st, 2023!

The working branch of Coq Platform, can be found here main.
It contains package pick ~8.17~2023.03+preview1 which already supports Coq version 8.17+rc1 and contains already working (possibly patched / commit pinned) Coq Platform packages.

In case you want to select a different version, please don't close this issue, even after creating the new tag and/or opam package.
We will close the issue after updating Coq Platform.
This is a measure of 'double book keeping' in order to avoid that we ship the wrong version.

In any case, Coq Platform won't be released before this issue is closed!

Thanks!

P.S.: this issue has been created automatically based on CI status.

CC: coq/platform#335

Preparation of a release for coq-8.17

Not an issue, more a progress report

When this preparation is done, this issue could be kept open for later reference, but the similar issur for coq-8.16 should be closed.

As a first step, I prepared my own environment by creating an opam switch containing coq-8.17rc1

opam switch create coq-8.17rc1 ocaml-base-compiler.4.13.1
eval $(opam env)
opam repo add coq-released https://coq.inria.fr/opam/released
opam repo add coq-core-dev https://coq.inria.fr/opam/core-dev
opam update
opam install coq.8.17+rc1

I cloned coq-dpdgraph and looked at the commits that had gone into coq-v8.16, trying to reproduce them intelligently. I also cloned the repository templates from coq-community

I modified by hand the files meta.yml and configure.ac, (Important : only these two files are modifled by hand), then I ran templates/generate.sh, this generated modifications for a collection of files: coq-dpdgraph.opam README.md .github/workflows/docker-actions.yml

Then I ran autoconf it complained about a bad usage of AC_OUTPUT (but only as a warning)
Then ./configure showed that I had not install ocamlgraph in my opam switch.

Then make make test and make distrib

The make test command exhibited a few warnings that need to be fixed in coq-master, probably. I am spending some time trying to fix these warnings, but in the main branch.

Normally, after the make distrib, I should have an archive of the code that can be used for opam.

All the modification were committed on a branch coq-v8.17 which was pushed on the coq-community repository.

Then an opam file was prepared in the opam-coq-archive, this file was place in the released set of packages, but it is of course easy to move it to another repository while waiting for coq 8.17 to be released.

Please create a tag for Coq 8.15 in Coq Platform 2022.02

The Coq team released Coq 8.15.0 on January 13, 2022.
The corresponding Coq Platform release 2022.02 should be released before February 28, 2022.
It can be delayed in case of difficulties until April 11, 2022, but this should be an exception.

This issue is to inform you that to our (possibly a few days old) best knoweldege the latest released version of your project (1.0+8.14) does not work with Coq 8.15.0.
We tried to remove version restrictions in opam files and possibly make or configure files, but this did not suffice.

Please note that in Coq Platform CI (unlike Coq CI) we test only released / tagged versions. Coq CI appears to test this project, but has some special handling for your project which makes it difficult to retrieve the commit it tests for your project.

Could you please create a tag and opam package, or communicate us any existing tag that works with Coq branch v8.15, preferably before February 14, 2022?
In case we might have to delay the Coq Platform release cause of issues with your project, we would prefer to be informed about the situation as early as possible.

In case the tag and opam package are available before January 25, 2022, it will be included in an early Coq Platform beta release of the for Coq 8.15.0.

The working branch of Coq Platform, which already supports Coq version 8.15.0, can be found here https://github.com/coq/platform/tree/main.

Please don't close this issue, even after creating the new tag and/or opam package.
We will close the issue after updating Coq Platform.
This is a measure of 'double book keeping' in order to avoid that we ship the wrong version.

In any case, Coq Platform won't be released before this issue is closed!

Thanks!

P.S.: this issue has been created automatically based on CI status.

CC: coq/platform#193

coq 8.6 compatibility

Does not compile under Coq-8.6:

# make[1]: Leaving directory '/home/lord/.opam/4.04.0.coq.8.6/build/coq-dpdgraph.0.6'
# Makefile:59: recipe for target 'dpdgraph.cmxs' failed
### stderr ###
# [...]
# - Use '... EXTEND Searchdepend CLASSIFIED AS SIDEFF ...' if the new vernacular command alters the system state but not the parser nor it starts a proof or ends one;
# - Use '... EXTEND Searchdepend CLASSIFIED BY f ...' to specify a global function f.  The function f will be called passing "Searchdepend" as the only argument;
# - Add a specific classifier in each clause using the syntax:
# '[...] => [ f ] -> [...]'. 
# Specific classifiers have precedence over global classifiers. Only one classifier is called.
# 
# File "searchdepend.ml4", line 93, characters 6-14:
# Error: Unbound value Pp.msgnl
# make[1]: *** [searchdepend.cmx] Error 2
# make: *** [dpdgraph.cmxs] Error 2

make install fails: no setting for BINDIR

I tried building from a git clone, but make install failed because the env var BINDIR is not set. What were you expecting BINDIR to be set to? Would any dir for binaries on PATH work (say ~/bin, if I have that on PATH)?

feature request: whitelist for dpdusage

Thanks for this very nice tool set!! Since I use Coq I have always been looking for a way to find unused definitions and lemmas.

My project has quite a few top-level theorems. They are reported by dpdusage, but I don't want to delete them. Moreover, I have a fair amount of technical lemmas that I want to keep, even though they are not used (currently). Because of this I am interested in a white-listing feature for dpdusage.

I am considering to open a PR that adds three things to dpdusage:

  • an option -white-list <path>:<name>

  • an option -white-list-file <file> that reads a file of white-listed names in the same format

  • an option -strict-white-list that warns about a white-listed item with usage count above the threshold

What do you think?

Preparation of a release for Coq 8.19

Now that Coq 8.19.0 is out, a corresponding release of coq-dpdgraph should be done.

The current version doesn't compile with error:

CAMLOPT -c  searchdepend.ml
File "searchdepend.mlg", line 53, characters 35-50:
Error: Unbound value Univ.out_punivs

(I haven't investigated further than just trying to compile)

Does not build with trunk

Can you port this to trunk and make a trunk branch (or branch the current version off for v8.6 and make master work with trunk)?

Minimal instructions?

Hey there,

Would it be possible to add just a few lines to the README with instructions on how to use this tool after installing it from source? I used the standalone version in the past, but I'm not familiar with Coq plugins, so instructions on how to use the new version would be welcome.

(I saw the OPAM version, but I don't use it yet: it doesn't seem to be supported by Coq's dev team, and I haven't invested the time yet to understand how to apply my own patches on top of OPAM sources).

Thanks!

installation from source code problem

I am trying to install this plugin but after following the instructions to install from pre-packaged source archive (situation 3) I get the following:
install: cannot change permissions of ‘/usr/local/lib/coq/user-contrib/dpdgraph/’: No such file or directory
The unpacked files are in my Downloads directory and the Coq version is 8.8 installed (global) via sources using the instructions in the old cocorico wiki page.
Thanks

feature request: more robust output format for dpdusage

Currently, dpdusage prints unused lemmas in an unspecified order that can change unpredictably when including another module in the analysis. In my current use-case (moving a theorem and everything only used to prove this theorem to a separate file) I was interested in the diff between the unused lemmas with and without the extra file. This required a sorted output without the Info line.

A typical invocation of dpdusage might thus look as follows:

dpdusage graph.dpd | grep -v '^Info:' | sed 's/\([^ :]*\):\([^\t]*\).*$/\1.\2/' | sort

(the use of . over : simplyfies copying lemma names into a "whitelist definition" as a hack until #14 is merged)

Preparation of release for coq-8.18

I just tried to compile coq-dpdgraph with coq 8.18 ; I could get it to compile (no serious tests) with:

--- coq-dpdgraph.orig/searchdepend.mlg
+++ coq-dpdgraph/searchdepend.mlg
@@ -8,6 +8,8 @@
 (*        (see the enclosed LICENSE file for mode details)                    *)
 (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
 
+DECLARE PLUGIN "coq-dpdgraph.plugin"
+
 {
 
 open Pp

so hopefully things should go smoothly.

Problem with universe polymorphism

Thank you very much for the release! (installation with opam is very nice)
There seems to be a problem with universe polymorphism.

When I try to extract the dependency graph of the function foo:
Definition foo (A: Type) (B: A -> Type) (C: A -> Type) (c: {x : A & {_ : B x & C x}}) : {x : A & {_ : C x & B x}}.
Proof.
destruct c as [a [b c]].
exists a, c. exact b.
Defined.

It works. But if I precede the definition with Set Universe Polymorphism, it fails with Anomaly: Universe Var(1) undefined. Please report..

I'm afraid, it's lot of work to handle universe polymorphism...

new coq/ocaml compat

I have coq-8.9.1 and ocaml 4.09.0:

 $ opam install coq-dpdgraph                                                         16:43:28
The following dependencies couldn't be met:
  - coq-dpdgraph → coq < 8.7~ → ocaml < 4.06.0
      base of this switch (use `--unlock-base' to force)
  - coq-dpdgraph → ocaml < 4.08.0
      base of this switch (use `--unlock-base' to force)

feature request: add location info in the dpd file

The dpd file should contain line number and/or character position information and dpdusage should print it in a popular error message format, such that any decent editor can visit items in the result list of dpdusage directly.

Please create a tag for Coq 8.16 in Coq Platform 2022.09

The Coq team released Coq 8.16+rc1 on June 01, 2022.
The corresponding Coq Platform release 2022.09 should be released before September 15, 2022.
It can be delayed in case of difficulties until October 15, 2022, but this should be an exception.

This issue is to inform you that to our (possibly a few days old) best knowledge the latest released version of your project (1.0+8.16) does not work with Coq 8.16+rc1.
We tried to remove version restrictions in opam files and possibly make or configure files, but this did not suffice.

Please note that in Coq Platform CI (unlike Coq CI) we test only released / tagged versions. Coq CI appears to test this project, but has some special handling for your project which makes it difficult to retrieve the commit it tests for your project.

Could you please create a tag and opam package, or communicate us any existing tag that works with Coq branch v8.16, preferably before August 31, 2022?
In case we might have to delay the Coq Platform release cause of issues with your project, we would prefer to be informed about the situation as early as possible.

In case the tag and opam package are available before August 17, 2022, it will be included in an early Coq Platform beta release of the for Coq 8.16+rc1.

The working branch of Coq Platform, can be found here main.
It contains package pick ~8.16+rc1~2022.09~preview1 which already supports Coq version 8.16+rc1 and contains already working (possibly patched / commit pinned) Coq Platform packages.

Please don't close this issue, even after creating the new tag and/or opam package.
We will close the issue after updating Coq Platform.
This is a measure of 'double book keeping' in order to avoid that we ship the wrong version.

In any case, Coq Platform won't be released before this issue is closed!

Thanks!

P.S.: this issue has been created automatically based on CI status.

CC: coq/platform#274

Clarify the meaning of branches

Hello,

When I submitted a PR recently, I got confused by the meaning of branches. My bad, of course, but I think it would help external contributors if you could:

  • rename coq-trunk into coq-master (it will make it easier to guess that this is the relevant branch for compatibility patches for Coq)
  • clarify the role of master vs coq-8.8 / coq-master

Thanks!

[warnings] Please fix OCaml warnings

Dear devs,

in Coq we are considering requiring plugins in the CI to use the same set of compiler flags for warnings than the main Coq tree (c.f. coq/coq#9605 ), in particular, this means that the plugins should now compile warning-free, except for deprecation notices.

Note that some of the raised warnings are really fatal, [like missing match cases].

Please, try to fix OCaml warnings present in your codebase, thanks!

COQBIN should be used in configure.ac

It's more or less standard that the COQBIN environment variable sets the directory where coq executables are to be found (this is especially convenient with a dev build). This should be considered in configure.ac. Since I don't know much about autoconf I couldn't do it immediately.

If someone with some autoconf experience can fix this, it would be welcome. Otherwise, I might give it a try.

Please create a tag for Coq 8.18 in Coq Platform 2023.10

The Coq team released Coq 8.18.0 on September 7th, 2023.
The corresponding Coq Platform release 2023.10 should be released before November 30th, 2023.
It can be delayed in case of difficulties until January 15th, 2023, but this should be an exception.

This issue is to inform you that to our (possibly a few days old) best knowledge the latest released version of your project (1.0+8.17) does not work with Coq 8.18.0.
We tried to remove version restrictions in opam files and possibly make or configure files, but this did not suffice.

Please note that in Coq Platform CI (unlike Coq CI) we test only released / tagged versions. Coq CI appears to test this project, but has some special handling for your project which makes it difficult to retrieve the commit it tests for your project.

Could you please create a tag and opam package, or communicate us any existing tag that works with Coq branch v8.18, preferably before October 31st, 2023?
In case we might have to delay the Coq Platform release cause of issues with your project, we would prefer to be informed about the situation as early as possible.

In case the tag and opam package are available before October 31st, 2023, it will be included in an early Coq Platform beta release of the for Coq 8.18.0.

The working branch of Coq Platform, can be found here main.
It contains package pick ~8.18+beta1 which already supports Coq version 8.18.0 and contains already working (possibly patched / commit pinned) Coq Platform packages.

Please don't close this issue, even after creating the new tag and/or opam package.
We will close the issue after updating Coq Platform.
This is a measure of 'double book keeping' in order to avoid that we ship the wrong version.

In any case, Coq Platform won't be released before this issue is closed!

Thanks!

P.S.: this issue has been created automatically based on CI status.

CC: coq/platform#372

test files are too flimsy

After the merge of PR#74 make tests reports changes that are not relevant. Files are mostly the same, except the order of lines has changed.

We should compare logs with oracles only after sorting.

Please create a tag for Coq 8.14 in Coq Platform 2021.11

The Coq team released Coq 8.14+rc1 on September 17, 2021 and plans to release Coq 8.14.0 before October 31, 2021.
The corresponding Coq Platform release 2021.11 should be released before November 30, 2021.
It can be delayed in case of difficulties until January 31, 2022, but this should be an exception.

This issue is to inform you that to our (possibly a few days old) best knoweldege the latest released version of your project (0.6.9) does not work with Coq 8.14+rc1.
We tried to remove version restrictions in opam files and possibly make or configure files, but this did not suffice.

Please note that in Coq Platform CI (unlike Coq CI) we test only released / tagged versions. Coq CI appears to test this project, but has some special handling for your project which makes it difficult to retrieve the commit it tests for your project.

Could you please create a tag, or communicate us any existing tag that works with Coq branch v8.14, preferably before November 15, 2021?
In case we might have to delay the Coq Platform release cause of issues with your project, we would prefer to be informed about the situation as early as possible.

The working branch of Coq Platform, which already supports Coq version 8.14+rc1, can be found here https://github.com/coq/platform/tree/main.

Please don't close this issue, even after creating the new tag and/or opam package.
We will close the issue after updating Coq Platform.
This is a measure of 'double book keeping' in order to avoid that we ship the wrong version.

In any case, Coq Platform won't be released before this issue is closed!

Thanks!

P.S.: this issue has been created automatically based on CI status.

CC: coq/platform#139

How to prevent opam from installing Coq?

user@debiansda:~/COQ$ opam install coq-dpdgraph
The following actions will be performed:

  • install camlp5.6.14 [required by coq]
  • install ocamlgraph.1.8.6 [required by coq-dpdgraph]
  • install coq.8.5.0 [required by coq-dpdgraph]
  • install coq-dpdgraph.0.6
    === 4 to install ===
    Do you want to continue ? [Y/n] n

Maybe you know how to point that I already have installed Coq. I want to improve existing system with this plugin.

Please create a tag for Coq 8.19 in Coq Platform 2024.01

The Coq team released Coq 8.19.0 on January 24th, 2024.
The corresponding Coq Platform release 2024.01 should be released before April 30th, 2024.
It can be delayed in case of difficulties until May 15th, 2024, but this should be an exception.

This issue is to inform you that to our (possibly a few days old) best knowledge the latest released version of your project (1.0+8.18) does not work with Coq 8.19.0.
We tried to remove version restrictions in opam files and possibly make or configure files, but this did not suffice.

Please note that in Coq Platform CI (unlike Coq CI) we test only released / tagged versions. Coq CI appears to test this project, but has some special handling for your project which makes it difficult to retrieve the commit it tests for your project.

Could you please create a tag and opam package, or communicate us any existing tag that works with Coq branch v8.19, preferably before March 31st, 2024?
In case we might have to delay the Coq Platform release cause of issues with your project, we would prefer to be informed about the situation as early as possible.

In case the tag and opam package are available before March 31st, 2024, it will be included in an early Coq Platform beta release of the for Coq 8.19.0.

The working branch of Coq Platform, can be found here main.
It contains package pick ~8.19~2024.01+beta1 which already supports Coq version 8.19.0 and contains already working (possibly patched / commit pinned) Coq Platform packages.

Please don't close this issue, even after creating the new tag and/or opam package.
We will close the issue after updating Coq Platform.
This is a measure of 'double book keeping' in order to avoid that we ship the wrong version.

In any case, Coq Platform won't be released before this issue is closed!

Thanks!

P.S.: this issue has been created automatically based on CI status.

CC: coq/platform#405

Don't treat missing mli file as error

I was having a hard time compiling dpdgraph because by default it uses "-w +A", while the current code (1.0+8.15) lacks a few .mli files and it's been a warning in ocaml since some time (I'm using 4.13.1), until I made the following modification:

--- coq-dpdgraph.orig/Makefile.in
+++ coq-dpdgraph/Makefile.in
@@ -49,7 +49,7 @@
 OCAMLLEX=@OCAMLLEX@
 OCAMLYACC=@OCAMLYACC@
 
-WARN_ERR := -warn-error +a
+WARN_ERR := -warn-error +a-70
 OCAMLFLAGS :=  -w +a $(WARN_ERR) -g -dtypes $(INCLUDES) -c
 OCAMLFLAGS += $(OCAML_EXTRA_OPTS)
 OCAMLOPTFLAGS = -c

Code does not build with Coq master

File "searchdepend.ml4", line 80, characters 10-37:
Error: This pattern matches values of type
         ('a, 'b) API.Declarations.declaration_arity
       but a pattern was expected which matches values of type
         API.Term.types = API.Constr.t
71: let collect_dependance gref =
72:   match gref with
73:   | Globnames.VarRef _ -> assert false
74:   | Globnames.ConstRef cst ->
75:       let cb = Environ.lookup_constant cst (Global.env()) in
76:       let cl = match Global.body_of_constant_body cb with
77:          Some e -> [e]
78:         | None -> [] in
79:       let cl = match cb.Declarations.const_type with
80:         | Declarations.RegularArity t -> t::cl
81:         | Declarations.TemplateArity _ ->  cl in
82:       List.fold_right collect_long_names cl Data.empty
83:   | Globnames.IndRef i | Globnames.ConstructRef (i,_) ->
84:       let _, indbody = Global.lookup_inductive i in
85:       let ca = indbody.Declarations.mind_user_lc in
86:         Array.fold_right collect_long_names ca Data.empty

coq-8.9 support

Current version in OPAM is not compatible with latest Coq version 8.9

Inclusion to Coq Platform

Dear dpdgraph Team,

@palmskog requested here: (coq/platform#12) to include your development into the Coq Platform, which is the standard user facing distribution of Coq.

Coq Platform has a "full" and "extended" level. Inclusion in the "full" level requires an explicit statement by the maintainers, that they agree to the charter of the Coq Platform and intend to publish compatible releases for each release of Coq in a reasonable time frame. For the "extended" level the rules are more relaxed. For developments in the "full" level, users should be able to rely on that the package is maintained, so that they can base their own development on it without a large risk that they have to factor it out again later cause of maintenance issues.

Can you please comment in the Coq Platform issue mentioned above if you do want your package included in the Coq Platform in agreement to the Coq Platform charter, and if so which level you would prefer?

Best regards,

Michael

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.