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><img src=3D"/header.png"></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><img src=3D"/header.=
png"></code> in your page template. Then in
<code>about/index.html</code> that link will become <code><img src=3D"..=
/header.png"></code>; in <code>books/magnetic-fields/index.html</code> i=
t will
be <code><img src=3D"../../header.png"></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 […] 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 […] 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