# \[ANN\] owl 0.5.0 released

**URL:** <https://discuss.ocaml.org/t/ann-owl-0-5-0-released/3466>\
**Category:** Community\
**Tags:** announce\
**Created:** [March 8, 2019, 12:47pm UTC](https://discuss.ocaml.org/t/ann-owl-0-5-0-released/3466 "2019-03-08T12:47:55Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![mseri](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/mseri/32/91_2.png) [@mseri](https://discuss.ocaml.org/u/mseri)\
**Post date:** [March 8, 2019, 12:47pm UTC](https://discuss.ocaml.org/t/ann-owl-0-5-0-released/3466/1 "2019-03-08T12:47:55Z")

</div>

# owl 0.5.0

We are happy to announce the new release of `owl`, a dedicated system for scientific and engineering computing in OCaml.

The project is thoroughly documented at [ocaml.xyz](http://ocaml.xyz) where you can find multiple examples of use. Notable demos are the [Google Inception demo](http://demo.ocaml.xyz/index.html) and the [Neural Style Transfer demo](http://demo.ocaml.xyz/neuraltrans.html)

This release, coming a year after the latest 0.4.0 release, includes multiple improvements in terms of fixed bugs, performance and in the internals of the [algorithmic differentiation engine](http://ocaml.xyz/chapter/algodiff.html).

It also comes with a large rewrite on the way both `owl` and some of the libraries it depends on are built, hopefully making its installation much easier and more flexible. Currently `owl 0.5.0` should compile seamlessly on osx and multiple linux distributions (including debian, fedora and alpine), with the only known exception of ubuntu (that requires a custom manual build of OpenBLAS). You can now also enable experimental features, like the OpenMP/AEOS, or customise the c/c++ build flags, directly when building wih opam by setting or passing the right env variables (refer to `owl` and `eigen` READMEs for further information).

This release also reduces he number of dependencies and stubs, moving toward a more modular approach for the framework: the tensorflow graph and `plplot` bindings are now provided by separate packages, with `owl-plplot` already released and `owl-tensorflow` coming soon. A new plot package (and its `jupyter` integration module) are also in development, allowing to generate plots using `gnuplot`.

You can read more about it on the official documentation page [ocaml.xyz](http://ocaml.xyz/) and on the `odoc` generated one [ocaml.xyz/owl](http://ocaml.xyz/owl).

## owl-ode

In conjunction with this release we are also happy to announce the first release of `owl-ode` and `owl-ode-sundials`.

The first is a small OCaml library providing the most common numerical ode integrators, in single-step and adaptive versions and fully compatible with `owl` type system. One interesting feature of `owl`vis that a larger and larger part of its core supports compilation via `js_of_ocaml`, `owl-ode` falls in the category of packages that support compilation to js.  
`owl-ode` also comes with support for symplectic integrators, providing an interesting framework to develop Hamiltonian Monte Carlo methods.

You can access the documentation of `owl-ode` inclusive of a small tutorial at [ocaml.xyz/owl\_ode/owl-ode](http://ocaml.xyz/owl_ode/owl-ode) and [ocaml.xyz/apidoc/ode.html](http://ocaml.xyz/apidoc/ode.html). Further examples are [available on the sources repository](https://github.com/owlbarn/owl_ode/tree/master/examples).

The second library is a wrapper to the `sundialsml` library, allowing to use the battle tested `cvode` directly on `owl`.

Both libraries are in their early days, and multiple features are still missing, but have been designed keeping in mind the ergonomics and flexibility from day one. To demonstrate this we synced the release with `ocaml-cviode`, a small OCaml library that provides lower order contact geometric integrators and is fully reliant on `owl-ode` to do the heavy lifting and provide the integration interface.

The future plans for `owl-ode` include:

- making the libraries more robust and better tested
- complete the `sundialsml` wrapper and document it
- add a wrapper to `ocaml-odepack`
- replicate Neural ODEs directly in owl

Every help is welcome!

The Owl Dev Team

---

<div class="post-metadata">

**Author:** ![n4323](https://avatars.discourse-cdn.com/v4/letter/n/97f17d/32.png) [@n4323](https://discuss.ocaml.org/u/n4323)\
**Post date:** [March 8, 2019, 1:10pm UTC](https://discuss.ocaml.org/t/ann-owl-0-5-0-released/3466/2 "2019-03-08T13:10:44Z")

</div>

Congratulations on the release! it’s great to see owl moving forward!

Some minor comments:

- owl opam installation requires dune \< 1.7.1 ?
- why a new plotting module based on the tried-and-true but really a bit antiquated gnuplot? why not interface with matplotlib or bind the [GR framework](https://github.com/sciapp/gr)?
- if some ocaml core dev would like to help owl, please have a look at [[https://github.com/ocaml/ocaml/pull/1726](https://github.com/ocaml/ocaml/pull/1726)] and try to get it included in 4.08

---

<div class="post-metadata">

**Author:** ![mseri](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/mseri/32/91_2.png) [@mseri](https://discuss.ocaml.org/u/mseri)\
**Post date:** [March 8, 2019, 1:23pm UTC](https://discuss.ocaml.org/t/ann-owl-0-5-0-released/3466/3 "2019-03-08T13:23:25Z")

</div>

Thank for your comments!

> [@n4323](#):
>
> - owl opam installation requires dune \< 1.7.1 ?

No, it requires `dune 1.2.1` or newer. This is necessary for some of the flag heuristics needed to configure the build on different systems.

> [@n4323](#):
>
> - why a new plotting module based on the tried-and-true but really a bit antiquated gnuplot? why not interface with matplotlib or bind the [GR framework](https://github.com/sciapp/gr)?

The modules are contributed and maintained by `owl` users, and they are built on top of what they like to use, in this particular case `gnuplot`. By extracting `plplot` we are trying to make the plotting situation fully modular so that any new binding and be added as seamlessly as possible, including ones for the javascript backed.

We would be really happy if somebody publishes compatible `matplotlib` or `gr` wrappers, we had even discussed about `matplotlib` recently. We don’t have the work-force for it at the moment.

> [@n4323](#):
>
> - if some ocaml core dev would like to help owl, please have a look at [[MPR#7557: Multi-indices for extended indexing operators by Octachron · Pull Request #1726 · ocaml/ocaml · GitHub](https://github.com/ocaml/ocaml/pull/1726)] and try to get it included in 4.08

Oh neat! I was not aware of it.

---

<div class="post-metadata">

**Author:** ![n4323](https://avatars.discourse-cdn.com/v4/letter/n/97f17d/32.png) [@n4323](https://discuss.ocaml.org/u/n4323)\
**Post date:** [March 8, 2019, 1:28pm UTC](https://discuss.ocaml.org/t/ann-owl-0-5-0-released/3466/4 "2019-03-08T13:28:25Z")

</div>

> [@mseri](#):
>
> No, it requires `dune 1.2.1` or newer. This is necessary for some of the flag heuristics needed to configure the build on different systems.

I just got

```auto
↘ downgrade dune 1.7.1 to 1.6.3 [required by owl]

```

from opam when installing owl 0.5.0, that’s why I asked.

---

<div class="post-metadata">

**Author:** ![mseri](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/mseri/32/91_2.png) [@mseri](https://discuss.ocaml.org/u/mseri)\
**Post date:** [March 8, 2019, 1:41pm UTC](https://discuss.ocaml.org/t/ann-owl-0-5-0-released/3466/5 "2019-03-08T13:41:02Z")

</div>

I have it currently installed (and built) with dune `1.7.1`.

But I was able to reproduce your issue: I arrived at `ocp-index` conflicts with `dune >= 1.7.0`. Removing `ocp-index` and retrying it actually worked without downgrading `owl`. For some reasons `opam` was getting confused by that (maybe the opam file has changed upstream after installing it, I don’t really know).

@n4323 please let me know if that works for you as well

---

<div class="post-metadata">

**Author:** ![avsm](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/avsm/32/6_2.png) [@avsm](https://discuss.ocaml.org/u/avsm)\
**Post date:** [March 8, 2019, 3:09pm UTC](https://discuss.ocaml.org/t/ann-owl-0-5-0-released/3466/6 "2019-03-08T15:09:05Z")

</div>

I ran into this with ocp-index as well and it is indeed oddly trick to track down. @rjbou has already fixed this with a [ocp-index pr to port it to dune](https://github.com/OCamlPro/ocp-index/pull/129/files) but it needs to be merged and released. If she has time at the Mirage retreat this would be a good one to get our opam-repo universe all coinstallable again 🙂
