[new release] eio (5 packages) (0.12) - #24328
Merged
Merged
Conversation
CHANGES: New features / API changes: - Replace objects with variants (@talex5 @patricoferris ocaml-multicore/eio#553 ocaml-multicore/eio#605 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: - Instead of taking an argument of type `#foo`, you should now take `_ foo`. - Instead of returning a value of type `foo`, you should now return `foo_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 ocaml-multicore/eio#602, reviewed by @patricoferris). A lock-free pool of resources. This is similar to `Lwt_pool`. - Add `Eio.Lazy` (@talex5 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 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 ocaml-multicore/eio#598). - Add `Eio.Flow.Pi.simple_copy` (@talex5 ocaml-multicore/eio#611). Provides an easy way to implement the `copy` operation when making your own sink. - Eio_unix: add FD passing (@talex5 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 ocaml-multicore/eio#586, reviewed by @talex5). - Add `Eio_mock.Domain_manager` (@talex5 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 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 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 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 ocaml-multicore/eio#597). - The README depends on kcas (@talex5 ocaml-multicore/eio#606). - Clarify configuration for lib_eio_linux and enable tests on other arches (@dra27 ocaml-multicore/eio#592). - eio_linux tests: skip fixed buffer test if not available (@talex5 ocaml-multicore/eio#604). - eio_windows: update available line to win32 (@talex5 ocaml-multicore/eio#588 ocaml-multicore/eio#591).
talex5
force-pushed
the
release-eio-v0.12
branch
from
August 29, 2023 12:00
f2a8291 to
f911fd5
Compare
Member
|
Thanks! You may want to announce this on https://discuss.ocaml.org, where we have a Community category and an |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.Resourcemodule 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.Lazydoes).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
copyoperation 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_successto control definition of success (@SGrondin AddProcess.run ?is_successto 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
tracelnoutput. 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).