### v5.0.0 (2025-02-05)

- Remove functor over Mirage_clock.MCLOCK, use mirage-mtime instead
  (#53 @hannesm)

### v4.0.2 (2024-02-08)

- revert < coercion, shutdown is again
  ``shutdown : flow -> [ `read | `write | `read_write ] -> unit Lwt.t``
  (@reynir @hannesm)

### v4.0.1 (2024-02-08)

- move Mirage_flow.stats and pp_stats to Mirage_flow_combinators (#51 @hannesm)
- improve documentation of expected semantics (when write promise is resolved,
  what is done to the underlying flow - addresses #4 @samoht),
  (#51 @reynir @dinosaure @hannesm)
- add < coercion to shutdown:
  ``shutdown : flow -> [< `read | `write | `read_write ] -> unit Lwt.t``
  (requested #50 @reynir, #52 @hannesm)

### v4.0.0 (2023-12-19)

- Redefine `close` semantics, which no longer is a `` shutdown `read_write ``
  (#49 @hannesm)
- Add ``shutdown : flow -> [ `read | `write | `read_write ] -> unit Lwt.t``
  (@djs55 @hannesm #16 #18 #48)
- Remove SHUTDOWNABLE signature (@djs55 #17, rebased into #48)

### v3.0.0 (2021-11-14)

- Remove Mirage_flow_lwt module (#47 @hannesm)
- Require fmt 0.8.7, cstruct 6.0.0 and avoid deprecated functions (#47 @hannesm)
- Compatibility with alcotest 1.4 (eta expansion of Alcotest.fail) (#47 @hannesm)
- Mirage_flow_combinators.forward has an additional unit argument to avoid
  unerasable optional argument warning (#47 @hannesm)

### v2.0.1 (2019-11-04)

* provide deprecated Mirage_flow_lwt for smooth transition (#45 @hannesm)

### v2.0.0 (2019-10-23)

* mirage-flow uses Lwt.t and Cstruct.t directly (#43 @hannesm)
* mirage-flow-lwt was removed, combinators are now in mirage-flow-combinators (#43 @hannesm)
* raise lower OCaml bound to 4.06.0 (#43 @hannesm)

### v1.6.0 (2019-04-24)

* remove uses of `Result` (#40 @hannesm)
* port opam metadata to 2.0 format (#41 @hannesm)
* port build to dune from jbuilder (#41 @hannesm)

### v1.5.0 (2018-07-09)

* remove Result module, work with `-safe-string` and require cstruct >=3.2.0

### v1.4.0 (2017-06-23)

* mirage-flow-unix: add `Mirage_flow_unix.Fd` to wrap `Lwt_unix.file_descr` into
  a MirageOS flow (#34, #36, @samoht)
* mirage-flow-lwt: add first class flow values of type `Mirage_flow_lwt.t`
  (#35, @samoht)

### v1.3.0 (2017-06-12)

* Port to Jbuilder (#32 @djs55)

### v1.2.0 (2016-12-21)

* Import `V1.FLOW` from `mirage-types` into `Mirage_flow.S` (@samoht)
* Import `V1_LWT.FLOW` from `mirage-types-lwt` into `Mirage_flow_lwt.S` (@samoht)
* Rename the existing `Mirage_flow` into `Mirage_flow_lwt` (@samoht)
* Rename `Lwt_io_flow` into `Mirage_flow_unix` (@samoht)

### v1.1.0 (2016-01-27)

* Add a new top-level interface `module Mirage_flow`. Existing `module Fflow`
  is still present.
* Add `Mirage_flow.copy` to copy all the data in a flow to another
* Add `Mirage_flow.proxy` to copy data bidirectionally between two flows

### v1.0.3 (2015-07-29)

* Support lwt 2.5.0

### v1.0.2 (2015-06-30)

* Add explicit dependency to OUnit

### v1.0.1 (2015-04-28)

* Add `Fflow.error_message` to satisfay `mirage-types.2.3.0`

### v1.0.0 (2015-02-26)

* Add `Fflow` (functional flows)
* Add `Lwt_io_flow` to convert between Mirage and Lwt flows
