[cwn] Attn: Development Editor, Latest OCaml Weekly News
Alan Schmitt
alan.schmitt at polytechnique.org
Tue Apr 16 02:22:50 PDT 2019
Hello
Here is the latest OCaml Weekly News, for the week of April 09 to
16,
2019.
Table of Contents
─────────────────
Dune 1.9.0
Minisat-ml: a reimplementation of minisat in OCaml
Opam packages and CI
opam 2.0.4 release
Other OCaml News
Old CWN
Dune 1.9.0
══════════
Archive: <https://discuss.ocaml.org/t/ann-dune-1-9-0/3646/1>
Rudi Grinberg announced
───────────────────────
On behalf of the dune team, I'm pleased to announce the release
of
Dune 1.9.0. This release introduces a few exciting new features:
• A tagging mechanism for implementations called [variants]
• The ability to build libraries in the Coq proof assistant.
• A new `dune init' command to help users quickly generate
boilerplate
and get start with dune projects (contributed by @shonfeder)
I would like to thank Lucas Pluvinage and @ejgallego for
contributing
the first two features respectively. They've also collaborated
on a
[blog post] to describe these features in detail.
As usual, the change log is replicated here for your
convenience:
[variants] <https://dune.readthedocs.io/en/latest/variants.html>
[blog post] <https://dune.build/blog/dune-1-9-0/>
1.9.0 (09/04/2019)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Warn when generated `.merlin' does not reflect the
preprocessing
specification. This occurs when multiple stanzas in the same
directory use different preprocessing specifications. This
warning
can now be disabled with `allow_approx_merlin' (#1947, fix
#1946,
@rgrinberg)
• Watch mode: display "Success" in green and "Had errors" in red
(#1956, @emillon)
• Fix glob dependencies on installed directories (#1965,
@rgrinberg)
• Add support for library variants and default
implementations. (#1900, @TheLortex)
• Add experimental `$ dune init' command. This command is used
to
create or update project boilerplate. (#1448, fixes #159,
@shonfeder)
• Experimental Coq support (fix #1466, @ejgallego)
• Install .cmi files of private modules in a `.private'
directory
(#1983, fix #1973 @rgrinberg)
• Fix `dune subst' attempting to substitute on directories.
(#2000,
fix #1997, @rgrinberg)
• Do not list private modules in the generated index. (#2009,
fix
#2008, @rgrinberg)
• Warn instead of failing if an opam file fails to parse. This
opam
file can still be used to define scope. (#2023, @rgrinberg)
• Do not crash if unable to read a directory when traversing to
find
root (#2024, @rgrinberg)
• Do not exit dune if some source directories are unreadable.
Instead,
warn the user that such directories need to be ignored (#2004,
fix
#310, @rgrinberg)
• Fix nested `(binaries ..)' fields in the `env' stanza.
Previously,
parent `binaries' fields would be ignored, but instead they
should
be combined. (#2029, @rgrinberg)
• Allow "." in `c_names' and `cxx_names' (#2036, fix #2033,
@rgrinberg)
• Format rules: if a dune file uses OCaml syntax, do not format
it.
(#2014, fix #2012, @emillon)
Minisat-ml: a reimplementation of minisat in OCaml
══════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/minisat-ml-a-reimplementation-of-minisat-in-ocaml/3644/1>
Simon Cruanes announced
───────────────────────
We at [Imandra] just open sourced [minisat-ml] , a
reimplementation of
Minisat 2.2 in OCaml. The goal is to experiment with the
performance
difference between C++ and (low level) OCaml that stays as close
as
possible to the original.
The [report] provides more detailed explanations on the porting
process, as well as some experimental results. Personally I
think it'd
also be an interesting sample point for flambda and other
performance
tools of the ecosystem, since minisat 2.2 is a fixed target in a
field
known to require very high performance.
[Imandra] <https://imandra.ai>
[minisat-ml] <https://github.com/AestheticIntegration/minisat-ml>
[report]
<https://github.com/AestheticIntegration/minisat-ml/blob/master/docs/tech_report.md>
Opam packages and CI
════════════════════
Archive:
<https://sympa.inria.fr/sympa/arc/caml-list/2019-04/msg00023.html>
Helmut Brandl asked
───────────────────
I would like to run some continuous integration like travis ci
on my
opam package. Unfortunately ocaml is not supported directly by
travis. But I have found the GitHub repository
ocaml/ocaml-ci-scripts
and some instructions on how to use it.
My questions:
• Is this a stable form on how to use travis with ocaml?
• Are there experiences and are they good?
• Why has this solution been chosen instead of integrating ocaml
support directly into travis?
• Isn’t the solution an overkill, because it requires a complete
opam
and ocaml installation on the travis machines in order to test
an
opam package? Isn’t there the risk that travis might block
this form
of usage in the future?
• Is there a better method to use CI with ocaml?
Simon Cruanes replied
─────────────────────
I've had good experiences with travis recently, using the docker
script (an example here:
<https://github.com/c-cube/iter/blob/master/.travis.yml>).
if your package is opam 2-friendly it's just a matter of a local
pin
and a few switches. there are other options (variables, really)
to
install extra deps or deal with optional deps.
It's not particularly overkill since it just starts with a
docker
image with pre-installed opam switches.
Louis Roché also replied
────────────────────────
> - Is this a stable form on how to use travis with ocaml?
There is auto-ci that can be used to generate travis
configuration
relying on ocaml-ci-scripts.
<https://github.com/yomimono/autoci>
Anil Madhavapeddy also replied
──────────────────────────────
> - Is this a stable form on how to use travis with ocaml?
>
> - Are there experiences and are they good?
Last I checked, there were over 400 repositories on GitHub using
ocaml-ci-scripts. It's pretty stable.
> - Why has this solution been chosen instead of integrating
> ocaml
support
> directly into travis?
Why do you need direct integration with Travis? The use of the
Docker
support has made the necessity for that essentially obsolete.
See, for example:
<https://github.com/mirage/ocaml-cohttp/blob/master/.travis.yml>
in cohttp, which uses Travis and Docker to test the libraries on
a
variety of Linux distributions.
> - Isn’t the solution an overkill, because it requires a
> complete
opam and
> ocaml installation on the travis machines in order to test an
> opam
package?
> Isn’t there the risk that travis might block this form of
> usage in
the future?
>
> - Is there a better method to use CI with ocaml?
This solution is pretty good for most people. I'd encourage you
to
give it a try, and to contribute back any improvements or
feature
requests you might have after trying it out for a while.
Helmut Brandl then said
───────────────────────
Thanks for all the hints. Some experiences:
I have used the .travis.yaml file from the repo
ocaml/ocaml-ci-scripts, reduced the build matrix to a minimum
(only
4.07) and it worked out of the box. However to took approx 8 min
for
linux and 12 min for osx.
Therefore I have changed in the travis file ‘.travis-opam.sh’ to
‘.travis-docker.sh’ and added ’services: -docker’, because
docker has
been recommended by many.
Now the build failed after some seconds. Maybe there is more to
do
than this trivial change to switch to docker.
Is there some documentation on how to use docker? Is it worth
the
effort i.e. will it run faster or has it more features?
opam 2.0.4 release
══════════════════
Archive:
<https://discuss.ocaml.org/t/ann-opam-2-0-4-release/3651/1>
R. Boujbel announced
────────────────────
We are pleased to announce the release of [opam 2.0.4].
This new version contains mainly backported fixes, you can find
more
information in this [blog post].
/opam is a source-based package manager for OCaml. It supports
multiple simultaneous compiler installations, flexible package
constraints, and a Git-friendly development workflow./
[opam 2.0.4] <https://github.com/ocaml/opam/releases/tag/2.0.4>
[blog post] <https://opam.ocaml.org/blog/opam-2-0-4>
Anil Madhavapeddy said
──────────────────────
And for those of you using the Ubuntu PPA, it has been updated
to the
2.0.4 release: <https://launchpad.net/~avsm/+archive/ubuntu/ppa>
Marek Kubica also said
──────────────────────
Similarly the [macOS brew package].
[macOS brew package]
<https://formulae.brew.sh/formula/opam#default>
Perry E. Metzger also said
──────────────────────────
MacPorts has been updated as well, though it might take an hour
or two
for all the mirrors to adjust.
Other OCaml News
════════════════
From the ocamlcore planet blog
──────────────────────────────
Here are links from many OCaml blogs aggregated at [OCaml
Planet].
• [The Mirage retreat: field trip report]
• [opam 2.0.4 release]
• [opam 2.0.4 release]
• [Dune 1.9.0]
[OCaml Planet] <http://ocaml.org/community/planet/>
[The Mirage retreat: field trip report]
<http://gallium.inria.fr/blog/mirage-retreat-field-trip-report>
[opam 2.0.4 release]
<http://www.ocamlpro.com/2019/04/10/opam-2-0-4-release/>
[opam 2.0.4 release] <https://opam.ocaml.org/blog/opam-2-0-4/>
[Dune 1.9.0] <https://tarides.com/blog/2019-04-10-dune-1-9-0.html>
Old CWN
═══════
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
archives].
If you also wish to receive it every week by mail, you may
subscribe
[online].
[Alan Schmitt]
[send me a message] <mailto:alan.schmitt at polytechnique.org>
[the archive] <http://alan.petitepomme.net/cwn/>
[RSS feed of the archives]
<http://alan.petitepomme.net/cwn/cwn.rss>
[online] <http://lists.idyll.org/listinfo/caml-news-weekly/>
[Alan Schmitt] <http://alan.petitepomme.net/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20190416/1582c723/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20190416/1582c723/attachment-0001.pgp>
More information about the caml-news-weekly
mailing list