From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 5B0477F721 for ; Fri, 22 Jul 2016 15:35:39 +0200 (CEST) IronPort-PHdr: 9a23:WxqRfRVdD1aBANGeS8Z9rkcWAg7V8LGtZVwlr6E/grcLSJyIuqrYZhCFt8tkgFKBZ4jH8fUM07OQ6PG4HzFfqsja+Fk5M7V0HycfjssXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aJBzzOEJPK/jvHcaK1oLshrj0psKYPV4ArQH+SIs6FA+xowTVu5teqqpZAYF19CH0pGBVcf9d32JiKAHbtR/94sCt4MwrqHwI6Lpyv/JHBILRdqE8BehTBTEidmQ0/9HDtB/ZTALJ6GFKAUsMlR8dOBDE9hbhFrr1syzisfd53zLSadb7SbEzQTO/x6huQR7sziwAMmhqoynslsVsgfcD81qarBtlztuMbQ== Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=seliopou@gmail.com; spf=Pass smtp.mailfrom=seliopou@gmail.com; spf=None smtp.helo=postmaster@mail-lf0-f41.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of seliopou@gmail.com) identity=pra; client-ip=209.85.215.41; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="seliopou@gmail.com"; x-sender="seliopou@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of seliopou@gmail.com designates 209.85.215.41 as permitted sender) identity=mailfrom; client-ip=209.85.215.41; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="seliopou@gmail.com"; x-sender="seliopou@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-lf0-f41.google.com) identity=helo; client-ip=209.85.215.41; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="seliopou@gmail.com"; x-sender="postmaster@mail-lf0-f41.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0CfAABgIJJXhinXVdFdhBV8BoVGp1WGOoUFgXsjhB6BITqBKgc4FAEBAQEBAQEBEQEBAQgLCwkZL4IyFYIuER0BGx4DEgkHNwIkAREBBQEiNYdzAQMXDp5xggeBMj4xizuBaoJaBYQuChknDVSDTAIGEIYag0qFcIJUgloFjgxxiimGFohYgjqMfgKOYhIegQ8PD4JSgVo5MgWIbgEBAQ X-IPAS-Result: A0CfAABgIJJXhinXVdFdhBV8BoVGp1WGOoUFgXsjhB6BITqBKgc4FAEBAQEBAQEBEQEBAQgLCwkZL4IyFYIuER0BGx4DEgkHNwIkAREBBQEiNYdzAQMXDp5xggeBMj4xizuBaoJaBYQuChknDVSDTAIGEIYag0qFcIJUgloFjgxxiimGFohYgjqMfgKOYhIegQ8PD4JSgVo5MgWIbgEBAQ X-IronPort-AV: E=Sophos;i="5.28,405,1464645600"; d="scan'208,217";a="185633585" Received: from mail-lf0-f41.google.com ([209.85.215.41]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 22 Jul 2016 15:35:38 +0200 Received: by mail-lf0-f41.google.com with SMTP id l69so85726235lfg.1 for ; Fri, 22 Jul 2016 06:35:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=vK8egssN7FbbV04COWgnA8wr9kpaVMJJ+gkmenLcxGg=; b=jfk6MpAGdoskwTseP/MoiRucilG0cx4bVhw2nz6Ub99H5pANnGqTbnjdh8ipRvJ8bN zjgSCLQ9hO/J8ruf29kmr7CPmuEUinb51FLWTkjRMW2E0AJpgdPGCWwXMkqhHsU5xCfs undCakiWwSMVdYbdMOJFwBwgkELF2jtc93epOCkA+i84lZMOGmd5pZaK8j9hh9QvBvWm NqrDWtz5wTDryuktggp8AqkbObpYoeNJXreW1Wsc7bQLwUFLzJqcES3B92UVyqZ851c6 gQmdd0M6NLkEfh+4LhnLBEBdMeP8tmo9nDyBCiIRw5MFXKlvLWFvpSoknSWJUa6wW8gO 7vbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=vK8egssN7FbbV04COWgnA8wr9kpaVMJJ+gkmenLcxGg=; b=HA15SLrb/IFoKwxiGiWCZYFXQ87jQ8t+kUmAQZ3sULu06fUaGtVdRPi+Yy3vv/XH0K tYAtvm4OuyvlZWezbr25Onu7H1Sj1k1Rx5e5T86E3umbi+S/80Y9IEh9uK5aWqELNzYu aSyhUiRls6GXV2DSF1/djIy8n9lrIAmPO4UPmGCF2IOFGxNef0l0hISm4BZdEmyQAgK5 2sDL/sgHbabKWMqIlwGBXN1ACmQttFETksxTfciF7hi9v6ibSx5Ioyeyla4VjGC+qIgJ BQcz5nGc+a982Ep9+O8x2oY2tRYYpXsW3kaOjqwRWGUR2fqzwM37gNDslNvS3nHYQ1BN Z9/Q== X-Gm-Message-State: AEkoouvcY4WQMDHkq7V/V8WpZtuo+YP2xf2rWz+XKOCBlY2TxVsFHFmHc1Sgw+uGYnud1utOwDug/IO1lHRuPg== X-Received: by 10.46.0.201 with SMTP id e70mr2632424lji.57.1469194537829; Fri, 22 Jul 2016 06:35:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.25.87.136 with HTTP; Fri, 22 Jul 2016 06:35:18 -0700 (PDT) From: Spiros Eliopoulos Date: Fri, 22 Jul 2016 16:35:18 +0300 Message-ID: To: OCaml Content-Type: multipart/alternative; boundary=001a1142bfac88898f053839821a Subject: [Caml-list] ANN: angstrom --001a1142bfac88898f053839821a Content-Type: text/plain; charset=UTF-8 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 --001a1142bfac88898f053839821a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hey List,

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


Angstrom exposes monadic and applicative in= terfaces for composition, and supports incremental input through buffered a= nd unbuffered interfaces. Both interfaces give the user total control over = the blocking behavior of their application, with the unbuffered interface e= nabling zero-copy IO. Parsers are backtracking by default and support unbou= nded lookahead.

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


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


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

As = always, issues and pull requests are welcomed.

-Sp= iros E.

=
--001a1142bfac88898f053839821a--