Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Spiros Eliopoulos <seliopou@gmail.com>
To: OCaml <caml-list@inria.fr>
Subject: [Caml-list] ANN: angstrom
Date: Fri, 22 Jul 2016 16:35:18 +0300	[thread overview]
Message-ID: <CAEkQQgKO+JnpDw4YDaY19EqU_a9=Hwh8a3+w0+TUnU4vqTn7tA@mail.gmail.com> (raw)

[-- 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 --]

             reply	other threads:[~2016-07-22 13:35 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-22 13:35 Spiros Eliopoulos [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEkQQgKO+JnpDw4YDaY19EqU_a9=Hwh8a3+w0+TUnU4vqTn7tA@mail.gmail.com' \
    --to=seliopou@gmail.com \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox