Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Breaking changes:
Other new features:
shutdown, socket, renameat and symlinkat ops (@avsm #147).fallocate and ftruncate ops (@avsm #149).socket binding to set CLOEXEC by default (@avsm #151).RWF flags to read/write submissions (@avsm #154).readv/writev on fixed buffers (@avsm #155).Bug fixes:
Statx.Attr.check (@avsm @talex5 #142 #159).dio_offset_align statx getter returning the wrong field (@avsm #141).caml_uring_wait_cqe the same null-cqe check as the timeout variant and reuse the OCaml runtime's socket table. (@avsm #148).io_uring_submit rather than ignoring them (@talex5 #144).Region.init and simplify the slot calculation (@dra27 #128, @avsm #145).URING_DEBUG format-string warnings (@avsm #146).Build and tests:
/tmp in the configure test, to work with sandboxed opam builds (@talex5 #158).lintcstubs-arity a test dependency (@avsm #143, based on @dra27 in #128).Breaking changes:
Add Uring.Res module to handle result values (@talex5 #131). This avoids the need to use Obj.magic for operations that return file descriptors. Based on investigations by @dra27 in #129 and #130 and an initial request from @koonwen.
To upgrade, you can either use the functions in the Res module, or just cast back to int with (res :> int) and continue as before.
Other new features:
send_zc and sendmsg_zc ops (@avsm #139).Bug fixes:
polling_timeout with GC in ocaml_uring_setup (@talex5 #136, spotted by @polytypic).MSG_CMSG_CLOEXEC when receiving file descriptors (@talex5 #132).Documentation:
write_fixed (@talex5 #133, suggested by @toastal).Build and tests:
Uring.Setup_flags module (@talex5 #122).mkdirat operation (@patricoferris #120).Uring.sqe_ready (@talex5 #115).linkat operations. (@LucaSeri @talex5 #105, reviewed by @avsm)fsync and fdatasync operations. (@avsm #103, reviewed by @talex5)statx support (@patricoferris, @talex5, @avsm #95 #97).ocaml_uring_get_msghdr_fds (@talex5 #91, reviewed by @avsm).Uring.wait (@edwintorok #89). io_uring_submit_and_wait_timeout can return a success status but with a NULL cqe.caml_enter_blocking_section when calling io_uring_submit (@TheLortex #86).queue_depth events at a time.New features:
Uring.timeout (@bikallem #59).Uring.read and Uring.write (@haesbaert #62). These are simple wrappers for read(2) and write(2).Uring.unlink (@talex5 #65). This uses unlinkat(2), and so can also be used to remove directories.peek to get_cqe_nonblocking (@talex5 #67). The old name was confusing because it does remove the item from the ring.Uring.active_ops (@talex5 #68). Avoids needing to track the value returned by submit, which is important as it is sometimes called automatically.Uring.iov_max constant (@talex5 #76).Uring.get_debug_stats (@talex5 #64). This should make it easier to check that the uring is behaving as expected.Performance:
submit_and_wait where appropriate (@haesbaert #69).readv benchmark (@talex5 #64).CAMLparam in the C stubs (@haesbaert #61).Bug fixes:
Build changes:
is_dirty flag (@talex5 #77).Breaking changes:
set_fixed_buffer.New features:
SCM_RIGHTS (@talex5 #52).Other changes:
New features:
Other changes:
Fmt.strf deprecation error (@bikallem #38).shiftv (@talex5 #36).