[Caml-list] Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt
2019-12-31T09:18:39Z

[-- Attachment #1: Type: text/plain, Size: 14554 bytes --]

Hello

Here is the latest OCaml Weekly News, for the week of December 17 to 31,
2019.

Sorry for the hiatus last week, I was away with no internet
access. Happy new year!

Table of Contents
─────────────────

Internships at Be Sport (OCaml, Ocsigen)
ocaml-lsp preview
Reproducible builds with OCaml / opam and MirageOS
the OCaml Software Foundation
soupault: a static website generator based on HTML rewriting
Release of owl-symbolic 0.1.0
Old CWN

Internships at Be Sport (OCaml, Ocsigen)
════════════════════════════════════════

Archive:
<https://sympa.inria.fr/sympa/arc/caml-list/2019-12/msg00023.html>

Be Sport announced
──────────────────

Be Sport currently has several open internship positions for OCaml
developers.

Keywords: OCaml, Ocsigen, Mobile app development, Web, Database,
Sport, Social networks

Be Sport develops the first global platform dedicated to sport, in
collaboration with prominent actors of sport in France and in the
world. All our development is done in OCaml. Our Web and mobile apps
(iOS, Android) are developed as a multi-tier app using the Ocsigen
framework. Our premises are located in the center of Paris.

Please contact me for more information.

ocaml-lsp preview
═════════════════

Archive: <https://discuss.ocaml.org/t/ann-ocaml-lsp-preview/4876/1>

Rudi Grinberg announced
───────────────────────

I'm excited to announce [ocaml-lsp]. This project contains an
implementation of an LSP server for the OCaml language. The current
implementation piggy backs on the widely successful [merlin] tool to
provide completion & type inference. In the future, we'd like to use
all other essential tools such as ocamlformat, odoc, dune to provide
more functionality in your editors.

For now, the project isn't yet available on opam as we're still
polishing some rough edges in the release process. Nevertheless, I
invite all brave souls who are ready to experiment to give this lsp
server a try. Your feedback & contributions are most welcome
:slight_smile:

[ocaml-lsp] <https://github.com/ocaml/ocaml-lsp>

[merlin] <https://github.com/ocaml/merlin>

UnixJunkie asked and Anton Kochkov replied
──────────────────────────────────────────

This project looks nice.

If I am an Emacs or Vi user, can I take advantage of an
LSP server?

Or, is this only for some new editors like Atom or VScode?

@UnixJunkie of course! That's the whole point of this tooling.

For Vim you can choose between:
• [Coc.nvim] - most powerful of all, but written in TypeScript and
heaviest of all
• [Ale] - pure VimL
• [vim-lsp] - pure VimL
• [LanguageClient-neovim] - written in Rust
• Some other implementations

I am not an Emacs expert, but there is amazing LSP integration too:
• [lsp-mode]

<https://aws1.discourse-cdn.com/standard11/uploads/ocaml/original/2X/b/b8acd745527e801fef1eb3d4e8722d49c5c2ed1a.png>

[Coc.nvim] <https://github.com/neoclide/coc.nvim>

[Ale] <https://github.com/dense-analysis/ale>

[vim-lsp] <https://github.com/prabirshrestha/vim-lsp>

[LanguageClient-neovim]
<https://github.com/autozimu/LanguageClient-neovim>

[lsp-mode] <https://github.com/emacs-lsp/lsp-mode>

Pau Ruiz Safont said
────────────────────

Neovim 0.5.0 (now pre-released) has native LSP support as well:
<https://github.com/neovim/neovim/pull/11336>

Not sure how well integrated is it going to be with various plugins
([example])

[example] <https://github.com/Shougo/deoplete-lsp>

Anton Kochkov added
───────────────────

NeoVim 0.5.0 will also include the [tree-sitter] parser for syntax
highlighting, which will allow way better coloring. And tree-sitter
already has [OCaml grammar], so implementing semantics-aware syntax
highlighter will be easier. But I expect the support more or less
ready for external contributions only in 0.6.0, sadly. Integrating the
tool with something like [GitHub Semantic] (*Haskell alert*) will
greatly improve OCaml experience on GitHub too, see the [corresponding
issue].

[tree-sitter] <https://tree-sitter.github.io/tree-sitter/>

[OCaml grammar] <https://github.com/tree-sitter/tree-sitter-ocaml>

[GitHub Semantic] <https://github.com/github/semantic>

[corresponding issue] <https://github.com/github/semantic/issues/138>

Pieter Goetschalckx said
────────────────────────

The next step for Semantic support is documented [here], but I'm
working on some [improvements] of the tree-sitter parser first.

[here]
<https://github.com/tree-sitter/haskell-tree-sitter/blob/master/docs/codegen.md>

[improvements]
<https://github.com/tree-sitter/tree-sitter-ocaml/pull/36>

Carlos D'Agostino said
──────────────────────

For Emacs there is also `eglot': <https://github.com/joaotavora/eglot>
– As the README says, it's quite minimalist compared to `lsp-mode'.

Reproducible builds with OCaml / opam and MirageOS
══════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/reproducible-builds-with-ocaml-opam-and-mirageos/4877/1>

Hannes Mehnert announced
────────────────────────

I wrote up recent developments about reproducible builds with opam –
including some tooling <https://hannes.nqsb.io/Posts/ReproducibleOPAM>

Thanks to everyone involved in the effort to get OCaml and opam
deterministic
• Nov 2015 [I collected downstream patches and asked kindly to get
them upstream] (temporary flle names in binaries, timestamps)
• Dec 2017 [BUILD_PATH_PREFIX_MAP support] (and further patches for
that)
• Dec 2018 Paris summit [opam reproducibility] [MirageOS]
• [`orb'] tool for reproducibility testing (so much better than the
shell scripts I used in the meantime)
• Dec 2019 [Marrakesh summit]

The journey is not yet finished, we're in a pretty good shape, but
further testing and tooling is needed to expose the information "is my
library reproducible?" to OCaml developers.

I'm interested in feedback, please let us discuss this further here in
case you're interested. :D

[I collected downstream patches and asked kindly to get them upstream]
<https://github.com/ocaml/ocaml/issues/7037>

[BUILD_PATH_PREFIX_MAP support]
<https://github.com/ocaml/ocaml/pull/1515>

[opam reproducibility]
<https://reproducible-builds.org/events/paris2018/report/#Toc11410_331763073>

[MirageOS]
<https://reproducible-builds.org/events/paris2018/report/#Toc11681_331763073>

[`orb'] <https://github.com/rjbou/orb>

[Marrakesh summit]
<https://reproducible-builds.org/events/Marrakesh2019/>

Anil Madhavapeddy added
───────────────────────

An absolutely amazing cross-layer effort; well done on pushing all
this through @hannes! I really enjoyed reading the minutes of the
Paris summit last year:
<https://reproducible-builds.org/events/paris2018/report/#Toc11681_331763073>

the OCaml Software Foundation
═════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-the-ocaml-software-foundation/4476/13>

Continuing this thread, gasche announced
────────────────────────────────────────

A small report on the actions that we launched since my initial
posting.

(There was also some progress on the "enabling individual donations"
front, maybe something will be possible in the next few months. Don't
start holding your breath yet.)

• We are funding the "Leafs" research project in Lisbon to develop
teaching material for theoretical-computer-science courses (automata
and stuff) in OCaml, with interactive visualization components, some
of which will hopefully be integrated in the [Learn-OCaml] platform
over the course of 2020/2021.
• We provide funding for the [Gallium/Cambium] research team at INRIA
Paris (France), an active place for OCaml-related fundamental
research (some of the team members are also very active on the
implementation front, for example Xavier Leroy, Damien Doligez,
Florian @octachron Angeletti, and Sébastien Hinderer).
• We sponsor the [SWERC] programming contest for 2019-2020, and in
return the contest added OCaml to the list of available
languages. Most participants to these competitive-programming events
use C++, but we talked to past and active participants who said they
would be interested in using OCaml on some problems with more
symbolic computation.
• Over the course of the 4.10 release process, we are funding work by
@kit-ty-kate to have a wide look at the ecosystem and improve
compatibility with the upcoming release. (I believe that the
upstream PR [#9176] is a first result of this effort.)
• In reaction to the Discourse thread [Suggestions for OCaml
documentation], we are planning to fund further work by @sanette to
experiment with the HTML rendering of the OCaml manual, in
coordination with @octachron to try to upstream improvements when
reasonably possible.
• We got in touch with the [Owl] project to sponsor a development
sprint in 2020.

[Learn-OCaml] <http://ocaml-sf.org/learn-ocaml.html>

[Gallium/Cambium] <http://cambium.inria.fr/>

[SWERC] <https://swerc.eu/2019/about/>

[#9176] <https://github.com/ocaml/ocaml/pull/9176>

[Suggestions for OCaml documentation]
<https://discuss.ocaml.org/t/suggestions-for-ocaml-documentation/4504>

[Owl]
<https://discuss.ocaml.org/t/suggestions-for-ocaml-documentation/4504>

soupault: a static website generator based on HTML rewriting
════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-soupault-a-static-website-generator-based-on-html-rewriting/4126/10>

Daniil Baturin announced
────────────────────────

Made a [1.7.0 release].

First improvement is that you now can pipe the content of any element
through any external program with `preprocess_element' widget (PR by
Martin Karlsson). For example, insert inline SVG versions of all
graphviz graphs from ` ' and also
highlight the Dot source itself with [highlight] (or any other tool of
your choice):

┌────
│ [widgets.graphviz-svg]
│ widget = 'preprocess_element'
│ selector = 'pre.language-graphviz'
│ command = 'dot -Tsvg'
│ action = 'insert_after'
│
│ [widgets.highlight]
│ after = "graphviz-svg"
│ widget = "preprocess_element"
│ selector = '*[class^="language-"]'
│ command = 'highlight -O html -f --syntax=$(echo $ATTR_CLASS | sed -e "s/language-//")'
│ action = "replace_content" # default
└────

<https://aws1.discourse-cdn.com/standard11/uploads/ocaml/original/2X/a/a4d8cc05d65634de0faf3c05b16e0de8d27a78a3.png>

Two other improvements are multiple index "views" and default value
option for custom index fields, like
┌────
│ [index.custom_fields]
│ category = { selector = "span#category", default = "Misc" }
└────

[1.7.0 release]
<https://soupault.neocities.org/blog/soupault-1.7.0-release>

[highlight] <http://andre-simon.de>

Release of owl-symbolic 0.1.0
═════════════════════════════

Archive:
<https://discuss.ocaml.org/t/announce-release-of-owl-symbolic-0-1-0/4930/1>

jrzhao42 announced
──────────────────

We are please to release [owl-symbolic 0.1.0]. It fully supports
defining a computation graph and running on accelerators (TPU/GPU) via
[ONNX] specification. It also aims to support converting an Owl
computation graph into symbolic representation and then to ONNX
model. The module also has some cool features like converting a
computation graph into LaTeX string, and then showing the result in a
web UI, etc.

We implements a full neural network module atop of it (the interface
of which is basically identical to that in Owl's core). It turns out
that the design of `owl-symbolic' is so nice that the DNN module only
has 179 LOC! You can easily define popular DNN architectures such as
Inception, ResNet, VGG, etc. just like in Owl.

This is still an on-going project and a lot remains to be
done. Despite its name, `owl-symbolic' does not do any useful computer
algebra (CAS) stuff at the moment, but CAS is indeed on our TODO.

For more information, please check out the related section in [Owl
tutorial book].

[owl-symbolic 0.1.0] <https://opam.ocaml.org/packages/owl-symbolic/>

[ONNX] <https://onnx.ai/>

[Owl tutorial book] <https://ocaml.xyz/owl_tutorials/symbolic.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@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/>

[-- Attachment #2: Type: text/html, Size: 26832 bytes --]