[new release] picos (8 packages) (0.5.0)
CHANGES:
- Major additions, changes, bug fixes, improvements, and restructuring
(@polytypic, @c-cube)
- Additions:
- Minimalistic Cohttp implementation
- Implicitly propagated `Flock` of fibers for structured concurrency
- Option to terminate `Bundle` and `Flock` on return
- `Event` abstraction
- Synchronization and communication primitives:
- Incremental variable or `Ivar`
- Countdown `Latch`
- `Semaphore`
- `Stream` of events
- Multi-producer, multi-consumer lock-free queue optimized for schedulers
- Multithreaded (work-stealing) FIFO scheduler
- Support `quota` for FIFO based schedulers
- Transactional interface for atomically completing multiple `Computation`s
- Changes:
- Redesigned resource management based on `('r -> 'a) -> 'a` functions
- Redesigned `spawn` interface allowing `FLS` entries to be populated before
spawn
- Introduced concept of fatal errors, which must terminate the scheduler or
the whole program
- Simplified `FLS` interface
- Improvements:
- Signficantly reduced per fiber memory usage of various sample schedulers
- Picos has now been split into multiple packages and libraries:
- pkg: `picos`
- lib: `picos`
- lib: `picos.domain`
- lib: `picos.thread`
- pkg: `picos_aux`
- lib: `picos_aux.htbl`
- lib: `picos_aux.mpmcq`
- lib: `picos_aux.mpscq`
- lib: `picos_aux.rc`
- pkg: `picos_lwt`
- lib: `picos_lwt`
- lib: `picos_lwt.unix`
- pkg: `picos_meta` (integration tests)
- pkg: `picos_mux`
- lib: `picos_mux.fifo`
- lib: `picos_mux.multififo`
- lib: `picos_mux.random`
- lib: `picos_mux.thread`
- pkg: `picos_std`
- lib: `picos_std.event`
- lib: `picos_std.finally`
- lib: `picos_std.structured`
- lib: `picos_std.sync`
- pkg: `picos_io`
- lib: `picos_io`
- lib: `picos_io.fd`
- lib: `picos_io.select`
- pkg: `picos_io_cohttp`
- lib: `picos_io_cohttp`
authored by