Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt <[email protected]> Tue, 10 Feb 2026 11:36:33 +0100
Newsgroups gmane.comp.lang.caml.inria
Message-ID <[email protected]>
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hello

Here is the latest OCaml Weekly News, for the week of February 03 to 10,
2026.

Table of Contents
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80

intel_hex.0.3
layoutz 0.0.2 - a tiny DSL for beautiful CLI output in OCaml =F0=9F=AA=B6
New release of Menhir (20260122)
Caml in the Capital - Registrations Open!
An experimental branch of Merlin based on Domains and Effects
Other OCaml News
Old CWN


intel_hex.0.3
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90

  Archive: <https://discuss.ocaml.org/t/ann-intel-hex-0-3/17771/1>


Mikhail announced
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80

  Hi there!

  I am excited to announce the release of the [intel_hex] library. This
  library is a manipulation library that provides functions for reading,
  writing, and creating Intel HEX data, which is a common format used in
  embedded system programming.


  =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  =E2=94=82 Intel_hex.Record.
  =E2=94=82   [
  =E2=94=82       Extended_segment_address 0x0F;
  =E2=94=82       Data (0x0000, "Hello ");
  =E2=94=82       Data (0x0007, "World!");
  =E2=94=82       End_of_file;
  =E2=94=82   ]
  =E2=94=82 |> Intel_hex.records_to_string=20
  =E2=94=82 |> print_endline
  =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  =E2=94=82 :02000002000FED
  =E2=94=82 :0600000048656C6C6F20E6
  =E2=94=82 :06000700576F726C6421CA
  =E2=94=82 :00000001FF
  =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  Also, you can of course read the IHEX object file from other sources:
  =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  =E2=94=82 In_channel.with_open_text "data.hex" Intel_hex.object_of_channel
  =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  =E2=94=82 - : Intel_hex.Object.t =3D=20
  =E2=94=82 {=20
  =E2=94=82   start_linear_address =3D 0;
  =E2=94=82   start_segment_address =3D {cs =3D 0; ip =3D 0};
  =E2=94=82   chunks =3D [(240, "Hello "); (247, "World!")]
  =E2=94=82 }
  =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  Limitations

  32-bitness. To represent 32-bit integers, the library uses the OCaml
  int data type. This may be problematic for 32-bit systems, as it can
  lead to overflow errors, but it works fine for most 64-bit systems.

  Start addressing and extending addressing. Not fully supported for
  real-world use. I would appreciate your pull request on this!


[intel_hex] <https://github.com/dx3mod/intel_hex>


layoutz 0.0.2 - a tiny DSL for beautiful CLI output in OCaml =F0=9F=AA=B6
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=
=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=
=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90

  Archive:
  <https://discuss.ocaml.org/t/ann-layoutz-0-0-2-a-tiny-dsl-for-beautiful-c=
li-output-in-ocaml/17774/1>


Matthieu Court announced
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  Hello all! Been working on [layoutz], a tiny, zero-dep combinator lib
  for making pretty, structured, terminal output: tables, trees, boxes,
  ANSI styled elements, etc.

  Would love to hear how the API feels: Smooth? Any missing primitives
  you'd expect? Many thanks!


[layoutz]
<https://github.com/mattlianje/layoutz/tree/master/layoutz-ocaml>


New release of Menhir (20260122)
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=
=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90

  Archive:
  <https://discuss.ocaml.org/t/ann-new-release-of-menhir-20260122/17764/6>


Continuing this thread, Fran=C3=A7ois Pottier announced
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  I have introduced a printing bug in the Rocq back-end, reported by
  Xavier Leroy. I am releasing version 20260203 today to fix this bug.


Caml in the Capital - Registrations Open!
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=
=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90

  Archive:
  <https://discuss.ocaml.org/t/ann-caml-in-the-capital-registrations-open/1=
7776/1>


Sacha Ayoun announced
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  Hi everyone !

  We are excited to officially invite you to the first Caml in the
  Capital meetup!  We have two fantastic talks planned, some free pizza
  =F0=9F=8D=95 generously sponsored by the OCaml Software Foundation =F0=9F=
=90=AA and great
  company to chat with :grinning_face_with_smiling_eyes:

  =E2=80=A2 *Registration link:* [HERE] *(Please register asap so we can
     anticipate)*
  =E2=80=A2 *Date:* Thursday February 26th from 6:30pm to 8:30pm
  =E2=80=A2 *Location:* Imperial College London, Flowers Building, Room FLOW
     G.47A.


[HERE]
<https://www.eventbrite.sg/e/caml-in-the-capital-feb-2026-tickets-197773061=
4507>

Talks
=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C

=E2=97=8A Compile-time Computation for Caml

  /by Jeremy Yallop/

  (Abstract TBD)


=E2=97=8A Dynamic Verification of OCaml Software with ORTAC/QCheck-STM

  /by Nikolaus Huber/

        In this talk I would like to introduce the QCheck-STM
        plugin for ORTAC, a framework for dynamic verification of
        OCaml code. ORTAC/QCheck-STM consumes OCaml module
        signatures annotated with contracts expressed in the
        Gospel language and generates code for automated runtime
        assertion checking from it. I will highlight some details
        of the implementation of the tool, the structure of the
        generated code, and on errors found in established OCaml
        libraries.

  =E2=80=94

  We are very much looking forward to meeting the OCaml community in
  London!

  Cheers, Alistair & Sacha


An experimental branch of Merlin based on Domains and Effects
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=
=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=
=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90

  Archive:
  <https://discuss.ocaml.org/t/ann-an-experimental-branch-of-merlin-based-o=
n-domains-and-effects/17195/11>


Continuing this thread, Carine Morel announced
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  Hello! For those interested, [here] is the link to the video of the
  talk @pitag and I gave on the subject at Lambda World last year! Don't
  hesitate to ask questions here or under the video!


[here] <https://www.youtube.com/watch?v=3D9JmtVtREAco>


Other OCaml News
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=
=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90

>From the ocaml.org blog
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  Here are links from many OCaml blogs aggregated at [the ocaml.org
  blog].

  =E2=80=A2 [Windows Docker Images]
  =E2=80=A2 [Weeknotes for week 6]
  =E2=80=A2 [More CFI and frame pointers work]
  =E2=80=A2 [OCaml Roundup: January 2026]


[the ocaml.org blog] <https://ocaml.org/blog/>

[Windows Docker Images]
<https://www.tunbury.org/2026/02/09/base-image-builder/>

[Weeknotes for week 6]
<https://jon.recoil.org/blog/2026/02/weeknotes-2026-06.html>

[More CFI and frame pointers work]
<https://lambdafoo.com/posts/2026-02-07-more-cfi-and-frame-pointers.html>

[OCaml Roundup: January 2026]
<https://patrick.sirref.org/ocaml-roundup-january-2026/>


Old CWN
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90

  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
  to the [caml-list].

  [Alan Schmitt]


[send me a message] <mailto:[email protected]>

[the archive] <https://alan.petitepomme.net/cwn/>

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

[caml-list] <https://sympa.inria.fr/sympa/info/caml-list>

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


--=-=-=
Content-Type: text/html; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

<?xml version=3D"1.0" encoding=3D"utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml" lang=3D"en" xml:lang=3D"en">
<head>
<!-- 2026-02-10 Tue 11:35 -->
<meta http-equiv=3D"Content-Type" content=3D"text/html;charset=3Dutf-8" />
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D1"=
 />
<title>OCaml Weekly News</title>
<meta name=3D"generator" content=3D"Org Mode" />
<style type=3D"text/css">
  #content { max-width: 60em; margin: auto; }
  .title  { text-align: center;
             margin-bottom: .2em; }
  .subtitle { text-align: center;
              font-size: medium;
              font-weight: bold;
              margin-top:0; }
  .todo   { font-family: monospace; color: red; }
  .done   { font-family: monospace; color: green; }
  .priority { font-family: monospace; color: orange; }
  .tag    { background-color: #eee; font-family: monospace;
            padding: 2px; font-size: 80%; font-weight: normal; }
  .timestamp { color: #bebebe; }
  .timestamp-kwd { color: #5f9ea0; }
  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
  .underline { text-decoration: underline; }
  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
  p.verse { margin-left: 3%; }
  pre {
    border: 1px solid #e6e6e6;
    border-radius: 3px;
    background-color: #f2f2f2;
    padding: 8pt;
    font-family: monospace;
    overflow: auto;
    margin: 1.2em;
  }
  pre.src {
    position: relative;
    overflow: auto;
  }
  pre.src:before {
    display: none;
    position: absolute;
    top: -8px;
    right: 12px;
    padding: 3px;
    color: #555;
    background-color: #f2f2f299;
  }
  pre.src:hover:before { display: inline; margin-top: 14px;}
  /* Languages per Org manual */
  pre.src-asymptote:before { content: 'Asymptote'; }
  pre.src-awk:before { content: 'Awk'; }
  pre.src-authinfo::before { content: 'Authinfo'; }
  pre.src-c:before { content: 'C'; }
  pre.src-C:before { content: 'C'; }
  /* pre.src-C++ doesn't work in CSS */
  pre.src-clojure:before { content: 'Clojure'; }
  pre.src-css:before { content: 'CSS'; }
  pre.src-D:before { content: 'D'; }
  pre.src-ditaa:before { content: 'ditaa'; }
  pre.src-dot:before { content: 'Graphviz'; }
  pre.src-calc:before { content: 'Emacs Calc'; }
  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
  pre.src-fortran:before { content: 'Fortran'; }
  pre.src-gnuplot:before { content: 'gnuplot'; }
  pre.src-haskell:before { content: 'Haskell'; }
  pre.src-hledger:before { content: 'hledger'; }
  pre.src-java:before { content: 'Java'; }
  pre.src-js:before { content: 'JavaScript'; }
  pre.src-latex:before { content: 'LaTeX'; }
  pre.src-ledger:before { content: 'Ledger'; }
  pre.src-lisp:before { content: 'Lisp'; }
  pre.src-lilypond:before { content: 'Lilypond'; }
  pre.src-lua:before { content: 'Lua'; }
  pre.src-matlab:before { content: 'MATLAB'; }
  pre.src-mscgen:before { content: 'Mscgen'; }
  pre.src-ocaml:before { content: 'Objective Caml'; }
  pre.src-octave:before { content: 'Octave'; }
  pre.src-org:before { content: 'Org mode'; }
  pre.src-oz:before { content: 'OZ'; }
  pre.src-plantuml:before { content: 'Plantuml'; }
  pre.src-processing:before { content: 'Processing.js'; }
  pre.src-python:before { content: 'Python'; }
  pre.src-R:before { content: 'R'; }
  pre.src-ruby:before { content: 'Ruby'; }
  pre.src-sass:before { content: 'Sass'; }
  pre.src-scheme:before { content: 'Scheme'; }
  pre.src-screen:before { content: 'Gnu Screen'; }
  pre.src-sed:before { content: 'Sed'; }
  pre.src-sh:before { content: 'shell'; }
  pre.src-sql:before { content: 'SQL'; }
  pre.src-sqlite:before { content: 'SQLite'; }
  /* additional languages in org.el's org-babel-load-languages alist */
  pre.src-forth:before { content: 'Forth'; }
  pre.src-io:before { content: 'IO'; }
  pre.src-J:before { content: 'J'; }
  pre.src-makefile:before { content: 'Makefile'; }
  pre.src-maxima:before { content: 'Maxima'; }
  pre.src-perl:before { content: 'Perl'; }
  pre.src-picolisp:before { content: 'Pico Lisp'; }
  pre.src-scala:before { content: 'Scala'; }
  pre.src-shell:before { content: 'Shell Script'; }
  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
  /* additional language identifiers per "defun org-babel-execute"
       in ob-*.el */
  pre.src-cpp:before  { content: 'C++'; }
  pre.src-abc:before  { content: 'ABC'; }
  pre.src-coq:before  { content: 'Coq'; }
  pre.src-groovy:before  { content: 'Groovy'; }
  /* additional language identifiers from org-babel-shell-names in
     ob-shell.el: ob-shell is the only babel language using a lambda to put
     the execution function name together. */
  pre.src-bash:before  { content: 'bash'; }
  pre.src-csh:before  { content: 'csh'; }
  pre.src-ash:before  { content: 'ash'; }
  pre.src-dash:before  { content: 'dash'; }
  pre.src-ksh:before  { content: 'ksh'; }
  pre.src-mksh:before  { content: 'mksh'; }
  pre.src-posh:before  { content: 'posh'; }
  /* Additional Emacs modes also supported by the LaTeX listings package */
  pre.src-ada:before { content: 'Ada'; }
  pre.src-asm:before { content: 'Assembler'; }
  pre.src-caml:before { content: 'Caml'; }
  pre.src-delphi:before { content: 'Delphi'; }
  pre.src-html:before { content: 'HTML'; }
  pre.src-idl:before { content: 'IDL'; }
  pre.src-mercury:before { content: 'Mercury'; }
  pre.src-metapost:before { content: 'MetaPost'; }
  pre.src-modula-2:before { content: 'Modula-2'; }
  pre.src-pascal:before { content: 'Pascal'; }
  pre.src-ps:before { content: 'PostScript'; }
  pre.src-prolog:before { content: 'Prolog'; }
  pre.src-simula:before { content: 'Simula'; }
  pre.src-tcl:before { content: 'tcl'; }
  pre.src-tex:before { content: 'TeX'; }
  pre.src-plain-tex:before { content: 'Plain TeX'; }
  pre.src-verilog:before { content: 'Verilog'; }
  pre.src-vhdl:before { content: 'VHDL'; }
  pre.src-xml:before { content: 'XML'; }
  pre.src-nxml:before { content: 'XML'; }
  /* add a generic configuration mode; LaTeX export needs an additional
     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
  pre.src-conf:before { content: 'Configuration File'; }

  table { border-collapse:collapse; }
  caption.t-above { caption-side: top; }
  caption.t-bottom { caption-side: bottom; }
  td, th { vertical-align:top;  }
  th.org-right  { text-align: center;  }
  th.org-left   { text-align: center;   }
  th.org-center { text-align: center; }
  td.org-right  { text-align: right;  }
  td.org-left   { text-align: left;   }
  td.org-center { text-align: center; }
  dt { font-weight: bold; }
  .footpara { display: inline; }
  .footdef  { margin-bottom: 1em; }
  .figure { padding: 1em; }
  .figure p { text-align: center; }
  .equation-container {
    display: table;
    text-align: center;
    width: 100%;
  }
  .equation {
    vertical-align: middle;
  }
  .equation-label {
    display: table-cell;
    text-align: right;
    vertical-align: middle;
  }
  .inlinetask {
    padding: 10px;
    border: 2px solid gray;
    margin: 10px;
    background: #ffffcc;
  }
  #org-div-home-and-up
   { text-align: right; font-size: 70%; white-space: nowrap; }
  textarea { overflow-x: auto; }
  .linenr { font-size: smaller }
  .code-highlighted { background-color: #ffff00; }
  .org-info-js_info-navigation { border-style: none; }
  #org-info-js_console-label
    { font-size: 10px; font-weight: bold; white-space: nowrap; }
  .org-info-js_search-highlight
    { background-color: #ffff00; color: #000000; font-weight: bold; }
  .org-svg { }
</style>
<style type=3D"text/css">#table-of-contents h2 { display: none } .title { d=
isplay: none } .authorname { text-align: right }</style>
<style type=3D"text/css">.outline-2 {border-top: 1px solid black;}</style>
</head>
<body>
<div id=3D"content" class=3D"content">
<h1 class=3D"title">OCaml Weekly News</h1>
<p>
<a href=3D"https://alan.petitepomme.net/cwn/2026.02.03.html">Previous Week<=
/a> <a href=3D"https://alan.petitepomme.net/cwn/index.html">Up</a> <a href=
=3D"https://alan.petitepomme.net/cwn/2026.02.17.html">Next Week</a>
</p>

<p>
Hello
</p>

<p>
Here is the latest OCaml Weekly News, for the week of February 03 to 10, 20=
26.
</p>

<div id=3D"table-of-contents" role=3D"doc-toc">
<h2>Table of Contents</h2>
<div id=3D"text-table-of-contents" role=3D"doc-toc">
<ul>
<li><a href=3D"#1">intel_hex.0.3</a></li>
<li><a href=3D"#2">layoutz 0.0.2 - a tiny DSL for beautiful CLI output in O=
Caml =F0=9F=AA=B6</a></li>
<li><a href=3D"#3">New release of Menhir (20260122)</a></li>
<li><a href=3D"#4">Caml in the Capital - Registrations Open!</a></li>
<li><a href=3D"#5">An experimental branch of Merlin based on Domains and Ef=
fects</a></li>
<li><a href=3D"#6">Other OCaml News</a></li>
<li><a href=3D"#orga5306dd">Old CWN</a></li>
</ul>
</div>
</div>
<div id=3D"outline-container-1" class=3D"outline-2">
<h2 id=3D"1">intel_hex.0.3</h2>
<div class=3D"outline-text-2" id=3D"text-1">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-intel-hex-0-3/17771/1">=
https://discuss.ocaml.org/t/ann-intel-hex-0-3/17771/1</a>
</p>
</div>
<div id=3D"outline-container-orgf4c1818" class=3D"outline-3">
<h3 id=3D"orgf4c1818">Mikhail announced</h3>
<div class=3D"outline-text-3" id=3D"text-orgf4c1818">
<p>
Hi there!
</p>

<p>
I am excited to announce the release of the <a href=3D"https://github.com/d=
x3mod/intel_hex">intel_hex</a> library. This library is a manipulation libr=
ary that provides functions for reading, writing, and creating Intel HEX da=
ta, which is a common format used in embedded system programming.
</p>


<div class=3D"org-src-container">
<pre class=3D"src src-ocaml"><code><span style=3D"color: #557400; font-weig=
ht: bold;">Intel_hex.Record.</span>
  [
      <span style=3D"color: #242521;">Extended_segment_address</span> 0x0F;
      <span style=3D"color: #242521;">Data</span> (0x0000, <span style=3D"c=
olor: #ca3400;">"Hello "</span>);
      <span style=3D"color: #242521;">Data</span> (0x0007, <span style=3D"c=
olor: #ca3400;">"World!"</span>);
      <span style=3D"color: #557400; font-weight: bold;">End_of_file</span>;
  ]
<span style=3D"color: #9f0d0f;">|&gt;</span> <span style=3D"color: #557400;=
 font-weight: bold;">Intel_hex.</span>records_to_string=20
<span style=3D"color: #9f0d0f;">|&gt;</span> print_endline
</code></pre>
</div>

<pre class=3D"example" id=3D"orgb76e988">
:02000002000FED
:0600000048656C6C6F20E6
:06000700576F726C6421CA
:00000001FF
</pre>

<p>
Also, you can of course read the IHEX object file from other sources:
</p>
<div class=3D"org-src-container">
<pre class=3D"src src-ocaml"><code><span style=3D"color: #557400; font-weig=
ht: bold;">In_channel.</span>with_open_text <span style=3D"color: #ca3400;"=
>"data.hex"</span> <span style=3D"color: #557400; font-weight: bold;">Intel=
_hex.</span>object_of_channel
</code></pre>
</div>

<div class=3D"org-src-container">
<pre class=3D"src src-ocaml"><code>- : <span style=3D"color: #557400; font-=
weight: bold;">Intel_hex.Object.</span>t =3D=20
{=20
  start_linear_address =3D 0;
  start_segment_address =3D {cs =3D 0; ip =3D 0};
  chunks =3D [(240, <span style=3D"color: #ca3400;">"Hello "</span>); (247,=
 <span style=3D"color: #ca3400;">"World!"</span>)]
}
</code></pre>
</div>

<p>
Limitations
</p>

<p>
32-bitness. To represent 32-bit integers, the library uses the OCaml int da=
ta type. This may be problematic for 32-bit systems, as it can lead to over=
flow errors, but it works fine for most 64-bit systems.
</p>

<p>
Start addressing and extending addressing. Not fully supported for real-wor=
ld use. I would appreciate your pull request on this!
</p>
</div>
</div>
</div>
<div id=3D"outline-container-2" class=3D"outline-2">
<h2 id=3D"2">layoutz 0.0.2 - a tiny DSL for beautiful CLI output in OCaml =
=F0=9F=AA=B6</h2>
<div class=3D"outline-text-2" id=3D"text-2">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-layoutz-0-0-2-a-tiny-ds=
l-for-beautiful-cli-output-in-ocaml/17774/1">https://discuss.ocaml.org/t/an=
n-layoutz-0-0-2-a-tiny-dsl-for-beautiful-cli-output-in-ocaml/17774/1</a>
</p>
</div>
<div id=3D"outline-container-org1355e3b" class=3D"outline-3">
<h3 id=3D"org1355e3b">Matthieu Court announced</h3>
<div class=3D"outline-text-3" id=3D"text-org1355e3b">
<p>
Hello all! Been working on <a href=3D"https://github.com/mattlianje/layoutz=
/tree/master/layoutz-ocaml">layoutz</a>, a tiny, zero-dep combinator lib fo=
r making pretty, structured, terminal output: tables, trees, boxes, ANSI st=
yled elements, etc.
</p>

<p>
Would love to hear how the API feels: Smooth? Any missing primitives you'd =
expect? Many thanks!
</p>
</div>
</div>
</div>
<div id=3D"outline-container-3" class=3D"outline-2">
<h2 id=3D"3">New release of Menhir (20260122)</h2>
<div class=3D"outline-text-2" id=3D"text-3">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-new-release-of-menhir-2=
0260122/17764/6">https://discuss.ocaml.org/t/ann-new-release-of-menhir-2026=
0122/17764/6</a>
</p>
</div>
<div id=3D"outline-container-orgee79b52" class=3D"outline-3">
<h3 id=3D"orgee79b52">Continuing this thread, Fran=C3=A7ois Pottier announc=
ed</h3>
<div class=3D"outline-text-3" id=3D"text-orgee79b52">
<p>
I have introduced a printing bug in the Rocq back-end, reported by Xavier L=
eroy. I am releasing version 20260203 today to fix this bug.
</p>
</div>
</div>
</div>
<div id=3D"outline-container-4" class=3D"outline-2">
<h2 id=3D"4">Caml in the Capital - Registrations Open!</h2>
<div class=3D"outline-text-2" id=3D"text-4">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-caml-in-the-capital-reg=
istrations-open/17776/1">https://discuss.ocaml.org/t/ann-caml-in-the-capita=
l-registrations-open/17776/1</a>
</p>
</div>
<div id=3D"outline-container-org28b1f7b" class=3D"outline-3">
<h3 id=3D"org28b1f7b">Sacha Ayoun announced</h3>
<div class=3D"outline-text-3" id=3D"text-org28b1f7b">
<p>
Hi everyone !
</p>

<p>
We are excited to officially invite you to the first Caml in the Capital me=
etup!
We have two fantastic talks planned, some free pizza =F0=9F=8D=95 generousl=
y sponsored by the OCaml Software Foundation =F0=9F=90=AA and great company=
 to chat with :grinning_face_with_smiling_eyes:
</p>

<ul class=3D"org-ul">
<li><b>Registration link:</b> <a href=3D"https://www.eventbrite.sg/e/caml-i=
n-the-capital-feb-2026-tickets-1977730614507">HERE</a> <b>(Please register =
asap so we can anticipate)</b></li>
<li><b>Date:</b> Thursday February 26th from 6:30pm to 8:30pm</li>
<li><b>Location:</b> Imperial College London, Flowers Building, Room FLOW G=
.47A.</li>
</ul>
</div>
<div id=3D"outline-container-orga637eb3" class=3D"outline-4">
<h4 id=3D"orga637eb3">Talks</h4>
<div class=3D"outline-text-4" id=3D"text-orga637eb3">
</div>
<ul class=3D"org-ul">
<li><a id=3D"orge57bc6f"></a>Compile-time Computation for Caml<br />
<div class=3D"outline-text-5" id=3D"text-orge57bc6f">
<p>
<i>by Jeremy Yallop</i>
</p>

<p>
(Abstract TBD)
</p>
</div>
</li>
<li><a id=3D"orgb8a5eab"></a>Dynamic Verification of OCaml Software with OR=
TAC/QCheck-STM<br />
<div class=3D"outline-text-5" id=3D"text-orgb8a5eab">
<p>
<i>by Nikolaus Huber</i>
</p>

<blockquote>
<p>
In this talk I would like to introduce the QCheck-STM plugin for ORTAC, a f=
ramework for dynamic verification of OCaml code. ORTAC/QCheck-STM consumes =
OCaml module signatures annotated with contracts expressed in the Gospel la=
nguage and generates code for automated runtime assertion checking from it.=
 I will highlight some details of the implementation of the tool, the struc=
ture of the generated code, and on errors found in established OCaml librar=
ies.
</p>
</blockquote>

<p>
&mdash;
</p>

<p>
We are very much looking forward to meeting the OCaml community in London!
</p>

<p>
Cheers,
Alistair &amp; Sacha
</p>
</div>
</li>
</ul>
</div>
</div>
</div>
<div id=3D"outline-container-5" class=3D"outline-2">
<h2 id=3D"5">An experimental branch of Merlin based on Domains and Effects<=
/h2>
<div class=3D"outline-text-2" id=3D"text-5">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-an-experimental-branch-=
of-merlin-based-on-domains-and-effects/17195/11">https://discuss.ocaml.org/=
t/ann-an-experimental-branch-of-merlin-based-on-domains-and-effects/17195/1=
1</a>
</p>
</div>
<div id=3D"outline-container-orga92c1f1" class=3D"outline-3">
<h3 id=3D"orga92c1f1">Continuing this thread, Carine Morel announced</h3>
<div class=3D"outline-text-3" id=3D"text-orga92c1f1">
<p>
Hello! For those interested, <a href=3D"https://www.youtube.com/watch?v=3D9=
JmtVtREAco">here</a> is the link to the video of the talk @pitag and I gave=
 on the subject at Lambda World last year! Don't hesitate to ask questions =
here or under the video!
</p>
</div>
</div>
</div>
<div id=3D"outline-container-6" class=3D"outline-2">
<h2 id=3D"6">Other OCaml News</h2>
<div class=3D"outline-text-2" id=3D"text-6">
</div>
<div id=3D"outline-container-orgf5e4284" class=3D"outline-3">
<h3 id=3D"orgf5e4284">From the ocaml.org blog</h3>
<div class=3D"outline-text-3" id=3D"text-orgf5e4284">
<p>
Here are links from many OCaml blogs aggregated at <a href=3D"https://ocaml=
.org/blog/">the ocaml.org blog</a>.
</p>

<ul class=3D"org-ul">
<li><a href=3D"https://www.tunbury.org/2026/02/09/base-image-builder/">Wind=
ows Docker Images</a></li>
<li><a href=3D"https://jon.recoil.org/blog/2026/02/weeknotes-2026-06.html">=
Weeknotes for week 6</a></li>
<li><a href=3D"https://lambdafoo.com/posts/2026-02-07-more-cfi-and-frame-po=
inters.html">More CFI and frame pointers work</a></li>
<li><a href=3D"https://patrick.sirref.org/ocaml-roundup-january-2026/">OCam=
l Roundup: January 2026</a></li>
</ul>
</div>
</div>
</div>
<div id=3D"outline-container-orga5306dd" class=3D"outline-2">
<h2 id=3D"orga5306dd">Old CWN</h2>
<div class=3D"outline-text-2" id=3D"text-orga5306dd">
<p>
If you happen to miss a CWN, you can <a href=3D"mailto:alan.schmitt@polytec=
hnique.org">send me a message</a> and I'll mail it to you, or go take a loo=
k at <a href=3D"https://alan.petitepomme.net/cwn/">the archive</a> or the <=
a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive=
s</a>.
</p>

<p>
If you also wish to receive it every week by mail, you may subscribe to the=
 <a href=3D"https://sympa.inria.fr/sympa/info/caml-list">caml-list</a>.
</p>

<div class=3D"authorname" id=3D"org9af4307">
<p>
<a href=3D"https://alan.petitepomme.net/">Alan Schmitt</a>
</p>

</div>
</div>
</div>
</div>
</body>
</html>


--=-=-=--