[ANN] owl 0.8.0 and 0.9.0 released

We are happy to announce two new releases of owl: a dedicated system for scientific and engineering computing in OCaml.

Since our previous announcement in July last year, there has been an enormous amount of work going on to cleanup and extend owl’s internals and its interfaces.

In this period we have been trying to release often and keep disruption to a minimum. Owl 0.8.0 and 0.9.0 are exceptional in this respect:

  • owl.0.8.0:

    • the discrepancy between owl-base (pure ocaml) and owl (links cblas/lapacke) interfaces started becoming a problem in few places. In this release many interfaces have been unified and reused. The algodiff module has undergone a similar refactoring. Although most users should be shielded from these changes, they may break existing code, requiring an upper bound on owl and some localized updates. This should mostly boil down to changes like

      -module CGraph_D = Owl_computation_engine.Make_Graph (Owl_computation_cpu_device.Make (Dense.Ndarray.D))
      +module CGraph_D = Owl_computation_engine.Make_Graph (Owl_computation_cpu_device.Make (Owl_algodiff_primal_ops.D))
      
    • this is the last edition supporting OCaml compiler versions < 4.10.0 (more on this later).

  • owl.0.9.0: the main difference between 0.8.0 and 0.9.0 is that owl now requires OCaml 4.10.0. This release of OCaml introduces extended indexing operators. With them we can now write things like x.%{0;3} (for indexing) and x.${[0:2];[2;4]} (for slicing) instead of the more cumbersome x.%{[|0;3|]} and x.${[[0:2];[2;4]]}.

The project is thoroughly documented at ocaml.xyz where you can find multiple examples of use.

A lot of work has (and is) been going into improving the documentation, you can find the results in the new owl book: https://ocaml.xyz/book/toc.html. This is currently targeting the development version of owl, so using master or 0.9.0 is the best bet if you want to try the examples out.

One of the issue of the old documentation was that it was getting stale very fast: the book is reusing some of the infrastructure of RWO, so all examples get recompiled and retested continuously to ensure their correctness.

As a final note, we would like to send a huge thank to the OCaml Software Foundation, see also the announcement made on this forum, which has given us some funding that will support a retreat of the maintainers and a development sprint that will take place at the end of March.

We meant to announce the retreat and sprint for some time now, but the size and publicity of the event may depend on updates to the various governmental and institutional recommendation in regards to COVID-19 spreading.
If a public event will be possible, we will make a separate announce on this forum.

We want to also thank all the contributors for the increasing number of comments, fixes and discussions that are helping us shape the next releases of owl.

The Owl Dev Team

24 Likes

By the way, have you considered to add Bayesian basics? Something like PyMC3 or Turing.jl?

There is a project on this: https://ocaml.xyz/project/proposal.html#project-4-probabilistic-programming
But we first need to find the workforce

3 Likes

Have you considered setting GitHub Sponsors page for Owl/Book? From my expierience it’s much easier for those with GitHub account to subscribe, there are good examples of the projects that were funded with it:

It might help you to afford internship GSoC-like program for improving various parts of the framework or documentation.

2 Likes

a lazy question: I saw (I think) that owl has some bindings to suitesparse… does that include exposing graphblas to OCaml?

That is a work in progress, panned to replace eigen, @ryanrhymes should know more about its state