OCaml Weekly News

Previous Week Up Next Week


Here is the latest OCaml Weekly News, for the week of March 30 to April 06, 2021.

Table of Contents

Ecosystem Engineer and Technical Writer positions

Celine announced

Tarides is hiring an Ecosystem Engineer and a Technical Writer.

Tarides is a tech startup based in Paris and founded in 2018. We develop a software infrastructure platform to deploy secure, distributed applications with strict resource contraints and low-latency performance requirements.

We welcome applications from people of all backgrounds. We are working hard to create a representative, inclusive and friendly team, because we know that different experiences, perspectives and backgrounds make for a better place.

Please, don't hesitate to contact me if you have any question, I'll be more than happy to reply! :)

Release of cohttp 4.0.0

Continuing this thread, Calascibetta Romain said

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 try using it immediately, then it is available as the mimic library in ocaml-git.

I just take the opportunity to show up a tutorial about mimic which is now available into the distribution of it: see here. Thanks for your work about the release process.

Timere-parse 0.0.2, natural language parsing of date, time and duration

Continuing this thread, Darren said

The demo site has been updated to use Timere-parse, you can now try interacting with Timere_parse.timere in web browser at https://daypack-dev.github.io/timere-parse-demo/

agrid 0.1

zapashcanon announced

I'm pleased to announce the first release of agrid.

Agrid stands for Adjustable Grid. Adjustable grids are basically two dimensional arrays whose width/height can be changed by adding or removing row/column at either end (one at a time).

Here's a very short example :

let () =
  let grid = Agrid.of_list [[1; 2]; [3; 4]] in
  let grid = Agrid.snoc_row grid (Flex_array.of_list [5; 6]) in
  Agrid.pp Format.pp_print_int Format.std_formatter grid
  (* prints:
   * 1; 2
   * 3; 4
   * 5; 6

It's based on the great flex-array library by Jean-Christophe Filliâtre and is mainly a wrapper around it to make it easier for the special case of two dimensional arrays.

It's been developped at OCamlPro while working on mosaic when we wanted to ease the dataset input process, switching from a basic textarea based input to something which looks like a spreadsheet (this work is not yet published on the online version).

gasche asked and zapashcanon replied

Out of curiosity: In a spreadsheet, I would assume that inserting/removing rows or columns in the middle is also a useful operation. Would you be able to add this operation?

It's not really a spreadsheet, it's more something like this. I don't think it would be really useful in the case of mosaic because for big inputs, users are more likely to import the data from a file.

Anyway, it's possible to add this operation, but I can't think of an efficient way to do it. I'll think about it and may add such an operation. Actually, if it's added to flex-array, it would be trivial to add it to agrid, so I'll probably try to add it there.

State of OCaml and web assembly

Deep in this thread, Emilio Jesús Gallego Arias announced

Yup, we didn't make it yet the "official" release, but it has been used by quite a few people to avoid lack of tail-call optimization in jsoo, live versions:

It literally flies.

I guess @corwin-of-amber is the right person to comment more on his superb efforts.

Shachar Itzhaky then added

Hi there @camarick; ocaml-wasm is very much bleeding-edge but it already works surprisingly well and I have used it to run Coq, esp. for the purpose of making the interactive version of Vols. I,II from the Software Foundations textbook (see https://jscoq.github.io/ext/sf and https://jscoq.github.io/ext/sf/tools/jscoq-tester.html).

Of course @ejgallego is exaggerating when he says that it flies, it still runs OCaml bytecode in interpreted mode on top of the WASM JIT. Performance is pretty reasonable still, except in the case some intensive Coq tactics (in which case this is a third level of interpreter… :man_facepalming: ). The main gap right now is the standard libraries str, unix, and threads, for which I have compiled empty stubs, because dynamic loading of libraries in WASI is still immature. I have been able to compile num and it works correctly because it does not depend on anything else. I am currently investigating how to build zarith (which requires gmp) because Coq 8.13 depends on it.

So yeah, this is not at all the coveted WASM backend for ocamlc, but it's one existing solution and you can hack on it right now. Any help or comments are welcome!

containers 3.3

Simon Cruanes announced

I'm glad to announce the release of containers 3.3. Containers is an extension to OCaml's standard library that strives to be compatible with it, with more features and a few additional modules to get dynamic arrays, heaps, S-expression parser/printer, etc.

In this release, we have new support for parsing/printing canonical S-expressions (a simple binary-safe format), a code-generation module for bitfields, and many improvements to existing modules in particular in the interface between maps/set/hashtbl and iterators.

More details in the github release.

Many thanks to the contributors, in particular @Fardale for his work on CI and auto-doc-generation.

New OCaml books?

Deep in this thread, Damien Guichard announced

I’m also working on a free culture book. The preview is at https://damien-guichard.developpez.com/downloads/Algorithmic-with-OCaml.pdf

It’s under CC-BY-SA.

Planned chapters include : Records, Type polymorphism, Modules as functions, Conceptual graphs.

The reason why i don't contribute to @dmbaturin's effort is that my main topic is algorithmic, ocaml is more a good way than a goal.

Damien Guichard later added

Sorry, you have to be a member of https://www.developpez.com/ to access this link.

Here is my 2nd try. I hope you don't need to be a member of https://www.aeriesguard.com/ this time. https://www.aeriesguard.com/media/get/504bfbe34d3f517c8acf37ffbe200f84698aca0c/Algorithmic-with-_OCaml.pdf


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.