There have been some significant changes since this last release (Versions 0.4.0 and 0.5.0 are available on opam):
- Buffered reader has a new utility method that allows reading lines
- Shuttle now supports file descriptors that don’t support nonblocking I/O. For blocking I/O Shuttle uses async’s support for running syscalls in its thread pool
- Buffered reader’s api has been simplified to remove
read_one_chunk_at_a_time
in favor of a more familiarread
,read_line
etc.refill
operation is supported to perform a read syscall to fill a channel’s buffer, andInput_channel.view
can be used to get a view into the channel’s underlying buffer. - Supports v0.15 series of the janestreet libraries
- Buffered reader now uses an auto-growing buffer instead of a fixed size buffer than notified users that the internal buffer is full and no progress can be made unless some content is consumed. This should allow starting with a smaller buffer without needing to worry about implementing some client side buffering to hold unconsumed data. Channels allow configuring an upper bound on the internal buffer length, if a buffer grows beyond that an exception is raised.
- Buffered writer’s support a richer flush interface. Flush operations report errors encountered while attempting to write any pending bytes. This results in a flush operation that returns a deferred that will resolve at some point with either a success or an error, instead of the older flush operation that would return a deferred that never resolved if there was an error during a write syscall.