mirror of
https://github.com/c-cube/moonpool.git
synced 2025-12-05 19:00:33 -05:00
* feat: depend on picos, use picos.exn_bt * refactor: remove dla * non optional dependency on thread-local-storage it's a dep of picos anyway * wip: use picos computations * disable t_fib1 test, way too flaky * feat `fut`: wrap picos computations * detail in fut * gitignore * refactor core: use picos for schedulers; add Worker_loop_ we factor most of the thread workers' logic in `Worker_loop_`, which is now shared between Ws_pool and Fifo_pool * github actions * feat fut: add `on_result_ignore` * details * wip: port to picos * test: wip porting tests * fix fut: trigger failing to attach doesn't signal it * fix pool: only return No_more_tasks when local and global q empty * format * chore: fix CI by installing picos first * more CI * test: re-enable t_fib1 but with a single core fifo pool it should be deterministic now! * fixes after reviews * bump minimal OCaml version to 4.13 * use `exn_bt`, not `picos.exn_bt` * feat: optional dep on hmap, for inheritable FLS data * format * chore: depend on picos explicitly * feat: move hmap-fls to Fiber.Fls * change API for local FLS hmap * refactor: move optional hmap FLS stuff into core/task_local_storage * add Task_local_storage.remove_in_local_hmap * chore: try to fix CI * format * chore: CI * fix * feat: add `Fls.with_in_local_hmap` * chore: depend on hmap for tests * fix test for FLS use the inheritable keys * chore: CI * require OCaml 4.14 :/ * feat: add `moonpool.sync` with await-friendly abstractions based on picos_sync * fix: catch TLS.Not_set * fix: `LS.get` shouldn't raise * fix * update to merged picos PR * chore: CI * fix dep * feat: add `Event.of_fut` * chore: CI * remove dep on now defunct `exn_bt` * feat: add moonpool-io * chore: CI * version constraint on moonpool-io * add Event.Infix * move to picos_io
95 lines
2.6 KiB
YAML
95 lines
2.6 KiB
YAML
name: Build and Test
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
|
|
jobs:
|
|
run:
|
|
name: build # build+test on various versions of OCaml, on linux
|
|
timeout-minutes: 15
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
ocaml-compiler:
|
|
- '4.14'
|
|
- '5.2'
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@main
|
|
- name: Use OCaml ${{ matrix.ocaml-compiler }}
|
|
uses: ocaml/setup-ocaml@v2
|
|
with:
|
|
ocaml-compiler: ${{ matrix.ocaml-compiler }}
|
|
dune-cache: true
|
|
allow-prerelease-opam: true
|
|
|
|
# temporary until it's in a release
|
|
- run: opam pin https://github.com/ocaml-multicore/picos.git -y -n
|
|
|
|
- run: opam install -t moonpool moonpool-lwt moonpool-io --deps-only
|
|
if: matrix.ocaml-compiler == '5.2'
|
|
- run: opam install -t moonpool --deps-only
|
|
if: matrix.ocaml-compiler != '5.2'
|
|
- run: opam exec -- dune build @install
|
|
|
|
# install some depopts
|
|
- run: opam install thread-local-storage trace hmap
|
|
if: matrix.ocaml-compiler == '5.2'
|
|
|
|
- run: opam exec -- dune build --profile=release --force @install @runtest
|
|
|
|
compat:
|
|
name: build-compat # compat with other OSes
|
|
timeout-minutes: 15
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
os:
|
|
- macos-latest
|
|
#- windows-latest
|
|
ocaml-compiler:
|
|
- '5.2'
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@main
|
|
- name: Use OCaml ${{ matrix.ocaml-compiler }}
|
|
uses: ocaml/setup-ocaml@v2
|
|
with:
|
|
ocaml-compiler: ${{ matrix.ocaml-compiler }}
|
|
dune-cache: true
|
|
allow-prerelease-opam: true
|
|
|
|
# temporary until it's in a release
|
|
- run: opam pin https://github.com/ocaml-multicore/picos.git -y -n
|
|
|
|
- run: opam install -t moonpool moonpool-lwt moonpool-io --deps-only
|
|
- run: opam exec -- dune build @install
|
|
# install some depopts
|
|
- run: opam install thread-local-storage trace domain-local-await
|
|
- run: opam exec -- dune build --profile=release --force @install @runtest
|
|
|
|
format:
|
|
name: format
|
|
strategy:
|
|
matrix:
|
|
ocaml-compiler:
|
|
- '5.2'
|
|
runs-on: 'ubuntu-latest'
|
|
steps:
|
|
- uses: actions/checkout@main
|
|
- name: Use OCaml ${{ matrix.ocaml-compiler }}
|
|
uses: ocaml/setup-ocaml@v2
|
|
with:
|
|
ocaml-compiler: ${{ matrix.ocaml-compiler }}
|
|
dune-cache: true
|
|
allow-prerelease-opam: true
|
|
|
|
- run: opam install ocamlformat.0.26.2
|
|
- run: opam exec -- make format-check
|
|
|