[ANN] Releases: ppx_deriving_cmdliner, Genspio, Febusy

announce

#1

Hi, this week I cleaned-up and released 3 packages:

→ Genspio 0.0.2

Genspio is a typed EDSL used to generate shell scripts and commands from OCaml.

The idea is to build values of type 'a Genspio.EDSL.t with the combinators in the Genspio.EDSL module, and compile them to POSIX shell scripts (or one-liners) with functions from Genspio.Compile.

See Genspio’s documentation root at https://smondet.gitlab.io/genspio-doc/.

New in 0.0.2:

  • Now, the default EDSL module “hides” the distinction between C-Strings and byte-arrays from the user. The distinction was introduced in the second version 0.0.1, cf. discussion in my OCaml 2017 talk.
  • The lower-level API is still there in the module EDSL_v0.
  • There is a new compiler (EDSL.Compile.Slow_flow) which is still just a compiler to POSIX shell scripts, but it uses (many) temporary files to overall simplify the generated code. The goal is to bypass bugs in shells that cannot really handle complex POSIX expressions (one example of which is the quite old version of bash shipped with Mac OSX).
  • Lots of documentation work, including improvements to the js_of_ocaml toplevel-website.
  • A new biggish example: src/examples/service_composer.ml which is a code generator for the “COSC” project (Github: smondet/cosc), a family of scripts which manage long-running processes in a GNU-Screen session (a bit in the style of docker-compose).
  • Also a lot of test hacking, including vm_tester.ml which generates Qemu-based testing setups (e.g. a build of Darwin 8.0 to test very old OSX environments).

(release PR: ocaml/opam-repository#12738)

→ Febusy 0.0.0

Febusy is a monadic-ish library to build dependency graphs between effectful computations while keeping track of their products, a.k.a. “build artifacts.”

One uses the module Febusy.Edsl to construct a direct acyclic graph of build artifacts and then the function Febusy.Edsl.Make_unix.run to “run” the incremental build. For now, the builds run sequentially but the build-artifacts are still properly kept track of between runs with “state” files.

Version 0.0.0 should be considered “alpha-preview stuff.”

(release PR: ocaml/opam-repository#12747)

→ ppx_deriving_cmdliner 0.4.1

The PPX ppx_deriving_cmdliner makes it easy to get a nice command line interface without really knowing much about Cmdliner's API.

It is a ppx_deriving plugin that generates a Cmdliner 'a Term for a given record type.

This release does not add any new feature, only build improvements (recent versions of OCaml, dune-based build, …).

See https://github.com/hammerlab/ppx_deriving_cmdliner.

(release PR: ocaml/opam-repository#12732)