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 58D1E5D5 for ; Tue, 3 May 2022 09:11:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=from:to:date:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=9+cUwN8t0YFjTi7XQY2DF0RHnLBfJIYNkMeAP2k7TGw=; b=mLhGW+EFddZt88cou0qoBXoJXqptdcyta4JUsbs2B+f8wQ3D/mUPU7CK CbIIOyaqzjqcpgK0jE+ObD+q0qVpLTgrv8Ov2CAxQ1HLWMVnIbr1MEDnq kMGoK2elA7hola3gFzAOA/EQnE3ItJQ17wpha9w0ZrCxOx88Zw+1X8Vze I=; Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:192.134.164.0/24 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="5.91,194,1647298800"; d="scan'208,217";a="34430110" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 03 May 2022 11:11:51 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 1602CE00F5; Tue, 3 May 2022 11:11:51 +0200 (CEST) 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 6DD6EE00BE for ; Tue, 3 May 2022 11:11:49 +0200 (CEST) IronPort-SDR: W8t75lzypJASEDskNLYkMykEDn2J4Np5mSDA+qiod7G7X48dKft6js77i/Ct5VcFBfEnvpYTOP KH6Ep9IPJYXhMGl6W/iDK7DsVVR2u9iUHVjIh2fA8ld/W2EOYP0cYcPs+NIdhfO4uZxOnM0vBg rjqBB0ChW8eAP9oLUPv88T2H764e/UNJwQvEwlsXwuiz6w2gGnJpzzSU/KTZpizwXoLgJcHIqq jIF+OLFFK6h8fUOjjr2xm8X1pyK0WQttmRRTsbI/qzteBWq5+mnL2O+2Z+ei55duOhY2K+yz5P aZ8= X-IPAS-Result: =?us-ascii?q?A0DvAABu8XBimCIeaIFZAYN5gQMZAWRVLQcIQwOES1yBB?= =?us-ascii?q?4cdiAuJTY8bhBEPgQIDTxABAwENLAEOBAECBAEBgg6BPoE2AhwzCYReAh4GA?= =?us-ascii?q?QUzEwECBAEBAQEDAgMBAQEBAQEDAQEFAQEBAgEBAgQEARMBAQEBAQEBAQkLC?= =?us-ascii?q?QcGDBUOBRcLhS85DYI1DAwDA4N3ARYCAwYEBj4CJSMDDQIFAQYDAhEBFwEeA?= =?us-ascii?q?wETARIUBQGCYwGDFwUKkgaaSBqBL38ygQGDTwEDAwINAw8vg3OBZSSBGIYYW?= =?us-ascii?q?EoBgweEGQInEIFVRIM+UW6BUEA1BxcBAQEBAYEoARECARoPLSkBgnaCZQSUQ?= =?us-ascii?q?SUOOgYsMwEDFw4FFAgOAQFYOAEHAxkwBEoLCwItA4RAjT8SDAMGIwGPFokkl?= =?us-ascii?q?EBjNAeDToE7BgyIK4EgjHuIIoN1gU+Ka4ZfkUchlkAgiSIIA4EGCYIBRZRCC?= =?us-ascii?q?IU0gU4qgQ4/HA4HMxowQ4I1AQEVHQlWCw9Wh3SFLgEFhBSCZIE8OTuFSQM/N?= =?us-ascii?q?AIBAQE2AgYBCgEBAwmFYwEBBRMLAYU1WgEB?= IronPort-PHdr: A9a23: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 BYP4A9M4gMZi4I2efrqstOgcQ== IronPort-Data: A9a23:xvYdlKM/xn9aw5XvrR3VkMFynXyQoLVcMsEvi/4bfWQNrUoq3zMGn 2ZJW2mCaPaDZmfxKdt2Pdy+9k5QsJOHm4U3THM5pCpnJ55ogZqcVI7Bdi8cHAvLc5adFBo/h yk6QoOdRCzhZiaE/n9BCpC48T8kk/vgqoPUUIYoAAgoLeNfYHpn2EsLd9IR2NYy24DkW1jV4 LsenuWGULOb824sWo4rw/nbwP9flKyaVOQw4zTSzdgS1LPvvyF94KA3fcldHFOkKmVgJdNWc s6YpF2PEsw1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXe345jXMfwZ3u7hB2Pn/wgl M1ziqCXdhkDEaDXo/oicEFxRnQW0a1uoNcrIFC6oZXV10rCYmfhyPVoDVgrMMsf4Okf7WNmr KZJbmlVMlbY36TtnNpXScE07ignBPLRB9tKgGlw32TnKaM+RpTSX6jB5dlZxSo9wMdUEqPXY 8MfLyFkbBHBfwFnMFAKDpkzh6Gt2mm5dCdXwL6QjfNsuzSOlFMruFTrGIrKdeyRVZt5pUiRn 22ZxnvLPS8jONPKnFJp9Vr12r6ewnOkMG4IL5Wz//tuxVmS3XA7EwwTTVL9oP+ji0f4Vcg3F qAP0i8+9O4q80i6UtT2Xxu5uWOJ+BkGVLK8DtHW9imLyoaFvx6nOVQjcSBrR9E9j9EJZmQDg wrhc8zSORRjt7icSHS4/7iSrC+vNSV9EYPkTXNVJefiy4W+yLzfni4jXf4/QPDo04yd9SXYm WzQ9HBWa6A71JZj6kmtwbzQqxyWznQjZjQ0/UDwRGuj4QJiDGJOT93xsAODhRqsBC1/SlTEs HVBtdKX6usDZaxheQSIULxLBLat9uqIOz3agEdyEt8m7TvFF5+fkWJ4vWEWyKRBa5hsldrVj Kn75Vs5CHh7ZyHCUEOPS9jtY/nGNIC5fTgfatjab8BVfr96fxKd8SdlaCa4hj6wyRV2z/tgY M3HK65A6Er274w5kVJaoM9DitcWKtwWnjiPLXwG50n/jOLAPiL9pUktaQfRP7BRAFy4TPX9q ooOZpTalH2zocXkby/e7YMJRW3m3lBlba0aX/d/L7fbSiI/QTFJI6KPndsJJtI094wIxrag1 izsASdwlQug7VWZcl/iQi44N9vSsWNX8ChT0doEZwj4ghDOoO+Hsc8iSnfAVeR5pLE7ka4oH pHouayoW5xyd9gOwBxFBbGVkWCoXE327e4jF3r9PlDTo7YIq831Ft7Yks/H8TlXSDKwsdoir rag0ALCXJdFQB5tZCoTQOz61Eu/5BDxh8orN3Yk4PEKEKkvzGSuAyb2k/k8LtpKLEnTgDyA2 G56xD8DveeX5dddHMbh3Mi5QkTALwe6NlJdG3jH4L22MyjD42flxpVPOApNVSvFWjmyoM1Oe s0Mp8zB3DY7cJqmfmay/3uHDU7z2jc3m4Jn8w== IronPort-HdrOrdr: A9a23:DGND7q2UWdaS5BfCx3W+FgqjBLUkLtp133Aq2lEZdPU1SKylfq +V88jzuSWftN9zYhAdcLK7VpVoKEm0nfVICOIqUYtKMjOKhEKYaKlcqaHizzfjFyCWzJ8/6Y 5QN45kBpnVBVh+5PyKhTVQ/uxQouW6zA== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.91,194,1647298800"; d="scan'208,217";a="13045072" X-MGA-submission: =?us-ascii?q?MDGdbHu4g1F/5ULY6LSX/sp0VbrfHlMnKWYgAd?= =?us-ascii?q?grZ4gLdPcp0pIF65p1NhW4t1j7e0rCfn+VxeJ8aAHsrjIamh0eUAoWSm?= =?us-ascii?q?QhpeCan6RDyUZ1lI+N3KOEqy73MyvsQBxVJI7ztiLowbHtcwcWCcJGUD?= =?us-ascii?q?nXM/Ku6DhA6t8RCDPJ+5SM6g=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 May 2022 11:11:31 +0200 Received: from set (set.irisa.fr [131.254.10.170]) (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 46AA65605EA; Tue, 3 May 2022 11:11:29 +0200 (CEST) From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr Date: Tue, 03 May 2022 11:11:28 +0200 Message-ID: <875ymnugjj.fsf@m4x.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue May 3 11:11:29 2022 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.042073, queueID=8A1DD5605EC 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: 18754 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: multipart/alternative; boundary="==-=-=" --==-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Here is the latest OCaml Weekly News, for the week of April 26 to May 03, 2022. 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 ATD now supports TypeScript pp_loc 2.0 Windows-friendly OCaml 4.12 distribution - Diskuv OCaml 0.1.0 V3.ocaml.org: we are live! Remaking an Old Game in OCaml Old CWN ATD now supports TypeScript =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: Martin Jambon 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 [ATD] is a language for specifying typed interfaces for communicating across programming languages. It turns concrete type definitions ("schema") into code for each language. This code can read and write JSON safely, relieving the user of worrying about the structure of the JSON data. Starting from version 2.5.0, ATD provides `atdts', a single executable that turns a file `foo.atd' into `foo.ts'. See the [tutorial] for an introduction. The programming languages targeted by ATD are now: =E2=80=A2 Java =E2=80=A2 OCaml =E2=80=A2 Python + mypy =E2=80=A2 ReScript (BuckleScript) =E2=80=A2 Scala =E2=80=A2 TypeScript For an expert overview of the features that are currently supported, check out the test data: =E2=80=A2 [ATD input] =E2=80=A2 [TypeScript output] See also the [announcement for atdpy] that we made a month ago. [ATD] [tutorial] [ATD input] [TypeScript output] [announcement for atdpy] pp_loc 2.0 =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: Armael 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 Do you know how OCaml now displays errors by quoting back part of the source, highlighting the faulty part? For instance, with a single-line error location: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 File "foo.ml", line 1, characters 12-14: =E2=94=82 1 | let foo x =3D yy + 1;; =E2=94=82 ^^ =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 or a multi-line location: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 File "bar.ml", lines 3-5, characters 10-10: =E2=94=82 3 | ..........function =E2=94=82 4 | | A -> 0 =E2=94=82 5 | | B -> 1 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Do you have your own language/configuration file/=E2=80=A6 parser or typechecker, that could benefit from nice, user-friendly error messages? The [pp_loc] library provides an easy-to-use implementation of the same source-quoting mechanism that is used in the OCaml compiler. It provides a single function `pp' which will display the relevant part of the input given the location(s) of the error. =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 val pp : =E2=94=82 ?max_lines:int -> =E2=94=82 input:Input.t -> =E2=94=82 Format.formatter -> =E2=94=82 loc list -> =E2=94=82 unit =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 (As one can see from the signature, `pp' also supports displaying several locations at once on the same source snippet, for multi-location errors.) The full [documentation is available online], and the library is available on opam (`opam install pp_loc'). This new version, thanks to the contribution of @c-cube, makes the `loc' type more flexible. It should now be easy to create source locations that can be passed to `pp', however you represent them in your parser (be it as (line,column) pairs, offsets, or any combination of those=E2=80=A6). For more details, see the [Pp_loc.Position] module. I am completely open to more PRs or ideas for improving the library further, and displaying source locations in even nicer ways! Happy error-message printing! [pp_loc] [documentation is available online] [Pp_loc.Position] Windows-friendly OCaml 4.12 distribution - Diskuv OCaml 0.1.0 =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: jbeckford 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 A single `setup-*.exe' executable is now all that is necessary to install the Diskuv OCaml distribution on 64-bit Windows! Today you can use a prerelease of v0.4.0 which is available at The prerelease: =E2=80=A2 is for *experienced Windows users only* because the prerelease = is not signed! You will have to fight with your browser, operating system and anti-virus software to run the setup executable =E2=80=A2 is *not reproducible*. Because many Diskuv packages have not yet made it into Opam, the builds need several `opam pin' of unstable branches. =E2=80=A2 has not been incorporated into the documentation site. But the [Beyond Basics] documentation should still be accurate. Once those items above are addressed, a real (non-prerelease) 0.4.0 will be announced. Existing Diskuv OCaml users: Your existing Opam switches should be unaffected by the upgrade. But please make sure you can recreate your Opam switches (ie. use a `.opam' file) if something goes wrong. Release notes, including details of the migration to the Apache 2.0 license, are at available at [https://github.com/diskuv/dkml-installer-ocaml/releases/tag/v0.4.0-prere= l11] [Beyond Basics] [https://github.com/diskuv/dkml-installer-ocaml/releases/tag/v0.4.0-prerel1= 1] V3.ocaml.org: we are live! =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: Thibaut Mattio 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 I am thrilled to announce that now serves version 3 of the site! Here's an overview of the major features in this new version: =E2=80=A2 [Central OCaml package documentation], which contains the documentation of every version of every OCaml packages. =E2=80=A2 [OCaml job board], which lists job opportunities from the commu= nity. =E2=80=A2 [A syndicated blog], which links to blog articles from the comm= unity and offers original blog posts. =E2=80=A2 [OCaml success stories] which explore how major OCaml industrial users solved real-world challenges using OCaml. =E2=80=A2 [Resources for learning OCaml], which aggregates resources and tutorials to learn OCaml. =E2=80=A2 [An interactive OCaml playground] to try OCaml code directly in= the browser. Version 2 remains accessible at , and older URLs to ocaml.org will be redirected to the v2 URL from now on. Similarly, v3.ocaml.org URLs will continue to work. Community feedback was instrumental and has been driving the direction of the project since day one. For instance, having a centralized package documentation site; or facilitating the hiring of OCaml developers and finding OCaml jobs were major concerns that were highlighted in the last [OCaml Survey]. They were what prompted us to work on the documentation site and the job board respectively. We've also listened to the community feedback we received along the way, and in particular, here's an overview of everything we've been doing to address the feedback we received after our last Discuss post: . Given how critical your input is to drive the project, I am deeply grateful to every one who took the time to share insights, suggestions and bug reports. Some of the suggestions will need more work and couldn't happen before launch, but we've listened to every one and will keep working on improving OCaml.org to address pain points of the community. Thank you, and keep the feedback coming! We're also starting to see a lot of contributions from external contributors. OCaml.org is open source, and contributions from anyone are extremely welcome! Never hesitate to open a PR if you see something you'd like to improve! You can read our [Contributing Guide] to learn how to contribute. [Central OCaml package documentation] [OCaml job board] [A syndicated blog] [OCaml success stories] [Resources for learning OCaml] [An interactive OCaml playground] [OCaml Survey] [Contributing Guide] Ecosystem Contributions =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95= =8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C As the storefront of the OCaml ecosystem, we couldn't develop the next version of OCaml.org without contributing back! As a result, we've published several packages on opam that we're using for OCaml.org: =E2=80=A2 [dream-accept]: Accept headers parsing for Dream =E2=80=A2 [dream-encoding]: Encoding primitives for Dream. =E2=80=A2 [hilite]: Generate HTML ready for syntax-highlighting with CSS = by parsing markdown documents. Other packages that are yet to be released are: =E2=80=A2 [code-mirror]: The code-mirror bindings =E2=80=A2 [js_top_worker]: An OCaml toplevel designed to run in a web wor= ker We've also made contributions downstream: =E2=80=A2 odoc: [Support for HTML fragments in odoc] =E2=80=A2 river: [API changes and capability to fetch metadata from RSS p= ost links] A huge thank you to the community for your constant effort in making OCaml such a great language to work with! In particular, here are some amazing community projects we are building upon: [Dream], [Brr] and [Omd] and [many more] [dream-accept] [dream-encoding] [hilite] [code-mirror] [js_top_worker] [Support for HTML fragments in odoc] [API changes and capability to fetch metadata from RSS post links] [Dream] [Brr] [Omd] [many more] What's next? =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C Launching the website is the first step on our roadmap to improve OCaml=E2=80=99s online presence. As mentioned above, the immediate goal is to be ready for this OCaml 5.00.0 release. With this in mind, we want to focus on improving the documentation and ensuring it includes good user pathways to learn about Domains, Effects, and generally how to write concurrent programs in OCaml. In addition to the documentation, some of the other projects on our roadmap are: =E2=80=A2 Toplevels for all the packages that compile to JavaScript. =E2=80=A2 Including OCaml Weekly News in the OCaml blog. =E2=80=A2 A better search through packages, documentation, and packages' documentation. This is an exciting time! Stay tuned! Call for maintainers =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95= =8C=E2=95=8C=E2=95=8C=E2=95=8C There's a lot of ways to contribute if you'd like to help. Our [contributing guide] should be a good entry point to learn what you can do as a community contributor. We're also looking for maintainers. As we're completing the first milestone with the launch and will start working on new projects, now is a great time to get involved! If you'd like to help on the initiatives on our roadmap above (or others!), feel free to reach out to me by email at thibaut@tarides.com, or by replying to this post. [contributing guide] Acknowledgements =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C This project was a huge effort that started over a year ago, and the result of dozens of [contributors]. We want to thank every one who contributed to the site. In particular, for the groundwork on rethinking the sitemap, user flows, new content, design, and frontend and package docs, we thank Ashish Agarwal, Kanishka Azimi, Richard Davison, Patrick Ferris, Gemma Gordon, Isabella Leandersson, Thibaut Mattio and Anil Madhavapeddy. For the work on the package site infrastructure and UI, we thank Jon Ludlam, Jules Aguillon and Lucas Pluvinage. And for the work on the designs and bringing them to life on the frontend, we thank Isabella Leandersson and Asaad Mahmood. For the work on the new content and reviewing the existing one, we thank Christine Rose and Isabella Leandersson. For the contributions on the content for Ahrefs, Jane Street and LexiFi respectively, we thank Louis Roch=C3=A9, James Somers, Nicol=C3=A1= s Ojeda B=C3=A4r. We=E2=80=99d also like to thank the major funders who supported the work = on revamping the website: grants from the Tezos Foundation, Jane Street and Tarides facilitated the bulk of the work. Thank you, and if anyone else wishes to help support it on an ongoing basis then donations to the OCaml Software Foundation and grants to the maintenance teams mentioned above are always welcomed. [contributors] Remaking an Old Game 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 Archive: Yotam Barnoy 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 I've starting blogging about a [side-project of mine]. Hopefully I'll find the time to write some further entries in the series, including about reverse engineering a binary with IDA. [side-project of mine] 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] [the archive] [RSS feed of the archives] [online] [Alan Schmitt] --==-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week<= /a> Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of April 26 to May 03, 2= 022.

ATD now supports TypeScript

Martin Jambon announced

ATD is a language for specify= ing typed interfaces for communicating across programming languages. It turns concrete type definitions ("schema") into c= ode for each language. This code can read and write JSON safely, relieving the user of worrying about the structure o= f the JSON data.

Starting from version 2.5.0, ATD provides atdts, a single exec= utable that turns a file foo.atd into foo.ts. See the t= utorial for an introduction. The programming languages targeted by ATD are now:

  • Java
  • OCaml
  • Python + mypy
  • ReScript (BuckleScript)
  • Scala
  • TypeScript

For an expert overview of the features that are currently supported, check = out the test data:

See also the announcement for atdpy that we made a month ago.

pp_loc 2.0

Armael announced

Do you know how OCaml now displays errors by quoting back part of the sourc= e, highlighting the faulty part? For instance, with a single-line error location:

File "foo.ml", line 1, characters 12-14:
1 | let foo x =3D yy + 1;;
                ^^

or a multi-line location:

File "bar.ml", lines 3-5, characters 10-10:
3 | ..........function
4 |   | A -> 0
5 |   | B -> 1

Do you have your own language/configuration file/… parser or typeche= cker, that could benefit from nice, user-friendly error messages?

The pp_loc library provide= s an easy-to-use implementation of the same source-quoting mechanism that is used in the OCaml compiler. It provides a = single function pp which will display the relevant part of the input given the location(s) of the error.

val pp :
  ?max_lines:int ->
  input:Input.t ->
  Format.formatter ->
  loc list ->
  unit

(As one can see from the signature, pp also supports displayin= g several locations at once on the same source snippet, for multi-location errors.)

The full documentation is available online, and the library is available on opam (opam install pp_loc).

This new version, thanks to the contribution of @c-cube, makes the lo= c type more flexible. It should now be easy to create source locations that can be passed to pp, however you = represent them in your parser (be it as (line,column) pairs, offsets, or any combination of those…). For more details, see= the Pp_loc.Position module.

I am completely open to more PRs or ideas for improving the library further= , and displaying source locations in even nicer ways!

Happy error-message printing!

Windows-friendly OCaml 4.12 distribution - Diskuv OCaml 0.1.0<= /h2>

jbeckford announced

A single setup-*.exe executable is now all that is necessary t= o install the Diskuv OCaml distribution on 64-bit Windows!

Today you can use a prerelease of v0.4.0 which is available at https://githu= b.com/diskuv/dkml-installer-ocaml/releases/download/v0.4.0-prerel11/setup-d= iskuv-ocaml-windows_x86_64-0.4.0.exe

The prerelease:

  • is for experienced Windows users only because the prerelease is = not signed! You will have to fight with your browser, operating system and = anti-virus software to run the setup executable
  • is not reproducible. Because many Diskuv packages have not yet m= ade it into Opam, the builds need several opam pin of unstable= branches.
  • has not been incorporated into the https://diskuv.gitlab.io/diskuv-ocaml documentation site.= But the Beyond Basics documentation should still be accurate= .

Once those items above are addressed, a real (non-prerelease) 0.4.0 will be= announced.

Existing Diskuv OCaml users: Your existing Opam switches should be unaffect= ed by the upgrade. But please make sure you can recreate your Opam switches (ie. use a .opam file) if = something goes wrong.

Release notes, including details of the migration to the Apache 2.0 license= , are at available at https://github.com/diskuv/dkml-installer-ocaml/releases/tag/v0= .4.0-prerel11

V3.ocaml.org: we are live!

Thibaut Mattio announced

I am thrilled to announce that https://ocaml= .org/ now serves version 3 of the site! Here's an overview of the major features in this new version:

Version 2 remains accessible at https://v= 2.ocaml.org/, and older URLs to ocaml.org will be redirected to the v2 = URL from now on. Similarly, v3.ocaml.org URLs will continue to work.

Community feedback was instrumental and has been driving the direction of t= he project since day one. For instance, having a centralized package documentation site; or facilitating the hiring= of OCaml developers and finding OCaml jobs were major concerns that were highlighted in the last OCaml Survey. They were what prompted us to work on the documentation site and the job board respectively.

We've also listened to the community feedback we received along the way, an= d in particular, here's an overview of everything we've been doing to address the feedback we received after our l= ast Discuss post: https://hackmd.io/IniI= M_p3Qs2UB74cuKK7UQ.

Given how critical your input is to drive the project, I am deeply grateful= to every one who took the time to share insights, suggestions and bug reports. Some of the suggestions will need mo= re work and couldn't happen before launch, but we've listened to every one and will keep working on improving OCaml.or= g to address pain points of the community. Thank you, and keep the feedback coming!

We're also starting to see a lot of contributions from external contributor= s. OCaml.org is open source, and contributions from anyone are extremely welcome! Never hesitate to open a P= R if you see something you'd like to improve! You can read our Contributing Guide to learn how to contribute.

Ecosystem Contributions

As the storefront of the OCaml ecosystem, we couldn't develop the next vers= ion of OCaml.org without contributing back! As a result, we've published several packages on opam that we're usin= g for OCaml.org:

Other packages that are yet to be released are:

We've also made contributions downstream:

A huge thank you to the community for your constant effort in making OCaml = such a great language to work with! In particular, here are some amazing community projects we are building upon: = Dream, Brr and Omd and many more

What's next?

Launching the website is the first step on our roadmap to improve OCaml=E2= =80=99s online presence.

As mentioned above, the immediate goal is to be ready for this OCaml 5.00.0= release. With this in mind, we want to focus on improving the documentation and ensuring it includes good user pat= hways to learn about Domains, Effects, and generally how to write concurrent programs in OCaml.

In addition to the documentation, some of the other projects on our roadmap= are:

  • Toplevels for all the packages that compile to JavaScript.
  • Including OCaml Weekly News in the OCaml blog.
  • A better search through packages, documentation, and packages' document= ation.

This is an exciting time! Stay tuned!

Call for maintainers

There's a lot of ways to contribute if you'd like to help. Our contributing guide should be a good entry point to learn what you can do as a community contributor.

We're also looking for maintainers. As we're completing the first milestone= with the launch and will start working on new projects, now is a great time to get involved!

If you'd like to help on the initiatives on our roadmap above (or others!),= feel free to reach out to me by email at thibaut@tarides.com, or by replying to this post.

Acknowledgements

This project was a huge effort that started over a year ago, and the result= of dozens of contribu= tors. We want to thank every one who contributed to the site.

In particular, for the groundwork on rethinking the sitemap, user flows, ne= w content, design, and frontend and package docs, we thank Ashish Agarwal, Kanishka Azimi, Richard Davison, Pat= rick Ferris, Gemma Gordon, Isabella Leandersson, Thibaut Mattio and Anil Madhavapeddy.

For the work on the package site infrastructure and UI, we thank Jon Ludlam= , Jules Aguillon and Lucas Pluvinage. And for the work on the designs and bringing them to life on the frontend, we t= hank Isabella Leandersson and Asaad Mahmood.

For the work on the new content and reviewing the existing one, we thank Ch= ristine Rose and Isabella Leandersson.

For the contributions on the content for Ahrefs, Jane Street and LexiFi res= pectively, we thank Louis Roch=C3=A9, James Somers, Nicol=C3=A1s Ojeda B=C3=A4r.

We=E2=80=99d also like to thank the major funders who supported the work on= revamping the website: grants from the Tezos Foundation, Jane Street and Tarides facilitated the bulk of the work. Thank= you, and if anyone else wishes to help support it on an ongoing basis then donations to the OCaml Software Foundat= ion and grants to the maintenance teams mentioned above are always welcomed.

Remaking an Old Game in OCaml

Yotam Barnoy announced

I've starting blogging about a side-project of mine. Hopefully I'll find the time to write some further entries in the series, including about reverse engine= ering a binary with IDA.

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 <= a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive= s.

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

--==-=-=-- --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Pour une =C3=A9valuation ind=C3=A9pendante, transparente et rigoureuse ! Je soutiens la Commission d'=C3=89valuation de l'INRIA. --=-=-=--