caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Alan Schmitt <>
To: "lwn" <>, "cwn"  <>,,
Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News
Date: Tue, 19 Jan 2021 15:28:23 +0100	[thread overview]
Message-ID: <> (raw)

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


Here is the latest OCaml Weekly News, for the week of January 12 to 19,

Table of Contents

Irmin 2.3.0
Dune 2.8.0
Interesting OCaml Articles
OCaml 4.12.0, first beta release
OCaml for ARM MacOS
Talk on OCaml Batteries at Houston Functional Programmers
Other OCaml News

Irmin 2.3.0

  Archive: <>

Craig Ferguson announced

  I'm very happy to announce the release of the Irmin 2.3.0 family of
  packages, including:

  • [`irmin-pack.2.3.0'], a storage backend for Irmin designed for and
    used by Tezos. This release contains a host of performance
    improvements as well as offline CLI features such as integrity
    checking. It also contains a number of high-level design changes,
    which were discussed in a recent [Tarides blog post].

    Finally, `irmin-pack.2.3.0' also contains a prototype of the
    [_layered_] `irmin-pack' store, which provides an [OverlayFS]-esque
    mode of operation for `irmin-pack' in which the causal history of
    the store can be chunked into independently-accessable
    substores. This feature will eventually be deployed in a [future
    version of Tezos].

  • [`irmin-containers'], a collection of pre-defined mergeable data
    structures built using Irmin and compatible with any backend. These
    were originally provided by @kayceesrk as part of [`ezirmin'], and
    has since been modernised and upstreamed by Anirudh S.

  • `irmin-bench', a suite of benchmarks for Irmin for use with
    [`current-bench'], an experimental continuous benchmarking
    infrastructure for OCaml projects. Lots of work has been going on
    behind the scenes to make this a general benchmarking infrastructure
    for the Mirage ecosystem, including a recent [fancy UI overhaul] by
    new contributor @rizo.

  • [`repr'], an extraction of the `Irmin.Type' type representation
    library for use in other packages. This package contains a set of
    combinators for building run-time representations of types, along
    with various generic operations defined over those representations,
    including: equality, comparison, pretty-printing, JSON / binary
    codecs, etc. The API of this library is currently a
    work-in-progress, but we hope to use it more widely in the Mirage
    ecosystem soon.

  • [`semaphore-compat'], an extraction of the `Semaphore' library in
    OCaml 4.12, for libraries that want to maintain compatibility with
    earlier versions of OCaml.

  The full list of changes to Irmin can be found [here].

  Many thanks to our open-source contributors and collaborators. Happy

[`irmin-pack.2.3.0'] <>

[Tarides blog post]


[OverlayFS] <>

[future version of Tezos]


[`ezirmin'] <>

[`current-bench'] <>

[fancy UI overhaul] <>

[`repr'] <>

[`semaphore-compat'] <>


Dune 2.8.0

  Archive: <>

Rudi Grinberg announced

  On behalf of the dune, I'm pleased to announce the release of dune
  2.8.0. This release contains many bug fixes, performance improvements,
  and interesting new features. I'll point out two new features that I'm
  most excited about.

  First is the experimental `dune_site' extension that makes it possible
  to register and load plugins at runtime. This feature is quite
  involved, but we've documented it extensively [in the manual].

  Another cool feature is that we've eliminated the need for .merlin
  files and all the caveats that came with them.  Now, merlin talks to
  dune directly to get precise configuration for every module. Say
  goodbye to all those "approximate .merlin file" warnings!

  I encourage everyone to upgrade as soon as possible, as earlier
  versions are not compatible with OCaml 4.12. Happy Hacking.

  Full change log:

[in the manual] <>

2.8.0 (13/01/2021)

  • `dune rules' accepts aliases and other non-path rules (#4063,

  • Action `(diff reference test_result)' now accept `reference' to be
    absent and in that case consider that the reference is empty. Then
    running `dune promote' will create the reference file. (#3795,

  • Ignore special files (BLK, CHR, FIFO, SOCKET), (#3570, fixes #3124,
    #3546, @ejgallego)

  • Experimental: Simplify loading of additional files (data or code) at
    runtime in programs by introducing specific installation sites. In
    particular it allow to define plugins to be installed in these
    sites. (#3104, #3794, fixes #1185, @bobot)

  • Move all temporary files created by dune to run actions to a single
    directory and make sure that actions executed by dune also use this
    directory by setting `TMPDIR' (or `TEMP' on Windows). (#3691, fixes
    #3422, @rgrinberg)

  • Fix bootstrap script with custom configuration. (#3757, fixes #3774,

  • Add the `executable' field to `inline_tests' to customize the
    compilation flags of the test runner executable (#3747, fixes #3679,

  • Add `(enabled_if ...)' to `(copy_files ...)' (#3756, @nojb)

  • Make sure Dune cleans up the status line before exiting (#3767,
    fixes #3737, @alan-j-hu)

  • Add `{gitlab,bitbucket}' as options for defining project sources
    with `source' stanza `(source (<host> user/repo))' in the
    `dune-project' file.  (#3813, @rgrinberg)

  • Fix generation of `META' and `dune-package' files when some targets
    (byte, native, dynlink) are disabled. Previously, dune would
    generate all archives for regardless of settings. (#3829, #4041,

  • Do not run ocamldep to for single module executables &
    libraries. The dependency graph for such artifacts is trivial
    (#3847, @rgrinberg)

  • Fix cram tests inside vendored directories not being interpreted
    correctly.  (#3860, fixes #3843, @rgrinberg)

  • Add `package' field to private libraries. This allows such libraries
    to be installed and to be usable by other public libraries in the
    same project (#3655, fixes #1017, @rgrinberg)

  • Fix the `%{make}' variable on Windows by only checking for a `gmake'
    binary on UNIX-like systems as a unrelated `gmake' binary might
    exist on Windows.  (#3853, @kit-ty-kate)

  • Fix `$ dune install' modifying the build directory. This made the
    build directory unusable when `$ sudo dune install' modified
    permissions. (fix #3857, @rgrinberg)

  • Fix handling of aliases given on the command line (using the `@' and
    `@@' syntax) so as to correctly handle relative paths. (#3874, fixes
    #3850, @nojb)

  • Allow link time code generation to be used in preprocessing
    executable. This makes it possible to use the build info module
    inside the preprocessor.  (#3848, fix #3848, @rgrinberg)

  • Correctly call `git ls-tree' so unicode files are not quoted, this
    fixes problems with `dune subst' in the presence of unicode
    files. Fixes #3219 (#3879, @ejgallego)

  • `dune subst' now accepts common command-line arguments such as
    `--debug-backtraces' (#3878, @ejgallego)

  • `dune describe' now also includes information about executables in
    addition to that of libraries. (#3892, #3895, @nojb)

  • instrumentation backends can now receive arguments via
      `(instrumentation (backend <name> <args>))'. (#3906, #3932, @nojb)

  • Tweak auto-formatting of `dune' files to improve
    readability. (#3928, @nojb)

  • Add a switch argument to opam when context is not default. (#3951,

  • Avoid pager when running `$ git diff' (#3912, @AltGr)

  • Add `(root_module ..)' field to libraries & executables. This makes
    it possible to use library dependencies shadowed by local modules
    (#3825, @rgrinberg)

  • Allow `(formatting ...)' field in `(env ...)' stanza to set
    per-directory formatting specification. (#3942, @nojb)

  • [coq] In `coq.theory', `:standard' for the `flags' field now uses
    the flags set in `env' profile flags (#3931 , @ejgallego @rgrinberg)

  • [coq] Add `-q' flag to `:standard' `coqc' flags , fixes #3924,
    (#3931 , @ejgallego)

  • Add support for Coq's native compute compilation mode (@ejgallego,

  • Add a `SUFFIX' directive in `.merlin' files for each dialect with no
    preprocessing, to let merlin know of additional file extensions
    (#3977, @vouillon)

  • Stop promoting `.merlin' files. Write per-stanza Merlin
    configurations in binary form. Add a new subcommand `dune
    ocaml-merlin' that Merlin can use to query the configuration
    files. The `allow_approximate_merlin' option is now useless and
    deprecated. Dune now conflicts with `merlin < 3.4.0' and
    `ocaml-lsp-server < 1.3.0' (#3554, @voodoos)

  • Configurator: fix a bug introduced in 2.6.0 where the configurator
    V1 API doesn't work at all when used outside of dune. (#4046,

  • Fix `libexec' and `libexec-private' variables. In cross-compilation
    settings, they now point to the file in the host context. (#4058,
    fixes #4057, @TheLortex)

  • When running `$ dune subst', use project metadata as a fallback when
    package metadata is missing. We also generate a warning when `(name
    ..)' is missing in `dune-project' files to avoid failures in
    production builds.

  • Remove support for passing `-nodynlink' for executables. It was
    bypassed in most cases and not correct in other cases in particular
    on arm32.  (#4085, fixes #4069, fixes #2527, @emillon)

  • Generate archive rules compatible with 4.12. Dune longer attempt to
    generate an archive file if it's unnecessary (#3973, fixes #3766,

  • Fix generated Merlin configurations when multiple preprocessors are
    defined for different modules in the same folder. (#4092, fixes
    #2596, #1212 and #3409, @voodoos)

  • Add the option `use_standard_c_and_cxx_flags' to `dune-project' that
    1.  disables the unconditional use of the `ocamlc_cflags' and
    `ocamlc_cppflags' from `ocamlc -config' in C compiler calls, these
    flags will be present in the `:standard' set instead; and 2. enables
    the detection of the C compiler family and populates the `:standard'
    set of flags with common default values when building CXX
    stubs. (#3875, #3802, fix #3718 and #3528, @voodoos)


  Archive: <>

Raphaël Proust announced

  On behalf of [Nomadic Labs], I'm happy to announce the release of
  Lwt-canceler version 0.3. Lwt-canceler is a small library to help
  programs written using Lwt to synchronise promises around resource
  clean-up. This library was developed as part of the [Tezos codebase]
  before being released.

  With this version, the code has matured significantly (including
  tests, documentation and some refactoring); the next release will
  probably be a version 1.0 at which point a more robust versioning
  scheme will be used.

  The documentation is available online:
  The code is released under MIT License and hosted on Gitlab:
  <> The new version is
  available on opam: `opam install lwt-canceler'

  Happy hacking!

[Nomadic Labs] <>

[Tezos codebase] <>

Interesting OCaml Articles


Weng Shiwei announced

  Let me share my new blog post on understanding `format6' with
  examples.  <>

  It's almost my reading note for the paper Format Unraveled (on module
  Format) and experiments on utop. I tried not to be too verbose though.

Weng Shiwei later said

  Well, I made a sequel of `format6' post, *Understanding `format6' in
  OCaml by diagrams*

  This time I just use four examples with four diagrams e.g. it's the
  one for `Scanf.sscanf'


  p.s. It's a pity that I missed Gabriel's post [The 6 parameters of
  (’a, ’b, ’c, ’d, ’e, ’f) format6] after writing that one.

[The 6 parameters of (’a, ’b, ’c, ’d, ’e, ’f) format6]

OCaml 4.12.0, first beta release


octachron announced

  The release of OCaml 4.12.0 is close.

  The set of new features has been stabilized, and core opam packages
  already work with this release. After three alpha releases, we have
  created a first beta version to help you adapt your software to the
  new features ahead of the release. Compared to the last alpha, this
  beta contains only three new bug fixes and one change to the standard

  The base compiler can be installed as an opam switch with the
  following commands
  │ opam update
  │ opam switch create 4.12.0~beta1 --repositories=default,beta=git+

  If you want to tweak the configuration of the compiler, you can pick
  configuration options with
  │ opam update
  │ opam switch create <switch_name> --packages=ocaml-variants.4.12.0~beta1+options,<option_list>
  │ --repositories=default,beta=git+
  where <option_list> is a comma separated list of ocaml-option-*
  packages. For instance, for a flambda and afl enabled switch:
  │ opam switch create 4.12.0~beta1+flambda+afl
  │ --packages=ocaml-variants.4.12.0~beta1+options,ocaml-option-flambda,ocaml-option-afl
  │ --repositories=default,beta=git+
  All available options can be listed with "opam search ocaml-option".

  The source code is available at these addresses:

  • <>
  • <>

  If you want to test this version, you may want to install the alpha
  opam repository



  opam repo add alpha

  This alpha repository contains various packages patched with fixes in
  the process of being upstreamed. Once the repository installed, these
  patched packages will take precedence over the non-patched version.

  If you find any bugs, please report them here:

Changes from the third alpha release

Postponed features

  • [9533], [10105], [10127] : Added String.starts_with and
    String.ends_with. (Bernhard Schommer, review by Daniel Bünzli,
    Gabriel Scherer and Alain Frisch)

[9533] <>

[10105] <>

[10127] <>

Additional bug fixes

  • [9096], [10096]: fix a 4.11.0 performance regression in
    classes/objects declared within a function (Gabriel Scherer, review
    by Leo White, report by Sacha Ayoun)

  • [10106], [10112]: some expected-type explanations where forgotten
    after some let-bindings (Gabriel Scherer, review by Thomas Refis and
    Florian Angeletti, report by Daniil Baturin)

  • [9326], [10125]: Gc.set incorrectly handles the three `custom_*'
    fields, causing a performance regression (report by Emilio Jesús
    Gallego Arias, analysis and fix by Stephen Dolan, code by Xavier
    Leroy, review by Hugo Heuzard and Gabriel Scherer)

[9096] <>

[10096] <>

[10106] <>

[10112] <>

[9326] <>

[10125] <>

OCaml for ARM MacOS

  Archive: <>

Deep in this thread, Xavier Leroy said

  It's quite easy to get up to speed using the precompiled OPAM binary
  for macOS/ARM64.

  • Download [opam-2.0.7-arm64-macos].

  • Move it to some directory in your PATH, rename it to `opam', and
    make it executable.  From a Terminal window:
  │ mv ~/Downloads/opam-2.0.7-arm64-macos /usr/local/bin/opam
  │ chmod +x /usr/local/bin/opam

  • Try to execute it: `opam init'.  You will be blocked by the macOS
    security checks, as the binary is not signed.

  • Open Preferences / Security and Privacy.  There should be a notice
    "opam was blocked because…" and an "Allow Anyway" button.  Click on
    that button.

  • Try again to execute `opam init'.  You will be blocked again, but
    now there is an "Open" button.  Click on that button. `opam init'
    should run and install the OCaml 4.10.2 compiler.

  • From now on, you can run `opam' without being blocked.  Use this
    freedom to `opam install' the packages you need.

  • Some packages that depend on external C libraries may fail to
    install because these C libraries are not available. Normally we
    would rely on Homebrew or MacPorts to provide these C libraries, but
    these package collections are still being ported to macOS/ARM64.

  As a reward for these minor inconveniences, you'll get excellent
  performance running OCaml software such as Coq.  Single-core
  performance on a MacBook Air M1 is 20% better than the best x86
  workstation I have access to.


Talk on OCaml Batteries at Houston Functional Programmers


Claude Jager-Rubinson announced

  @UnixJunkie will be speaking (virtually, of course) on *OCaml
  Batteries Included* at Houston Functional Programmers, this coming
  Wednesday, Jan 20 at 7pm (U.S. Central time).  His talk will cover
  Batteries' history, place within the OCaml ecosystem, and comparisons
  with OCaml's other alternative standard libraries.  All are welcome to
  join us, even if you're not from Houston.  Complete details and Zoom
  info are at [].

[] <>

Other OCaml News

From the ocamlcore planet blog

  Here are links from many OCaml blogs aggregated at [OCaml Planet].

  • [Coq 8.13.0 is out]

[OCaml Planet] <>

[Coq 8.13.0 is out] <>


  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

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

  [Alan Schmitt]

[send me a message] <>

[the archive] <>

[RSS feed of the archives] <>

[online] <>

[Alan Schmitt] <>

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

             reply	other threads:[~2021-01-19 14:28 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-19 14:28 Alan Schmitt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-26 17:54 Alan Schmitt
2022-07-19  8:58 Alan Schmitt
2022-07-12  7:59 Alan Schmitt
2022-07-05  7:42 Alan Schmitt
2022-06-28  7:37 Alan Schmitt
2022-06-21  8:06 Alan Schmitt
2022-06-14  9:29 Alan Schmitt
2022-06-07 10:15 Alan Schmitt
2022-05-31 12:29 Alan Schmitt
2022-05-24  8:04 Alan Schmitt
2022-05-17  7:12 Alan Schmitt
2022-05-10 12:30 Alan Schmitt
2022-05-03  9:11 Alan Schmitt
2022-04-26  6:44 Alan Schmitt
2022-04-19  5:34 Alan Schmitt
2022-04-12  8:10 Alan Schmitt
2022-04-05 11:50 Alan Schmitt
2022-03-29  7:42 Alan Schmitt
2022-03-22 13:01 Alan Schmitt
2022-03-15  9:59 Alan Schmitt
2022-03-01 13:54 Alan Schmitt
2022-02-22 12:43 Alan Schmitt
2022-02-08 13:16 Alan Schmitt
2022-02-01 13:00 Alan Schmitt
2022-01-25 12:44 Alan Schmitt
2022-01-11  8:20 Alan Schmitt
2022-01-04  7:56 Alan Schmitt
2021-12-28  8:59 Alan Schmitt
2021-12-21  9:11 Alan Schmitt
2021-12-14 11:02 Alan Schmitt
2021-11-30 10:51 Alan Schmitt
2021-11-16  8:41 Alan Schmitt
2021-11-09 10:08 Alan Schmitt
2021-11-02  8:50 Alan Schmitt
2021-10-19  8:23 Alan Schmitt
2021-09-28  6:37 Alan Schmitt
2021-09-21  9:09 Alan Schmitt
2021-09-07 13:23 Alan Schmitt
2021-08-24 13:44 Alan Schmitt
2021-08-17  6:24 Alan Schmitt
2021-08-10 16:47 Alan Schmitt
2021-07-27  8:54 Alan Schmitt
2021-07-20 12:58 Alan Schmitt
2021-07-06 12:33 Alan Schmitt
2021-06-29 12:24 Alan Schmitt
2021-06-22  9:04 Alan Schmitt
2021-06-01  9:23 Alan Schmitt
2021-05-25  7:30 Alan Schmitt
2021-05-11 14:47 Alan Schmitt
2021-05-04  8:57 Alan Schmitt
2021-04-27 14:26 Alan Schmitt
2021-04-20  9:07 Alan Schmitt
2021-04-06  9:42 Alan Schmitt
2021-03-30 14:55 Alan Schmitt
2021-03-23  9:05 Alan Schmitt
2021-03-16 10:31 Alan Schmitt
2021-03-09 10:58 Alan Schmitt
2021-02-23  9:51 Alan Schmitt
2021-02-16 13:53 Alan Schmitt
2021-02-02 13:56 Alan Schmitt
2021-01-26 13:25 Alan Schmitt
2021-01-12  9:47 Alan Schmitt
2021-01-05 11:22 Alan Schmitt
2020-12-29  9:59 Alan Schmitt
2020-12-22  8:48 Alan Schmitt
2020-12-15  9:51 Alan Schmitt
2020-12-01  8:54 Alan Schmitt
2020-11-03 15:15 Alan Schmitt
2020-10-27  8:43 Alan Schmitt
2020-10-20  8:15 Alan Schmitt
2020-10-06  7:22 Alan Schmitt
2020-09-29  7:02 Alan Schmitt
2020-09-22  7:27 Alan Schmitt
2020-09-08 13:11 Alan Schmitt
2020-09-01  7:55 Alan Schmitt
2020-08-18  7:25 Alan Schmitt
2020-07-28 16:57 Alan Schmitt
2020-07-21 14:42 Alan Schmitt
2020-07-14  9:54 Alan Schmitt
2020-07-07 10:04 Alan Schmitt
2020-06-30  7:00 Alan Schmitt
2020-06-16  8:36 Alan Schmitt
2020-06-09  8:28 Alan Schmitt
2020-05-19  9:52 Alan Schmitt
2020-05-12  7:45 Alan Schmitt
2020-05-05  7:45 Alan Schmitt
2020-04-28 12:44 Alan Schmitt
2020-04-21  8:58 Alan Schmitt
2020-04-14  7:28 Alan Schmitt
2020-04-07  7:51 Alan Schmitt
2020-03-31  9:54 Alan Schmitt
2020-03-24  9:31 Alan Schmitt
2020-03-17 11:04 Alan Schmitt
2020-03-10 14:28 Alan Schmitt
2020-03-03  8:00 Alan Schmitt
2020-02-25  8:51 Alan Schmitt
2020-02-18  8:18 Alan Schmitt
2020-02-04  8:47 Alan Schmitt
2020-01-28 10:53 Alan Schmitt
2020-01-21 14:08 Alan Schmitt
2020-01-14 14:16 Alan Schmitt
2020-01-07 13:43 Alan Schmitt
2019-12-31  9:18 Alan Schmitt
2019-12-17  8:52 Alan Schmitt
2019-12-10  8:21 Alan Schmitt
2019-12-03 15:42 Alan Schmitt
2019-11-26  8:33 Alan Schmitt
2019-11-12 13:21 Alan Schmitt
2019-11-05  6:55 Alan Schmitt
2019-10-15  7:28 Alan Schmitt
2019-09-03  7:35 Alan Schmitt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).