[new release] eio_main, eio_luv, eio_linux and eio (0.8) #23208
Closed
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 mainloop for OCaml
CHANGES:
New features:
Add
Eio.Net.run_server
(@bikallem @talex5 net: add run_server to run eio servers ocaml-multicore/eio#408).Runs an accept loop in one or more domains, with cancellation and graceful shutdown,
and an optional maximum number of concurrent connections.
Add
Buf_read.BE
andLE
parsers (@Cjen1 Add Buf_read.BE/LE parsers ocaml-multicore/eio#399).Parse numbers in various binary formats.
Add
Eio.Buf_read.uint8
(@talex5 Buf_write: Fix BE.uint48 and LE.uint48. ocaml-multicore/eio#418).Performance:
Make
Eio.Condition
lock-free (@talex5 Make Eio.Condition lock-free ocaml-multicore/eio#397 Make Eio_linux.wakeup signal-safe ocaml-multicore/eio#381).In addition to being faster, this allows using conditions in signal handlers.
Make
Eio.Semaphore
lock-free (@talex5 @polytypic Make Eio.Semaphore lock-free ocaml-multicore/eio#398).Make
Eio.Stream
lock-free when the capacity is zero (@talex5 Add cancellable lock-free synchronous channel ocaml-multicore/eio#413 Improve stream benchmark ocaml-multicore/eio#411).Make
Eio.Promise
lock-free (@talex5 Make Eio.Promise lock-free ocaml-multicore/eio#401).Bug fixes:
eio_linux: call
Uring.submit
as needed (@talex5 @bikallem eio_linux: call submit as needed ocaml-multicore/eio#428).Previously, we could fail to submit a job promptly because the SQE queue was full.
Fix luv signals (@haesbaert Fix luv signals (issue #400) ocaml-multicore/eio#412).
libuv
automatically retries polling if it getsEINTR
, without giving OCaml signal handlers a chance to run.eio_luv: fix some resource leaks (@talex5 @patricoferris eio_luv: fix some resource leaks ocaml-multicore/eio#421).
eio_luv: fix "unavailable signal" error on Windows (@talex5 Windows: fix "unavailable signal" error ocaml-multicore/eio#420, reported by @nojb).
Fix
Buf_write.BE.uint48
andLE.uint48
(@adatario Buf_write: Fix BE.uint48 and LE.uint48. ocaml-multicore/eio#418).Documentation:
Add example programs (@talex5 Documentation improvements ocaml-multicore/eio#389).
Update network examples to use
run_server
(@talex5 Update network examples to use run_server ocaml-multicore/eio#417).Add a warning to the tutorial about
Fiber.first
(@talex5 Add a warning to the tutorial about Fiber.first ocaml-multicore/eio#394).Clarify the epoch used for
Eio.Time.now
(@bikallem time: clarify Eio.Time.now is UTC ocaml-multicore/eio#395).Describe
secure_random
as an infinite source (@patricoferris Describe secure_random as an infinite source ocaml-multicore/eio#426).Update README for OCaml 5 release (@talex5 Update README for OCaml 5.0.0~rc1 ocaml-multicore/eio#384 Update README for OCaml 5 release ocaml-multicore/eio#391 Simply Dockerfile now OCaml 5 is out ocaml-multicore/eio#393).
Other changes:
Delay setting
SIGPIPE
handler until therun
function is called (@talex5 Windows: fix "unavailable signal" error ocaml-multicore/eio#420).Remove debug-level logging (@talex5 Remove debug-level logging ocaml-multicore/eio#403).
eio-luv: improve
process.md
test (@smondet eio-luv: improveprocess.md
test ocaml-multicore/eio#414).Update to Dune 3 (@talex5 Update to Dune 3 ocaml-multicore/eio#410).
Remove test dependency on Astring (@talex5 Remove test dependency on Astring ocaml-multicore/eio#402 Fix off-by-one in fuzz test ocaml-multicore/eio#404).
Simplify cancellation logic (@talex5 Simplify cancellation logic ocaml-multicore/eio#396).
time:
Mtime.Spand.to_s
has been deprecated in mtime 2.0.0 (@bikallem time: Mtime.Spand.to_s has been deprecated in mtime 2.0.0 ocaml-multicore/eio#385).