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

Alan Schmitt
2020-01-28T10:54:00Z

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

Hello

Here is the latest OCaml Weekly News, for the week of January 21 to 28,
2020.

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

New release of Menhir (20200123)
Ocaml cross compiler?
Two master internship proposals to explore social and technical aspects of the creation of the OCaml and Coq platforms
Proper way to allocate an OCaml string from C code in OCaml 4.10?
OCaml 4.10.0, second beta
Old CWN

New release of Menhir (20200123)
════════════════════════════════

Archive:
<https://sympa.inria.fr/sympa/arc/caml-list/2020-01/msg00040.html>

François Pottier announced
──────────────────────────

It is my pleasure to announce a new release of Menhir, the LR(1)
parser generator.

┌────
│ opam update
│ opam install menhir
│ opam install coq-menhirlib # if you wish to use menhir --coq
└────

There are no new features, only a significant change in the manner in
which Menhir is built:

• Menhir is now built and installed by dune. This should make life
easier for Menhir's developers: in particular, `make test' and `make
speed' can be run straight away and do not requiring installing
Menhir first. This should also make compilation much faster on
multi-core machines. (Contributed by Nicolás Ojeda Bär, to whom many
thanks are due.)

• There used to be a distinction between two slightly different ways
of installing Menhir, namely with and without `ocamlfind'. This
distinction disappears. The command line switch
`--suggest-ocamlfind' is deprecated and causes Menhir to print
`false'.

We hope that these changes do not break any of the code that relies on
Menhir today. Please report any problems that you might
encounter. Happy hacking!

Ocaml cross compiler?
═════════════════════

Archive: <https://discuss.ocaml.org/t/ocaml-cross-compiler/1494/7>

Deep in this thread, Dmitry Ponyatov asked
──────────────────────────────────────────

What about embedded targets like Cortex-M (STM32F3/F4)? How much
memory should it have to have to run OCaml-compiled programs?

Ivan Gotovchits replied
───────────────────────

You may find this [page] interesting. To summarize, with _a lot of
work_ you can make a subset of OCaml programs runnable on a
microcontroller. You will also need to rewrite OCaml's runtime and
develop a new GC for it.

In real life, no, you can't run OCaml on a microcontroller. You need
at least a couple of megabytes of normal RAM with MMU.

[page] <http://www.algo-prog.info/ocapic/web/index.php?id=ocapic>

Ivan Gotovchits then added
──────────────────────────

Hmm, found this [project], that is also quite relevant to you, it is
quite alive, so maybe you have chances :)

[project] <https://github.com/stevenvar/OMicroB>

Two master internship proposals to explore social and technical aspects of the creation of the OCaml and Coq platforms
══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/two-master-internship-proposals-to-explore-social-and-technical-aspects-of-the-creation-of-the-ocaml-and-coq-platforms/5073/1>

Théo Zimmermann announced
─────────────────────────

We are looking for candidates for the following two internships
intended to prefigure the creation of the OCaml and Coq platforms:
• a first internship is focused on exploring technical aspects:
<https://www.irif.fr/_media/users/theo/internship_proposal_platform_tech.pdf>
• a second internship is focused on exploring social and policy
aspects:
<https://www.irif.fr/_media/users/theo/internship_proposal_platform_social.pdf>

Please feel free to forward this announcement. Interested students
should send their resume and cover letter at
[yrg@irif.fr](<mailto:yrg@irif.fr>) and
[theo@irif.fr](<mailto:theo@irif.fr>).

Yann Régis-Gianas (Inria, IRIF, OCaml Foundation) and Théo Zimmermann
(Inria, IRIF, Coq development team)

Proper way to allocate an OCaml string from C code in OCaml 4.10?
═════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/proper-way-to-allocate-an-ocaml-string-from-c-code-in-ocaml-4-10/5075/1>

Rwmjones asked
──────────────

Previously to allocate a string with explicit length (ie. one which
may contain \0 characters) in C code we have used:

┌────
│ strv = caml_alloc_string (count);
│ memcpy (String_val (strv), str, count);
└────

In OCaml 4.10 this doesn't compile because String_val returns a `const
char *'.

I could change String_val to Bytes_val, but that feels wrong. The
runtime seems to use `&Byte_u (strv, 0)'.

It's a shame there's not a caml_copy_string_len function, but what is
the proper way to do this for OCaml 4.10+, especially a way that won't
break in future and will be compatible with multicore?

yallop suggested
────────────────

You can use [`caml_alloc_initialized_string']:

┌────
│ CAMLextern value caml_alloc_initialized_string (mlsize_t len, const char *);
└────

[`caml_alloc_initialized_string']
<https://github.com/ocaml/ocaml/blob/d408e58ea15ec890a2c6d98441d261db51a6735d/runtime/caml/alloc.h#L38~>

OCaml 4.10.0, second beta
═════════════════════════

Archive: <https://discuss.ocaml.org/t/ocaml-4-10-0-second-beta/5083/1>

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

The release of OCaml 4.10.0 is near. We have released a second beta
version to help you adapt your softwares and libraries to the new
features ahead of the release.

This new beta contains an update to the internal runtime API that
should make it easier to maintain compatibility across version for
expert users; and a small fix for the analysis of recursive values.

The source code is available at these addresses:

<https://github.com/ocaml/ocaml/archive/4.10.0+beta2.tar.gz>
<https://caml.inria.fr/pub/distrib/ocaml-4.10/ocaml-4.10.0+beta2.tar.gz>

The compiler can also be installed as an OPAM switch with one of the
following commands.
┌────
│ opam switch create ocaml-variants.4.10.0+beta1 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git
└────
or
┌────
│ opam switch create ocaml-variants.4.10.0+beta1+<VARIANT> --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git
└────
where you replace <VARIANT> with one of these:
• afl
• flambda
• fp
• fp+flambda

For a better experience, you can use the opam alpha repository
provided by:
┌────
│ opam repository add alpha git://github.com/kit-ty-kate/opam-alpha-repository.git
└────
This repository contains a handful of temporary patched packages, that
you can use while waiting for the packages to be properly patched.
This repository should not be used in production and you probably want
to install it only for the beta switch.

We want to know about all bugs. Please report them here:

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

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