Releases: c-cube/moonpool
0.11
CHANGES:
-
feat: add
Fut.for_iter -
fix: in Lock, prevent flambda from reordering mutex-protected operations
-
document how many threads are used for work in
Ws_pool -
remove mentions of ocaml4 in readme
-
chore: for now, add bound for lwt 5.xx only
-
abstract type for Tracing_ stub (for new
trace)
0.10
CHANGES:
-
breaking: remove
around_taskfrom schedulers -
breaking: remove
moonpool.fibentirely. Please usepicos_std.structured
if you really need structured concurrency. -
remove deprecated moonpool-io and moonpool.sync
-
feat core: add
Main, salvaged from moonpool.fib -
block signals in background threads
-
refactor
chan; fix bug inChan.try_push -
fix: make
Moonpool_lwt.fut_of_lwtidempotent
0.9
CHANGES:
-
breaking: require OCaml 5
- no further need for a preprocessor
- forkjoin not longer optional
-
moonpool-lwt: large changes, including a Runner that runs
insideLwt_unix's event loop and can thus use any_ Lwt.tfunction -
remove bounded_queue
-
fix core: better repropagating of errors
-
add
Fut.{cancel,try_cancel} -
perf:
awaiton immediately ready timer queues its task -
feat: add
Moonpool.yield -
deprecate moonpool.sync
-
deprecate moonpool_io
0.8
CHANGES:
-
api(fut): make alias
'a Fut.t = 'a Picos.Computation.tpublic -
feat: add
Fut.make_promise, have'a promise = private 'a fut -
feat(exn_bt): in show/pp, do print the backtrace when present
-
feat: block signals in workers if asked to
-
relax bound on picos to 0.5-0.6
-
feat fib:
spawn_ignorenow has?onoptional param -
change Moonpool.Chan so it's bounded (stil experimental)
-
fix task local storage: type was too specific
-
fix fiber: use a single fut/computation in fibers
0.7
0.6
CHANGES:
-
breaking: remove
Immediate_runner(bug prone and didn't
handle effects).Moonpool_fib.maincan be used to handle
effects in the main function. -
remove deprecated alias
Moonpool.Pool -
feat: add structured concurrency sub-library
moonpool.fibwith
fibers. Fibers can useawaitand spawn other fibers that will
be appropriately cancelled when their parent is. -
feat: add add
moonpool-lwtas an experimental bridge between moonpool and lwt.
This allows moonpool runners to be used from within Lwt to
perform background computations, and conversely to call Lwt from
moonpool with some precautions. -
feat: task-local storage in the main moonpool runners, available from
fibers and regular tasks. -
feat: add
Exn_btto core -
feat: add
Runner.dummy -
make
moonpool.forkjoinoptional (only on OCaml >= 5.0) -
feat: add
Fut.Advanced.barrier_on_abstract_container_of_futures -
feat: add
Fut.map_list -
refactor: split off domain pool to
moonpool.dpool -
fix too early exit in Ws_pool
0.5.1
0.5
CHANGES:
features
-
add
Bb_queue.transfer -
add
Bb_queue.to_{iter,gen,seq} -
add
Fifo_pool, a simple pool with a single blocking queue for
workloads with coarse granularity tasks that value
latency (e.g. a web server) -
add a work-stealing pool for heavy compute workloads that
feature a lot of await/fork-join, with a lot of help
from Vesa Karvonen (@polytypic) -
add
Fut.spawn_on_current_runner -
add
Runner.{spawn_on_current_runner, await} -
add a few more toplevel aliases in
Moonpoolitself -
add
No_runner: a runner that runs tasks synchronously in the caller -
on shutdown, pools will finish running all present tasks before
closing. New tasks are immediately rejected. -
use an optional dependency on
thread-local-storageto
implement work stealing andspawn_on_current_runner
optimizations
- use the main domain to spawn threads on it. This means we can really
use all cores, not all but one. - in
Fork_join.both, only one of the two sides schedules a task,
the other runs in the current thread. This reduces scheduling overhead. - compare to domainslib in benchmarks. With the WS pool we're now slightly
ahead in terms of overhead on the recursive fib benchmark.
breaking
- deprecate
Pool, now an alias toFifo_pool - the
Fut.Infix_localandFut.infixare gone, replaced with
a simplerFut.Infixmodule that tries to use the current runner
for intermediate tasks.
0.4
0.3
CHANGES:
-
add
Fork_joinfor parallelizing computations. This is only
available on OCaml 5.x because it relies on effects. -
add
Fork_join.{for_,map_array,map_list} -
add
Fork_join.all_{list,init} -
add
Pool.with_ -
add a channel module
-
add
Runner, changePoolto produce aRunner.t -
add a
Lockmodule -
add support for domain-local-await when installed
-
add
Fut.awaitfor OCaml >= 5.0 -
fix: Fork_join.both_ignore now has a more general type
-
expose
Suspend_and its internal effect with an unstability alert.
This is intended for implementors ofRunneronly. -
port
cpp.mlfrom containers, replace previous codegen with it.
This will provide better flexibility for supporting multiple versions
of OCaml in the future. -
add
Pool.run_wait_block; renamePool.runintoPool.run_async -
fix: in blocking queue,
popworks on a non empty closed queue