From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 BE23DE0157 for ; Mon, 19 Sep 2022 07:50:55 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=oleg@okmij.org; spf=Pass smtp.mailfrom=oleg@okmij.org; spf=Pass smtp.helo=postmaster@mail1.g3.pair.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of oleg@okmij.org) identity=pra; client-ip=66.39.3.114; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="oleg@okmij.org"; x-sender="oleg@okmij.org"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of oleg@okmij.org designates 66.39.3.114 as permitted sender) identity=mailfrom; client-ip=66.39.3.114; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="oleg@okmij.org"; x-sender="oleg@okmij.org"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 a:okmij.pairserver.com a:okmij.mail.pairserver.com include:relay.pair.com include:webmail.pair.com -all" Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of postmaster@mail1.g3.pair.com designates 66.39.3.114 as permitted sender) identity=helo; client-ip=66.39.3.114; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="oleg@okmij.org"; x-sender="postmaster@mail1.g3.pair.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 a -all" IronPort-SDR: 6328033f_KJGDnUa5zjqmJmMh3hnLdDDIyHwNIYKD9yi9dhzvWmyUMqv 7nctSIUzG0PrsEqEXPGdPwfgL7Ui+oQsAbeSwoA== X-IPAS-Result: =?us-ascii?q?A0C0AgAWAihjkHIDJ0JagQmDSyiBAVYuBwhFjUyIFp44A?= =?us-ascii?q?1QLAQMBDTcJAgQBAYFTiB4CHgYBBDQTAQIEAQEBAQMCAwEBAQEBAQMBAQUBA?= =?us-ascii?q?QECAQECBAQBEwEBAQEBARYJHh4FIoVoDYI1DIQGPGxEOYJMWAGDIAIBEKsug?= =?us-ascii?q?TOBAYNmQYVVBoE9kEsPDYFIRYEVg2iCYgIBgiyFbwSJcI8OOANFHUEDC3YYA?= =?us-ascii?q?xQDBSQHAxkPIw0NBB0MAwMFJQMCAhsHAgIDAgYTBQICTTgIBAgEKyQPBQIHL?= =?us-ascii?q?wUELwIeBAUGEQgCFgIGBAQEBBUCEAgCCCYXBxMzGQEFWRAJIRwoDQUGEwMgb?= =?us-ascii?q?wVFDygyaxAbHRsKgQwqKBUDBAQDAgYTAwMiAhAqMRQEKRMSLQcrcwkCAyJsA?= =?us-ascii?q?wMEKiwDCUAHKCY8B1g6BQMDECI9BgMJAwIkW4EwKAUDDRkmCAU5HQQIPAIFB?= =?us-ascii?q?phYgihLWYEYBVBQCwKSO5BhniI7g2CBU4F1h2+UfDKHCqF5AZFYhTKNOZosg?= =?us-ascii?q?XgjgVtNMAiDIk4DGQ+OOYY9iAkyNAI5AgYLAQEDCYVGhTcBAQ?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:qfNzaaEYarA7AlMKpLqE7MeALOsnbusQ8zAXPmRKOHlom62j5q KTdZsguCMc5Ax8ZJhCo6HiBIClSXPYsbFy5IwWI6u6GDTh0VHJEGgB1+rfKlTbckWUnNK1vp 0PT0ERMrLN5TQWt7ef3DWF X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,325,1654552800"; d="scan'208";a="24030237" X-MGA-submission: =?us-ascii?q?MDGsOhTkJOrmP7wAbzopLepAEq3b7eZRWH8opj?= =?us-ascii?q?yAquV0knX2L/yooqmTFfe1vxzoUJZD/rNTr7Gqq2oru+gFKi1KdyKLYJ?= =?us-ascii?q?2M/7lgO76W+lGPATP1PLiu+MwyR/CVSXCoTD2vZ4LjcQpUJe4R/mYbFA?= =?us-ascii?q?bmsZJkCX5DBkarpyQbzlOMeg=3D=3D?= Received: from mail1.g3.pair.com ([66.39.3.114]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Sep 2022 07:50:55 +0200 Received: from mail1.g3.pair.com (localhost [127.0.0.1]) by mail1.g3.pair.com (Postfix) with ESMTP id 69D3A3FB925; Mon, 19 Sep 2022 01:50:51 -0400 (EDT) Received: from Magus.localnet (om126255137187.24.openmobile.ne.jp [126.255.137.187]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail1.g3.pair.com (Postfix) with ESMTPSA id 7CFE7582CD6; Mon, 19 Sep 2022 01:50:50 -0400 (EDT) Date: Mon, 19 Sep 2022 14:47:09 +0900 From: Oleg To: caml-list@inria.fr Message-ID: Mail-Followup-To: Oleg , caml-list@inria.fr MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Scanned-By: mailmunge 3.09 on 66.39.3.114 Subject: [Caml-list] [ANN] strymonas v2: library for highest-performance stream processing 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.