I’m happy to announce that Picos version 0.6.0 has been released!
Picos is a systems programming interface between effects based schedulers and concurrent abstractions.
A lot of work has been done on Picos since previous announcements.
You might start on the new minimalist landing page for Picos, which, among other things, allows you to access the documentation of all the released Picos versions.
Also, in case you missed it, a recording of the talk
can be found here.
We also held a workshop on concurrency and parallelism at Fun OCaml. You might enjoy trying out the exercise we developed for the workshop.
As, for reasons of dependencies, Picos now comes in no less than 8 packages and multiple libraries, here is a summary of the packages and the libraries inside each package:
-
picos
— Picos — Interoperable effects based concurrencypicos
— A systems programming interface between effects based schedulers and concurrent abstractionspicos.domain
— Minimalistic domain API available both on OCaml 5 and on OCaml 4picos.thread
— Minimalistic thread API available with or without threads.posix
-
picos_mux
— Sample schedulers for Picospicos_mux.fifo
— Basic single-threaded effects based Picos compatible scheduler for OCaml 5picos_mux.multififo
— Basic multi-threaded effects based Picos compatible scheduler for OCaml 5picos_mux.random
— Randomized multi-threaded effects based Picos compatible scheduler for OCaml 5picos_mux.thread
— Basic Thread based Picos compatible scheduler for OCaml 4
-
picos_std
— Sample libraries for Picospicos_std.finally
— Syntax for avoiding resource leaks for Picospicos_std.awaitable
— Basic futex-like awaitable atomic location for Picospicos_std.event
— Basic event abstraction for Picospicos_std.structured
— Basic structured concurrency primitives for Picospicos_std.sync
— Basic communication and synchronization primitives for Picos
-
picos_io
— Asynchronous IO system for Picospicos_io
— Basic IO facilities based on OCaml standard libraries for Picospicos_io.select
— Basic Unix.select based IO event loop for Picospicos_io.fd
— Externally reference counted file descriptors
-
picos_io_cohttp
— Cohttp running on Picos IOpicos_io_cohttp
— Minimalistic Cohttp implementation using Picos_io for Picos
-
picos_lwt
— Lwt interface for Picospicos_lwt
— Direct style Picos compatible interface to Lwt for OCaml 5picos_lwt.unix
— Direct style Picos compatible interface to Lwt with Lwt_unix for OCaml 5
-
picos_aux
— Auxiliary libraries for Picospicos_aux.htbl
— Lock-free hash tablepicos_aux.mpmcq
— Lock-free multi-producer, multi-consumer queuepicos_aux.mpscq
— Lock-free multi-producer, single-consumer queuepicos_aux.rc
— External reference counting tables for disposable resources
-
picos_meta
— Integration tests for Picos packages
In addition to the above, Moonpool now uses Picos underneath.
And, I almost forgot, there is a ready to be merged PR for Kcas to change it to use Picos. You should be able to try it with an opam pin-depends.