caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Alan Schmitt <alan.schmitt@polytechnique.org>
To: "lwn" <lwn@lwn.net>, "cwn"  <cwn@lists.idyll.org>, caml-list@inria.fr
Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News
Date: Tue, 19 Jul 2022 10:58:59 +0200	[thread overview]
Message-ID: <87tu7djx64.fsf@m4x.org> (raw)

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

Hello

Here is the latest OCaml Weekly News, for the week of July 12 to 19,
2022.

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

Gopcaml-mode and Gopcaml-mode merlin (0.0.6) - Phoenix release (Support for OCaml 4.14.0!)
Sandmark Nightly - Benchmarking as a Service
OCamlFormat Web Configurator
Jane Street is Hiring Front End Engineers
BAP 2.5.0 Release
Why I used OCaml to developed a utility to download Jira items
Liquidsoap 2.1.0
Vim now highlights types, feedback welcome
Other OCaml News
Old CWN


Gopcaml-mode and Gopcaml-mode merlin (0.0.6) - Phoenix release (Support for OCaml 4.14.0!)
══════════════════════════════════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-gopcaml-mode-and-gopcaml-mode-merlin-0-0-6-phoenix-release-support-for-ocaml-4-14-0/10164/1>


Kiran Gopinathan announced
──────────────────────────

  Like the *phoenix*, /Gopcaml-mode/ *rises* again from the ashes!…

  …this time with support for OCaml 4.14.0 and OCaml 4.13.0 (by popular
  demand)

  See the [original release post ] for detailed instructions on how you
  can install it.


[original release post ]
<https://discuss.ocaml.org/t/introducing-gopcaml-mode-structural-ocaml-editing/5310>

Screenshots (if you haven't seen them before)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  <https://global.discourse-cdn.com/standard11/uploads/ocaml/original/2X/a/abc1ff0b5dbbefe2beb150f2c09148cb5472ece2.gif>

  <https://global.discourse-cdn.com/standard11/uploads/ocaml/original/2X/1/1d43e0f42cc17a30053ee4c71460e70e4061f711.gif>


Video
╌╌╌╌╌

  <https://www.youtube.com/watch?v=KipRuiLXYEo>


What's next?
╌╌╌╌╌╌╌╌╌╌╌╌

  • Support for OCaml 5.0
  • Better ergonomics for piping (i.e `_ |> _')
  • … you decide! (feature requests/pull requests welcome!)


Sandmark Nightly - Benchmarking as a Service
════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-sandmark-nightly-benchmarking-as-a-service/10174/1>


Shakthi Kannan announced
────────────────────────

  Tarides is happy to announce Sandmark Nightly benchmarking as a
  service. tl;dr OCaml compiler developers can now point development
  branches at the service and get sequential and parallel benchmark
  results at <https://sandmark.tarides.com>.

  [Sandmark] is a collection of sequential and parallel OCaml
  benchmarks, its dependencies, and the scripts to run the benchmarks
  and collect the results. Sandmark was developed for the Multicore
  OCaml project in order to (a) ensure that OCaml 5 (with multicore
  support) does not introduce regressions for sequential programs
  compared to sequential OCaml 4 and (b) OCaml 5 programs scale well
  with multiple cores. In order to reduce the noise and get actionable
  results, Sandmark is typically run on [tuned machines].  This makes it
  harder for OCaml developers to use Sandmark for development who may
  not have tuned machines with a large number of cores.

  To address this, we introduce Sandmark Nightly service which runs the
  sequential and parallel benchmarks for a set of compiler /variants/
  (branch/commit/PR + compiler & runtime options) on two tuned machines:

  • Turing (28 cores, Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz, 64 GB
    RAM)
  • Navajo (128 cores, AMD EPYC 7551 32-Core Processor, 504 GB RAM)

  OCaml developers can request their development branches to be added to
  the nightly runs by adding it to [sandmark-nightly-config]. The
  results will appear the following day at
  <https://sandmark.tarides.com>.

  Here is an illustration of sequential benchmark results from the
  service:

  <https://i.imgur.com/Mn7VZky.png>

  You should first specify the `number of variants' that you want for
  comparison, and then select either the `navajo' or `turing'
  hostnames. The dates for which benchmark results are available are
  then listed in the `date' column. If there are more than one result on
  a given day, then the specific variant name, SHA1 commit and date are
  displayed together for selection. You need to choose one of the
  variants as a baseline for comparison. In the following graph, the
  `5.1.0+trunk+sequential_20220712_920fb8e' build on the `navajo' server
  has been chosen as the baseline, and you can see the normalized time
  (seconds) comparison for the various Sandmark benchmarks for both
  `5.1.0+trunk+sequential_20220713_c759890' and
  `5.1.0+trunk+sequential_20220714_606abe8' variants. We observe that
  the `matrix_multiplication' and `soli' benchmark have become 5% slower
  as compared to the July 12, 2022 nightly run.

  <https://i.imgur.com/7b0yS0h.png>

  Similarly, the normalized MaxRSS (KB) graph for the same baseline and
  variants chosen for comparison is illustrated below:

  <https://i.imgur.com/SfMbEiu.png>

  The `mandelbrot6' and `fannkuchredux' benchmarks have increased the
  MaxRSS (KB) by 3% as compared to the baseline variant, whereas, the
  metric has significantly improved for the `lexifi-g2pp' and
  `sequence_cps' benchmarks.

  The parallel benchmark speedup results are also available from the
  Sandmark nightly runs.

  <https://i.imgur.com/uKFDXCv.png>

  <https://i.imgur.com/24BGXVZ.png>

  We observe from the speedup graph that there is not much difference
  between `5.1.0+trunk+parallel_20220714_606abe8' and the
  `5.1.0+trunk+decouple_20220706_eb7a38d' developer branch results. The
  x-axis in the graph represents the number of domains, while the y-axis
  corresponds to the speedup. The number in the parenthesis against each
  benchmark refers to the corresponding running time of the sequential
  benchmark. These comparison results are useful to observe any
  performance regressions over time. It is recommended to use the
  `turing' machine results for the parallel benchmarks as it is tuned.

  If you would like to use Sandmark nightly for OCaml compiler
  development, please do ping us for access to the
  [sandmark-nightly-config] repository so that you may add your own
  compiler variants.


[Sandmark] <https://github.com/ocaml-bench/sandmark>

[tuned machines]
<https://github.com/ocaml-bench/ocaml_bench_scripts#notes-on-hardware-and-os-settings-for-linux-benchmarking>

[sandmark-nightly-config]
<https://github.com/ocaml-bench/sandmark-nightly-config>


OCamlFormat Web Configurator
════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-ocamlformat-web-configurator/10103/6>


Louis Roché announced
─────────────────────

  Thanks to [Pomba Magar] we now have a code editor with
  highlighting. It hopefully should also solve the lack of monospace
  font on safari.

  <https://global.discourse-cdn.com/standard11/uploads/ocaml/optimized/2X/9/96fb3536409c5553926228f097812d5b63bd6db8_2_1380x798.jpeg>


[Pomba Magar] <https://github.com/pjmp>


Jane Street is Hiring Front End Engineers
═════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/jane-street-is-hiring-front-end-engineers/10183/1>


Matt Russell announced
──────────────────────

  Jane Street is looking to hire Front End Engineers that want to design
  and build our next-generation of browser-based tools for operating our
  trading infrastructure (in OCaml).  We’re building tools for expert
  users, and want to maintain a high UX bar while building tools that
  are powerful and flexible, so it’s a challenging domain.

  Ron Minsky wrote a bit more about the role here:
  <https://twitter.com/yminsky/status/1541605410691596289?s=20&t=yyrhGx7TnNwPIwdZoArpGw>

  And you can find a link to the job descriptions and the application
  page here:

  • NYC: [Front End Software Engineer: Experienced: Jane Street]
  • LDN: [Front End Software Engineer: Experienced: Jane Street]


[Front End Software Engineer: Experienced: Jane Street]
<https://www.janestreet.com/join-jane-street/position/6184529002/>

[Front End Software Engineer: Experienced: Jane Street]
<https://www.janestreet.com/join-jane-street/position/6236002002/>


BAP 2.5.0 Release
═════════════════

  Archive: <https://discuss.ocaml.org/t/ann-bap-2-5-0-release/10185/1>


Ivan Gotovchits announced
─────────────────────────

  We are proud to announce the 2.5.0 release of the Carnegie Mellon
  University Binary Analysis Platform (CMU BAP). This is one of the
  biggest releases of BAP with lots of new [features and bug fixes]. In
  this release, we significantly improved BAP performance (in some use
  cases by a factor of three) and reduced memory consumption (up to a
  factor of two). In addition, we devised a new method for representing
  floating-point operations that is scalable and efficient and now we
  enable floating-point lifters for all x86 binaries with little to no
  extra overhead. The floating-point support for other targets is
  coming! We also rewrote the ABI specifications and now support dozens
  of different ABI.  The new ABIs support calling conventions for
  structures and floating-point values and the `bap-c` library was
  significantly expanded with lots of new functions and types to
  describe C types and C object layouts.

  You can install bap with

  ┌────
  │ opam install bap.2.5.0
  └────

  Do not forget to `opam update' before that.


[features and bug fixes]
<https://github.com/BinaryAnalysisPlatform/bap/releases/tag/v2.5.0>


Why I used OCaml to developed a utility to download Jira items
══════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/why-i-used-ocaml-to-developed-a-utility-to-download-jira-items/10186/1>


Willem Hoek announced
─────────────────────

  Not a technical post – but my notes on why I decided to used OCaml to
  develop a small utility that download Jira items to SQLite
  [https://whoek.com/b/jira-to-sqlite-with-scrumdog]

  The Hacker News comments here
  [https://news.ycombinator.com/item?id=32109461]


[https://whoek.com/b/jira-to-sqlite-with-scrumdog]
<https://whoek.com/b/jira-to-sqlite-with-scrumdog>

[https://news.ycombinator.com/item?id=32109461]
<https://news.ycombinator.com/item?id=32109461>


Liquidsoap 2.1.0
════════════════

  Archive: <https://discuss.ocaml.org/t/ann-liquidsoap-2-1-0/10192/1>


Romain Beauxis announced
────────────────────────

  Liquidsoap `2.1.0' was just released, some `10 months after the
  initial release of the ~2.0.x' release cycle!

  The release is available here:
  <https://github.com/savonet/liquidsoap/releases/tag/v2.1.0> and should
  be coming through `opam' pretty soon.


🤔  What is liquidsoap?
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Liquidsoap is a statically-typed, type-inferred, functional scripting
  language equipped with specialized operators to build audio and video
  stream automation.

  The liquidsoap language offers all the flexibility and expressivity of
  a fully featured programming language to help build your media
  streams.

  Using liquidsoap, one can very quickly stand up a media streaming
  platform that can rotate files from playlists, accept live DJ input,
  mux audio and video, encode (or not!) and send the resulting data to
  youtube, icecast, HLS and more..


:white_check_mark: Why liquidsoap?
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  While there are many tools that offer competing features, the real
  difference with liquidsoap is its scripting language.

  Setting up tools using configuration files is often easier and more
  straight forward, however, when it comes to the finer details, such as
  inserting jingles between shows, defining crossfades between tracks
  and more, potentially, each project has its own set of expectations,
  and this is where liquidsoap becomes really useful!


:zap:️ What's new in Liquidsoap 2.1.0?                              :zap:
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Lots of things have been brewing since the `2.0.0' release. This new
  release branch is intended to bring up some of the breaking changes
  that were introduced while we keep working on more exciting future
  changes that we have on our [roadmap]

  Some noticeable changes include:


[roadmap] <https://github.com/savonet/liquidsoap/blob/main/ROADMAP.md>

Improved JSON parsing
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄

  You should now be able to do:
  ┌────
  │ let json.parse ({
  │   foo,
  │   bla,
  │   gni
  │ } : {
  │   foo: string,
  │   bla: float,
  │   gni: bool
  │ }) = '{ "foo": "aabbcc", "bla": 3.14, "gni": true }'
  └────
  For any one who has ever tried to parse json in their liquidsoap
  scripts, this is gonna be a game changer. We have a detailed article
  [here]


[here] <https://www.liquidsoap.info/doc-dev/json.html>


Regular expressions are now first-class entities.
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄

  This should be familiar to anyone used to working with Javascript's
  regular expression. So, now, instead of doing:

  ┌────
  │ string.match(pattern="\\d+", s)
  └────

  You will now do:

  ┌────
  │ r/\d+/.test(s)
  └────

  There's a detailed description of this new feature [here].


[here]
<https://www.liquidsoap.info/doc-dev/language.html#regular_expressions>


Vim now highlights types, feedback welcome
══════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/vim-now-highlights-types-feedback-welcome/10198/1>


Maëlan announced
────────────────

  [A patch] just made its way to [the community-maintained Vim files for
  OCaml] (not propagated to the [official Vim distribution], yet), that
  tries to highlight types. IMHO the patch is large and hacky so you may
  want to try it cautiously, and *feedback would be appreciated*. :-)

  The former behavior was to highlight identifiers that happened to be
  the name of a builtin type (such as `int' or `list'), regardless of
  where they appeared. Now, in principle, all type expressions can be
  highlighted, and be so only when in a type context. By default, only
  builtin types are highlighted, but you can unleash the full power of
  the new linter:

  ┌────
  │ " put this in ~/.vim/after/syntax/ocaml.vim for instance:
  │ hi link ocamlTypeConstr   Type
  │ hi link ocamlTypeBuiltin  Type
  │ hi link ocamlTypeVar      Type
  │ hi link ocamlTypeAnyVar   Type
  └────

  or fancier (if you like excess :rainbow:):

  ┌────
  │ " 112 = light green (the color of the “Type“ hl group with my theme)
  │ hi ocamlTypeConstr       ctermfg=112
  │ hi ocamlTypeBuiltin      ctermfg=112 cterm=bold
  │ hi ocamlTypeVar          ctermfg=112 cterm=italic
  │ hi ocamlTypeAnyVar       ctermfg=112 cterm=bold
  └────

  Even if you don’t care about highlighting types, allowing the linter
  to discriminate between types and exceptions has some tangential
  benefits.


[A patch] <https://github.com/ocaml/vim-ocaml/pull/76>

[the community-maintained Vim files for OCaml]
<https://github.com/ocaml/vim-ocaml>

[official Vim distribution]
<https://github.com/vim/vim/tree/master/runtime>


Other OCaml News
════════════════

From the ocaml.org blog
───────────────────────

  Here are links from many OCaml blogs aggregated at [the ocaml.org
  blog].

  • [Faster Incremental Builds with Dune 3]


[the ocaml.org blog] <https://ocaml.org/blog/>

[Faster Incremental Builds with Dune 3]
<https://tarides.com/blog/2022-07-12-faster-incremental-builds-with-dune-3>


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] <https://alan.petitepomme.net/cwn/>

[RSS feed of the archives] <https://alan.petitepomme.net/cwn/cwn.rss>

[online] <http://lists.idyll.org/listinfo/caml-news-weekly/>

[Alan Schmitt] <https://alan.petitepomme.net/>


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

             reply	other threads:[~2022-07-19  8:59 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-19  8:58 Alan Schmitt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-26 17:54 Alan Schmitt
2022-07-12  7:59 Alan Schmitt
2022-07-05  7:42 Alan Schmitt
2022-06-28  7:37 Alan Schmitt
2022-06-21  8:06 Alan Schmitt
2022-06-14  9:29 Alan Schmitt
2022-06-07 10:15 Alan Schmitt
2022-05-31 12:29 Alan Schmitt
2022-05-24  8:04 Alan Schmitt
2022-05-17  7:12 Alan Schmitt
2022-05-10 12:30 Alan Schmitt
2022-05-03  9:11 Alan Schmitt
2022-04-26  6:44 Alan Schmitt
2022-04-19  5:34 Alan Schmitt
2022-04-12  8:10 Alan Schmitt
2022-04-05 11:50 Alan Schmitt
2022-03-29  7:42 Alan Schmitt
2022-03-22 13:01 Alan Schmitt
2022-03-15  9:59 Alan Schmitt
2022-03-01 13:54 Alan Schmitt
2022-02-22 12:43 Alan Schmitt
2022-02-08 13:16 Alan Schmitt
2022-02-01 13:00 Alan Schmitt
2022-01-25 12:44 Alan Schmitt
2022-01-11  8:20 Alan Schmitt
2022-01-04  7:56 Alan Schmitt
2021-12-28  8:59 Alan Schmitt
2021-12-21  9:11 Alan Schmitt
2021-12-14 11:02 Alan Schmitt
2021-11-30 10:51 Alan Schmitt
2021-11-16  8:41 Alan Schmitt
2021-11-09 10:08 Alan Schmitt
2021-11-02  8:50 Alan Schmitt
2021-10-19  8:23 Alan Schmitt
2021-09-28  6:37 Alan Schmitt
2021-09-21  9:09 Alan Schmitt
2021-09-07 13:23 Alan Schmitt
2021-08-24 13:44 Alan Schmitt
2021-08-17  6:24 Alan Schmitt
2021-08-10 16:47 Alan Schmitt
2021-07-27  8:54 Alan Schmitt
2021-07-20 12:58 Alan Schmitt
2021-07-06 12:33 Alan Schmitt
2021-06-29 12:24 Alan Schmitt
2021-06-22  9:04 Alan Schmitt
2021-06-01  9:23 Alan Schmitt
2021-05-25  7:30 Alan Schmitt
2021-05-11 14:47 Alan Schmitt
2021-05-04  8:57 Alan Schmitt
2021-04-27 14:26 Alan Schmitt
2021-04-20  9:07 Alan Schmitt
2021-04-06  9:42 Alan Schmitt
2021-03-30 14:55 Alan Schmitt
2021-03-23  9:05 Alan Schmitt
2021-03-16 10:31 Alan Schmitt
2021-03-09 10:58 Alan Schmitt
2021-02-23  9:51 Alan Schmitt
2021-02-16 13:53 Alan Schmitt
2021-02-02 13:56 Alan Schmitt
2021-01-26 13:25 Alan Schmitt
2021-01-19 14:28 Alan Schmitt
2021-01-12  9:47 Alan Schmitt
2021-01-05 11:22 Alan Schmitt
2020-12-29  9:59 Alan Schmitt
2020-12-22  8:48 Alan Schmitt
2020-12-15  9:51 Alan Schmitt
2020-12-01  8:54 Alan Schmitt
2020-11-03 15:15 Alan Schmitt
2020-10-27  8:43 Alan Schmitt
2020-10-20  8:15 Alan Schmitt
2020-10-06  7:22 Alan Schmitt
2020-09-29  7:02 Alan Schmitt
2020-09-22  7:27 Alan Schmitt
2020-09-08 13:11 Alan Schmitt
2020-09-01  7:55 Alan Schmitt
2020-08-18  7:25 Alan Schmitt
2020-07-28 16:57 Alan Schmitt
2020-07-21 14:42 Alan Schmitt
2020-07-14  9:54 Alan Schmitt
2020-07-07 10:04 Alan Schmitt
2020-06-30  7:00 Alan Schmitt
2020-06-16  8:36 Alan Schmitt
2020-06-09  8:28 Alan Schmitt
2020-05-19  9:52 Alan Schmitt
2020-05-12  7:45 Alan Schmitt
2020-05-05  7:45 Alan Schmitt
2020-04-28 12:44 Alan Schmitt
2020-04-21  8:58 Alan Schmitt
2020-04-14  7:28 Alan Schmitt
2020-04-07  7:51 Alan Schmitt
2020-03-31  9:54 Alan Schmitt
2020-03-24  9:31 Alan Schmitt
2020-03-17 11:04 Alan Schmitt
2020-03-10 14:28 Alan Schmitt
2020-03-03  8:00 Alan Schmitt
2020-02-25  8:51 Alan Schmitt
2020-02-18  8:18 Alan Schmitt
2020-02-04  8:47 Alan Schmitt
2020-01-28 10:53 Alan Schmitt
2020-01-21 14:08 Alan Schmitt
2020-01-14 14:16 Alan Schmitt
2020-01-07 13:43 Alan Schmitt
2019-12-31  9:18 Alan Schmitt
2019-12-17  8:52 Alan Schmitt
2019-12-10  8:21 Alan Schmitt
2019-12-03 15:42 Alan Schmitt
2019-11-26  8:33 Alan Schmitt
2019-11-12 13:21 Alan Schmitt
2019-11-05  6:55 Alan Schmitt
2019-10-15  7:28 Alan Schmitt
2019-09-03  7:35 Alan Schmitt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87tu7djx64.fsf@m4x.org \
    --to=alan.schmitt@polytechnique.org \
    --cc=caml-list@inria.fr \
    --cc=cwn@lists.idyll.org \
    --cc=lwn@lwn.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).