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

Alan Schmitt
2020-03-24T09:31:28Z

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

Hello

Here is the latest OCaml Weekly News, for the week of March 17 to 24,
2020.

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

Luv 0.5.1 — a libuv binding — Windows support
resto 0.2 released
Bisect_ppx 2.0.0 — code coverage for OCaml with nice HTML reports
OCaml 4.09.1 released
Cookie 0.1.6
First release of lwt-pipeline
Using Ocaml as scripting language - piping sh commands
Old CWN

Luv 0.5.1 — a libuv binding — Windows support
═════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/luv-0-5-1-a-libuv-binding-windows-support/5334/1>

Anton Bachin announced
──────────────────────

I am pleased to announce release [0.5.1] of [**Luv**]. The main change
is the addition of Windows support, which makes Luv fully
cross-platform.

Accordingly, Luv 0.5.1 is now installable from both the main opam
repo, and from opam-repository-mingw.

<https://github.com/aantron/luv>

Also, as a side effect of the build system refactoring that was needed
to support Windows, Luv's build system no longer requires Python, and
supports cross-compilation.

The other noteworthy change in release 0.5.1 is a routine upgrade of
the vendored libuv to its latest version, [1.35.0].

[0.5.1] <https://github.com/aantron/luv/releases/tag/0.5.1>

[**Luv**] <https://github.com/aantron/luv>

[1.35.0] <https://github.com/libuv/libuv/releases/tag/v1.35.0>

resto 0.2 released
══════════════════

Archive: <https://discuss.ocaml.org/t/ann-resto-0-2-released/5028/2>

Raphaël Proust announced
────────────────────────

Releases of `resto' 0.3 and 0.4
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

On behalf of Nomadic Labs, I'm happy to announce the release of
versions 0.3 and 0.4 of `resto'. Both versions are available through
`opam' and available on <https://gitlab.com/nomadic-labs/resto>.

The main change in 0.3 is to depend on `json-data-encoding', the fork
of the unmaintained `ocplib-json-typed'.

The changes of 0.4 are more invasive and require users changes:
• handle the new ``Gone' response code, and
• pass `gettimeofday' manually.

This last feature removes a dependency from `resto-cohttp' to `Unix',
and thus helps with use within a `js_of_ocaml' environment.

Bisect_ppx 2.0.0 — code coverage for OCaml with nice HTML reports
═════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/bisect-ppx-2-0-0-code-coverage-for-ocaml-with-nice-html-reports/5338/1>

Anton Bachin announced
──────────────────────

I am pleased to announce [release 2.0.0] of [**Bisect_ppx**], the
OCaml coverage tool, which helps you see which parts of your code are
not being tested.

<https://aws1.discourse-cdn.com/standard11/uploads/ocaml/original/2X/1/1911adc6af898b6f4efd7dc69d2c1f90699031ba.gif>

This release is a major upgrade. The highlights are:

• Support for BuckleScript, js_of_ocaml, and esy. In other words,
Bisect_ppx now compiles to both native code and JS, and is published
in both opam and npm.
• The ability to [send reports automatically] from Travis and CircleCI
to Coveralls and Codecov. More integrations can be added over time.
• The awkward `(*BISECT-IGNORE*)' comments for excluding code from
instrumentation have been replaced by AST attributes like
`[@coverage off]'
(<https://github.com/aantron/bisect_ppx#Exclusion>).
• A new, more principled instrumentation algorithm.
• A new reporter command line based on [Cmdliner]. Run
`bisect-ppx-report --help' to get started with it.
• Syntax highlighting.

You are invited to peruse the all-new [README] for details :)

Several features have been deprecated; mostly command-line flags. You
can see the list in the *Deprecations* section of the
[changelog]. However, it may be easier to simply try using Bisect_ppx
as before – it will warn you if you use a deprecated flag. The
deprecated flags will be removed in Bisect_ppx 2.1.0, expected around
July 2020.

Happy testing!

<https://github.com/aantron/bisect_ppx>

[release 2.0.0]
<https://github.com/aantron/bisect_ppx/releases/tag/2.0.0>

[**Bisect_ppx**] <https://github.com/aantron/bisect_ppx>

[send reports automatically]
<https://github.com/aantron/bisect_ppx#Coveralls>

[Cmdliner] <https://erratique.ch/software/cmdliner/doc/Cmdliner>

[README] <https://github.com/aantron/bisect_ppx#readme>

[changelog] <https://github.com/aantron/bisect_ppx/releases/tag/2.0.0>

OCaml 4.09.1 released
═════════════════════

Archive: <https://discuss.ocaml.org/t/ocaml-4-09-1-released/5341/1>

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

We have the pleasure of celebrating the anniversary of the first
spacewalk, conducted by Alexei Leonov, by announcing the release of
OCaml version 4.09.1. This is mainly a bug-fix release, with a
handful of configuration fixes and a GC fix backported from 4.10.0
. See the list of changes below for more details.

It is (or soon will be) available as a set of OPAM switches, and as a
source download here:

<https://github.com/ocaml/ocaml/archive/4.09.1.tar.gz>

Changes in 4.09.1:
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

• [#9073], [#9120]: fix incorrect GC ratio multiplier when allocating
custom blocks with caml_alloc_custom_mem in runtime/custom.c (Markus
Mottl, review by Gabriel Scherer and Damien Doligez)

• [#8855], [#8858]: Links for tools not created when installing with
–disable-installing-byecode-programs (e.g. ocamldep.opt installed,
but ocamldep link not created) (David Allsopp, report by Thomas
Leonard)

• [#8947], [#9134], [#9302]: fix/improve support for the BFD library
(Sébastien Hinderer, review by Damien Doligez and David Allsopp)

• [#8953], [#8954]: Fix error submessages in the toplevel: do not
display dummy locations (Armaël Guéneau, review by Gabriel Scherer)

• [#8965], [#8979]: Alpine build failure caused by
check-parser-uptodate-or-warn.sh (Gabriel Scherer and David Allsopp,
report by Anton Kochkov)

• [#8985], [#8986]: fix generation of the primitives when the locale
collation is incompatible with C. (David Allsopp, review by Nicolás
Ojeda Bär, report by Sebastian Rasmussen)

• [#9050], [#9076]: install missing compilerlibs/ocamlmiddleend
archives (Gabriel Scherer, review by Florian Angeletti, report by
Olaf Hering)

• [#9144], [#9180]: multiple definitions of global variables in the C
runtime, causing problems with GCC 10.0 and possibly with other C
compilers (Xavier Leroy, report by Jürgen Reuter, review by Mark
Shinwell)

• [#9180]: pass -fno-common option to C compiler when available, so as
to detect problematic multiple definitions of global variables in
the C runtime (Xavier Leroy, review by Mark Shinwell)

• [#9128]: Fix a bug in bytecode mode which could lead to a
segmentation fault. The bug was caused by the fact that the atom
table shared a page with some bytecode. The fix makes sure both the
atom table and the minor heap have their own pages. (Jacques-Henri
Jourdan, review by Stephen Dolan, Xavier Leroy and Gabriel Scherer)

[#9073] <https://github.com/ocaml/ocaml/issues/9073>

[#9120] <https://github.com/ocaml/ocaml/issues/9120>

[#8855] <https://github.com/ocaml/ocaml/issues/8855>

[#8858] <https://github.com/ocaml/ocaml/issues/8858>

[#8947] <https://github.com/ocaml/ocaml/issues/8947>

[#9134] <https://github.com/ocaml/ocaml/issues/9134>

[#9302] <https://github.com/ocaml/ocaml/issues/9302>

[#8953] <https://github.com/ocaml/ocaml/issues/8953>

[#8954] <https://github.com/ocaml/ocaml/issues/8954>

[#8965] <https://github.com/ocaml/ocaml/issues/8965>

[#8979] <https://github.com/ocaml/ocaml/issues/8979>

[#8985] <https://github.com/ocaml/ocaml/issues/8985>

[#8986] <https://github.com/ocaml/ocaml/issues/8986>

[#9050] <https://github.com/ocaml/ocaml/issues/9050>

[#9076] <https://github.com/ocaml/ocaml/issues/9076>

[#9144] <https://github.com/ocaml/ocaml/issues/9144>

[#9180] <https://github.com/ocaml/ocaml/issues/9180>

[#9128] <https://github.com/ocaml/ocaml/issues/9128>

Cookie 0.1.6
════════════

Archive: <https://discuss.ocaml.org/t/ann-cookie-0-1-6/5346/1>

Ulrik Strid announced
─────────────────────

I recently released a cookie library. It can parse and create cookie
headers (`list((string, string)' which both Cohttp and Httpaf uses),
both `Set-Cookie' and `Cookie' so it works on both client and
server. It should be compliant with
<https://tools.ietf.org/html/rfc6265> and I have a pretty good test
suite for the parsing of cookies at least.

I couldn’t find a standalone library before this so I decided to
create one since I need it for my web framework, `Morph'.

The next step is to create and publish integrations with
[`ocaml-session'] which I have started.

• Repo: <https://github.com/ulrikstrid/ocaml-cookie>
• Docs: <https://ulrikstrid.github.io/ocaml-cookie>

[`ocaml-session'] <https://github.com/inhabitedtype/ocaml-session>

First release of lwt-pipeline
═════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-first-release-of-lwt-pipeline/4220/2>

Raphaël Proust announced
────────────────────────

A second release of `lwt-pipeline' (v0.2) is available through
`opam'. This new release makes no change to the code and only affects
the following:

• looser constraints on versions of `dune' dependency,
• tests,
• tests are executed in CI,
• minor documentation improvements.

Using Ocaml as scripting language - piping sh commands
══════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/using-ocaml-as-scripting-language-piping-sh-commands/5366/1>

Nicolas Tollenaere announced
────────────────────────────

I am trying to use ocaml to pipe the result of a command to another (I
would also be interested in feeding a string or a io stream into a sh
command). For example, I would like to do the equivalent of cat
foo.txt | grep thing, or pipe the result of one of my ocaml function
into grep.

Quite surprinsingly, neither the Stdlib or Batteries Sys modules
expose any way to handle the output of Sys.command directly (I would
have thought there would be optional input and output arguments
defaulting to stdin and stdout, or something along that). Batteries IO
module does expose a pipe function but it's not clear for me how it
would interact with the Sys module. Any ideas or other modules/package
I could use ?

Nicolás Ojeda Bär suggested
───────────────────────────

I think you may be interested by
<https://github.com/janestreet/shexp>.

Nicolas Tollenaere then said
────────────────────────────

@grayswandyr @nojb Thanks for the suggestion. I just found shcaml
<http://tov.github.io/shcaml/doc/> and I was going to give it a try,
do you know how it compares to shexp ?

David Chemouil replied
──────────────────────

AFAIK shcaml is unmaintained, but the approach is very nice indeed.

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

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

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

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

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