caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] ANN: angstrom
@ 2016-07-22 13:35 Spiros Eliopoulos
  2016-07-22 14:38 ` Daniel Bünzli
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Spiros Eliopoulos @ 2016-07-22 13:35 UTC (permalink / raw)
  To: OCaml

[-- Attachment #1: Type: text/plain, Size: 1817 bytes --]

Hey List,

It is with great pleasure that I announce the initial release of angstrom,
a parser-combinator library that I have been developing over the past
several months:

  https://github.com/inhabitedtype/angstrom
  http://opam.ocaml.org/packages/angstrom

Angstrom exposes monadic and applicative interfaces for composition, and
supports incremental input through buffered and unbuffered interfaces. Both
interfaces give the user total control over the blocking behavior of their
application, with the unbuffered interface enabling zero-copy IO. Parsers
are backtracking by default and support unbounded lookahead.

Whereas many OCaml parser combinator libraries claim heritage from the
Parsec[0] Haskell library, angstrom instead follows the design and
semantics of attoparsec[1], hence the name[2]. For a high-level comparison
of Angstrom's features to other parser-combinator libraries, see the table
included in the README:

  https://github.com/inhabitedtype/angstrom#comparison-to-other-libraries

The source distribution ships with a JSON parser, which I've benchmarked
against ezjsonm and yojson. Yojson wins hands down (it benefits greatly
from not having to support non-blocking incremental input), though the
angstrom-based parser comes in second both in terms of latency and
allocations. The results can be found here:

  https://gist.github.com/seliopou/7487875d36914efe74f736aaa3fbed16

There are several more performance improvements in the pipeline, which
should further reduce allocation rates, in some cases dramatically so. More
on that in the next release, along with other developments.

As always, issues and pull requests are welcomed.

-Spiros E.

[0]: https://hackage.haskell.org/package/parsec
[1]: https://github.com/bos/attoparsec
[2]: https://en.wikipedia.org/wiki/%C3%85ngstr%C3%B6m

[-- Attachment #2: Type: text/html, Size: 2598 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2017-02-04 16:36 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-22 13:35 [Caml-list] ANN: angstrom Spiros Eliopoulos
2016-07-22 14:38 ` Daniel Bünzli
2016-07-22 21:46   ` Spiros Eliopoulos
2016-07-23  2:17     ` Daniel Bünzli
2016-07-23  6:41       ` Cole Brown
2016-07-23 11:37         ` Daniel Bünzli
2016-07-25 14:15       ` Spiros Eliopoulos
2016-07-25 15:44         ` Daniel Bünzli
2016-07-25 16:07           ` Spiros Eliopoulos
2016-07-25 16:21             ` Daniel Bünzli
2016-07-25 19:37               ` Spiros Eliopoulos
2016-07-25 20:03                 ` Daniel Bünzli
2016-10-13 12:42 ` Anil Madhavapeddy
2017-02-03 19:37 ` Hendrik Boom
2017-02-04 16:36   ` Spiros Eliopoulos

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).