[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

Enjoy!
B.

8 Likes