From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id 6E97B5D4 for ; Tue, 21 Jul 2020 14:43:21 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.75,379,1589234400"; d="scan'208,217";a="460694035" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 21 Jul 2020 16:43:14 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 9DEA1E004D; Tue, 21 Jul 2020 16:43:14 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 3F574E004D for ; Tue, 21 Jul 2020 16:43:10 +0200 (CEST) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=Pass smtp.pra=alan.schmitt@polytechnique.org; spf=Pass smtp.mailfrom=SRS0=VY8U=BA=polytechnique.org=alan.schmitt@bounces.m4x.org; spf=Pass smtp.helo=postmaster@mx1.polytechnique.org IronPort-PHdr: =?us-ascii?q?9a23=3AgeVGqRT7sZp9HRtGeImTV91t9tpsv+yvbD5Q0YIu?= =?us-ascii?q?jvd0So/mwa67ZheGt8tkgFKBZ4jH8fUM07OQ7/m+HzBeqsvd+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6?= =?us-ascii?q?KfroEYDOkcu3y/qy+5rOaAlUmTaxe7x/IAi3oAnLucQbgIRuJ6Y+xxDUvnZGZu?= =?us-ascii?q?NayH9yK1mOhRj8/MCw/JBi8yRUpf0s8tNLXLv5caolU7FWFSwqPG8p6sLlsxnD?= =?us-ascii?q?VhaP6WAHUmoKiBpIAhPK4w/8U5zsryb1rOt92C2dPc3rUbA5XCmp4ql3RBP0ji?= =?us-ascii?q?oMKjk2/nzKisxrlKJUvg6upwBxzY7TZYGaLvt+fqXAdt8eSmdMWsNdWipBDo2/?= =?us-ascii?q?aYsPEesBPf1Zr4bmo1sBswa1BAerBOP11zBInWL90ak03ug9FA3L2hErEdATv3?= =?us-ascii?q?TOtNj7NLkcX/27wqfLwjrMc+hb1i3h5IXSaB0tve2AULB2fMHMyUcvDQTFjlCI?= =?us-ascii?q?pIH5OzOazOINuHWG4eV8VeKvjm8nqx1tojOywcojkI3JiZgTylze7iV23IY1Jd?= =?us-ascii?q?i5SE5nfd6pC4NQtyaeN4p2XsMtXX1nuCY8yr0HoJ67YTYFxI4gxx7FZPyKao6F?= =?us-ascii?q?6Q/sW+iNOzl3nm5leK6hiBao90it0u3xWMe03lpUriRInNnCuH8M2hHR7sWKV/?= =?us-ascii?q?tz80av1zuNyw3f9vxJL04omafFNZIs3KI9moYdv0rDHyL7hEv4gqGQe0459Oao?= =?us-ascii?q?7OHnba/npp+aL4J0kh/xMrgvmsyjH+s4Kg8OX22e+euizrHj+1P2QKlSgv0xjq?= =?us-ascii?q?bWqpXaJcABqq6+GQ9V3Z4v6xm+Dze60NQYgGIIIEhZdxKAiojlI17OIPHkDfe/?= =?us-ascii?q?nlSjiy1nx/HBPrH5A5XNKGLDkLb7crpn5U5c0hI/zdFC6JNUDrEBJOj/WkjrtN?= =?us-ascii?q?zXCBIyLg+6w/7/BdlgyI8TXXiDDrKFPK7dq1OF6P4jL/OCaYIaoDrwKPko6+Tw?= =?us-ascii?q?gXI2llIRZ7Sl0JgJZHyiA/hqPliVbHzxidkbC2gKpBAxTOnyhV2CTzFTY3GyUr?= =?us-ascii?q?o55jA0FY6qF5/DRoepgL2BwCe0AIFZZmBAClCNCHfoapuLV+0LaCKILc9tij0E?= =?us-ascii?q?Vb6/RI89zRyiqRH2xr59IubJ5iEVuojv2dZp6+HJmxw/+iR4D8GH3GGMS2F0kH?= =?us-ascii?q?kIRzgz3K1nvEJz1kqN3bRgjvNXF9Ne5P1GXx8nOJPA1+F6E9fyWgbBf9eVVlmp?= =?us-ascii?q?XtWmATcwTtIo3t8BfVxxG9K4jhDMxyelGbsVmKaNBJAu6aLTw3jxJ8N8y3bayK?= =?us-ascii?q?kslEIpQsxSNW2gmqFw6RPTC5TMk0iWmKemb6Mc3DTC9Gub12qBoFlYUBJsUaXC?= =?us-ascii?q?RX0QelHZrdH95k/bS7+uCK8nMhdaxM6ZKqpKb8Xpgk9cSPfiPtTeeWOxlH2qCR?= =?us-ascii?q?aG3LPfJLbtLi8ZwyOXQBwAjAY7+WmAcw4zGnHl6yjVEzokXRq7aFzq2e1/s2+g?= =?us-ascii?q?CE443gWOKUp72OzxshUcgPjZT/IIwpoFvj0gonN6BhL11NXTE/KEphF9Z+Nbe9?= =?us-ascii?q?k8/F5D22XJ8QFgbbK6KKU3r1oXdUxMtEPr1glrQtFJlcEs6mghzA9zNb6wyFRF?= =?us-ascii?q?Zi+V1pD2O6TKJy/15h/5OP2e4U3XzNvDovRH0/8/sVi241DwRxgStk5/2twQ6E?= =?us-ascii?q?Oyo5DDDQ4cS5X0Cxll/R9nobrXeW84u5OS0mdjY/Dt723ynukxDe5g8S6OOtdS?= =?us-ascii?q?NKTeT133A5RcH8+qOfAnkFivbwsZMaZV7qFmZpr6JcvD47aiOaNbpBzjlX5Oud?= =?us-ascii?q?EvykWI5jZxQe7O3o8YzrefxATVDjo=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DaBACK/hZffSIeaIFgHQEBAQEJARIBB?= =?us-ascii?q?QUBggoCgSGBGAFdVTIshDOJAYsjhTuNVIUUA2ABAwEMGAEMBwECBAEBhAiCTwI?= =?us-ascii?q?dBgEFMxMCEAEBBQEBAQIBAwMEARMBAQsUCIYMDEMBAQQLAYFiDAwDA4MkASEKZ?= =?us-ascii?q?SMDFAcDAhEBFwEUChcBEhqDDYJ8BAEKkFabeoEyhDsBAwIOAw8vg3mBQA0CE4E?= =?us-ascii?q?WAYU4R4Jug14mD4FMP4ERgmJsgkUMCwEBAQEBAYETIAYBAYM2gmAEj0Uka5F1g?= =?us-ascii?q?iKPWFwoB4JggQgEC4ZDfIpWhliEGZsvIZFgh1MHcoFbhXeKOwWESYFAKoFJHgw?= =?us-ascii?q?HMxowgngBAQExCWANkg+BPoEmgXU7hUEDPzMCAQEzAgYBBwEBAwl1AQEFEwsBX?= =?us-ascii?q?oJ+iHcQF4IeAQE?= X-IPAS-Result: =?us-ascii?q?A0DaBACK/hZffSIeaIFgHQEBAQEJARIBBQUBggoCgSGBGAF?= =?us-ascii?q?dVTIshDOJAYsjhTuNVIUUA2ABAwEMGAEMBwECBAEBhAiCTwIdBgEFMxMCEAEBB?= =?us-ascii?q?QEBAQIBAwMEARMBAQsUCIYMDEMBAQQLAYFiDAwDA4MkASEKZSMDFAcDAhEBFwE?= =?us-ascii?q?UChcBEhqDDYJ8BAEKkFabeoEyhDsBAwIOAw8vg3mBQA0CE4EWAYU4R4Jug14mD?= =?us-ascii?q?4FMP4ERgmJsgkUMCwEBAQEBAYETIAYBAYM2gmAEj0Uka5F1giKPWFwoB4JggQg?= =?us-ascii?q?EC4ZDfIpWhliEGZsvIZFgh1MHcoFbhXeKOwWESYFAKoFJHgwHMxowgngBAQExC?= =?us-ascii?q?WANkg+BPoEmgXU7hUEDPzMCAQEzAgYBBwEBAwl1AQEFEwsBXoJ+iHcQF4IeAQE?= X-IronPort-AV: E=Sophos;i="5.75,379,1589234400"; d="scan'208,217";a="460693886" X-MGA-submission: =?us-ascii?q?MDHMzo+Gt1M/0smT6i4/49mjNJVrxmwHmpncpA?= =?us-ascii?q?tnnM0H5HeA+XlqK+5zVLAO1fBLp2fLSi2C0Y7kZdoYuXTXHsDI+oKbK/?= =?us-ascii?q?iHUw0rXdDFAqI1StKJpAgcGF2Kizj+TNyONQhhqnGgoG5SqfXqM6NRlr?= =?us-ascii?q?eTRwwRFa7INh9PvhmyJafeyw=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Jul 2020 16:42:21 +0200 Received: from set (lfbn-orl-1-1118-111.w86-244.abo.wanadoo.fr [86.244.182.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id 44CF5561218; Tue, 21 Jul 2020 16:42:17 +0200 (CEST) From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr, comp@lists.orbitalfox.eu Date: Tue, 21 Jul 2020 16:42:16 +0200 Message-ID: <871rl5aq0n.fsf@m4x.org> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Jul 21 16:42:20 2020 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.000002, queueID=6694956122A X-Org-Mail: alan.schmitt.1995@polytechnique.org Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 18203 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Here is the latest OCaml Weekly News, for the week of July 14 to 21, 2020. Table of Contents =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80 Dune-release: version 1.4.0 released Using AF_XDP sockets for high-performance packet processing in OCaml Ubase 0.03 clangml 4.2.0: OCaml bindings for Clang API (for C and C++ parsing) Old CWN Dune-release: version 1.4.0 released =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90 Archive: [https://discuss.ocaml.org/t/dune-release-version-1-4-0-released/6103/1] Sonja Heinze announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 This post is about [dune-release], a tool that helps users release their packages to Opam in a fast and organized manner. You can install it via `opam install dune-release'. On behalf of the dune-release team at Tarides, I'm happy to announce the new dune-release [1.4.0 release]. The release includes two new subcommands described below and a variety of bug fixes and user experience improvements. In particular, we've put some work into improving the error handling and reporting. One of the new subcommands is `dune-release config' , which inspects and edits dune-release's global configuration, such as git related, opam related and github related data. For example, if you insert a typo when being asked for your github id during your first release with dune-release, you can correct it comfortably with that new subcommand. The other new subcommand is `dune-release delegate-info', which helps users with an alternative release workflow to integrate dune-release into it: imagine you want to use dune-release only for a couple of things, such as tagging the distribution and creating the distribution tarball and the documentation. In that case, now you can integrate the work done by dune-release into your individual release workflow by accessing the path to the created tarball etc via `dune-release delegate-info'. It forms part of the broader change in progress described in the following post: [https://discuss.ocaml.org/t/replacing-dune-release-delegates/4767] [dune-release] https://github.com/ocamllabs/dune-release/#readme [1.4.0 release] https://github.com/ocamllabs/dune-release/releases/tag/1.4.0 Using AF_XDP sockets for high-performance packet processing in OCaml =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90 Archive: [https://discuss.ocaml.org/t/using-af-xdp-sockets-for-high-performance-pa= cket-processing-in-ocaml/6106/1] suttonshire announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 I just wanted to share a fun result from a project I've been hacking on. [ocaml-xsk] is a binding to AF_XDP interface of libbpf. AF_XDP is an address family in Linux for high-performance packet processing. With an AF_XDP socket a packet bypasses most of the kernel networking stack and is passed directly to userspace program. Depending on the configuration packets can be passed from the NIC without any data copies on either Rx or Tx. If you're interested in this kind of stuff here are a couple very useful resources: =E2=80=A2 [https://github.com/torvalds/linux/blob/master/Documentation/ne= tworking/af_xdp.rst] =E2=80=A2 [https://github.com/xdp-project/xdp-tutorial/tree/master/advanc= ed03-AF_XDP] The cool part is that without installing large dependencies like DPDK you can get packets into your program basically as fast as your NIC can provide them! It turns out this is true even if your program is written in OCaml. Using ocaml-xsk I could receive or transmit 64 byte UDP packets at 14.8M packets per second. This is the limit for a 10Gb/s NIC. I'm still trying to figure out the best interface for AF_XDP. There are several resources to manage, and simple receive and transmit operations actually require a few steps. But it's encouraging know OCaml doesn't get in the way of packet throughput. [ocaml-xsk] https://github.com/suttonshire/ocaml-xsk Ubase 0.03 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90 Archive: [https://discuss.ocaml.org/t/ann-ubase-0-03/6115/1] sanette announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80 I'm happy to announce the release of [ubase], a tiny library whose only purpose is to remove diacritics (accents, etc.) from utf8-encoded strings using the latin alphabet. It was created after the discussion: [https://discuss.ocaml.org/t/simplify-roman-utf8/4398]. It's now available from `opam': `opam install ubase' This also installs an executable that you may use in a shell, for instance: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 $ ubase "et gr=C3=B8nt tr=C3=A6" =E2=94=82 et gront trae =E2=94=82=20 =E2=94=82 $ ubase Anh xin l=E1=BB=97i c=C3=A1c em b=C3=A9 v=C3=AC =C4=91= =C3=A3 =C4=91=E1=BB=81 t=E1=BA=B7ng cu=E1=BB=91n s=C3=A1ch n=C3=A0y cho m= =E1=BB=99t =C3=B4ng ng=C6=B0=E1=BB=9Di l=E1=BB=9Bn. =E2=94=82 Anh xin loi cac em be vi da de tang cuon sach nay cho mot ong n= guoi lon. =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 More info [here]. [ubase] https://github.com/sanette/ubase [here] https://sanette.github.io/ubase/ clangml 4.2.0: OCaml bindings for Clang API (for C and C++ parsing) =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90 Archive: [https://discuss.ocaml.org/t/ann-clangml-4-2-0-ocaml-bindings-for-clang-a= pi-for-c-and-c-parsing/6123/1] Thierry Martinez announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80 We are happy to announce the new clangml 4.2.0 release. Clangml provides bindings for all versions of Clang, from 3.4 to the not yet released 10.0.1. The library can be installed via opam: `opam install clangml' The documentation is online: [https://memcad.gitlabpages.inria.fr/clangml/] This new release improves C++ support, including C++20 specific constructs. All Clang C/C++ attributes should now be supported. You may have a look to the interface of the new auto-generated module [`Attributes']. There is now a lazy version of the AST (`Clang.Lazy.Ast'): this is useful to explore large ASTs efficiently (note that Clang parsing itself can still be slow; the lazy part only concerns the conversion into the `Clang.Lazy.Ast' datatypes). [`Attributes'] https://memcad.gitlabpages.inria.fr/clangml/doc/clangml/Clang__/Attributes/ Old CWN =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 If you happen to miss a CWN, you can [send me a message] and I'll mail it to you, or go take a look at [the archive] or the [RSS feed of the archives]. If you also wish to receive it every week by mail, you may subscribe [online]. [Alan Schmitt] [send me a message] mailto:alan.schmitt@polytechnique.org [the archive] http://alan.petitepomme.net/cwn/ [RSS feed of the archives] http://alan.petitepomme.net/cwn/cwn.rss [online] http://lists.idyll.org/listinfo/caml-news-weekly/ [Alan Schmitt] http://alan.petitepomme.net/ --=-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of July 14 to 21, 2020.

Dune-release: version 1.4.0 released<= /h2>

Sonja Heinze announced

This post is about dune-release, a tool that helps users release their packages to Opam in a fast and organized manner. You ca= n install it via opam install dune-release.

On behalf of the dune-release team at Tarides, I'm happy to announce the ne= w dune-release 1.4.0 release. The release includes two new subcommands described below and a variety of bug fixes and user experience = improvements. In particular, we've put some work into improving the error handling and reporting.

One of the new subcommands is dune-release config , which insp= ects and edits dune-release's global configuration, such as git related, opam related and github related data. F= or example, if you insert a typo when being asked for your github id during your first release with dun= e-release, you can correct it comfortably with that new subcommand.

The other new subcommand is dune-release delegate-info, which = helps users with an alternative release workflow to integrate dune-release into it: imagine you want to use dune-re= lease only for a couple of things, such as tagging the distribution and creating the distribution tarb= all and the documentation. In that case, now you can integrate the work done by dune-release into your= individual release workflow by accessing the path to the created tarball etc via dune-release del= egate-info. It forms part of the broader change in progress described in the following post: https://discuss.ocaml.org/t/replacing-dune-release-delegates/4767<= /a>

Using AF_XDP sockets for high-perform= ance packet processing in OCaml

suttonshire announced

I just wanted to share a fun result from a project I've been hacking on. ocaml-xsk is a bi= nding to AF_XDP interface of libbpf.

AF_XDP is an address family in Linux for high-performance packet processing= . With an AF_XDP socket a packet bypasses most of the kernel networking stack and is passed directly = to userspace program. Depending on the configuration packets can be passed from the NIC without a= ny data copies on either Rx or Tx. If you're interested in this kind of stuff here are a couple very us= eful resources:

The cool part is that without installing large dependencies like DPDK you c= an get packets into your program basically as fast as your NIC can provide them! It turns out this i= s true even if your program is written in OCaml. Using ocaml-xsk I could receive or transmit 64 byte UD= P packets at 14.8M packets per second. This is the limit for a 10Gb/s NIC.

I'm still trying to figure out the best interface for AF_XDP. There are sev= eral resources to manage, and simple receive and transmit operations actually require a few steps. Bu= t it's encouraging know OCaml doesn't get in the way of packet throughput.

Ubase 0.03

sanette announced

I'm happy to announce the release of ubase, a tiny library whose only purpose is to remove diacritics (accents, etc.) from utf8-encoded stri= ngs using the latin alphabet.

It was created after the discussion: https://discuss.ocaml.org/t/simplify-roman-utf8/= 4398.

It's now available from opam:

opam install ubase

This also installs an executable that you may use in a shell, for instance:

$ ubase "et gr=C3=B8nt tr=C3=A6"
et gront trae

$ ubase Anh xin l=E1=BB=97i c=C3=A1c em b=C3=A9 v=C3=AC =C4=91=C3=A3 =C4=91=
=E1=BB=81 t=E1=BA=B7ng cu=E1=BB=91n s=C3=A1ch n=C3=A0y cho m=E1=BB=99t =C3=
=B4ng ng=C6=B0=E1=BB=9Di l=E1=BB=9Bn.
Anh xin loi cac em be vi da de tang cuon sach nay cho mot ong nguoi lon.

More info here.

clangml 4.2.0: OCaml bindings for Cla= ng API (for C and C++ parsing)

Thierry Martinez announced

We are happy to announce the new clangml 4.2.0 release. Clangml provides b= indings for all versions of Clang, from 3.4 to the not yet released 10.0.1.

The library can be installed via opam: opam install clangml The documentation is online: https://memcad.gitlabpages.inria.fr/clangml/

This new release improves C++ support, including C++20 specific constructs.

All Clang C/C++ attributes should now be supported. You may have a look to= the interface of the new auto-generated module Attributes.

There is now a lazy version of the AST (Clang.Lazy.Ast): this = is useful to explore large ASTs efficiently (note that Clang parsing itself can still be slow; the lazy par= t only concerns the conversion into the Clang.Lazy.Ast datatypes).

Old CWN

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a loo= k at the archive or the RSS feed of the archives<= /a>.

If you also wish to receive it every week by mail, you may subscribe online.

--=-=-=--