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: 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: 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] [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] [Coc.nvim] [Ale] [vim-lsp] [LanguageClient-neovim] [lsp-mode] Pau Ruiz Safont said ──────────────────── Neovim 0.5.0 (now pre-released) has native LSP support as well: Not sure how well integrated is it going to be with various plugins ([example]) [example] 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] [OCaml grammar] [GitHub Semantic] [corresponding issue] 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] [improvements] Carlos D'Agostino said ────────────────────── For Emacs there is also `eglot': – As the README says, it's quite minimalist compared to `lsp-mode'. Reproducible builds with OCaml / opam and MirageOS ══════════════════════════════════════════════════ Archive: Hannes Mehnert announced ──────────────────────── I wrote up recent developments about reproducible builds with opam – including some tooling 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] [BUILD_PATH_PREFIX_MAP support] [opam reproducibility] [MirageOS] [`orb'] [Marrakesh summit] 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: the OCaml Software Foundation ═════════════════════════════ Archive: 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] [Gallium/Cambium] [SWERC] [#9176] [Suggestions for OCaml documentation] [Owl] soupault: a static website generator based on HTML rewriting ════════════════════════════════════════════════════════════ Archive: 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
  └────

  

  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]


[highlight] 


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

  Archive:
  


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] 

[ONNX] 

[Owl tutorial book] 


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] 

[the archive] 

[RSS feed of the archives] 

[online] 

[Alan Schmitt]