Page
Library
Module
Module type
Parameter
Class
Class type
Source
Awaitable abstraction as the picos_std.awaitable library (@polytypic).ml file (@polytypic)lastly as a safe alternative to Fun.protect (@polytypic)Uri library not being threadsafe (@polytypic)Picos_io_select has not been configured properly (@polytypic)Forbid cancelation propagation during release calls in the picos_std.finally library (@polytypic)
(Ivar|Stream).poison to (Ivar|Stream).poison_at and added (Ivar|Stream).poison with optional ?callstack:int (@polytypic)Major additions, changes, bug fixes, improvements, and restructuring (@polytypic, @c-cube)
Additions:
Flock of fibers for structured concurrencyBundle and Flock on returnEvent abstractionSynchronization and communication primitives:
IvarLatchSemaphoreStream of eventsquota for FIFO based schedulersComputationsChanges:
('r -> 'a) -> 'a functionsspawn interface allowing FLS entries to be populated before spawnFLS interfaceExn_btImprovements:
Picos has now been split into multiple packages and libraries:
pkg: picos
picospicos.domainpicos.threadpkg: picos_aux
picos_aux.htblpicos_aux.mpmcqpicos_aux.mpscqpicos_aux.rcpkg: picos_lwt
picos_lwtpicos_lwt.unixpicos_meta (integration tests)pkg: picos_mux
picos_mux.fifopicos_mux.multififopicos_mux.randompicos_mux.threadpkg: picos_std
picos_std.eventpicos_std.finallypicos_std.structuredpicos_std.syncpkg: picos_io
picos_iopicos_io.fdpicos_io.selectpkg: picos_io_cohttp
picos_io_cohttpPicos_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.