From: Oleg <oleg@okmij.org>
To: caml-list@inria.fr
Subject: [Caml-list] [ANN] strymonas v2: library for highest-performance stream processing
Date: Mon, 19 Sep 2022 14:47:09 +0900 [thread overview]
Message-ID: <YygCXUnECtyuEOkj@Magus.localnet> (raw)
As has just been announced at the OCAML 2022 workshop, the new,
re-written version of strymonas library is now available at
https://strymonas.github.io
Strymonas is the stream processing library that achieves the highest
performance of existing OCaml streaming libraries, attaining the speed
and memory efficiency of hand-written state machines. It supports
finite and infinite streams with the familiar declarative interface,
of any combination of map, filter, take(while), drop(while), zip,
flatmap combinators and tupling. Experienced users may use the
lower-level interface of stateful streams and implement accumulating
maps, compression and windowing. The library is based on assured code
generation (at present, of OCaml and C) and guarantees in all cases
complete fusion.
Compared with the original strymonas (POPL 2017), the new version is
completely re-written and:
-- Generates not only OCaml but also C (which needs no OCaml
run-time and vectorizable)
-- Has Core + code-generation Backends architecture:
MetaOCaml is needed only for the OCaml backend and benchmarks;
the Core and the C generation backend are pure OCaml.
More backends can be easily added.
-- The complete fusion is now achieved in all cases
-- Supports both user-friendly and familiar declarative combinators,
and low-level core of stafeful streams (which can be used together)
-- Core streams support streams over tuples, records and even
abstract data types
-- Fusion is now performed as normalization-by-evaluation
The paper
https://strymonas.github.io/docs/ocaml-22.pdf
and the OCAML 2022 talk (soon to be available on YouTube's SIGPLAN channel,
among all other talks of the ICFP 2022 event) give more details. The
github repo contains the complete code of the library, examples and
all benchmarks.
reply other threads:[~2022-09-19 5:50 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=YygCXUnECtyuEOkj@Magus.localnet \
--to=oleg@okmij.org \
--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