[new release] eio (5 packages) (0.15) #25316
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Effect-based direct-style IO API for OCaml
CHANGES:
New features:
eio_posix: use directory FDs instead of realpath (@talex5 eio_posix: use directory FDs instead of realpath ocaml-multicore/eio#694 eio_posix: add O_DIRECTORY when opening with a trailing slash ocaml-multicore/eio#696, reviewed by @SGrondin).
Using realpath was an old hack from the libuv days and subject to races. It was also slow.
Keep pool of systhreads for blocking operations (@SGrondin @talex5 Keep pool of systhreads for blocking operations (simplified) ocaml-multicore/eio#681).
This is much faster than creating a new thread for each operation.
It mainly benefits the eio_posix backend, as that uses lots of systhreads.
Make
Switch.on_release
thread-safe (@talex5 Make Switch.on_release thread safe ocaml-multicore/eio#684, requested by @art-w and @clecat).This allows resource pools to be shared between domains easily.
Add
Eio.Path.read_link
(@talex5 Add Eio.Path.read_link ocaml-multicore/eio#686).Add
Eio_unix.Fd.is_open
(@talex5 Minor file-descriptor improvements ocaml-multicore/eio#690).Include backtrace in systhread errors (@talex5 Include backtrace in systhread errors ocaml-multicore/eio#688, reviewed by @SGrondin).
Also, add
Eio.Exn.empty_backtrace
as a convenience.eio.mock: add tracing support to mock backend (@talex5 eio.mock: add tracing support ocaml-multicore/eio#687).
Improve tracing (@talex5 Improve traces ocaml-multicore/eio#675 Trace cancellation ocaml-multicore/eio#683 Trace domain spawning ocaml-multicore/eio#676, reviewed by @SGrondin).
Update tracing section of README and trace more things
(
run_in_systhread
,close
,submit
,traceln
, cancellation and domain spawning).Documentation:
Link to verification work in docs (@talex5 Link to verification work in docs ocaml-multicore/eio#682).
Add more trace diagrams to README (@talex5 Add more trace diagrams to README ocaml-multicore/eio#698).
Adjust COC contacts (@polytypic Adjust COC contacts ocaml-multicore/eio#685, reviewed by @Sudha247).
Bug fixes:
eio_linux: retry
openat2
onEAGAIN
(@talex5 eio_linux: retry openat2 on EAGAIN ocaml-multicore/eio#693, reviewed by @SGrondin).eio_posix and eio_windows: check for IO periodically (@talex5 eio_posix and eio_windows: check for IO periodically ocaml-multicore/eio#674).
Handle EPERM when trying to initialise uring (@talex5 Handle EPERM when trying to initialise uring ocaml-multicore/eio#691).
This can happen when using a Docker container.
Build and tests:
Benchmark
Eio_unix.run_in_systhread
(@talex5 Benchmark Eio_unix.run_in_systhread ocaml-multicore/eio#678, reviewed by @SGrondin).Enable lintcstubs for
Eio_unix.Private
too (@talex5 Enable lintcstubs for Eio_unix.Private too ocaml-multicore/eio#689).Stat benchmark: report cleanup time and optimise (@talex5 Stat benchmark: report cleanup time and optimise ocaml-multicore/eio#692).
Make benchmarks start faster (@talex5 Make benchmarks start faster ocaml-multicore/eio#673).
Update build for new eio-trace CLI (@talex5 Update build for new eio-trace CLI ocaml-multicore/eio#699).
Expect opam-repo-ci tests to fail on macos (@talex5 Expect opam-repo-ci tests to fail on macos ocaml-multicore/eio#672).