<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coq/kernel/dune, branch master</title>
<subtitle>The formal proof system</subtitle>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/'/>
<entry>
<title>[dune] Rename byterun to coqrun</title>
<updated>2021-03-31T17:05:49+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2021-03-31T17:02:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=3bd703714dff733fbfcdfcae591b85bdac6f4b2a'/>
<id>3bd703714dff733fbfcdfcae591b85bdac6f4b2a</id>
<content type='text'>
This seems the official name, the byterun name is just an artifact
from the very preliminary dune build.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This seems the official name, the byterun name is just an artifact
from the very preliminary dune build.
</pre>
</div>
</content>
</entry>
<entry>
<title>[build] Split stdlib to it's own opam package.</title>
<updated>2021-03-03T15:06:14+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2020-06-22T15:52:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=ab98d847d237af3cd0e46edef42218be65cfc98f'/>
<id>ab98d847d237af3cd0e46edef42218be65cfc98f</id>
<content type='text'>
We introduce a new package structure for Coq:

- `coq-core`: Coq's OCaml tools code and plugins
- `coq-stdlib`: Coq's stdlib [.vo files]
- `coq`: meta-package that pulls `coq-{core,stdlib}`

This has several advantages, in particular it allows to install Coq
without the stdlib which is useful in several scenarios, it also open
the door towards a versioning of the stdlib at the package level.

The main user-visible change is that Coq's ML development files now
live in `$lib/coq-core`, for compatibility in the regular build we
install a symlink and support both setups for a while.

Note that plugin developers and even `coq_makefile` should actually
rely on `ocamlfind` to locate Coq's OCaml libs as to be more robust.

There is a transient state where we actually look for both
`$coqlib/plugins` and `$coqlib/../coq-core/plugins` as to support
the non-ocamlfind plus custom variables.

This will be much improved once #13617 is merged (which requires this
PR first), then, we will introduce a `coq.boot` library so finally
`coqdep`, `coqchk`, etc... can share the same path setup code.

IMHO the plan should work fine.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We introduce a new package structure for Coq:

- `coq-core`: Coq's OCaml tools code and plugins
- `coq-stdlib`: Coq's stdlib [.vo files]
- `coq`: meta-package that pulls `coq-{core,stdlib}`

This has several advantages, in particular it allows to install Coq
without the stdlib which is useful in several scenarios, it also open
the door towards a versioning of the stdlib at the package level.

The main user-visible change is that Coq's ML development files now
live in `$lib/coq-core`, for compatibility in the regular build we
install a symlink and support both setups for a while.

Note that plugin developers and even `coq_makefile` should actually
rely on `ocamlfind` to locate Coq's OCaml libs as to be more robust.

There is a transient state where we actually look for both
`$coqlib/plugins` and `$coqlib/../coq-core/plugins` as to support
the non-ocamlfind plus custom variables.

This will be much improved once #13617 is merged (which requires this
PR first), then, we will introduce a `coq.boot` library so finally
`coqdep`, `coqchk`, etc... can share the same path setup code.

IMHO the plan should work fine.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use OCaml floating-point operations on 64 bits arch</title>
<updated>2020-10-06T16:26:38+00:00</updated>
<author>
<name>Pierre Roux</name>
</author>
<published>2020-10-06T14:52:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=6fe8c44ff828ef4ec89b49ada634ce87639f384f'/>
<id>6fe8c44ff828ef4ec89b49ada634ce87639f384f</id>
<content type='text'>
C functions were used for floating-point arithmetic operations, by
fear of double rounding that could happen on old x87 on 32 bits
architecture. This commit uses OCaml floating-point operations on 64
bits architectures.

The following snippet is made 17% faster by this commit.

    From Coq Require Import Int63 BinPos PrimFloat.
    Definition foo n :=
      let eps := sub (next_up one) one in
      Pos.iter (fun x =&gt; add x eps) two n.
    Time Eval native_compute in foo 1000000000.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
C functions were used for floating-point arithmetic operations, by
fear of double rounding that could happen on old x87 on 32 bits
architecture. This commit uses OCaml floating-point operations on 64
bits architectures.

The following snippet is made 17% faster by this commit.

    From Coq Require Import Int63 BinPos PrimFloat.
    Definition foo n :=
      let eps := sub (next_up one) one in
      Pos.iter (fun x =&gt; add x eps) two n.
    Time Eval native_compute in foo 1000000000.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename VM-related kernel/cfoo files to kernel/vmfoo</title>
<updated>2020-08-18T11:07:54+00:00</updated>
<author>
<name>Gaëtan Gilbert</name>
</author>
<published>2020-08-18T11:07:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=4ee0cedff7726a56ebd53125995a7ae131660b4a'/>
<id>4ee0cedff7726a56ebd53125995a7ae131660b4a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify picking between uint63_63.ml and uint63_31.ml</title>
<updated>2019-08-24T10:11:54+00:00</updated>
<author>
<name>Gaëtan Gilbert</name>
</author>
<published>2019-07-05T13:01:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=3083b2dcd9da8108df8118be2bc87f955311d2bd'/>
<id>3083b2dcd9da8108df8118be2bc87f955311d2bd</id>
<content type='text'>
- remove the architecture component (we don't do anything
  arch-specific so it was just a rewording of int_size)
- have configure tell the make build system about int_size instead of
  reimplementing cp

As a bonus, add the copyright header to uint63.mli.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- remove the architecture component (we don't do anything
  arch-specific so it was just a rewording of int_size)
- have configure tell the make build system about int_size instead of
  reimplementing cp

As a bonus, add the copyright header to uint63.mli.
</pre>
</div>
</content>
</entry>
<entry>
<title>[build] Select uint63 using `ocamlc -config` variables.</title>
<updated>2019-05-21T18:25:20+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2019-04-20T13:18:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=1df461d41634d1d1dc330f0aca99921d3fced1fd'/>
<id>1df461d41634d1d1dc330f0aca99921d3fced1fd</id>
<content type='text'>
This seems more robust and avoids having another implementation of
`cp`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This seems more robust and avoids having another implementation of
`cp`.
</pre>
</div>
</content>
</entry>
<entry>
<title>[dune] Don't have `lib` depend on `dynlink`</title>
<updated>2019-03-27T23:56:23+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2019-03-14T04:14:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=392c8f87bac1e47e18a2d7929bd01c2097b9e43a'/>
<id>392c8f87bac1e47e18a2d7929bd01c2097b9e43a</id>
<content type='text'>
This is convenient for the bootstrap of `coqdep`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is convenient for the bootstrap of `coqdep`
</pre>
</div>
</content>
</entry>
<entry>
<title>[Kernel] Simpler generation of opcode files</title>
<updated>2019-03-01T14:01:23+00:00</updated>
<author>
<name>Vincent Laporte</name>
</author>
<published>2019-02-21T16:45:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=8541a43c053d659196992f4e990ec317cd199af8'/>
<id>8541a43c053d659196992f4e990ec317cd199af8</id>
<content type='text'>
Files kernel/copcodes.ml, kernel/byterun/coq_instruct.h, and
kernel/byterun/coq_jumptbl.h are generated by a simple OCaml program
rather than a pipeline of sed and awk text processing.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Files kernel/copcodes.ml, kernel/byterun/coq_instruct.h, and
kernel/byterun/coq_jumptbl.h are generated by a simple OCaml program
rather than a pipeline of sed and awk text processing.
</pre>
</div>
</content>
</entry>
<entry>
<title>[dune] Fix Dune build in Windows.</title>
<updated>2019-02-04T17:16:39+00:00</updated>
<author>
<name>Emilio Jesus Gallego Arias</name>
</author>
<published>2019-02-04T17:16:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=0439543db9f3be84d59cfdc1dcad34bd114036e3'/>
<id>0439543db9f3be84d59cfdc1dcad34bd114036e3</id>
<content type='text'>
In order for Dune to work in Windows we need to tweak some script
calls, they need a POSIX shell and the `(run ...)` / `(system ...)`
actions use `cmd.exe` on Windows.

Hopefully, we will rely less on `bash` when Dune can understand Coq
libraries. This affects shell scripts in `kernel/**.sh` for example.

It is interesting to see how faster the Coq Windows build is with Dune
+ Windows.

There are some problems with PATHs that prevent the test suite from
working, these will be fixed in a future PR.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In order for Dune to work in Windows we need to tweak some script
calls, they need a POSIX shell and the `(run ...)` / `(system ...)`
actions use `cmd.exe` on Windows.

Hopefully, we will rely less on `bash` when Dune can understand Coq
libraries. This affects shell scripts in `kernel/**.sh` for example.

It is interesting to see how faster the Coq Windows build is with Dune
+ Windows.

There are some problems with PATHs that prevent the test suite from
working, these will be fixed in a future PR.
</pre>
</div>
</content>
</entry>
<entry>
<title>Primitive integers</title>
<updated>2019-02-04T13:12:40+00:00</updated>
<author>
<name>Maxime Dénès</name>
</author>
<published>2018-02-16T00:02:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/coq/commit/?id=e43b1768d0f8399f426b92f4dfe31955daceb1a4'/>
<id>e43b1768d0f8399f426b92f4dfe31955daceb1a4</id>
<content type='text'>
This work makes it possible to take advantage of a compact
representation for integers in the entire system, as opposed to only
in some reduction machines. It is useful for heavily computational
applications, where even constructing terms is not possible without such
a representation.

Concretely, it replaces part of the retroknowledge machinery with
a primitive construction for integers in terms, and introduces a kind of
FFI which maps constants to operators (on integers). Properties of these
operators are expressed as explicit axioms, whereas they were hidden in
the retroknowledge-based approach.

This has been presented at the Coq workshop and some Coq Working Groups,
and has been used by various groups for STM trace checking,
computational analysis, etc.

Contributions by Guillaume Bertholon and Pierre Roux &lt;Pierre.Roux@onera.fr&gt;

Co-authored-by: Benjamin Grégoire &lt;Benjamin.Gregoire@inria.fr&gt;
Co-authored-by: Vincent Laporte &lt;Vincent.Laporte@fondation-inria.fr&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This work makes it possible to take advantage of a compact
representation for integers in the entire system, as opposed to only
in some reduction machines. It is useful for heavily computational
applications, where even constructing terms is not possible without such
a representation.

Concretely, it replaces part of the retroknowledge machinery with
a primitive construction for integers in terms, and introduces a kind of
FFI which maps constants to operators (on integers). Properties of these
operators are expressed as explicit axioms, whereas they were hidden in
the retroknowledge-based approach.

This has been presented at the Coq workshop and some Coq Working Groups,
and has been used by various groups for STM trace checking,
computational analysis, etc.

Contributions by Guillaume Bertholon and Pierre Roux &lt;Pierre.Roux@onera.fr&gt;

Co-authored-by: Benjamin Grégoire &lt;Benjamin.Gregoire@inria.fr&gt;
Co-authored-by: Vincent Laporte &lt;Vincent.Laporte@fondation-inria.fr&gt;
</pre>
</div>
</content>
</entry>
</feed>
