Picos_mpsc_queue to Picos_mpscq. (@polytypic)Core API changes:
Computation.returned. (@polytypic)Lwt interop improvements:
Picos_lwt handling of Cancel_after to not raise in case of cancelation. (@polytypic)Picos_lwt to take a System module, which must implement a semi thread-safe trigger mechanism to allow unblocking Lwt promises on the main thread. (@polytypic)Picos_lwt_unix interface to Lwt, which includes an internal System module implemented using Lwt_unix. (@polytypic)Picos_lwt.await. (@polytypic)Picos_randos for testing. (@polytypic)Picos_select.check_configured to always (re)configure signal handling on the current thread. (@polytypic)Picos_structured:
Promise abstraction. (@polytypic)Terminate as an error. (@polytypic)~forbid as an optional argument. (@polytypic)Core API changes:
Fiber.set_computation, which represents a semantic changeFiber.computation to Fiber.get_computationComputation.attach_cancelerFiber.sleepFiber.create_packedFiber.try_attachFiber.detachMost of the above changes were motivated by work on and requirements of the added structured concurrency library (@polytypic)
Picos_structured (@polytypic)Picos_lwt providing direct style effects based interface to programming with Lwt (@polytypic)Picos_stdio.Unix.select (@polytypic)waitpid, wait, and system in Picos_stdio.Unix for platforms other than Windows (@polytypic)Picos_select.configure to allow, and sometimes require, configuring Picos_select for co-operation with libraries that also deal with signals (@polytypic)Picos_tls into Picos_thread.TLS (@polytypic)sleep and sleepf in Picos_stdio.Unix to block in a scheduler friendly manner (@polytypic)First experimental release of Picos.
Core:
picos — A framework for interoperable effects based concurrency.Sample schedulers:
picos.fifos — Basic single-threaded effects based Picos compatible scheduler for OCaml 5.picos.threaded — Basic Thread based Picos compatible scheduler for OCaml 4.Scheduler agnostic libraries:
picos.sync — Basic communication and synchronization primitives for Picos.picos.stdio — Basic IO facilities based on OCaml standard libraries for Picos.picos.select — Basic Unix.select based IO event loop for Picos.Auxiliary libraries:
picos.domain — Minimalistic domain API available both on OCaml 5 and on OCaml 4.picos.exn_bt — Wrapper for exceptions with backtraces.picos.fd — Externally reference counted file descriptors.picos.htbl — Lock-free hash table.picos.mpsc_queue — Multi-producer, single-consumer queue.picos.rc — External reference counting tables for disposable resources.picos.tls — Thread-local storage.