<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coq/plugins/quote, branch master</title>
<subtitle>The formal proof system</subtitle>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/'/>
<entry>
<title>[quote] Remove spurious file after deletion of quote plugin.</title>
<updated>2018-10-10T19:07:59+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2018-10-10T18:25:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=32fb1656e7d98b77af43fd72889e9da9fa391a82'/>
<id>32fb1656e7d98b77af43fd72889e9da9fa391a82</id>
<content type='text'>
For some reason PR #7894 left this spurious file; this is typical of a
bad resolution of a merge, and while the file is innocuous it should
go away.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For some reason PR #7894 left this spurious file; this is typical of a
bad resolution of a merge, and while the file is innocuous it should
go away.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove quote plugin</title>
<updated>2018-09-12T15:04:42+00:00</updated>
<author>
<name>Maxime Dénès</name>
</author>
<published>2018-06-21T15:37:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=9894cffae9662f0473ab3f8696e8ca498cc9cdec'/>
<id>9894cffae9662f0473ab3f8696e8ca498cc9cdec</id>
<content type='text'>
As far as I know, this plugin is untested and barely maintained. I don't
think it has real use cases any more, so let's move it out from the repo
and see if somebody wants to take over and maintain it.

We also remove the documentation, which was telling our users to look at
ring to see an example of reification done using quote, when in fact it
wasn't using it anymore.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As far as I know, this plugin is untested and barely maintained. I don't
think it has real use cases any more, so let's move it out from the repo
and see if somebody wants to take over and maintain it.

We also remove the documentation, which was telling our users to look at
ring to see an example of reification done using quote, when in fact it
wasn't using it anymore.
</pre>
</div>
</content>
</entry>
<entry>
<title>[build] Preliminary support for building Coq with `dune`.</title>
<updated>2018-09-05T10:02:26+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2018-05-24T01:52:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=920723ab4c1707c0a98c978cdd7742d47e58582f'/>
<id>920723ab4c1707c0a98c978cdd7742d47e58582f</id>
<content type='text'>
[Dune](https://github.com/ocaml/dune) is a compositional declarative
build system for OCaml. It provides automatic generation of
`version.ml`, `.merlin`, `META`, `opam`, API documentation; install
management; easy integration with external libraries, test runners,
and modular builds.

In particular, Dune uniformly handles components regardless whether
they live in, or out-of-tree. This greatly simplifies cases where a
plugin [or CoqIde] is checked out in the current working copy but then
distributed separately [and vice-versa]. Dune can thus be used as a
more flexible `coq_makefile` replacement.

For now we provide experimental support for a Dune build. In order to
build Coq + the standard library with Dune type:

```
$ make -f Makefile.dune world
```

This PR includes a preliminary, developer-only preview of Dune for
Coq. There is still ongoing work, see
https://github.com/coq/coq/issues/8052 for tracking status towards
full support.

## Technical description.

Dune works out of the box with Coq, once we have fixed some modularity
issues. The main remaining challenge was to support `.vo` files.

As Dune doesn't support custom build rules yet, to properly build
`.vo` files we provide a small helper script `tools/coq_dune.ml`. The
script will scan the Coq library directories and generate the
corresponding rules for `.v -&gt; .vo` and `.ml4 -&gt; .ml` builds. The
script uses `coqdep` as to correctly output the dependencies of
`.v` files. `coq_dune` is akin to `coq_makefile` and should be able to
be used to build Coq projects in the future.

Due to this pitfall, the build process has to proceed in three stages:
1) build `coqdep` and `coq_dune`; 2) generate `dune` files for
`theories` and `plugins`; 3) perform a regular build with all
targets are in scope.

## FAQ

### Why Dune?

Coq has a moderately complex build system and it is not a secret that
many developer-hours have been spent fighting with `make`.

In particular, the current `make`-based system does offer poor support
to verify that the current build rules and variables are coherent, and
requires significant manual, error-prone. Many variables must be
passed by hand, duplicated, etc... Additionally, our make system
offers poor integration with now standard OCaml ecosystem tools such
as `opam`, `ocamlfind` or `odoc`. Another critical point is build
compositionality. Coq is rich in 3rd party contributions, and a big
shortcoming of the current make system is that it cannot be used to
build these projects; requiring us to maintain a custom tool,
`coq_makefile`, with the corresponding cost.

In the past, there has been some efforts to migrate Coq to more
specialized build systems, however these stalled due to a variety of
reasons. Dune, is a declarative, OCaml-specific build tool that is on
the path to become the standard build system for the OCaml ecosystem.

Dune seems to be a good fit for Coq well: it is well-supported, fast,
compositional, and designed for large projects.

### Does Dune replace the make-based build system?

The current, make-based build system is unmodified by this PR and kept
as the default option. However, Dune has the potential

### Is this PR complete? What does it provide?

This PR is ready for developer preview and feedback. The build system
is functional, however, more work is necessary in order to make Dune
the default for Coq.

The main TODOs are tracked at https://github.com/coq/coq/issues/8052

This PR allows developers to use most of the features of Dune today:

- Modular organization of the codebase; each component is built only
  against declared dependencies so components are checked for
  containment more strictly.
- Hygienic builds; Dune places all artifacts under `_build`.
- Automatic generation of `.install` files, simplified OPAM workflow.
- `utop` support, `-opaque` in developer mode, etc...
- `ml4` files are handled using `coqp5`, a native-code customized
  camlp5 executable which brings much faster `ml4 -&gt; ml` processing.

### What dependencies does Dune require?

Dune doesn't depend on any 3rd party package other than the OCaml compiler.

### Some Benchs:

```
$ /usr/bin/time make DUNEOPT="-j 1000" -f Makefile.dune states
59.50user 18.81system 0:29.83elapsed 262%CPU (0avgtext+0avgdata 302996maxresident)k
0inputs+646632outputs (0major+4893811minor)pagefaults 0swaps

$ /usr/bin/time sh -c "./configure -local -native-compiler no &amp;&amp; make -j states"
88.21user 23.65system 0:32.96elapsed 339%CPU (0avgtext+0avgdata 304992maxresident)k
0inputs+1051680outputs (0major+5300680minor)pagefaults 0swaps
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Dune](https://github.com/ocaml/dune) is a compositional declarative
build system for OCaml. It provides automatic generation of
`version.ml`, `.merlin`, `META`, `opam`, API documentation; install
management; easy integration with external libraries, test runners,
and modular builds.

In particular, Dune uniformly handles components regardless whether
they live in, or out-of-tree. This greatly simplifies cases where a
plugin [or CoqIde] is checked out in the current working copy but then
distributed separately [and vice-versa]. Dune can thus be used as a
more flexible `coq_makefile` replacement.

For now we provide experimental support for a Dune build. In order to
build Coq + the standard library with Dune type:

```
$ make -f Makefile.dune world
```

This PR includes a preliminary, developer-only preview of Dune for
Coq. There is still ongoing work, see
https://github.com/coq/coq/issues/8052 for tracking status towards
full support.

## Technical description.

Dune works out of the box with Coq, once we have fixed some modularity
issues. The main remaining challenge was to support `.vo` files.

As Dune doesn't support custom build rules yet, to properly build
`.vo` files we provide a small helper script `tools/coq_dune.ml`. The
script will scan the Coq library directories and generate the
corresponding rules for `.v -&gt; .vo` and `.ml4 -&gt; .ml` builds. The
script uses `coqdep` as to correctly output the dependencies of
`.v` files. `coq_dune` is akin to `coq_makefile` and should be able to
be used to build Coq projects in the future.

Due to this pitfall, the build process has to proceed in three stages:
1) build `coqdep` and `coq_dune`; 2) generate `dune` files for
`theories` and `plugins`; 3) perform a regular build with all
targets are in scope.

## FAQ

### Why Dune?

Coq has a moderately complex build system and it is not a secret that
many developer-hours have been spent fighting with `make`.

In particular, the current `make`-based system does offer poor support
to verify that the current build rules and variables are coherent, and
requires significant manual, error-prone. Many variables must be
passed by hand, duplicated, etc... Additionally, our make system
offers poor integration with now standard OCaml ecosystem tools such
as `opam`, `ocamlfind` or `odoc`. Another critical point is build
compositionality. Coq is rich in 3rd party contributions, and a big
shortcoming of the current make system is that it cannot be used to
build these projects; requiring us to maintain a custom tool,
`coq_makefile`, with the corresponding cost.

In the past, there has been some efforts to migrate Coq to more
specialized build systems, however these stalled due to a variety of
reasons. Dune, is a declarative, OCaml-specific build tool that is on
the path to become the standard build system for the OCaml ecosystem.

Dune seems to be a good fit for Coq well: it is well-supported, fast,
compositional, and designed for large projects.

### Does Dune replace the make-based build system?

The current, make-based build system is unmodified by this PR and kept
as the default option. However, Dune has the potential

### Is this PR complete? What does it provide?

This PR is ready for developer preview and feedback. The build system
is functional, however, more work is necessary in order to make Dune
the default for Coq.

The main TODOs are tracked at https://github.com/coq/coq/issues/8052

This PR allows developers to use most of the features of Dune today:

- Modular organization of the codebase; each component is built only
  against declared dependencies so components are checked for
  containment more strictly.
- Hygienic builds; Dune places all artifacts under `_build`.
- Automatic generation of `.install` files, simplified OPAM workflow.
- `utop` support, `-opaque` in developer mode, etc...
- `ml4` files are handled using `coqp5`, a native-code customized
  camlp5 executable which brings much faster `ml4 -&gt; ml` processing.

### What dependencies does Dune require?

Dune doesn't depend on any 3rd party package other than the OCaml compiler.

### Some Benchs:

```
$ /usr/bin/time make DUNEOPT="-j 1000" -f Makefile.dune states
59.50user 18.81system 0:29.83elapsed 262%CPU (0avgtext+0avgdata 302996maxresident)k
0inputs+646632outputs (0major+4893811minor)pagefaults 0swaps

$ /usr/bin/time sh -c "./configure -local -native-compiler no &amp;&amp; make -j states"
88.21user 23.65system 0:32.96elapsed 339%CPU (0avgtext+0avgdata 304992maxresident)k
0inputs+1051680outputs (0major+5300680minor)pagefaults 0swaps
```
</pre>
</div>
</content>
</entry>
<entry>
<title>Moving various ml4 files to mlg.</title>
<updated>2018-07-02T17:59:11+00:00</updated>
<author>
<name>Pierre-Marie Pédrot</name>
</author>
<published>2018-07-02T14:14:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=682368d0b8a4211dbeba8c2423f53d0448fd7d71'/>
<id>682368d0b8a4211dbeba8c2423f53d0448fd7d71</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[api] Remove Misctypes.</title>
<updated>2018-06-12T12:42:28+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2018-06-01T00:37:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=615290d0f9d5cad7c508d45cf4ab89aecff033b2'/>
<id>615290d0f9d5cad7c508d45cf4ab89aecff033b2</id>
<content type='text'>
We move the last 3 types to more adequate places.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We move the last 3 types to more adequate places.
</pre>
</div>
</content>
</entry>
<entry>
<title>Split off Universes functions dealing with generating new universes.</title>
<updated>2018-05-17T16:46:09+00:00</updated>
<author>
<name>Gaëtan Gilbert</name>
</author>
<published>2018-04-28T17:26:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=a51dda2344679dc6d9145f3f34acad29721f6c75'/>
<id>a51dda2344679dc6d9145f3f34acad29721f6c75</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update headers following #6543.</title>
<updated>2018-02-27T16:57:50+00:00</updated>
<author>
<name>Théo Zimmermann</name>
</author>
<published>2018-02-27T16:02:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=629fbc743f8b5e7623a6834f19885b2e379cb782'/>
<id>629fbc743f8b5e7623a6834f19885b2e379cb782</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[ast] Improve precision of Ast location recognition in serialization.</title>
<updated>2018-02-21T23:44:33+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2017-12-10T08:26:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=9bebbb96e58b3c1b0f7f88ba2af45462eae69b0f'/>
<id>9bebbb96e58b3c1b0f7f88ba2af45462eae69b0f</id>
<content type='text'>
We follow the suggestions in #402 and turn uses of `Loc.located` in
`vernac` into `CAst.t`. The impact should be low as this change mostly
affects top-level vernaculars.

With this change, we are even closer to automatically map a text
document to its AST in a programmatic way.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We follow the suggestions in #402 and turn uses of `Loc.located` in
`vernac` into `CAst.t`. The impact should be low as this change mostly
affects top-level vernaculars.

With this change, we are even closer to automatically map a text
document to its AST in a programmatic way.
</pre>
</div>
</content>
</entry>
<entry>
<title>Change references to CAMLP4 to CAMLP5 to be more accurate since we no</title>
<updated>2018-02-17T20:03:51+00:00</updated>
<author>
<name>Jim Fehrle</name>
</author>
<published>2018-01-22T20:45:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=b60906cc3ee3f994babf9cceff2971bd03485f2f'/>
<id>b60906cc3ee3f994babf9cceff2971bd03485f2f</id>
<content type='text'>
longer use camlp4.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
longer use camlp4.
</pre>
</div>
</content>
</entry>
<entry>
<title>[api] Deprecate Term destructors, move to Constr</title>
<updated>2017-11-22T10:33:57+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2017-11-19T07:11:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=88afd8a9853c772b6b1681c7ae208e55e7daacbe'/>
<id>88afd8a9853c772b6b1681c7ae208e55e7daacbe</id>
<content type='text'>
We mirror the structure of EConstr and move the destructors from `Term`
to `Constr`.

This is a step towards having a single module for `Constr`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We mirror the structure of EConstr and move the destructors from `Term`
to `Constr`.

This is a step towards having a single module for `Constr`.
</pre>
</div>
</content>
</entry>
</feed>
