Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Changes:
Flow.write (@haesbaert #318). This provides an optimised alternative to copy in the case where you are writing from a buffer.Net.with_tcp_connect (@bikallem #302). Convenience function for opening a TCP connection.Eio.Time.Timeout (@talex5 #320). Makes it easier to pass timeouts around.Eio_mock.Clock (@talex5 #328). Control time in tests.Buf_read.take_while1 and skip_while1 (@bikallem #309). These fail if no characters match.Promise.t covariant (@anmonteiro #300).Flow.source_string (@c-cube #317). Slightly faster.Bug fixes:
Condition.broadcast must interlock as well (@haesbaert #324).Net.connect to be cancelled (@talex5 @nojb #311).Documentation:
New features:
Eio.Condition (@TheLortex @talex5 #277). Allows a fiber to wait for some condition to become true.Eio.Net.getaddrinfo and getnameinfo (@bikallem @talex5 #278 #288 #291). Convert between host names and addresses.Eio.Debug (@talex5 #276). Currently, this allows overriding the traceln function.Buf_write.create: make switch optional (@talex5 #283). This makes things easier for people porting code from Faraday.Bug fixes:
Other changes:
Mutex, Semaphore and Condition in the README (@talex5 #281).Note: Eio 0.4 drops compatibility with OCaml 4.12+domains. Use OCaml 5.0.0~alpha1 instead.
API changes:
Eio.Dir has gone. Use Eio.Path instead (@talex5 #266 #270).Eio_unix.FD.{take,peek} were renamed to take_opt/peek_opt to make way for non-optional versions.New features:
Eio.Path.{unlink,rmdir,rename} (@talex5 #264 #265).Eio_main.run can now return a value (@talex5 #263). This is useful for e.g. cmdliner.Eio_unix.socketpair (@talex5 #260).Fiber.fork_daemon (@talex5 #252). Create a helper fiber that does not prevent the switch from exiting.Fiber.{iter,map,filter,fiter_map} (@talex5 #248 #250). These are concurrent versions of the corresponding operations in List.Bug fixes:
Eio.Net.Connection_reset exception in more places (@talex5 #257).Buf_write still flushes if an exception is raised (@talex5 #246).accept_fork socket (@talex5 #245).Documentation:
API changes:
Net.accept_sub is deprecated in favour of accept_fork (@talex5 #240). Fiber.fork_on_accept, which it used internally, has been removed.Read_source_buffer (@talex5 #239). The reader is no longer required to consume all the data in one go. Also, add Linux_eio.Low_level.writev_single to expose this behaviour directly.Eio.Unix_perm is now Eio.Dir.Unix_perm.New features:
Eio.Mutex (@TheLortex @talex5 #223).Eio.Buf_write (@talex5 #235). This is a buffered writer for Eio sinks, based on Faraday.Eio_mock library for testing (@talex5 #228). At the moment it has mock flows and networks.Eio_mock.Backend (@talex5 #237 #238). Allows running tests without needing a dependency on eio_main. Also, as it is single-threaded, it can detect deadlocks in test code instead of just hanging.Buf_read.{of_buffer, of_string, parse_string{,_exn}, return} (@talex5 #225).<*> combinator to Buf_read.Syntax (@talex5 #227).Eio.Dir.read_dir (@patricoferris @talex5 #207 #218 #219)Performance:
Buf_read benchmark and optimise it a bit (@talex5 #230).Buf_read.consume to improve performance (@talex5 #232).Bug fixes / minor changes:
traceln without an effect handler (@talex5 #226). traceln now works outside of an event loop too.getrandom (@bikallem #212).Eio_linux: cope with lack of fixed chunks (@talex5 #200).
Eio_unix.FD.as_socket (@talex5 #193). Useful for working with existing libraries that provide a Unix.file_descr, or for receiving FDs from elsewhere (e.g. socket activation). Also, the Luv.{File,Handle}.of_luv functions now allow controlling whether to close the wrapped FD.Eio_unix.sleep (@talex5 #188). Based on feedback that some people don't want to treat time as a capability. Possibly also useful for debugging race conditions.Eio_null backend (@talex5 #189). This supports creating fibers, promises and cancellation, but provides no IO operations.Effect.eff is now Effect.t in OCaml trunk (@talex5 #201).