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, 11 Jan 2022 09:20:43 +0100	[thread overview]
Message-ID: <> (raw)

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


Here is the latest OCaml Weekly News, for the week of January 04 to 11,

Table of Contents

New release of PPrint (20220103)
Bogue, the OCaml GUI
Cohttp 5.0.0 and 2.5.6
Multicore OCaml: December 2021 and the Big PR
Set up OCaml 2.0.0-beta12

New release of PPrint (20220103)


François Pottier announced

  I am pleased to announce a new release of PPrint, the pretty-printing
  library, with [improved documentation].

  The documentation can also be viewed offline:

  │ opam update
  │ opam install pprint.20220103
  │ opam install odig
  │ odig odoc                 # this may take some time
  │ odig doc pprint           # this opens the doc in your browser

  Happy pretty-printing!

[improved documentation]

Bogue, the OCaml GUI

  Archive: <>

sanette announced

  I'm happy to announce a brand new version of [Bogue], a GUI (Graphical
  User Interface) library entirely written in `ocaml', using SDL2 for
  hardware accelerated graphics.

  The doc can be found [here], it will be enriched over time.

  Install with `opam install bogue'

  In addition to the library, this installs an executable `boguex' to
  showcase about 50 useful constructions, see `boguex -h' for the list.

  Some screenshots of a demo compiled with the latest version:



  Note that many widgets are not shown in this demo: tables, menus,
  drop-down select lists, knob buttons,… I will add more images to the
  doc when I have some time!

[Bogue] <>

[here] <>

Cohttp 5.0.0 and 2.5.6


Marcello Seri announced

  We are glad to announce the release of version [5.0.0] and [2.5.6] of
  cohttp and its dependent packages.

  The latter is a bug fix release that in particular backports the
  compatibility with the upcoming release 0.15 of core and async.

  The first introduces the breaking changes [announced in the previous
  release]. I append the changelog below, which explains in details the
  changes and emphasizes the breaking changes:



[announced in the previous release]

Cohttp.Header: new implementation (lyrm #747)

  • New implementation of Header modules using an associative list
    instead of a map, with one major semantic change (function `get',
    see below), and some new functions (`clean_dup', `get_multi_concat')
  • More Alcotest tests as well as fuzzing tests for this particular


  The new header implementation uses an associative list instead of a
  map to represent headers and is focused on predictability and
  intuitivity: except for some specific and documented functions, the
  headers are always kept in transmission order, which makes debugging
  easier and is also important for [RFC7230§3.2.2] that states that
  multiple values of a header must be kept in order.

  Also, to get an intuitive function behaviour, no extra work to enforce
  RFCs is done by the basic functions. For example, RFC7230§3.2.2
  requires that a sender does not send multiple values for a non
  list-value header. This particular rule could require the `Header.add'
  function to remove previous values of non-list-value headers, which
  means some changes of the headers would be out of control of the
  user. With the current implementation, an user has to actively call
  dedicated functions to enforce such RFCs (here `Header.clean_dup').

[RFC7230§3.2.2] <>

Semantic changes

  Two functions have a semantic change : `get' and `update'.


    `get' was previously doing more than just returns the value
  associated to a key; it was also checking if the searched header could
  have multiple values: if not, the last value associated to the header
  was returned; otherwise, all the associated values were concatenated
  and returned. This semantics does not match the global idea behind the
  new header implementation, and would also be very inefficient.

  ⁃ The new `get' function only returns the last value associated to the
    searched header.
  ⁃ `get_multi_concat' function has been added to get a result similar
    to the previous `get' function.


  `update' is a pretty new function (#703) and changes are minor and
  related to `get' semantic changes.

  ⁃ `update h k f' is now modifying only the last occurrences of the
    header `k' instead of all its occurrences.
  ⁃ a new function `update_all' function has been added and work on all
    the occurrences of the updated header.

New functions :

  ⁃ `clean_dup' enables the user to clean headers that follows the
    [RFC7230§3.2.2] (no duplicate, except `set-cookie')
  ⁃ `get_multi_concat' has been added to get a result similar to the
    previous `get' function.

[RFC7230§3.2.2] <>

Cohttp.Header: performance improvement (mseri, anuragsoni #778)

    *Breaking* the headers are no-longer lowercased when parsed, the
  headers key comparison is case insensitive instead.

cohttp-lwt-unix: Adopt ocaml-conduit 5.0.0 (smorimoto #787)

  *Breaking* `Conduit_lwt_unix.connect''s `ctx' param type chaged from
   `ctx' to `ctx Lazy.t'

other changes

  • cohttp-mirage: fix deprecated fmt usage (tmcgilchrist #783)
  • lwt_jsoo: Use logs for the warnings and document it (mseri #776)
  • lwt: Use logs to warn users about leaked bodies and document it
    (mseri #771)
  • lwt, lwt_unix: Improve use of logs and the documentation, fix bug in
    the Debug.enable_debug function (mseri #772)
  • lwt_jsoo: Fix exception on connection errors in chrome (mefyl #761)
  • lwt_jsoo: Fix `Lwt.wakeup_exn' `Invalid_arg' exception when a js
    stack overflow happens in the XHR completion handler (mefyl #762).
  • lwt_jsoo: Add test suite (mefyl #764).

  We wish to thank to all the users and the contributors for their help
  leading to this release.

Multicore OCaml: December 2021 and the Big PR


Anil Madhavapeddy announced

  Welcome to the December 2021 [Multicore OCaml] monthly report!  The
  [previous updates] along with this update have been compiled by
  myself, @ctk21, @kayceesrk and @shakthimaan.

  Well, it's finally here! @kayceesrk opened the [Multicore OCaml
  PR#10831] to the main OCaml development repository that represents the
  "minimum viable" implementation of multicore OCaml that we decided on
  in [November's core team review].  The branch pushes the limits of
  GitHub's rendering capability, with around 4000 commits.

  Once the PR was opened just before Christmas, the remaining effort has
  been for a number of developers to pore over [the diff] and look for
  any unexpected changes that crept in during multicore development. A
  large number of code changes, improvements and fixes have been merged
  into the ocaml-multicore trees since the PR was opened to facilitate
  this upstreaming process. We're expecting to have the PR merged during
  January, and then will continue onto the "post-MVP" tasks described
  last month, but working directly from ocaml/ocaml from now on.  We
  therefore remain on track to release OCaml 5.00 in 2022.

  In the multicore ecosystem, progress also continued:
  • `Eio' continues to improve as the recommended effects-based
    direct-style IO library to use with Multicore OCaml.
  • A newer `domainslib.0.4.0' has been released that includes bug fixes
    and API changes.
  • The continuous benchmarking pipeline with further integration
    enhancements between Sandmark and current-bench is making progress.

  We would like to acknowledge the following external contributors as

  • Danny Willems (@dannywillems) for an OCaml implementation of the
    Pippenger benchmark and reporting an undefined behaviour.
  • Matt Pallissard (@mattpallissard) reported an installation issue
    with `Eio' with vendored uring.
  • Edwin Torok (@edwintorok) for contributing a PR to `domainslib' to
    allow use of a per-channel key.

  As always, the Multicore OCaml updates are listed first, which contain
  the upstream efforts, improvements, fixes, test suite, and
  documentation changes. This is followed by the ecosystem updates to
  `Eio', `Tezos', and `Domainslib'.  The Sandmark, sandmark-nightly and
  current-bench tasks are finally listed for your reference.

  /editor’s note: please follow the archive link above for the full

[Multicore OCaml] <>

[previous updates] <>

[Multicore OCaml PR#10831] <>

[November's core team review]

[the diff] <>

Stéphane Lavergne asked and Robin Björklin replied

        To clarify for relative newbies like myself: this would be
        a new way to do concurrent I/O, like Async and Lwt, but
        unlike those, it wouldn't require the use of a promise
        monad? In other words, does this mean that we'll have the
        choice between Async, Lwt and Eio in the near future for
        our concurrent I/O needs?

  That's correct as far as I can tell. This presentation provides an
  introduction to the current state of eio:

Set up OCaml 2.0.0-beta12


Sora Morimoto announced


  • Fallback to the version in which the assets exist if no assets exist
    in the latest opam release.
  • Instruct Cygwin setup to use "sys" symlinks during setup (partial
    workaround for bug with native symlinks in Cygwin setup - some
    depexts may still be affected)



  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: 25652 bytes --]

             reply	other threads:[~2022-01-11  8:21 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-11  8:20 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-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-19 14:28 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).