[Caml-list] Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt
2022-06-21T08:06:56Z

[-- Attachment #1: Type: text/plain, Size: 17329 bytes --]

Hello

Here is the latest OCaml Weekly News, for the week of June 14 to 21,
2022.

Table of Contents
─────────────────

OBazl Toolsuite - tools for building OCaml with Bazel
Job offer: 3 years compiler engineer at the French tax authority
OCaml 5.0, zeroth alpha release
Tezt, a framework for all your tests
OCaml Stdlib, Containers, Batteries, Base and F# core functions comparisons
Dune 3.3.0
Old CWN

OBazl Toolsuite - tools for building OCaml with Bazel
═════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/obazl-toolsuite-tools-for-building-ocaml-with-bazel/10021/1>

Gregg Reynolds announced
────────────────────────

Version 2 of OBazl, a Bazel ruleset for building OCaml code, will soon
be available. I'm letting you know early because I'll be giving a
presentation about the OBazl Toolsuite for the [Bazel Exchange]
conference next Wed, 22 June, at 3:00 pm UDT (10:00 am CDT). It's a
virtual conference so you can tune in from anywhere. The talk will
focus on some of the quirks of the OCaml build discipline and how I
addressed them for the OBazl ruleset.

The tools are usable now, they're just not yet properly documented and
packaged, and in a few places there's a little more work to be done on
the code. Nonetheless there is quite a bit of documentation (CAVEAT:
some of it is outdated), with more on the way soon, and there are lots
of demos available. So if you're interested in using Bazel to build
your OCaml code I welcome you to take a look:

[The OBazl Book]

Twitter handle is @obazldev Discord: [https://discord.gg/PHSAW5DUva]

[Bazel Exchange]
<https://skillsmatter.com/conferences/13682-bazel-exchange>

[The OBazl Book] <https://obazl.github.io/docs_obazl/>

[https://discord.gg/PHSAW5DUva] <https://discord.gg/PHSAW5DUva>

Gregg Reynolds lated added
──────────────────────────

PS. The conference organizers have provided this discount token:
BAZEL-GR-20

It should be good for 20% off, registration is at
[https://events.skillsmatter.com/bazelx2022]

[https://events.skillsmatter.com/bazelx2022]
<https://events.skillsmatter.com/bazelx2022>

Job offer: 3 years compiler engineer at the French tax authority
════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/job-offer-3-years-compiler-engineer-at-the-french-tax-authority/10023/1>

Denis Merigoux announced
────────────────────────

[En français parce que c'est une offre d'emploi dans l'administration]

Bonjour à toutes et à tous,

Vous aimez la programmation fonctionnelle et les compilateurs ? Vous
en avez marre des offres d'emploi dans la blockchain ? Ça tombe bien,
j'ai ce qu'il vous faut !

Il y a deux ans, j'ai lancé un grand projet de modernisation du calcul
informatique de calcul de l'impôt sur le revenu à la Direction
Générale des Finances Publiques (DGFiP), en partenariat avec Inria:
<https://www.inria.fr/fr/mlang-modernisation-calcul-impot-revenu>.

Le logiciel au cœur de ce projet de modernisation est Mlang, un
compilateur écrit en OCaml pour un couple de langages dédiés utilisés
par la DGFiP pour encoder le calcul de l'impôt sur le revenu. Depuis
deux ans, la DGFiP travaille à intégrer Mlang à l'infrastructure
officielle de calcul de l'impôt sur le revenu pour remplacer des
systèmes vieillissants. C'est donc un projet à très fort impact (80M€
par d'impôts par an), et proche de la R&D (OCaml, libre, innovation) !
Depuis un an, la DGFiP emploie la société OCamlPro sur le projet mais
souhaite maintenant ré-internaliser ses compétences pour garder la
souveraineté numérique sur son infrastructure de calcul.

C'est là que cette offre d'emploi entre en jeu ! En effet la DGFiP
vient d'ouvrir un poste en CDD de 3 ans pour un.e expert.e en
compilation ! Les détails :

• Bureaux à Noisy-le-Grand (+ jusqu'à 3 jours télétravail/semaine)
• Salaire: À négocier selon expérience mais similaire à "Inspecteur
des finances publiques". Selon le site du ministère de l'économie ça
débuterait à 3k€ net/mois.
• Tâches: Maintenance, évolution de Mlang et travaux annexes

Et pour l'heureux.se recruté.e, la cerise sur le gâteau sera de
pouvoir collaborer avec moi et l'équipe Prosecco d'Inria (ainsi que
Raphaël Monat, ) :) Attention cependant : il faudra s'attendre à
devoir également aider l'équipe de la DGFiP sur d'autres chantiers en
fonction des priorités. De même, l'objectif est de partager la
compétence en compilation au sein de la DGFiP, donc les profils
évangélisateurs de la programmation fonctionnelle sont les bienvenus !

Pour référence, voici l'offre officielle complète:
<https://merigoux.ovh/assets/OffreDGFiP.pdf>. S'il vous plaît, pas
d'autocensure à cause de ce qui est marqué dans ce PDF! Si vous avez
un doute contactez-moi par retour de mail.

Deadline pour les candidatures: 9 juillet. Prise de poste inconnue,
sûrement aux alentours du 1er septembre mais j'imagine que c'est
négociable.

Denis Merigoux later added
──────────────────────────

Si vous êtes intéressé.e, envoyez votre CV et lettre de motivation à
bureau.si-part-rh@dgfip.finances.gouv.fr et
bureau.rh-mobilite-carriere-a-recrutementchoix@dgfip.finances.gouv.fr.

OCaml 5.0, zeroth alpha release
═══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ocaml-5-0-zeroth-alpha-release/10026/1>

octachron announced
───────────────────

Five months after the initial merge of the multicore branch into the
mainline OCaml and three months after the release of OCaml 4.14.0,
OCaml 5.0.0 is starting to take shape.

I am thus happy to announce an exceptional zeroth alpha release of
OCaml 5.0.0 (see below for the installation instructions).

This alpha release is expected to be rougher than an usual alpha
release, due to the full rewrite of the OCaml runtime. In particular,
the bytecode debugger will only be available in the next alpha
release. Similarly, there will be some changes to the internal C
runtime API and to the files installed by the compiler package in the
next alpha release.

Moreover, this zeroth alpha release is the occasion to remind everyone
that OCaml 5.0 itself is expected to be a more experimental release
than usual. Notably, the native compiler will only be available on the
ARM64 and x86-64 architectures in this 5.0 release.

Nevertheless, this zeroth alpha version is already stable enough for
fellow hackers eager to join us in our early bug hunting and opam
ecosystem fixing fun, or to venture in the new era of parallelism and
(experimental) effects.

You can follow the progresses in stabilising the opam ecosystem on

<https://github.com/ocaml/opam-repository/issues/21526>

A brief summary is that at least dune, merlin, ppxlib, utop,
ocamlfind, and ocamlbuild work (potentially by using patches from the
alpha opam repository).

If you find any bugs, please report them here:

<https://github.com/ocaml/ocaml/issues>

In particular, any sequential OCaml 4 library or program should be
valid in OCaml 5 (except for deprecated modules and functions). Please
don't hesitate to report any compatibility bugs!

If you are interested by the ongoing list of bug fixes, the updated
change log for OCaml 5.0.0 is available at:

<https://github.com/ocaml/ocaml/blob/5.0/Changes>

Installation instructions
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
The base compiler can be installed as an opam switch with the
following commands on opam 2.1:
┌────
│ opam update
│ opam switch create 5.0.0~alpha0
└────
For previous version of opam, the switch creation command line is
slightly more verbose:
┌────
│ opam update
│ opam switch create 5.0.0~alpha0 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git
└────
If you want to tweak the configuration of the compiler, you can switch
to the option variant with:
┌────
│ opam update
│ opam switch create <switch_name> ocaml-variants.5.0.0~alpha0+options <option_list>
└────
where `<option_list>' is a comma separated list of `ocaml-option-*'
packages. For instance, for a flambda and no-flat-float-array switch:
┌────
│ opam switch create 5.0.0~alpha0+flambda+nffa ocaml-variants.5.0.0~alpha0+options ocaml-option-flambda
│ ocaml-option-no-flat-float-array
└────
The command line above is slightly more complicated for an opam
version anterior to opam 2.1:
┌────
│ opam update
│ opam switch create <switch_name> --packages=ocaml-variants.5.0.0~alpha0+options,<option_list>
│ --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git
└────
In both cases, all available options can be listed with `opam search
ocaml-option'.

If you want to test this version, it is strongly advised to install
the alpha opam repository

<https://github.com/kit-ty-kate/opam-alpha-repository>

with
┌────
│ opam repo add alpha git://github.com/kit-ty-kate/opam-alpha-repository.git
└────
This alpha repository contains various fixes in the process of being
upstreamed.

The source code for the alpha is also available at these addresses:

• <https://github.com/ocaml/ocaml/archive/5.0.0-alpha0.tar.gz>
• <https://caml.inria.fr/pub/distrib/ocaml-5.0/ocaml-5.0.0~alpha0.tar.gz>

Daniel Bünzli asked and octachron replied
─────────────────────────────────────────

Does this mean we get [global warming] again ?

Indeed! I should have mentioned that point! The normal development
process can restart on the compiler development branch.

I will also try to slowly go through the backlog of frozen PRs once
the alpha releases settle down.

[global warming]
<https://discuss.ocaml.org/t/the-road-to-ocaml-5-0/8584#the-sequential-glaciation-3>

Tezt, a framework for all your tests
════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-tezt-a-framework-for-all-your-tests/10038/1>

rbardou announced
─────────────────

Tezt (pronounced [/tɛzti/]) is a test framework for OCaml that has
been developed and used at Nomadic Labs to test [Octez], an OCaml
implementation of the Tezos blockchain. It has become quite mature and
we feel it would benefit the OCaml community at large, so we are
releasing it publicly as a standalone product.

Tezt is well-suited for unit tests, integration tests, and regression
tests in particular. It was designed with a focus on user experience,
with colourful logs, various ways to select the tests to run from the
command-line, and more. It integrates well into CI pipelines. And it
cleans up after itself, deleting temporary files and killing external
processes. Unless you tell it not to, of course.

For a more in-depth tour of Tezt, see [our latest blog post entry].

Tezt is available on opam:
┌────
│ opam install tezt
└────
Have a look at the [API documentation] and the [source code].

[/tɛzti/] <http://ipa-reader.xyz/?text=t%C9%9Bzti>

[Octez]
<https://research-development.nomadic-labs.com/announcing-octez.html>

[our latest blog post entry]
<https://research-development.nomadic-labs.com/announcing-tezt.html>

[API documentation]
<https://tezos.gitlab.io/api/odoc/_html/tezt/Tezt/index.html>

[source code] <https://gitlab.com/tezos/tezos/-/tree/master/tezt/lib>

OCaml Stdlib, Containers, Batteries, Base and F# core functions comparisons
═══════════════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ocaml-stdlib-containers-batteries-base-and-f-core-functions-comparisons/10041/1>

Jp R announced
──────────────

<https://github.com/Fourchaux/OCaml-Stdlib_Containers_Batteries_Base-and-FSharp--core-functions-comparisons>

Comparisons (names/signatures) of the core functions used in:

• OCaml Stdlib (v4.41.0)
• Containers (v3.8)
• Batteries (v3.5.1)
• Base (v0.15.0)
• F# (v6.0) as a bonus

Note: F# provides an Array.Parallel module with some functions
(choose, collect, init, iter, iteri, map, mapi, partition) which
could be good candidates for OCaml 5.0.0…

Dune 3.3.0
══════════

Archive: <https://discuss.ocaml.org/t/ann-dune-3-3-0/10048/1>

Etienne Millon announced
────────────────────────

On behalf of the dune team, I’m pleased to announce the release of
version 3.3.0. This is the first version that supports the upcoming
OCaml 5.0. It also improves safety by sandboxing more rules and
enabling more warnings, and there's a bunch of new features on the coq
side too. Full changelog follows.

Note that as usual, dune works hard not to break existing packages. So
even if it mentions that rules require precise dependencies, for
example, this new safety net is only enabled for project that use
`(lang dune 3.3)'.

Happy hacking.

3.3.0 (17-06-2022)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

• Sandbox preprocessing, lint, and dialect rules by default. All these
rules now require precise dependency specifications (#5807,
@rgrinberg)

• Allow list expansion in the `pps' specification for preprocessing
(#5820, @Firobe)

• Add warnings 67-69 to dune's default set of warnings. These are
warnings of the form "unused X.." (#5844, @rgrinberg)

• Introduce project "composition" for coq theories. Coq theories in
separate projects can now refer to each other when in the same
workspace (#5784, @Alizter, @rgrinberg)

• Fix hint message for `data_only_dirs' that wrongly mentions the
unknown constructor `data_only' (#5803, @lambdaxdotx)

• Fix creating sandbox directory trees by getting rid of buggy
memoization (#5794, @rgrinberg, @snowleopard)

• Handle directory dependencies in sandboxed rules. Previously, the
parents of these directory dependencies weren't created. (#5754,
@rgrinberg)

• Set the exit code to 130 when dune is terminated with a signal
(#5769, fixes #5757)

• Support new locations of unix, str, dynlink in OCaml >= 5.0 (#5582,
@dra27)

• The `coq.theory' stanza now produces rules for running
`coqdoc'. Given a theory named `mytheory', the directory targets
`mytheory.html/' and `mytheory.tex/' or additionally the aliases
`@doc' and `@doc-latex' will build the HTML and LaTeX documentation
repsectively. (#5695, fixes #3760, @Alizter)

• Coq theories marked as `(boot)' cannot depend on other theories
(#5867, @ejgallego)

• Ignore `bigarray' in `(libraries)' with OCaml >= 5.0. (#5526, fixes
#5494, @moyodiallo)

• Start with :standard when building the ctypes generated foreign
stubs so that we include important compiler flags, such as -fPIC
(#5816, fixes #5809).

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 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] <https://alan.petitepomme.net/cwn/>

[RSS feed of the archives] <https://alan.petitepomme.net/cwn/cwn.rss>

[online] <http://lists.idyll.org/listinfo/caml-news-weekly/>

[Alan Schmitt] <https://alan.petitepomme.net/>

[-- Attachment #2: Type: text/html, Size: 28465 bytes --]