[new release] eio (5 packages) (0.12) #24328
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:
Replace objects with variants (@talex5 @patricoferris Replace objects with variants ocaml-multicore/eio#553 Convert Eio.Process to FCMs ocaml-multicore/eio#605 Convert clocks to new resource system ocaml-multicore/eio#608, reviewed by @avsm).
Some potential users found object types confusing, so we now use an alternative scheme for OS resources.
For users of the resources, the only thing that changes is the types:
#foo
, you should now take_ foo
.foo
, you should now returnfoo_ty Eio.Resource.t
.To provide your own implementation of an interface, you now provide a module rather than an object.
For example, to provide your own source flow, use
Eio.Flow.Pi.source (module My_source)
.If you want to define your own interfaces, see the
Eio.Resource
module documentation.Add
Eio.Pool
(@talex5 @darrenldl Add Eio.Pool ocaml-multicore/eio#602, reviewed by @patricoferris).A lock-free pool of resources. This is similar to
Lwt_pool
.Add
Eio.Lazy
(@talex5 Add Eio.Lazy ocaml-multicore/eio#609, reviewed by @SGrondin).If one fiber tries to force a lazy value while another is already doing it,
this will wait for the first one to finish rather than raising an exception (as
Stdlib.Lazy
does).Add
Eio.Path.native
(@talex5 Add Eio.Path.native ocaml-multicore/eio#603, reviewed by @patricoferris).This is useful when interacting with non-Eio libraries, for spawning sub-processes, and for displaying paths to users.
Add
Flow.single_write
(@talex5 Add Flow.single_write ocaml-multicore/eio#598).Add
Eio.Flow.Pi.simple_copy
(@talex5 Add Eio.Flow.Pi.simple_copy ocaml-multicore/eio#611).Provides an easy way to implement the
copy
operation when making your own sink.Eio_unix: add FD passing (@talex5 Eio_unix: add FD passing ocaml-multicore/eio#522).
Allows opening a file and passing the handle over a Unix-domain socket.
Add
Process.run ?is_success
to control definition of success (@SGrondin AddProcess.run ?is_success
to control definition of success ocaml-multicore/eio#586, reviewed by @talex5).Add
Eio_mock.Domain_manager
(@talex5 Use variant types for domain manager ocaml-multicore/eio#610).This mock domain manager runs everything in a single domain, allowing tests to remain deterministic.
Add
Eio.Debug.with_trace_prefix
(@talex5 Use variant types for domain manager ocaml-multicore/eio#610).Allows prefixing all
traceln
output. The mock domain manager uses this to indicate which fake domain is running.Bug fixes:
Fork actions must not allocate (@talex5 Fork actions must not allocate ocaml-multicore/eio#593).
When using multiple domains, child processes could get stuck if they forked while another domain held the malloc lock.
eio_posix: ignore some errors writing to the wake-up pipe (@talex5 eio_posix: ignore some errors writing to the wake up pipe ocaml-multicore/eio#600).
If the pipe is full or closed, the wake-up should simply be ignored.
Build/test fixes:
Fix some MDX problems on Windows (@polytypic Fix some MDX problems on Windows ocaml-multicore/eio#597).
The README depends on kcas (@talex5 The README depends on kcas ocaml-multicore/eio#606).
Clarify configuration for lib_eio_linux and enable tests on other arches (@dra27 Clarify configuration for lib_eio_linux and enable tests on other arches ocaml-multicore/eio#592).
eio_linux tests: skip fixed buffer test if not available (@talex5 eio_linux tests: skip fixed buffer test if not available ocaml-multicore/eio#604).
eio_windows: update available line to win32 (@talex5 eio_windows: update available line to win32 ocaml-multicore/eio#588 sync opam files with dune generation ocaml-multicore/eio#591).