[ANN] v3.0.0 release of reparse, reparse-lwt, reparse-lwt-unix

Dear OCamlers,

I am happy to announce v3.0.0 of reparse - an OCaml library for constructing various types of parsers in OCaml.

The release follows a complete overhaul of the internal working of the library to achieve the following goals:

  1. Allow construction of efficient, zero-copy parsers. See String parser for example. The library provides a Make functor parametrised over a Promise and a Input type allowing you control over both parser memory allocation and copying.

  2. Support usage of async libraries - lwt and async. Following the first point the library can now be used together with lwt and/or async. A lwt parse - for example - can now be used seamlessly with your other lwt code. The integration is seamless.

  3. Provide Make_buffered functor to produce parsers where the input type natively doesn’t allow random read, for example sockets, lwt streams and channels. There is now two new supporting packages reparse-lwt which provides parsing from char Lwt_stream.t input type and reparse-lwt-unix which provides parsing from Lwt_unix.file_descr and Lwt_unix.input_channel respectively.

  4. Provide Make_unbuffered functor to produce parsers where the input type natively supports random read, for example strings, bigstrings, bytes.

  5. Introduce function unsafe_any_char to allow efficient (zero-copy?) parsing.

  6. Prune dependencies by removing base.

P.S. The documentation is bit behind in this release so please bear with me while work through the issues in the coming days.

Reparse repo