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:
Ivar
Latch
Semaphore
Stream
of eventsquota
for FIFO based schedulersComputation
sChanges:
('r -> 'a) -> 'a
functionsspawn
interface allowing FLS
entries to be populated before spawnFLS
interfaceExn_bt
Improvements:
Picos has now been split into multiple packages and libraries:
pkg: picos
picos
picos.domain
picos.thread
pkg: picos_aux
picos_aux.htbl
picos_aux.mpmcq
picos_aux.mpscq
picos_aux.rc
pkg: picos_lwt
picos_lwt
picos_lwt.unix
picos_meta
(integration tests)pkg: picos_mux
picos_mux.fifo
picos_mux.multififo
picos_mux.random
picos_mux.thread
pkg: picos_std
picos_std.event
picos_std.finally
picos_std.structured
picos_std.sync
pkg: picos_io
picos_io
picos_io.fd
picos_io.select
pkg: picos_io_cohttp
picos_io_cohttp
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_computation
Computation.attach_canceler
Fiber.sleep
Fiber.create_packed
Fiber.try_attach
Fiber.detach
Most 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.