[new release] eio (5 packages) (0.14) #25086
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 / API changes:
Add
Eio.Executor_pool
(@SGrondin Eio.Executor_pool ocaml-multicore/eio#639, reviewed by @talex5).Provides an easy way to distribute jobs across domains.
Add
Fiber.first ~combine
andFiber.n_any
(@SGrondin @talex5 Safe Fiber races:~combine
andFiber.n_any
ocaml-multicore/eio#587).Allows keeping both results in the case where multiple fibers succeed.
Add
Eio_mock.Backend.run_full
with auto-advancing mock clock (@talex5 eio.mock: auto-advancing mock clock ocaml-multicore/eio#644, reviewed by @SGrondin).Simplifies testing of code using clocks.
Add
Buf_write.printf
(@SGrondin @talex5 Add Buf_write.printf (custom formatter) ocaml-multicore/eio#655).Add
Net.listening_addr
(@mefyl Addlistening_socket#listening_addr
ocaml-multicore/eio#555, reviewed by @patricoferris @talex5).Useful to get the socket's address if the OS assigns it.
Add
Promise.try_resolve
(@talex5 Add Promise.try_resolve ocaml-multicore/eio#646).Remove
Cancel_hook_failed
exception (@talex5 Remove Cancel_hook_failed ocaml-multicore/eio#640).Didn't seem to be used and broke dscheck.
Tracing:
Improve tracing (@TheLortex @patricoferris @talex5 Improve tracing ocaml-multicore/eio#656).
Trace cancellation contexts and OS operations, and simplify API.
Add labels to switches (@talex5 Tracing: add labels to switches ocaml-multicore/eio#661, reviewed by @SGrondin).
Fiber.all
: use the parent fiber (@talex5 Fiber.all: use the parent fiber ocaml-multicore/eio#665, reviewed by @SGrondin).Cleans up the traces a bit.
Performance:
Faster and simpler
Lf_queue
(@talex5 Faster and simpler Lf_queue ocaml-multicore/eio#647, based on work by @polytypic).Optimise
Flow.copy
withBuf_read.as_flow
(@talex5 Optimise Flow.copy with Buf_read.as_flow ocaml-multicore/eio#663, reviewed by @SGrondin, reported by @leostera).Bug fixes:
Fix handling of very long IO vectors (@talex5 Fix handling of very long IO vectors ocaml-multicore/eio#653, reported by @Cjen1).
eio_posix: use
caml_enter_blocking_section
in more places (@talex5 eio_posix: use caml_enter_blocking_section in more places ocaml-multicore/eio#654, reviewed by @SGrondin).eio_posix: work around
caml_unix_alloc_sockaddr
bug (@talex5 eio_posix: work around caml_unix_alloc_sockaddr bug ocaml-multicore/eio#651).Remove default backtrace from
Switch.fail
(@talex5 Remove default backtrace from Switch.fail ocaml-multicore/eio#664).Documentation:
Organise eio.mli better (@talex5 Organise eio.mli better ocaml-multicore/eio#667).
Fix quoting of quotes in process error messages (@talex5 Fix quoting of quotes in process error messages ocaml-multicore/eio#666, reviewed by @SGrondin).
Mention Path module in File and Fs documentation (@talex5 Mention Path module in File and Fs documentation ocaml-multicore/eio#659, requested by @clecat).
Minor documentation updates (@SGrondin @talex5 Minor documentation updates ocaml-multicore/eio#670).
Build / internals:
Allow closing synchronous streams (@talex5 Allow closing synchronous streams ocaml-multicore/eio#641, reviewed by @SGrondin).
This isn't currently exposed in the public interface.
Fix non-idempotent tests (@SGrondin Fix non-idempotent tests ocaml-multicore/eio#662).
eio_windows: add explicit fmt dependency (@talex5 eio_windows: add explicit fmt dependency ocaml-multicore/eio#643).