A high-performance OCaml parser combinator library for network protocols and serialization formats.
Angstrom is an OCaml parser combinator library built for speed and memory efficiency, making it easy to write expressive and reusable parsers. It is particularly suited for high-performance applications like network protocols and serialization formats, offering incremental input support and compatibility with concurrency libraries.
OCaml developers building high-performance parsers for network protocols, serialization formats, or other data-intensive applications where efficiency and control over IO are critical.
Developers choose Angstrom for its default backtracking, unbounded lookahead, zero-copy unbuffered interface, and seamless integration with Async and Lwt, providing a balance of performance and expressiveness unmatched by other OCaml parser combinator libraries.
Parser combinators built for speed and memory efficiency
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Parsers automatically backtrack on failure, eliminating the need for explicit `try` combinators and simplifying parser design, as highlighted in the README.
Includes optimized `take_while` and `skip_while` for efficient parsing in tight loops, making it ideal for performance-critical applications like network protocols.
Supports buffered and unbuffered modes, enabling zero-copy parsing and seamless compatibility with Async and Lwt for non-blocking applications.
Provides monadic and applicative composition, facilitating the creation of complex, reusable parsers, as demonstrated in the HTTP and JSON examples.
Does not report line numbers in error messages, which the README admits can hinder debugging compared to libraries like mparser.
Lacks built-in combinators for infix expressions, requiring users to define them manually, as shown in the arithmetic parser example.
Limited to OCaml, making it unsuitable for multi-language projects or developers seeking cross-platform parser libraries.