No subject


Tue Mar 30 07:56:08 PDT 2021


=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=
=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=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 [OCaml Planet].

  =E2=80=A2 [New Try-Alt-Ergo]
  =E2=80=A2 [TZComet's New Token Viewer]


[OCaml Planet] <http://ocaml.org/community/planet/>

[New Try-Alt-Ergo]
<https://www.ocamlpro.com/2021/03/29/new-try-alt-ergo/>

[TZComet's New Token Viewer]
<https://seb.mondet.org/b/0012-tzcomet-token-viewer.html>


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
  [online].

  [Alan Schmitt]


[send me a message] <mailto:alan.schmitt at polytechnique.org>

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

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

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

[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>
<!-- 2021-03-30 Tue 16:50 -->
<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">
 <!--/*--><![CDATA[/*><!--*/
  .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 #ccc;
    box-shadow: 3px 3px 3px #eee;
    padding: 8pt;
    font-family: monospace;
    overflow: auto;
    margin: 1.2em;
  }
  pre.src {
    position: relative;
    overflow: visible;
    padding-top: 1.2em;
  }
  pre.src:before {
    display: none;
    position: absolute;
    background-color: white;
    top: -10px;
    right: 10px;
    padding: 3px;
    border: 1px solid black;
  }
  pre.src:hover:before { display: inline;}
  /* Languages per Org manual */
  pre.src-asymptote:before { content: 'Asymptote'; }
  pre.src-awk:before { content: 'Awk'; }
  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 { width: 90%; }
  /*]]>*/-->
</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>
<script type=3D"text/javascript">
/*
@licstart  The following is the entire license notice for the
JavaScript code in this tag.

Copyright (C) 2012-2020 Free Software Foundation, Inc.

The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version.  The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.

As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.


@licend  The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
 function CodeHighlightOn(elem, id)
 {
   var target =3D document.getElementById(id);
   if(null !=3D target) {
     elem.cacheClassElem =3D elem.className;
     elem.cacheClassTarget =3D target.className;
     target.className =3D "code-highlighted";
     elem.className   =3D "code-highlighted";
   }
 }
 function CodeHighlightOff(elem, id)
 {
   var target =3D document.getElementById(id);
   if(elem.cacheClassElem)
     elem.className =3D elem.cacheClassElem;
   if(elem.cacheClassTarget)
     target.className =3D elem.cacheClassTarget;
 }
/*]]>*///-->
</script>
</head>
<body>
<div id=3D"content">
<h1 class=3D"title">OCaml Weekly News</h1>
<p>
<a href=3D"https://alan.petitepomme.net/cwn/2021.03.23.html">Previous Week<=
/a> <a href=3D"https://alan.petitepomme.net/cwn/index.html">Up</a> <a href=
=3D"https://alan.petitepomme.net/cwn/2021.04.06.html">Next Week</a>
</p>

<p>
Hello
</p>

<p>
Here is the latest OCaml Weekly News, for the week of March 23 to 30, 2021.
</p>

<div id=3D"table-of-contents">
<h2>Table of Contents</h2>
<div id=3D"text-table-of-contents">
<ul>
<li><a href=3D"#1">Theorem Proving with Coq and Ocaml</a></li>
<li><a href=3D"#2">ocaml-aws 1.2</a></li>
<li><a href=3D"#3">Release of <code>fmlib.0.2.0</code></a></li>
<li><a href=3D"#4">soupault: a static website generator based on HTML rewri=
ting</a></li>
<li><a href=3D"#5">Timere-parse 0.0.2, natural language parsing of date, ti=
me and duration</a></li>
<li><a href=3D"#6">ocamlnet-4.1.9</a></li>
<li><a href=3D"#7">Release of cohttp 4.0.0</a></li>
<li><a href=3D"#8">New Try-Alt-Ergo website</a></li>
<li><a href=3D"#9">Other OCaml News</a></li>
<li><a href=3D"#org0ec5db6">Old CWN</a></li>
</ul>
</div>
</div>


<div id=3D"outline-container-org75fb458" class=3D"outline-2">
<h2 id=3D"1">Theorem Proving with Coq and Ocaml</h2>
<div class=3D"outline-text-2" id=3D"text-1">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/theorem-proving-with-coq-oc=
aml/7524/1">https://discuss.ocaml.org/t/theorem-proving-with-coq-ocaml/7524=
/1</a>
</p>
</div>

<div id=3D"outline-container-orgc705d53" class=3D"outline-3">
<h3 id=3D"orgc705d53">Gregory Malecha announced</h3>
<div class=3D"outline-text-3" id=3D"text-orgc705d53">
<p>
I lead the formal methods team at Bedrock Systems (<a href=3D"https://bedro=
cksystems.com">https://bedrocksystems.com</a>) and we are looking to hire a=
  full-time
engineer working on automation in the Coq proof assistant (which is written=
 in Ocaml). We're very interested in
candidates with strong Ocaml background especially in topics related to aut=
omated theorem proving, e.g. SAT/SMT
solvers, datalog, superposition, resolution, etc. While Coq experience is g=
reat, you do not need to be a Coq expert
to apply to this position, we're happy to marry your Ocaml expertise with o=
ur Coq expertise.
</p>

<p>
Formal methods are at the core of BedRock's business and we are deeply comm=
itted to solving problems of system
verification at industrial scale. We get FM techniques and insights into th=
e code early on and use them to build,
maintain, and evolve code. This includes developing more agile techniques t=
o keep evolving verified systems once
they're built.
</p>

<p>
We have eight folks on the formal methods team today, hailing from MPI-SWS,=
 MIT CSAIL, Princeton, and other leading
research groups. If you're interested, send me an email or you can inquire =
more broadly at jobs at bedrocksystems.com.
</p>

<p>
<b>Company overview:</b>
</p>

<p>
BedRock is building a <b>trustworthy compute base for mission-critical appl=
ications</b> . The foundation of the platform
is an open source, multi-core, capability-based micro-hypervisor that we ar=
e developing and verifying. On top of
these deep specifications we are writing and verifying applications to prov=
ide an extensible and configurable core.
</p>

<p>
Our contention is that the <b>time is ripe for verifiably trustworthy syste=
ms</b>, for everything from secure phones
and industrial IoT to autonomous systems and financial infrastructure. With=
 significant seed funding, great
investors, and commercial projects underway, we are growing our team in Bos=
ton, the Bay Area, DC, and Germany.
</p>
</div>
</div>
</div>




<div id=3D"outline-container-orgd6affb5" class=3D"outline-2">
<h2 id=3D"2">ocaml-aws 1.2</h2>
<div class=3D"outline-text-2" id=3D"text-2">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-ocaml-aws-1-2/7526/1">h=
ttps://discuss.ocaml.org/t/ann-ocaml-aws-1-2/7526/1</a>
</p>
</div>

<div id=3D"outline-container-orgd754191" class=3D"outline-3">
<h3 id=3D"orgd754191">Tim Mc Gilchrist announced</h3>
<div class=3D"outline-text-3" id=3D"text-orgd754191">
<p>
I'm pleased to announce the release of <a href=3D"https://opam.ocaml.org/pa=
ckages/aws/">ocaml-aws</a> 1.2.
</p>

<p>
ocaml-aws aims to provide generated bindings to many AWS services using the=
 botocore specifications. In this version
we've bumped version bounds on a bunch of depedencies and also added new bi=
ndings for:
</p>
<ul class=3D"org-ul">
<li>RDS</li>
<li>Route53</li>
<li>SDB</li>
<li>SQS</li>
</ul>

<p>
Please check it out and report any issues.
</p>
</div>
</div>
</div>




<div id=3D"outline-container-orgd978e6d" class=3D"outline-2">
<h2 id=3D"3">Release of <code>fmlib.0.2.0</code></h2>
<div class=3D"outline-text-2" id=3D"text-3">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-release-of-fmlib-0-2-0/=
7527/1">https://discuss.ocaml.org/t/ann-release-of-fmlib-0-2-0/7527/1</a>
</p>
</div>

<div id=3D"outline-container-org96db17b" class=3D"outline-3">
<h3 id=3D"org96db17b">Hbr announced</h3>
<div class=3D"outline-text-3" id=3D"text-org96db17b">
<p>
I am pleased to announce the second release (0.2.0) of fmlib, a functional
library with managed effects.
</p>

<p>
The library has up to now 4 components:
</p>

<ul class=3D"org-ul">
<li><a href=3D"https://hbr.github.io/fmlib/odoc/fmlib/Fmlib_std/index.html"=
>Some standard datatypes</a></li>
<li><a href=3D"https://hbr.github.io/fmlib/odoc/fmlib/Fmlib_pretty/Print/in=
dex.html">Pretty printing functions</a></li>
<li><a href=3D"https://hbr.github.io/fmlib/odoc/fmlib/Fmlib_parse/index.htm=
l">Parsing combinator library</a></li>
<li><a href=3D"https://hbr.github.io/fmlib/odoc/fmlib_js/index.html">Primit=
ives to compile to javascript</a></li>
</ul>

<p>
The last component is the new one in version 0.2.0. Internally it uses
<code>js_of_ocaml</code> to compile to javascript. It is an easy to use lib=
rary of
primitive functions to access mainly browser functionality from ocaml and s=
ome
rudimentary functions to access nodejs functionality.
</p>

<p>
It can be installed via opam by
</p>

<pre class=3D"example">
opam update
opam install fmlib
opam install fmlib_js
</pre>

<p>
It is located at <a href=3D"https://github.com/hbr/fmlib">github</a>
</p>
</div>
</div>


<div id=3D"outline-container-org883857f" class=3D"outline-3">
<h3 id=3D"org883857f">Hbr added</h3>
<div class=3D"outline-text-3" id=3D"text-org883857f">
<p>
Hint: <code>fmlib</code> is still a bundle of three libraries i.e. three to=
plevel modules <code>Fmlib_std</code>, <code>Fmlib_pretty</code> and
<code>Fmlib_parse</code>. Therefore they have to be used in a <code>dune</c=
ode> file with
</p>

<pre class=3D"example">
(libraries fmlib.fmlib_std fmlib.fmlib_pretty fmlib.fmlib_parse ...)
</pre>

<p>
while the new library can be used with
</p>

<pre class=3D"example">
(libraries fmlib_js ...)
</pre>

<p>
This inconvenience will be corrected in the next release.
</p>
</div>
</div>
</div>




<div id=3D"outline-container-orgd837c16" class=3D"outline-2">
<h2 id=3D"4">soupault: a static website generator based on HTML rewriting</=
h2>
<div class=3D"outline-text-2" id=3D"text-4">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-soupault-a-static-websi=
te-generator-based-on-html-rewriting/4126/14">https://discuss.ocaml.org/t/a=
nn-soupault-a-static-website-generator-based-on-html-rewriting/4126/14</a>
</p>
</div>

<div id=3D"outline-container-orgd162693" class=3D"outline-3">
<h3 id=3D"orgd162693">Daniil Baturin announced</h3>
<div class=3D"outline-text-3" id=3D"text-orgd162693">
<p>
<a href=3D"https://soupault.app/blog/soupault-2.5.0-release/">soupault 2.5.=
0</a> offers some features that are unique among SSGs.
</p>

<p>
There are two new built-in widgets for rewriting internal links, which is u=
seful if you don't host your website at
the server root. For example, if you host it at <code>example.com/~user</co=
de>, you cannot just write <code>&lt;img src=3D"/header.png"&gt;</code>:
it will point to <code>example.com/header.png</code> while you want <code>e=
xample.com/~user/header.png</code> instead.
</p>

<p>
The <code>relative_links</code> widget will convert all internal links to r=
elative links according to their depth in the
directory tree. For example, suppose you have <code>&lt;img src=3D"/header.=
png"&gt;</code> in your page template. Then in
<code>about/index.html</code> that link will become <code>&lt;img src=3D"..=
/header.png"&gt;</code>; in <code>books/magnetic-fields/index.html</code> i=
t will
be <code>&lt;img src=3D"../../header.png"&gt;</code> and so on. This way yo=
u can move the website to a subdirectory and it will still
work.
</p>

<p>
The <code>absolute_links</code> widget prepends a prefix to every internal =
link. Conceptually similar to the site URL option in
other SSGs and CMSes, but works for all links, not only links generated by =
the SSG itself.
</p>
</div>
</div>
</div>




<div id=3D"outline-container-org8342b85" class=3D"outline-2">
<h2 id=3D"5">Timere-parse 0.0.2, natural language parsing of date, time and=
 duration</h2>
<div class=3D"outline-text-2" id=3D"text-5">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-timere-parse-0-0-2-natu=
ral-language-parsing-of-date-time-and-duration/7532/1">https://discuss.ocam=
l.org/t/ann-timere-parse-0-0-2-natural-language-parsing-of-date-time-and-du=
ration/7532/1</a>
</p>
</div>

<div id=3D"outline-container-orgafb81e9" class=3D"outline-3">
<h3 id=3D"orgafb81e9">Darren announced</h3>
<div class=3D"outline-text-3" id=3D"text-orgafb81e9">
<p>
I'm happy to announce the release of Timere-parse 0.0.2, the natural langua=
ge parsing component of Timere, a date
time handling and reasoning library. Both packages are under the <a href=3D=
"https://github.com/daypack-dev/timere">Timere
repo</a>.
</p>

<p>
Timere-parse allows interpretation of common descriptions of date, time and=
 duration.
</p>
</div>

<div id=3D"outline-container-org768e7af" class=3D"outline-4">
<h4 id=3D"org768e7af">Date time examples</h4>
<div class=3D"outline-text-4" id=3D"text-org768e7af">
<p>
Input strings are in <code>""</code>, indented lines are pretty printed out=
put.
</p>

<pre class=3D"example">
"2020 jun 6 10am"
  Ok 2020-06-06T10:00:00Z
"2020 jun 6th 10:15"
  Ok 2020-06-06T10:15:00Z
"Australia/Sydney 2020 jun 6 10am"
  Ok 2020-06-06T10:00:00+10:00
"01-06-2020 10:10"
  Ok 2020-06-01T10:10:00Z
"2020/06/01 10am"
  Ok 2020-06-01T10:00:00Z
"jul 6 2021 9:15am"
  Ok 2021-07-06T09:15:00Z
"2020/06/01"
  Ok 2020-06-01T00:00:00Z
</pre>
</div>
</div>

<div id=3D"outline-container-org226c24e" class=3D"outline-4">
<h4 id=3D"org226c24e">Duration examples</h4>
<div class=3D"outline-text-4" id=3D"text-org226c24e">
<pre class=3D"example">
"24h"
  Ok 1 days 0 hours 0 mins 0 secs
"16.5 hours"
  Ok 16 hours 30 mins 0 secs
"1h20min"
  Ok 1 hours 20 mins 0 secs
"1 hour 2.5 minutes"
  Ok 1 hours 2 mins 30 secs
"100 seconds"
  Ok 1 mins 40 secs
"2.25 minutes 1 seconds"
  Ok 2 mins 16 secs
"5 days 6.5 hours"
  Ok 5 days 6 hours 30 mins 0 secs
</pre>
</div>
</div>

<div id=3D"outline-container-orgf9031f8" class=3D"outline-4">
<h4 id=3D"orgf9031f8">Timere object examples</h4>
<div class=3D"outline-text-4" id=3D"text-orgf9031f8">
<pre class=3D"example">
"2020 jun"
  Ok (pattern (years 2020) (months Jun))
"jan"
  Ok (pattern (months Jan))
jan 6 12pm to 2pm"
  Ok (bounded_intervals whole (duration 366 0 0 0) (points (pick mdhms Jan =
6 12 0 0)) (points (pick hms 14 0 0)))
"12th, 13 to 15, 20"
  Ok (pattern (month_days 12 13 14 15 20))
"16th 7:30am"
  Ok (pattern (month_days 16) (hours 7) (minutes 30) (seconds 0))
"16th 8am to 10am, 11am to 12pm"
  Ok (inter (pattern (month_days 16)) (union (bounded_intervals whole (dura=
tion 1 0 0 0) (points (pick hms 8 0 0))
(points (pick hms 10 0 0))) (bounded_intervals whole (duration 1 0 0 0) (po=
ints (pick hms 11 0 0)) (points (pick hms
12 0 0)))))
"2020 jun 16th 10am to jul 1 12pm"
  Ok (bounded_intervals whole (duration 366 0 0 0) (points (pick ymdhms 202=
0 Jun 16 10 0 0)) (points (pick mdhms Jul
1 12 0 0)))
</pre>
</div>
</div>

<div id=3D"outline-container-org15033fe" class=3D"outline-4">
<h4 id=3D"org15033fe">Corpus</h4>
<div class=3D"outline-text-4" id=3D"text-org15033fe">
<p>
For the full corpus/examples, see <a href=3D"https://github.com/daypack-dev=
/timere/tree/main/corpus">corpus/</a>  for code and
<a href=3D"https://github.com/daypack-dev/timere/blob/main/corpus-outputs">=
corpus-outputs/</a> for generated outputs.
</p>
</div>
</div>
</div>
</div>




<div id=3D"outline-container-orgd43a2cd" class=3D"outline-2">
<h2 id=3D"6">ocamlnet-4.1.9</h2>
<div class=3D"outline-text-2" id=3D"text-6">
<p>
Archive: <a href=3D"https://sympa.inria.fr/sympa/arc/caml-list/2021-03/msg0=
0028.html">https://sympa.inria.fr/sympa/arc/caml-list/2021-03/msg00028.html=
</a>
</p>
</div>

<div id=3D"outline-container-orgb7d4a88" class=3D"outline-3">
<h3 id=3D"orgb7d4a88">Gerd Stolpmann announced</h3>
<div class=3D"outline-text-3" id=3D"text-orgb7d4a88">
<p>
there is now ocamlnet-4.1.9 available:
</p>

<ul class=3D"org-ul">
<li>compatibility with upcoming OCaml-4.12</li>
<li>some fixes regarding TLS (https)</li>
<li>a few build-related details</li>
</ul>

<p>
See the project page for download, documentation, a detailed changelog,
and the mailing list:
<a href=3D"http://projects.camlcity.org/projects/ocamlnet.html">http://proj=
ects.camlcity.org/projects/ocamlnet.html</a>
</p>

<p>
The repository is at
</p>

<p>
<a href=3D"https://gitlab.com/gerdstolpmann/lib-ocamlnet3/">https://gitlab.=
com/gerdstolpmann/lib-ocamlnet3/</a>
</p>

<p>
opam follows soon.
</p>
</div>
</div>
</div>




<div id=3D"outline-container-org959f245" class=3D"outline-2">
<h2 id=3D"7">Release of cohttp 4.0.0</h2>
<div class=3D"outline-text-2" id=3D"text-7">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-release-of-cohttp-4-0-0=
/7537/1">https://discuss.ocaml.org/t/ann-release-of-cohttp-4-0-0/7537/1</a>
</p>
</div>

<div id=3D"outline-container-org5167a83" class=3D"outline-3">
<h3 id=3D"org5167a83">Marcello Seri announced</h3>
<div class=3D"outline-text-3" id=3D"text-org5167a83">
<p>
We are glad to announce the <a href=3D"https://github.com/ocaml/opam-reposi=
tory/pull/18385">upcoming release</a> of <a href=3D"https://github.com/mira=
ge/ocaml-cohttp"><code>cohttp
4.0.0</code></a>, a low-level OCaml library for HTTP clients and servers.
</p>

<p>
This release comes with a big update of the documentation and the examples,=
 both in the
<a href=3D"https://github.com/mirage/ocaml-cohttp">README</a> and in the co=
debase, and improvements and bug fixes from many
contributors =F0=9F=99=87 which you will find listed below.
</p>

<p>
A huge thank you to all the people that helped to get this release ready by=
 raising issues, participating in
discussions, sending PRs, and otherwise using our library.
</p>
</div>

<div id=3D"outline-container-orgbafc735" class=3D"outline-4">
<h4 id=3D"orgbafc735">The future of cohttp</h4>
<div class=3D"outline-text-4" id=3D"text-orgbafc735">
<p>
To quote @avsm from <a href=3D"https://discuss.ocaml.org/t/defining-standar=
d-ocaml-development-lifecycle-processes/7486/5">another
post</a>
</p>

<blockquote>
<p>
The development process [&#x2026;] is driven by a simple principle that is =
inspired by OCaml itself: don't needlessly
break backwards compatibility without good reason, and when it is necessary=
, justify it. Our tools are embedded in
projects that have lifespans measured in the decades, and we take compatibi=
lity seriously. That=E2=80=99s why we take pains
to provide migration paths [&#x2026;] that are as invisible as possible.
</p>
</blockquote>

<p>
Since in this release we have decided to include a number of fixes and impr=
ovements which modified Cohttp module
signatures, we decided to signal the potential breackage by bumping the maj=
or version of the library. In most cases,
however, you don't need to do anything and your code will keep working with=
 the latest cohttp.
</p>

<p>
Moving forward, we have agreed to start working on the API and the internal=
s of cohttp to modernize it and get it
ready for multicore support and also for eventual unification with the h2 s=
tack that offers HTTP2/3 support.
</p>

<p>
To be able to move forward and avoid stalling improvements for months, we w=
ill be less shy of major releases.
However, to remain true to the principle above, we will be careful to intro=
duce one breakage at a time, carefully
justify its need and provide a clear upgrade path in the changelog.
</p>

<p>
The version history is:
</p>
<ul class=3D"org-ul">
<li>cohttp 2.5.5: security backports (changelog below)</li>
<li>cohttp 3.0.0: skipped (explained below)</li>
<li>cohttp 4.0.0: the next release (changelog below)</li>
<li>cohttp 5.0.0: will include a long-awaited change in <a href=3D"https://=
github.com/mirage/ocaml-cohttp/pull/747">how headers are treated</a>: which=
 fixes a multitude of past issues and simplifies the internals of the modul=
e.</li>
</ul>

<p>
For the people that need stability, <b>we have decided to keep backporting =
important security fixes to the <code>2.5.x</code>
branch of the project</b>. In fact, <code>cohttp 2.5.5</code>, released jus=
t a few days ago was the first release with the
backport of a security issue.
</p>
</div>
</div>

<div id=3D"outline-container-org76b3707" class=3D"outline-4">
<h4 id=3D"org76b3707">What happened to 3.0.0?</h4>
<div class=3D"outline-text-4" id=3D"text-org76b3707">
<p>
The release of <code>cohttp 3.0.0</code> has been long awaited, and we are =
extremely grateful to @dinosaure for the enormous
work that went into designing and implementing <code>conduit 3.0.0</code> a=
nd <code>cohttp 3.0.0</code> (part of which remained in <code>4.0.0</code>
as bug fixes and API improvements).
</p>

<p>
However, a discussion started soon after the release pointing out that ther=
e could be further room of improvement
also with the new design, particularly with respect to backwards compatibil=
ity. Since the design discussion did not
reach consensus, these changes were reverted to preserve better compatibili=
ty with existing cohttp users and <code>cohttp
3.0.0</code> was <a href=3D"https://github.com/mirage/ocaml-cohttp/issues/7=
36">marked as unavailable</a> on the opam repository.  As
maintainers, our "lesson learnt" is to not do releases incrementally when t=
hey span multiple libraries: we were
caught in an awkward spot when conduit 3 was released, but without cohttp 3.
</p>

<p>
The work on the new conduit is steadily progressing and will be integrated =
in a new major release of cohttp in the
future, once we will be confident that the API is settled. If you want to t=
ry using it immediately, then it is
available as the <a href=3D"https://github.com/mirage/ocaml-git/tree/master=
/src/mimic">mimic</a> library in ocaml-git.
</p>
</div>
</div>

<div id=3D"outline-container-org692c389" class=3D"outline-4">
<h4 id=3D"org692c389">Change Log</h4>
<div class=3D"outline-text-4" id=3D"text-org692c389">
</div>
<div id=3D"outline-container-org7ecb869" class=3D"outline-5">
<h5 id=3D"org7ecb869">v4.0.0</h5>
<div class=3D"outline-text-5" id=3D"text-org7ecb869">
<ul class=3D"org-ul">
<li>cohttp.response: fix malformed status header for custom status codes (@=
mseri @aalekseyev #752)</li>
<li>remove dependency to base (@samoht #745)</li>
<li>add GitHub Actions workflow (@smorimoto #739)</li>
<li><code>cohttp-lwt-jsoo</code>: Forward exceptions to caller when respons=
e is null (@mefyl #738)</li>
<li>Use implicit executable dependency for generate.exe (@TheLortex #735)</=
li>
<li>cohttp: update HTTP codes (@emillon #711)</li>
<li>cohttp: fix chunked encoding of empty body (@mefyl #715)</li>
<li>cohttp-async: fix body not being uploaded with unchunked Async.Pipe (@m=
efyl #706)</li>
<li>cohttp-{async, lwt}: fix suprising behaviours of Body.is_empty (@anurag=
soni #714 #712 #713)</li>
<li>refactoring of tests (@mseri #709, @dinosaure #692)</li>
<li>update documentation (@dinosaure #716, @mseri #720)</li>
<li>fix deadlock in logging (@dinosaure #722)</li>
<li>improve media type parsing (@seliopou #542, @dinosaure #725)</li>
<li>[reverted] breaking changes to client and server API to use conduit 3.0=
.0 (@dinosaure #692). However, as the design discussion did not reach conse=
nsus, these changes were reverted to preserve better compatibility with exi=
sting cohttp users. (#741,  @samoht)</li>
</ul>

<p>
<b>Potentially breaking changes</b>
</p>

<ul class=3D"org-ul">
<li>remove <code>wrapped false</code> from the codebase (@rgrinberg #734)</=
li>
<li>cohttp: add Uti.t to uri scheme (@brendanlong #707)</li>
<li>cohttp-lwt-jsoo: rename Cohttp_lwt_xhr to Cohttp_lwt_jsoo for consisten=
cy (@mseri #717)</li>
<li>cohttp: fix transfer-encoding ordering in headers (@mseri #721)</li>
<li>lower-level support for long-running cohttp-async connections (@brendan=
long #704)</li>
<li>add of_form and to_form functions to body (@seliopou #440, @mseri #723)=
</li>
<li>cohttp-lwt: partly inline read_response, fix body stream leak (@madroac=
h @dinosaure #696).
Note: there is a new warning that may show up in your logs when bodies are =
leaked, see also <a href=3D"https://github.com/mirage/ocaml-cohttp/issues/7=
30">#730</a>.</li>
<li>add comparison functions for Request.t and Response.t via ppx_compare (=
@msaffer-js @dinosaure #686)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-orgdf85b20" class=3D"outline-5">
<h5 id=3D"orgdf85b20">v2.5.5</h5>
<div class=3D"outline-text-5" id=3D"text-orgdf85b20">
<ul class=3D"org-ul">
<li><p>
<code>Cohttp_async.resolve_local_file</code>, <code>Cohttp_lwt.resolve_loca=
l_file</code> and <code>Cohttp_lwt_unix.resolve_file</code> are now the sam=
e code under the hood (<code>Cohttp.Path.resolve_local_file</code>). The ol=
d names have been preserved for compatibility, but will be marked as deprec=
ated in the next release. This changes the behavior of <code>Cohttp_lwt_uni=
x.resolve_file</code>: it now percent-decodes the paths and blocks escaping=
 from the docroot correctly. This also fixes and tests the corner cases in =
these methods when the docroot is empty. (@ewanmellor #755)
</p>

<p>
<b>Double check your code base for uses of <code>Cohttp_lwt_unix.resolve_fi=
le</code>: it is unsafe with respect to path handling</b>. If you cannot up=
grade to <code>cohttp 2.5.5</code>, you should modify your code to call <co=
de>Cohttp_lwt.resolve_local_file</code> instead.
</p></li>
</ul>
</div>
</div>
</div>
</div>
</div>




<div id=3D"outline-container-org28e8a71" class=3D"outline-2">
<h2 id=3D"8">New Try-Alt-Ergo website</h2>
<div class=3D"outline-text-2" id=3D"text-8">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-new-try-alt-ergo-websit=
e/7555/1">https://discuss.ocaml.org/t/ann-new-try-alt-ergo-website/7555/1</=
a>
</p>
</div>

<div id=3D"outline-container-org15c3675" class=3D"outline-3">
<h3 id=3D"org15c3675">OCamlPro announced</h3>
<div class=3D"outline-text-3" id=3D"text-org15c3675">
<p>
We are pleased to announce the new version of the <a href=3D"https://try-al=
t-ergo.ocamlpro.com/">Try Alt-Ergo website</a>!
</p>

<p>
As a reminder, Try Alt-Ergo allows you to write and run your problems in yo=
ur browser without any server computation.
It was designed to be a powerful and simple tool to use.
</p>

<p>
Updates concern these parts of the site:
</p>
<ul class=3D"org-ul">
<li>A new back end in JavaScript</li>
<li>Front end with news features (Ace editor, top panel, right panel, etc.)=
</li>
</ul>

<p>
Take a look at <a href=3D"https://www.ocamlpro.com/2021/03/29/new-try-alt-e=
rgo/">our blogpost</a> to read how we have updated the
Try Alt-Ergo website and what's new! You can also visit the <a href=3D"http=
s://try-alt-ergo.ocamlpro.com/">Try Alt-Ergo
website</a> directly. As usual, do not hesitate to report bugs, to ask ques=
tions, or
to give your feedback.
</p>
</div>
</div>
</div>




<div id=3D"outline-container-orgcaf1ac0" class=3D"outline-2">
<h2 id=3D"9">Other OCaml News</h2>
<div class=3D"outline-text-2" id=3D"text-9">
</div>
<div id=3D"outline-container-orgdec2ebc" class=3D"outline-3">
<h3 id=3D"orgdec2ebc">From the ocamlcore planet blog</h3>
<div class=3D"outline-text-3" id=3D"text-orgdec2ebc">
<p>
Here are links from many OCaml blogs aggregated at <a href=3D"http://ocaml.=
org/community/planet/">OCaml Planet</a>.
</p>

<ul class=3D"org-ul">
<li><a href=3D"https://www.ocamlpro.com/2021/03/29/new-try-alt-ergo/">New T=
ry-Alt-Ergo</a></li>
<li><a href=3D"https://seb.mondet.org/b/0012-tzcomet-token-viewer.html">TZC=
omet's New Token Viewer</a></li>
</ul>
</div>
</div>
</div>




<div id=3D"outline-container-org0ec5db6" class=3D"outline-2">
<h2 id=3D"org0ec5db6">Old CWN</h2>
<div class=3D"outline-text-2" id=3D"text-org0ec5db6">
<p>
If you happen to miss a CWN, you can <a href=3D"mailto:alan.schmitt at 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 <a hre=
f=3D"http://lists.idyll.org/listinfo/caml-news-weekly/">online</a>.
</p>

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

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


--=-=-=--



More information about the caml-news-weekly mailing list