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 0989E5D4 for ; Tue, 23 Feb 2021 09:52:09 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.81,199,1610406000"; d="scan'208,217";a="494445373" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 23 Feb 2021 10:51:59 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id 908FBE0335; Tue, 23 Feb 2021 10:51:59 +0100 (CET) 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 A0B44E01C3 for ; Tue, 23 Feb 2021 10:51:55 +0100 (CET) X-IronPort-AV: E=Sophos;i="5.81,199,1610406000"; d="scan'208,217";a="373853812" Received: from clt-128-93-178-93.vpn.inria.fr (HELO set) ([128.93.178.93]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Feb 2021 10:51:18 +0100 From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr, comp@lists.orbitalfox.eu Date: Tue, 23 Feb 2021 10:51:17 +0100 Message-ID: <87tuq3nmcq.fsf@m4x.org> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 18403 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 February 16 to 23, 2021. 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 OCamlFormat 0.17.0 Set up OCaml 1.1.8 Set up OCaml 1.1.9 OCaml 4.12.0, first release candidate Ppxlib.0.22: an update on the state of ppx OCaml-based trading firm is hiring remote devs ocamlearlybird 1.0.0 beta1 OCaml for ARM MacOS Old CWN OCamlFormat 0.17.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 Archive: Guillaume Petiot 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 On behalf of the OCamlFormat development team I am pleased to announce the release of [ocamlformat.0.17.0] :tada:. OCamlformat is an auto-formatter for OCaml code, writing the parse tree and comments in a consistent style, so that you do not have to worry about formatting it by hand, and to speed up code review by focusing on the important parts. OCamlFormat is beta software. We expect the program to change considerably before we reach version 1.0.0. In particular, upgrading the `ocamlformat' package will cause your program to get reformatted. Sometimes it is relatively pain-free, but sometimes it will make a diff in almost every file. We are working towards having a tool that pleases most usecases in the OCaml community, please bear with us! To make sure your project uses the last version of ocamlformat, please set =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 version=3D0.17.0 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 in your `.ocamlformat' file. Main changes in `ocamlformat.0.17.0' are: =E2=80=A2 the `let-open' option, deprecated since 0.16.0, has been removed =E2=80=A2 support for OCaml 4.06 and 4.07 has been removed, minimal versi= on requirement bumped to OCaml 4.08 =E2=80=A2 the `extension-sugar' option, deprecated since 0.14.0, has been removed =E2=80=A2 the syntax of infix set/get operators is now preserved (`String= .get' and similar calls used to be automatically rewritten to their corresponding infix form `.()', that was incorrect when using the `-unsafe' compilation flag. Now the concrete syntax of these calls is preserved) =E2=80=A2 all sugared extension points are now preserved =E2=80=A2 injectivity type annotations (OCaml 4.12 feature) are now suppo= rted =E2=80=A2 various fixes about comments positions We encourage you to try ocamlformat, that can be installed from opam directly ( `opam install ocamlformat' ), but please remember that it is still beta software. We have a [FAQ for new users ] that should help you decide if ocamlformat is the right choice for you. [ocamlformat.0.17.0] [FAQ for new users ] Set up OCaml 1.1.8 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=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: Sora Morimoto 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 Changed =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C =E2=80=A2 The Windows opam wrapper is fractionally less-archaically named opam.cmd, with no loss in arcaneness. =E2=80=A2 Export `CYGWIN_ROOT' on the Windows runners, allowing bash to be invoked as `%CYGWIN_ROOT%\bin\bash~/~$env:CYGWIN_ROOT\bin\bash' (and similarly for Cygwin `setup-x86_64.exe'). =E2=80=A2 The Windows runner no longer prepends `%CYGWIN_ROOT%\bin' to `P= ATH'. Fixed =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C =E2=80=A2 Switches in Unix are now properly initialized before running de= pext. Set up OCaml 1.1.9 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=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: Sora Morimoto 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 Fixed =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C =E2=80=A2 Further fix to switch initialisation. OCaml 4.12.0, first release candidate =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: octachron 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 The release of OCaml 4.12.0 is expected next week. We have created a release candidate that you can test. Most opam packages should work with this release candidate (without the need for an alpha repository). Compared to the last beta, this new release only contains one fix for Solaris and illumos. If you find any bugs, please report them here: Happy hacking, =E2=80=93 Florian Angeletti for the OCaml team. Installation instructions =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=E2=95=8C=E2=95=8C The base compiler can be installed as an opam switch with the following commands =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam update =E2=94=82 opam switch create 4.12.0~rc1 --repositories=3Ddefault,beta=3Dg= it+https://github.com/ocaml/ocaml-beta-repository.git =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 If you want to tweak the configuration of the compiler, you can pick configuration options with =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam update =E2=94=82 opam switch create --packages=3Docaml-variants.4.= 12.0~rc1+options, =E2=94=82 --repositories=3Ddefault,beta=3Dgit+https://github.com/ocaml/oc= aml-beta-repository.git =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 where `' is a comma separated list of ocaml-option-* packages. For instance, for a flambda and afl enabled switch: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam switch create 4.12.0~rc1+flambda+afl --packages=3Docaml-va= riants.4.12.0~rc1+options,ocaml-option-flambda,ocaml-option-afl =E2=94=82 --repositories=3Ddefault,beta=3Dgit+https://github.com/ocaml/oc= aml-beta-repository.git =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 All available options can be listed with `opam search ocaml-option'. The source code is available at these addresses: =E2=80=A2 =E2=80=A2 Ppxlib.0.22: an update on the state of ppx =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=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: Nathan Rebours 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 We're happy to announce the release of ppxlib.0.22.0, the fist release of ppxlib fully compatible with OCaml 4.12. The main and only feature of this release is the bump of the internal OCaml AST used by ppxlib from 4.11 to 4.12, allowing you to use 4.12 language features with ppxlib and any ppxlib-based ppx. Note that ppxlib was compatible with the 4.12 compiler since 0.19.0 but that you couldn't use 4.12 language features until now. This is the third such AST bump release since we announced our plan to improve the state of the PPX ecosystem [here] and we though it'd be a good time to report back to you and tell you how things are going on this front. For those of you who aren't familiar with this plan, the goal is to upstream a minimal, stable, ocaml-migrate-parsetree-like API on top of the compiler-libs called `Astlib'. It will allow us to keep ppxlib and any ppx based on ppxlib compatible with OCaml trunk at all time. To allow better performances and a clear compisition semantic, all the ppxlib-based ppx-es need to use the same AST (as opposed to ocaml-migrate-parsetree based ppx-es) so from a certain perspective, this plan simply moves the breaking API up one step, from compiler-libs to ppxlib. In order to greatly ease the maintainenance of ppx-es and to prevent opam-universe splits we decided that everytime we cut a breaking ppxlib release, we will send patches to keep the existing ppx-es compatible with the latest version and therefore with the latest OCaml compilers and language features. While this seems like a tremendous task and a huge amount of work, dune and other tools that raised in its wake such as [opam-monorepo] incredibly simplified this kind of work. Ahead of OCaml releases, we prepare a branch of ppxlib with the upgraded AST. We then fetch opam-repository to gather a list of sensible reverse dependencies (i.e. packages whose latest version depends on ppxlib and is compatible with ppxlib's latest version) and assemble a dune workspace with a clone of each of those reverse dependencies, our ppxlib branch and all of their dependencies thanks to opam-monorepo. We then use dune to build all the packages we're interested in and simply follow the compilation errors until everything builds successfully with the new ppxlib. What remains is to create PRs on the relevant repositories to upstream those changes, after which maintainers have everything they need to cut a new compatible release. Most of this process is automated using scripts but it still requires a bit of handiwork. We aim at extracting tools to further improve this workflow and reduce the time and effort required but it has been surprisingly smooth. Our experience with the 4.10, 4.11 and 4.12 upgrades so far is that most reverse dependencies don't need an upgrade and that it's far less demanding for one person to upgrade all the packages that need it than it would be for each individual maintainers to understand the changes in the AST and do the upgrade themselves. It's worth noting that for this to work well, the ppx-es and all their dependencies have to build with dune. We do maitain a separate opam-repository with dune ports of commonly used packages so in practice most projects fall into this category but a few exceptions remain and they are therefore not taken into account for this upgrade process. We're also trying to improve the tracking of the upgrade's progress and for the 4.12 compatible release we created a [github project] to have a list of all the packages we considered and see where they are. We also keep track of the packages we had to exclude and why. During this upgrade, we considered 80 opam packages, out of which only 4 needed to be patched and 6 had to be excluded from the process as we couldn't reasonably get them to build in our workspace. Once we have a better idea of what makes a package easy to upgrade we plan on releasing a set of reasonable rules to follow to benefit from those upgrades, we'll keep you updated on this! All in all we're pretty happy with this new process and although it needs to be refined, we're confident it can grow into something sustainable by creating tools and CI to support it. Hopefully these will also benefit the wider community and help grow a healthier Opam universe. [here] [opam-monorepo] [github project] Jason Nielsen asked =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 Curious about the current status of `Astlib'. I was closely following [ppx] at one point but it hasn't seen much activity recently. Thanks for all your hard work. [ppx] J=C3=A9r=C3=A9mie Dimino =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 It's in progress. Not much happened in the past couple of months while we were finishing the port of a few projects to ppxlib and doing the 4.12 upgrade. But @pitag re-started working `Astlib' as of a week ago. You can follow our progression via [the public meeting notes]. Note however that the [ppx] project was for our original goal or providing a "forever stable" API for ppx rewriters. It has been in pause since August 2020 while were trying the "upgrade the world" method, which as @NathanReb pointed out is working pretty well practice. At this point, it's looking more and more likely that we won't resurect the ppx project. [the public meeting notes] [ppx] OCaml-based trading firm is hiring remote devs =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: Michael Bacarella 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=E2=94=80 BTG is a trading firm founded by ex-Jane Street devs looking to hire some more devs. The role is primarily remote, working with the rest of our mostly remote team, though we hope to resume regular on-sites in Puerto Rico. We operate 24/7 and will consider employees anywhere in the world. Prior experience with OCaml is a plus, though any solid programming experience with an interest in functional programming and strong static types is also fine. Comfort navigating Linux is essential. Shoot me a message with a copy of your r=C3=A9sum=C3=A9 or C.V. to discus= s the opportunity further: [michael.bacarella@gmail.com] Feel free to re-post this elsewhere. [michael.bacarella@gmail.com] ocamlearlybird 1.0.0 beta1 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=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: =E6=96=87=E5=AE=87=E7=A5=A5 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 Hi, all. All the issues of beta1 have been fixed. Beta2 will be released soon. OCaml for ARM MacOS =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=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: Aaron L. Zeng 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 I noticed that opam 2.08 is now available for ARM Macs using [Homebrew], and I was able to confirm on my machine. `brew install opam' away :) [Homebrew] 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 February 16 to 23, 20= 21.

OCamlFormat 0.17.0

Guillaume Petiot announced

On behalf of the OCamlFormat development team I am pleased to announce the = release of ocamlformat.0.17.0= :tada:.

OCamlformat is an auto-formatter for OCaml code, writing the parse tree and= comments in a consistent style, so that you do not have to worry about formatting it by hand, and to speed up code = review by focusing on the important parts.

OCamlFormat is beta software. We expect the program to change considerably = before we reach version 1.0.0. In particular, upgrading the ocamlformat package will cause your = program to get reformatted. Sometimes it is relatively pain-free, but sometimes it will make a diff in almost every fil= e. We are working towards having a tool that pleases most usecases in the OCaml community, please bear with us!

To make sure your project uses the last version of ocamlformat, please set

version=3D0.17.0

in your .ocamlformat file.

Main changes in ocamlformat.0.17.0 are:

  • the let-open option, deprecated since 0.16.0, has been rem= oved
  • support for OCaml 4.06 and 4.07 has been removed, minimal version requi= rement bumped to OCaml 4.08
  • the extension-sugar option, deprecated since 0.14.0, has b= een removed
  • the syntax of infix set/get operators is now preserved (String.ge= t and similar calls used to be automatically rewritten to their corr= esponding infix form .(), that was incorrect when using the -unsafe compilation flag. Now the concrete syntax of these calls= is preserved)
  • all sugared extension points are now preserved
  • injectivity type annotations (OCaml 4.12 feature) are now supported
  • various fixes about comments positions

We encourage you to try ocamlformat, that can be installed from opam direct= ly ( opam install ocamlformat ), but please remember that it is still beta software. We have a FAQ for new users that should help you decide if ocamlformat is the right choice for you.

Set up OCaml 1.1.8

Sora Morimoto announced

Changed

  • The Windows opam wrapper is fractionally less-archaically named opam.cm= d, with no loss in arcaneness.
  • Export CYGWIN_ROOT on the Windows runners, allowing bash t= o be invoked as %CYGWIN_ROOT%\bin\bash~/~$env:CYGWIN_ROOT\bin\bash (and similarly for Cygwin setup-x86_64.exe).
  • The Windows runner no longer prepends %CYGWIN_ROOT%\bin to= PATH.

Fixed

  • Switches in Unix are now properly initialized before running depext.

https:/= /github.com/avsm/setup-ocaml/releases/tag/v1.1.8

Set up OCaml 1.1.9

Sora Morimoto announced

Fixed

  • Further fix to switch initialisation.

https:/= /github.com/avsm/setup-ocaml/releases/tag/v1.1.9

OCaml 4.12.0, first release candidate

octachron announced

The release of OCaml 4.12.0 is expected next week. We have created a release candidate that you can test. Most opam packages should work with this relea= se candidate (without the need for an alpha repository).

Compared to the last beta, this new release only contains one fix for Solar= is and illumos.

If you find any bugs, please report them here: https://github.com/ocaml= /ocaml/issues

Happy hacking,

– Florian Angeletti for the OCaml team.

Installation instructions

The base compiler can be installed as an opam switch with the following com= mands

opam update
opam switch create 4.12.0~rc1 --repositories=3Ddefault,beta=3Dgit+https://github.com/ocaml/ocaml-beta-repositor=
y.git

If you want to tweak the configuration of the compiler, you can pick config= uration options with

opam update
opam switch create <switch_name> --packages=3Docaml-variants.4.12.0~r=
c1+options,<option_list>
--repositories=3Ddefault,beta=3Dgit+=
https://github.com/ocaml/ocaml-beta-repository.git

where <option_list> is a comma separated list of ocaml-o= ption-* packages. For instance, for a flambda and afl enabled switch:

opam switch create 4.12.0~rc1+flambda+afl --pa=
ckages=3Docaml-variants.4.12.0~rc1+options,ocaml-option-flambda,ocaml-optio=
n-afl
--repositories=3Ddefault,beta=3Dgit+=
https://github.com/ocaml/ocaml-beta-repository.git

All available options can be listed with opam search ocaml-option.

The source code is available at these addresses:

Ppxlib.0.22: an update on the state of ppx

Nathan Rebours announced

We're happy to announce the release of ppxlib.0.22.0, the fist release of p= pxlib fully compatible with OCaml 4.12. The main and only feature of this release is the bump of the internal OCaml= AST used by ppxlib from 4.11 to 4.12, allowing you to use 4.12 language features with ppxlib and an= y ppxlib-based ppx. Note that ppxlib was compatible with the 4.12 compiler since 0.19.0 but tha= t you couldn't use 4.12 language features until now.

This is the third such AST bump release since we announced our plan to impr= ove the state of the PPX ecosystem here and we though it'd be a good time to report back to you a= nd tell you how things are going on this front.

For those of you who aren't familiar with this plan, the goal is to upstrea= m a minimal, stable, ocaml-migrate-parsetree-like API on top of the compiler-libs called A= stlib. It will allow us to keep ppxlib and any ppx based on ppxlib compatible with OCaml trunk at a= ll time. To allow better performances and a clear compisition semantic, all the ppxl= ib-based ppx-es need to use the same AST (as opposed to ocaml-migrate-parsetree based ppx-es) so from a= certain perspective, this plan simply moves the breaking API up one step, from compiler-libs to ppxli= b. In order to greatly ease the maintainenance of ppx-es and to prevent opam-u= niverse splits we decided that everytime we cut a breaking ppxlib release, we will send patches to ke= ep the existing ppx-es compatible with the latest version and therefore with the latest OCaml compilers and language f= eatures.

While this seems like a tremendous task and a huge amount of work, dune and= other tools that raised in its wake such as = opam-monorepo incredibly simplified this kind of work.

Ahead of OCaml releases, we prepare a branch of ppxlib with the upgraded AS= T. We then fetch opam-repository to gather a list of sensible reverse dependencies (i.e. pac= kages whose latest version depends on ppxlib and is compatible with ppxlib's latest version) and assem= ble a dune workspace with a clone of each of those reverse dependencies, our ppxlib branch and all of= their dependencies thanks to opam-monorepo. We then use dune to build all the packages we're interested in and simply f= ollow the compilation errors until everything builds successfully with the new ppxlib. What remains is to create PRs on the relevant repositories to upstream thos= e changes, after which maintainers have everything they need to cut a new compatible release.

Most of this process is automated using scripts but it still requires a bit= of handiwork. We aim at extracting tools to further improve this workflow and reduce the time and e= ffort required but it has been surprisingly smooth. Our experience with the 4.10, 4.11 and 4.12 upgra= des so far is that most reverse dependencies don't need an upgrade and that it's far less dema= nding for one person to upgrade all the packages that need it than it would be for each individu= al maintainers to understand the changes in the AST and do the upgrade themselves.

It's worth noting that for this to work well, the ppx-es and all their depe= ndencies have to build with dune. We do maitain a separate opam-repository with dune ports of comm= only used packages so in practice most projects fall into this category but a few exceptions remain = and they are therefore not taken into account for this upgrade process.

We're also trying to improve the tracking of the upgrade's progress and for= the 4.12 compatible release we created a github project to have a list of all the packages we considered and see where they are. We also keep track of the packages we ha= d to exclude and why. During this upgrade, we considered 80 opam packages, out of which only 4 ne= eded to be patched and 6 had to be excluded from the process as we couldn't reasonably get them to b= uild in our workspace.

Once we have a better idea of what makes a package easy to upgrade we plan = on releasing a set of reasonable rules to follow to benefit from those upgrades, we'll keep you u= pdated on this!

All in all we're pretty happy with this new process and although it needs t= o be refined, we're confident it can grow into something sustainable by creating tools and CI t= o support it. Hopefully these will also benefit the wider community and help grow a healthier Opam = universe.

Jason Nielsen asked

Curious about the current status of Astlib. I was closely fol= lowing ppx at one point but it hasn't seen much activity recently. Thanks for all your hard = work.

J=C3=A9r=C3=A9mie Dimino

It's in progress. Not much happened in the past couple of months while we w= ere finishing the port of a few projects to ppxlib and doing the 4.12 upgrade. But @pitag re-started working A= stlib as of a week ago. You can follow our progression via the pu= blic meeting notes.

Note however that the ppx = project was for our original goal or providing a "forever stable" API for ppx rewriters. It has been in pause since August 2= 020 while were trying the "upgrade the world" method, which as @NathanReb pointed out is working pretty well pract= ice. At this point, it's looking more and more likely that we won't resurect the ppx project.

OCaml-based trading firm is hiring remote devs

Michael Bacarella announced

BTG is a trading firm founded by ex-Jane Street devs looking to hire some m= ore devs.

The role is primarily remote, working with the rest of our mostly remote te= am, though we hope to resume regular on-sites in Puerto Rico.

We operate 24/7 and will consider employees anywhere in the world.

Prior experience with OCaml is a plus, though any solid programming experie= nce with an interest in functional programming and strong static types is also fine.

Comfort navigating Linux is essential.

Shoot me a message with a copy of your r=C3=A9sum=C3=A9 or C.V. to discuss = the opportunity further: michael.bacarella@gmail.com<= /a>

Feel free to re-post this elsewhere.

ocamlearlybird 1.0.0 beta1

=E6=96=87=E5=AE=87=E7=A5=A5 announced

Hi, all. All the issues of beta1 have been fixed. Beta2 will be released so= on.

https://git= hub.com/ocaml/opam-repository/pull/18191

OCaml for ARM MacOS

Aaron L. Zeng announced

I noticed that opam 2.08 is now available for ARM Macs using Homebrew, and I was able to confirm on my machine.

brew install opam away :)

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.

--=-=-=--