caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Alan Schmitt <>
To: "lwn" <>, "cwn"  <>,
Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News
Date: Tue, 05 Apr 2022 13:50:01 +0200	[thread overview]
Message-ID: <> (raw)

[-- Attachment #1.1: Type: text/plain, Size: 20781 bytes --]


Here is the latest OCaml Weekly News, for the week of March 29 to April
05, 2022.

Table of Contents

v0.15 release of Jane Street packages
EmelleTV Show - 2022
Open source editor for iOS, iPadOS and macOS
The mysterious pointer in the runtime closure representation
Other OCaml News

v0.15 release of Jane Street packages


Arseniy Alekseyev announced

  We are pleased to announce the v0.15 release of Jane Street packages!

  This release comes with 41 new packages, and a large number of fixes
  and enhancements. The documentation for the individual packages will
  soon be available on [], after some technical
  issues are fixed.

  The remainder of this e-mail highlights the main changes since the
  v0.14 release.

[] <>

Notable changes

Re-structuring of `Core'.

  The most noticeable breaking change is the re-structuring of `Core'.

  In 0.14, `Core' is somewhat bloated and includes many modules that are
  barely ever used, many of which are Unix-specific. In 0.15, many of
  those modules moved to separate libraries, most of them to
  package~core_unix~, and `core' is now much smaller and no longer
  contains unix-specific code.

  The mapping between the new libraries and the old modules can be
  summarized by the contents of `Core_compat' library v0.14:

  │ module Command_unix = Core.Command
  │ module Date_unix = Core.Date
  │ module Filename_unix = Core.Filename
  │ module Signal_unix = Core.Signal
  │ module Sys_unix = Core.Sys
  │ module Core_thread = Core.Thread
  │ module Time_unix = Core.Time
  │ module Time_ns_unix = Core.Time_ns
  │ module Core_unix = Core.Unix
  │ module Version_util = Core.Version_util
  │ module Interval_lib = struct
  │   module Interval = Core.Interval
  │   module Interval_intf = Core.Interval_intf
  │ end
  │ module Time_interface = Core.Time_common

Async: `Monitor.try_with'

  `Monitor.try_with' and related functions changed the defaults for
  their `run' and `rest' parameters.  They used to default to
  `~~run:~Schedule ~rest:~Log~', but now they default to `~~run:~Now

Many other changes

  There are many changes and additions across 130+ existing packages,
  and unfortunately we don't maintain a changelog to list them all.  The
  code for all of our packages is on our [github], and if you're
  interested in the details of what changed in a particular package, you
  can inspect the diff between branches v0.14 and v0.15.

[github] <>

New packages

  [`abstract_algebra']: A small library describing abstract algebra

  A library describing abstract algebra concepts. Currently, it includes
  Commutative_group and Vector_space.

  [`async_rpc_websocket']: Library to serve and dispatch Async RPCs over

  Library to serve and dispatch Async RPCs over websockets.

  Rpc_websocket makes it easy to serve and send Async RPCs with
  HTTP+Websocket underlying the transport. It also provides a mechanism
  to share the RPC implementations between a vanilla TCP server and a
  HTTP server.

  On the server side, the library detects when a websocket connection is
  established, and routes to an optionally provided vanilla HTTP handler
  when non-websocket traffic occurs.

  [`bigdecimal']: Arbitrary-precision decimal based on Zarith

  A high-precision representation of decimal numbers as [mantissa *
  10^exponent], where the mantissa is internally a [Bigint.t] and the
  exponent is an [int].

  [`cohttp_async_websocket']: Websocket library for use with cohttp and

  Websocket library for use with cohttp and async.

  Cohttp_async_websocket is a full-featured server-side websocket
  implementation, using Async as the concurrency library, and Cohttp for
  HTTP negotiation.

  It implements a large portion of RFC6445. The library has been
  hardened with many applications using it for several year, in
  conjunction with async-js and google-chrome.

  [`cohttp_static_handler']: A library for easily creating a cohttp
  handler for static files

  Single page handlers are handlers that serve user specified JavaScript
     and css files along with a generated index page that loads those

  [`core_compat']: Compatibility for core 0.14

  Compatibility wrapper to make it possible to have code compatible with
  both Core 0.14 and 0.15.

  [`env_config']: Helper library for retrieving configuration from an
  environment variable

  The Env_config library is a helper for retrieving library and program
  configuration from an environment variable. Its goal is to make it
  easy to override a configuration that is loaded from disk, computed,
  or embedded in a library.

  [`file_path']: A library for typed manipulation of UNIX-style file

  A library for typed manipulation of UNIX-style file paths.

  [`fuzzy_match']: A library for fuzzy string matching

  A library for fuzzy string matching

  [`fzf']: A library for running the fzf command line tool

  A library for running the fzf command line fuzzy matcher

  [`hardcaml_c']: Hardcaml C Simulation Backend

  A fast C-based simulation backend for Hardcaml circuits.

  The library transparently compiles a Hardcaml Circuit to C code, which
  is in turn compiled and linked into the running executable. The
  generated simulation object can be used like any other cyclesim

  [`hardcaml_circuits']: Hardcaml Circuits

  A small library of useful/interesting Hardcaml circuits.

  [`hardcaml_fixed_point']: Hardcaml fixed point arithmetic

  Signed and Unsigned fixed point operations, with a full complement of
  rounding and overflow functionality.

  [`hardcaml_of_verilog']: Convert Verilog to a Hardcaml design

  The opensource synthesis tool yosys is used to convert a verilog
  design to a JSON based netlist representation. This library can load
  the JSON netlist and build a hardcaml circuit.

  Code can also be generated to wrap the conversion process using
  Hardcaml interfaces.

  [`hardcaml_step_testbench']: Hardcaml Testbench Monad

  A monad for interacting with Hardcaml.Cyclesim based simulations.

  Allows multiple control threads to interact with a simulation module,
  all of which are synchronised to the system clock.

  [`hardcaml_verify']: Hardcaml Verification Tools

  Tools for verifying properties of Hardcaml circuits.

  Combinational circuits can be converted to 'conjunctive normal form'
  for input into SAT solvers via DIMAC files. Support for a few
  opensource solvers is integrated - minisat, picosat, Z3 - just ensure
  they are in your PATH.

  Circuits can also be converted to NuSMV format for advanced bounded
  and unbounded model checking tasks.

  [`hardcaml_verilator']: Hardcaml Verilator Simulation Backend

  Very fast verilator-based simulations of Hardcaml circuits.

  This library transparently compiles a verilator-based shared library,
  and links it back to the running executable to be used as a Cyclesim

  [`hardcaml_xilinx']: Hardcaml wrappers for Xilinx memory primitives

  The Hardcaml_xilinx library provides wrappers for Xilinx specific RAM
  and FIFO primitive blocks. In many cases a simulation model is

  The `Synthesis' module implements various arithmetic and logical RTL
  components with Xilinx LUT primitives.

  [`hardcaml_xilinx_components']: Hardcaml Xilinx component definitions

  A tool for reading Xilinx VHDL Unisim and XPM component definitions
  from a Vivado installation and generating Hardcaml interfaces

  [`hex_encode']: Hexadecimal encoding library

  This library implements hexadecimal encoding and decoding

  [`hg_lib']: A library that wraps the Mercurial command line interface

  A library that wraps the Mercurial command line interface.

  [`int_repr']: Integers of various widths

  Integers of various widths.

  [`jsonaf']: A library for parsing, manipulating, and serializing data
  structured as JSON

  A library for parsing, manipulating, and serializing data structured
  as JSON.

  [`krb']: A library for using Kerberos for both Rpc and Tcp

  Jane Street's library for Kerberizing RPC connections so that
  • the server gets an authenticated principal (i.e. username) with
    every incoming connection, and
  • RPC communication may be encrypted, if necessary.

  [`magic-trace']: Easy Intel Processor Trace Visualizer

  Magic-trace makes it easy to record and visualize Intel Processor
      Trace data for debugging tricky performance issues.

  [`ocaml-embed-file']: Files contents as module constants

  Embed-file takes some files and generates code for an OCaml module
  defining string constants containing the contents of those files.

  [`ocaml_intrinsics']: Intrinsics

  Provides functions to invoke amd64 instructions (such as
       clz,popcnt,rdtsc,rdpmc) when available, or compatible software
       implementation on other targets.

  [`ocaml-probes']: USDT probes for OCaml: command line tool

  A tool for controlling user-space statically-defined tracing probes
  for OCaml.  Experimental.

  [`ppx_css']: A ppx that takes in css strings and produces a module for
  accessing the unique names defined within

  A ppx that takes in css strings and produces a module for accessing
  the unique names defined within.

  [`ppx_disable_unused_warnings']: Expands [@disable_unused_warnings]
  into [@warning \"-20-26-32-33-34-35-36-37-38-39-60-66-67\"]

  Part of the Jane Street's PPX rewriters collection.

  [`ppx_ignore_instrumentation']: Ignore Jane Street specific
  instrumentation extensions

  Ignore Jane Street specific instrumentation extensions from internal
     PPXs or compiler features not yet upstreamed.

  [`ppx_jsonaf_conv']: [@@deriving] plugin to generate Jsonaf conversion

  Part of the Jane Street's PPX rewriters collection.

  [`ppx_typed_fields']: GADT-based field accessors and utilities

  Part of the Jane Street's PPX rewriters collection.

  [`ppx_type_directed_value']: Get [@@deriving]-style generation of
  type-directed values without writing a ppx

  `Ppx_type_directed_value' is a ppx that does `[@@deriving]'-style
  generation of type-directed values based on user-provided modules. The
  user-provided modules tell `ppx_type_directed_value' how to compose
  type-directed values (for example, combine type-directed values of the
  fields of a record to form a type-directed value for the record

  This allows a wide variety of PPXs such as `ppx_sexp_conv',
  `ppx_compare', `ppx_enumerate', etc. to be implemented with
  `ppx_type_directed_value', but with some runtime cost.

  This PPX currently supports deriving type-directed values for records,
  ordinary & polymorphic variants and tuples. It also supports custom
  user-defined attributes on record and variant fields.

  [`profunctor']: A library providing a signature for simple profunctors
  and traversal of a record

  This is a very small library which provides a signature for profunctor
  types and operations which can be used to traverse a record with them
  based on record_builder and the `ppx_fields' syntax extension.

  [`redis-async']: Redis client for Async applications

  A client library for Redis versions 6 and higher.

  Provides a strongly-typed API with transparent (de)serialization for
  application-defined types.

  Supports client tracking and internally uses the RESP3 protocol.

  [`sexp_diff']: Code for computing the diff of two sexps

  The code behind the [diff] subcommand of the Jane Street's [sexp]
  command line tool.

  [`sexp_grammar']: Sexp grammar helpers

  Helpers for manipulating [Sexplib.Sexp_grammar] values.

  [`sexp_string_quickcheck']: Quickcheck helpers for strings parsing to

  This library provides quickcheck generators, helpers, and shrinkers
  for quickcheck-based tests that wish to exercise the concrete syntax
  of sexps, including escape sequences and comments.

  [`tracing']: Tracing library

  Utilities for creating and parsing traces in Fuchsia Trace Format.

  [`username_kernel']: An identifier for a user

  A string representation for a user, typically a UNIX username

[`abstract_algebra'] <>


[`bigdecimal'] <>



[`core_compat'] <>

[`env_config'] <>

[`file_path'] <>

[`fuzzy_match'] <>

[`fzf'] <>

[`hardcaml_c'] <>

[`hardcaml_circuits'] <>




[`hardcaml_verify'] <>


[`hardcaml_xilinx'] <>


[`hex_encode'] <>

[`hg_lib'] <>

[`int_repr'] <>

[`jsonaf'] <>

[`krb'] <>

[`magic-trace'] <>

[`ocaml-embed-file'] <>

[`ocaml_intrinsics'] <>

[`ocaml-probes'] <>

[`ppx_css'] <>



[`ppx_jsonaf_conv'] <>

[`ppx_typed_fields'] <>


[`profunctor'] <>

[`redis-async'] <>

[`sexp_diff'] <>

[`sexp_grammar'] <>


[`tracing'] <>

[`username_kernel'] <>

EmelleTV Show - 2022

  Archive: <>

David Sancho announced

  I'm creating a post as a header from this season of *EmelleTV* in
  2020. Will use this post to share announcements, new shows, gather
  feedback and invite you to watch and follow

  For the ones who doesn't know us, It's a streaming show that will
  happen once per month and will try to interview and talk casually
  about OCaml, Reason, ReScript and their communities. Inviting
  interesting engineers and ask silly questions about literally

  If can't attend live, we publish the VOD in youtube under
  [].  You can
  re-watch some of the 2021 interviews, they were a ton of fun for me.

  It's made by myself and @fakenickels.

  Feel free to share any feedback, propose any guest or make fun of us

[] <>


Open source editor for iOS, iPadOS and macOS


Nathan Fallet announced

  Just released the app on the Play Store for Android: [Play Store]

  Feel free to give your feedback as well. I tried to make it like the
  iOS/macOS version. For now, the only missing feature is syntax
  highlighting, but I'm working on it (I still have a few bugs with it)

[Play Store]

The mysterious pointer in the runtime closure representation


Deep in this thread, Yue Li Picasso announced

  Thanks for your replies @silene @zozozo !  Due to project interest I
  need to understand the runtime value representation. Now I released a
  little library for displaying runtime values in textual form:

[OInspect] <>

Other OCaml News

From the ocamlcore planet blog

  Here are links from many OCaml blogs aggregated at [OCaml Planet].

  • [MirageOS 4 Released!]
  • [PhD Position at CEA LIST - LSL]
  • [All your metrics belong to influx]
  • [Secure Virtual Messages in a Bottle with SCoP]
  • [Research internships in our Tools and Compilers group]

[OCaml Planet] <>

[MirageOS 4 Released!]

[PhD Position at CEA LIST - LSL]

[All your metrics belong to influx]

[Secure Virtual Messages in a Bottle with SCoP]

[Research internships in our Tools and Compilers group]


  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

  If you also wish to receive it every week by mail, you may subscribe

  [Alan Schmitt]

[send me a message] <>

[the archive] <>

[RSS feed of the archives] <>

[online] <>

[Alan Schmitt] <>

[-- Attachment #1.2: Type: text/html, Size: 33080 bytes --]

[-- Attachment #2: Type: text/plain, Size: 119 bytes --]

Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'INRIA.

             reply	other threads:[~2022-04-05 11:50 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-05 11:50 Alan Schmitt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-26 17:54 Alan Schmitt
2022-07-19  8:58 Alan Schmitt
2022-07-12  7:59 Alan Schmitt
2022-07-05  7:42 Alan Schmitt
2022-06-28  7:37 Alan Schmitt
2022-06-21  8:06 Alan Schmitt
2022-06-14  9:29 Alan Schmitt
2022-06-07 10:15 Alan Schmitt
2022-05-31 12:29 Alan Schmitt
2022-05-24  8:04 Alan Schmitt
2022-05-17  7:12 Alan Schmitt
2022-05-10 12:30 Alan Schmitt
2022-05-03  9:11 Alan Schmitt
2022-04-26  6:44 Alan Schmitt
2022-04-19  5:34 Alan Schmitt
2022-04-12  8:10 Alan Schmitt
2022-03-29  7:42 Alan Schmitt
2022-03-22 13:01 Alan Schmitt
2022-03-15  9:59 Alan Schmitt
2022-03-01 13:54 Alan Schmitt
2022-02-22 12:43 Alan Schmitt
2022-02-08 13:16 Alan Schmitt
2022-02-01 13:00 Alan Schmitt
2022-01-25 12:44 Alan Schmitt
2022-01-11  8:20 Alan Schmitt
2022-01-04  7:56 Alan Schmitt
2021-12-28  8:59 Alan Schmitt
2021-12-21  9:11 Alan Schmitt
2021-12-14 11:02 Alan Schmitt
2021-11-30 10:51 Alan Schmitt
2021-11-16  8:41 Alan Schmitt
2021-11-09 10:08 Alan Schmitt
2021-11-02  8:50 Alan Schmitt
2021-10-19  8:23 Alan Schmitt
2021-09-28  6:37 Alan Schmitt
2021-09-21  9:09 Alan Schmitt
2021-09-07 13:23 Alan Schmitt
2021-08-24 13:44 Alan Schmitt
2021-08-17  6:24 Alan Schmitt
2021-08-10 16:47 Alan Schmitt
2021-07-27  8:54 Alan Schmitt
2021-07-20 12:58 Alan Schmitt
2021-07-06 12:33 Alan Schmitt
2021-06-29 12:24 Alan Schmitt
2021-06-22  9:04 Alan Schmitt
2021-06-01  9:23 Alan Schmitt
2021-05-25  7:30 Alan Schmitt
2021-05-11 14:47 Alan Schmitt
2021-05-04  8:57 Alan Schmitt
2021-04-27 14:26 Alan Schmitt
2021-04-20  9:07 Alan Schmitt
2021-04-06  9:42 Alan Schmitt
2021-03-30 14:55 Alan Schmitt
2021-03-23  9:05 Alan Schmitt
2021-03-16 10:31 Alan Schmitt
2021-03-09 10:58 Alan Schmitt
2021-02-23  9:51 Alan Schmitt
2021-02-16 13:53 Alan Schmitt
2021-02-02 13:56 Alan Schmitt
2021-01-26 13:25 Alan Schmitt
2021-01-19 14:28 Alan Schmitt
2021-01-12  9:47 Alan Schmitt
2021-01-05 11:22 Alan Schmitt
2020-12-29  9:59 Alan Schmitt
2020-12-22  8:48 Alan Schmitt
2020-12-15  9:51 Alan Schmitt
2020-12-01  8:54 Alan Schmitt
2020-11-03 15:15 Alan Schmitt
2020-10-27  8:43 Alan Schmitt
2020-10-20  8:15 Alan Schmitt
2020-10-06  7:22 Alan Schmitt
2020-09-29  7:02 Alan Schmitt
2020-09-22  7:27 Alan Schmitt
2020-09-08 13:11 Alan Schmitt
2020-09-01  7:55 Alan Schmitt
2020-08-18  7:25 Alan Schmitt
2020-07-28 16:57 Alan Schmitt
2020-07-21 14:42 Alan Schmitt
2020-07-14  9:54 Alan Schmitt
2020-07-07 10:04 Alan Schmitt
2020-06-30  7:00 Alan Schmitt
2020-06-16  8:36 Alan Schmitt
2020-06-09  8:28 Alan Schmitt
2020-05-19  9:52 Alan Schmitt
2020-05-12  7:45 Alan Schmitt
2020-05-05  7:45 Alan Schmitt
2020-04-28 12:44 Alan Schmitt
2020-04-21  8:58 Alan Schmitt
2020-04-14  7:28 Alan Schmitt
2020-04-07  7:51 Alan Schmitt
2020-03-31  9:54 Alan Schmitt
2020-03-24  9:31 Alan Schmitt
2020-03-17 11:04 Alan Schmitt
2020-03-10 14:28 Alan Schmitt
2020-03-03  8:00 Alan Schmitt
2020-02-25  8:51 Alan Schmitt
2020-02-18  8:18 Alan Schmitt
2020-02-04  8:47 Alan Schmitt
2020-01-28 10:53 Alan Schmitt
2020-01-21 14:08 Alan Schmitt
2020-01-14 14:16 Alan Schmitt
2020-01-07 13:43 Alan Schmitt
2019-12-31  9:18 Alan Schmitt
2019-12-17  8:52 Alan Schmitt
2019-12-10  8:21 Alan Schmitt
2019-12-03 15:42 Alan Schmitt
2019-11-26  8:33 Alan Schmitt
2019-11-12 13:21 Alan Schmitt
2019-11-05  6:55 Alan Schmitt
2019-10-15  7:28 Alan Schmitt
2019-09-03  7:35 Alan Schmitt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).