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
See Genspio’s documentation root at https://smondet.gitlab.io/genspio-doc/.
New in 0.0.2:
- Now, the default
EDSLmodule “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
- 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
bashshipped with Mac OSX).
- Lots of documentation work, including improvements to the
- A new biggish example:
src/examples/service_composer.mlwhich 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
- Also a lot of test hacking, including
vm_tester.mlwhich generates Qemu-based testing setups (e.g. a build of Darwin 8.0 to test very old OSX environments).
→ 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.”
→ ppx_deriving_cmdliner 0.4.1
ppx_deriving_cmdliner makes it easy to get a nice command line interface without really knowing much about
This release does not add any new feature, only build improvements (recent versions of OCaml,
dune-based build, …).