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;">|></span> <span style=3D"color: #557400;=
font-weight: bold;">Intel_hex.</span>records_to_string=20
<span style=3D"color: #9f0d0f;">|></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>
—
</p>
<p>
We are very much looking forward to meeting the OCaml community in London!
</p>
<p>
Cheers,
Alistair & 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>
--=-=-=--