Coq Topic Working Group Multicore
We aim to port Coq to OCaml's multicore, and improve Coq's utilization of threading primitives.
The primary goals are:
- to update Coq to use a functional / thread-safe handling of state.
- to increase the opportunities of local computation [for example w.r.t. universes]
- Emilio J. Gallego Arias
- Gaëtan Gilbert
- Pierre-Marie Pédrot
-
branch [current]: https://github.com/ejgallego/coq/tree/ocaml+multicore_remove_vm
-
branch [broken]: https://github.com/ejgallego/coq/tree/ocaml+multicore
-
bugs: https://github.com/ocaml-multicore/ocaml-multicore/issues/646
-
https://github.com/ocaml-multicore/multicore-opam#install-multicore-ocaml
-
https://github.com/ocaml-multicore/ocaml-multicore/blob/master/stdlib/domain.mli
-
https://github.com/ocaml-multicore/domainslib/blob/master/lib/task.mli
-
porting the vm should be OK?
Alloc_small needs some more parameters, not sure. Do we have bug for that in Coq already?
-
`native seems more complex:
- set_tag: PMP "easy" to solve
- naked_pointers: No current solution
-
PMP proposes to target "malfunction" as FL
- Could we delay QED?
- what does the kernel w.r.t. universes constraints?
- measure time spent in QED
- seems not easy right now, kernel checking 100% sequential
- https://github.com/ppedrot/coq/tree/no-opaque-transitive-univs
- maybe use heuristics w.r.t. similar to STM?
- GG: make other tools to profit from multicore, for example coqdep
- Qed annotations? => Emilio doesn't like annotations.
- hashconsing et multicore? Weak hash table, how would it work? => Coq timings, fig 4 and 5 https://kcsrk.info/papers/retro-concurrency_pldi_21.pdf seems not to bad
- branch at https://github.com/ppedrot/coq/tree/move-opaque-out-of-kernel
- problem is how to design the API, so it is still "safe"
- at some point we need some safe async programming paradigm, let it be algebraic effects, monads, or anything else; hard choice to make, and pervades the system
- in general technical debt is a problem, maybe we should take Coq 9.0 more seriously?
To the extent possible under law, the contributors of “Cocorico!, the Coq wiki” have waived all copyright and related or neighboring rights to their contributions.
By contributing to Cocorico!, the Coq wiki, you agree that you hold the copyright and you agree to license your contribution under the CC0 license or you agree that you have permission to distribute your contribution under the CC0 license.