-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[new release] eio_main, eio_luv, eio_linux and eio (0.8) #23208
Conversation
a9147af
to
b8080f0
Compare
CHANGES: New features: - Add `Eio.Net.run_server` (@bikallem @talex5 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` and `LE` parsers (@Cjen1 ocaml-multicore/eio#399). Parse numbers in various binary formats. - Add `Eio.Buf_read.uint8` (@talex5 ocaml-multicore/eio#418). Performance: - Make `Eio.Condition` lock-free (@talex5 ocaml-multicore/eio#397 ocaml-multicore/eio#381). In addition to being faster, this allows using conditions in signal handlers. - Make `Eio.Semaphore` lock-free (@talex5 @polytypic ocaml-multicore/eio#398). - Make `Eio.Stream` lock-free when the capacity is zero (@talex5 ocaml-multicore/eio#413 ocaml-multicore/eio#411). - Make `Eio.Promise` lock-free (@talex5 ocaml-multicore/eio#401). Bug fixes: - eio_linux: call `Uring.submit` as needed (@talex5 @bikallem ocaml-multicore/eio#428). Previously, we could fail to submit a job promptly because the SQE queue was full. - Fix luv signals (@haesbaert ocaml-multicore/eio#412). `libuv` automatically retries polling if it gets `EINTR`, without giving OCaml signal handlers a chance to run. - eio_luv: fix some resource leaks (@talex5 @patricoferris ocaml-multicore/eio#421). - eio_luv: fix "unavailable signal" error on Windows (@talex5 ocaml-multicore/eio#420, reported by @nojb). - Fix `Buf_write.BE.uint48` and `LE.uint48` (@adatario ocaml-multicore/eio#418). Documentation: - Add example programs (@talex5 ocaml-multicore/eio#389). - Update network examples to use `run_server` (@talex5 ocaml-multicore/eio#417). - Add a warning to the tutorial about `Fiber.first` (@talex5 ocaml-multicore/eio#394). - Clarify the epoch used for `Eio.Time.now` (@bikallem ocaml-multicore/eio#395). - Describe `secure_random` as an infinite source (@patricoferris ocaml-multicore/eio#426). - Update README for OCaml 5 release (@talex5 ocaml-multicore/eio#384 ocaml-multicore/eio#391 ocaml-multicore/eio#393). Other changes: - Delay setting `SIGPIPE` handler until the `run` function is called (@talex5 ocaml-multicore/eio#420). - Remove debug-level logging (@talex5 ocaml-multicore/eio#403). - eio-luv: improve `process.md` test (@smondet ocaml-multicore/eio#414). - Update to Dune 3 (@talex5 ocaml-multicore/eio#410). - Remove test dependency on Astring (@talex5 ocaml-multicore/eio#402 ocaml-multicore/eio#404). - Simplify cancellation logic (@talex5 ocaml-multicore/eio#396). - time: `Mtime.Spand.to_s` has been deprecated in mtime 2.0.0 (@bikallem ocaml-multicore/eio#385).
b8080f0
to
9c8fc13
Compare
|
If the macos failures are expected, we might want to add Alternatively, we could condition the |
The network tests always fail due to the CI sandboxing the loopback interface.
a035bd5
to
e000c6c
Compare
OK, I added I also investigated why the Lwt_eio revdep tests failed. I believe this is due to ocsigen/lwt#981, and is not a bug in Eio. |
I'm going to make another release with work-arounds for some of the build problems. |
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).