Picos is a framework for building interoperable elements such as
- schedulers that multiplex large numbers of user level fibers to run on a small number of system level threads,
- mechanisms for managing fibers and for structuring concurrency,
- communication and synchronization primitives, such as mutexes and condition variables, message queues, STMs, and more, and
- integrations with low level asynchronous IO systems,
of effects based cooperative concurrent programming models.
16 Likes
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
Picos ā Interoperable effects based concurrency
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 concurrency
picos
ā A systems programming interface between effects based schedulers and concurrent abstractions
picos.domain
ā Minimalistic domain API available both on OCaml 5 and on OCaml 4
picos.thread
ā Minimalistic thread API available with or without threads.posix
-
picos_mux
ā Sample schedulers for Picos
picos_mux.fifo
ā Basic single-threaded effects based Picos compatible scheduler for OCaml 5
picos_mux.multififo
ā Basic multi-threaded effects based Picos compatible scheduler for OCaml 5
picos_mux.random
ā Randomized multi-threaded effects based Picos compatible scheduler for OCaml 5
picos_mux.thread
ā Basic Thread based Picos compatible scheduler for OCaml 4
-
picos_std
ā Sample libraries for Picos
-
picos_io
ā Asynchronous IO system for Picos
picos_io
ā Basic IO facilities based on OCaml standard libraries for Picos
picos_io.select
ā Basic Unix.select based IO event loop for Picos
picos_io.fd
ā Externally reference counted file descriptors
-
picos_io_cohttp
ā Cohttp running on Picos IO
picos_io_cohttp
ā Minimalistic Cohttp implementation using Picos_io for Picos
-
picos_lwt
ā Lwt interface for Picos
picos_lwt
ā Direct style Picos compatible interface to Lwt for OCaml 5
picos_lwt.unix
ā Direct style Picos compatible interface to Lwt with Lwt_unix for OCaml 5
-
picos_aux
ā Auxiliary libraries for Picos
-
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.
20 Likes