caml-list - the Caml user's mailing list
 help / 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, 06 Jul 2021 14:33:43 +0200
Message-ID: <878s2j8vvc.fsf@m4x.org> (raw)

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

Hello

Here is the latest OCaml Weekly News, for the week of June 29 to July
06, 2021.

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

LibreRef - LablGtk-based Digital Reference Tool Application
u2f - universal second factor
Reproducible OPAM packages / MirageOS
Dune 2.9.0
Hardcaml MIPS CPU Learning Project and Blog
dune-release 1.5.0
anders 0.7.1
Old CWN


LibreRef - LablGtk-based Digital Reference Tool Application
═══════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-libreref-lablgtk-based-digital-reference-tool-application/8077/1>


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

  I'm not sure if this is that close to the typical uses of OCaml, but
  posting this here just in case anyone was interested in another
  end-user facing application using LablGtk.

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

        LibreRef is a free as in freedom digital referencing tool
        for artists.

  It's written in OCaml using LablGtk and Cairo to implement the GUI.

  You can find the source code at: [gitlab] ([github mirror])

  A picture is worth a thousand words, so before I continue, here are a
  few examples of it in action:

  <https://aws1.discourse-cdn.com/standard11/uploads/ocaml/original/2X/1/126997c61b83b700feac41e380b42c560bdf2340.gif>

  <https://aws1.discourse-cdn.com/standard11/uploads/ocaml/original/2X/4/49b11ef943e491ba220332d257bc6a15b506ed6b.gif>

  Overall, getting LablGtk to work was fairly straightforward, although
  the documentation was a bit lacking (although the same might be said
  of Gtk itself).

  I was able to piece together the correct uses of most of the API calls
  by relying on either the examples from the repository or by
  translating snippets of code from online back into LablGtk.

  As for deploying it as an application, I found the AppImage &
  LinuxDeploy toolchain to work well with the resulting binary
  (admittedly I've only tested it with two devices so far), and it meant
  that I could publish the program without having to ask people to setup
  the full OCaml & Opam toolchain, which would probably be a large ask.

  As for the implementation, I think it was fairly elegant (if I say so
  myself :slight_smile:), although I may have gone overboard with
  functors (see this higher-order functor in the GUI interface:
  <https://gitlab.com/gopiandcode/libre-ref/-/blob/master/gui.mli#L175>)
  and some aspects of the separation of concerns weren't so well
  established.


[gitlab] <https://gitlab.com/gopiandcode/libre-ref>

[github mirror] <https://github.com/Gopiandcode/LibreRef>


u2f - universal second factor
═════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-u2f-universal-second-factor/8078/1>


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

  it is our pleasure to announce the just released opam package u2f,
  which is a server side implementation of the FIDO standard for
  two-factor authentication using a special device (yubikey etc.). The
  device does challenge-response authentication with the server using
  public key cryptography.

  The implementation is stateless and does not use a specific IO
  library, but only achieves the logic for constructing a registration
  request, verifying a response thereof, and authorization requests with
  responses thereof. Please have a look at
  <https://github.com/roburio/u2f> if you're interested. It is licensed
  under the permissive 2-clause BSD license.

  We use this library in an example server (in the `bin' directory) that
  uses dream. The live server is online at <https://u2f-demo.robur.coop>
  – please let us know if you run into any trouble, or open an issue on
  the GitHub repository.

  One question though: we're unable to generate the documentation from
  the mli – already asked on discord with no result. Anyone with a
  better understanding of odoc etc. can take a look why `dune build
  @doc' outputs a nearly empty file? Thanks a lot :)

  The development was sponsored by skolem.tech.


Reproducible OPAM packages / MirageOS
═════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/reproducible-opam-packages-mirageos/8079/1>


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

  we are pleased to announce reproducible binary images for MirageOS
  unikernels (see the blog post at
  <https://hannes.robur.coop/Posts/Deploy>). The binaries are located at
  <https://builds.robur.coop> (all components are open source and linked
  from the page).

  Additionally, the required tools to achieve reproducible builds are
  released as binary packages for various operating systems as well on
  the same site. They are used by the infrastructure to run daily builds
  (always with the HEAD of opam-repository to not loose any updates /
  new releases). The custom overlay
  <https://git.robur.io/robur/unikernel-repo> is used that adds some
  development packages.

  Happy to hear your thoughts and feedback here. (Earlier post
  <https://discuss.ocaml.org/t/reproducible-builds-with-ocaml-opam-and-mirageos/4877>)

  This work was funded by the [NGI Pointer] project "Funding The Next
  Generation Ecosystem of Internet Architects".


[NGI Pointer] <https://pointer.ngi.eu>


Dune 2.9.0
══════════

  Archive: <https://discuss.ocaml.org/t/ann-dune-2-9-0/8087/1>


Emilio Jesús Gallego Arias announced
────────────────────────────────────

  Dear all, on behalf of the Dune team I'm pleased to announce the
  release of Dune 2.9.0. This is the last release on the Dune 2.x series
  and could be considered a maintenance release as it mostly consists on
  bug fixes and miscellaneous tweaks and features for sites,
  instrumentation, and mdx support.

  Please find the full list of changes below:
  • Add `(enabled_if ...)' to `(mdx ...)'
    (<https://github.com/ocaml/dune/pull/4434>, @emillon)

  • Add support for instrumentation dependencies
    (<https://github.com/ocaml/dune/pull/4210>, fixes
    <https://github.com/ocaml/dune/issues/3983>, @nojb)

  • Add the possibility to use `locks' with the cram tests stanza
    (<https://github.com/ocaml/dune/pull/4480>, @voodoos)

  • Allow to set up merlin in a variant of the default context
    (<https://github.com/ocaml/dune/pull/4145>, @TheLortex, @voodoos)

  • Add `(package ...)' to `(mdx ...)'
    (<https://github.com/ocaml/dune/pull/4691>, fixes
    <https://github.com/ocaml/dune/issues/3756>, @emillon)

  • Handle renaming of `coq.kernel' library to `coq-core.kernel' in Coq
    8.14 (<https://github.com/ocaml/dune/pull/4713>, @proux01)

  • Fix generation of merlin configuration when using `(include_subdirs
    unqualified)' on Windows (<https://github.com/ocaml/dune/pull/4745>,
    @nojb)

  • Fix bug for the install of Coq native files when using
    `(include_subdirs qualified)'
    (<https://github.com/ocaml/dune/pull/4753>, @ejgallego)

  • Allow users to specify install target directories for `doc' and
    `etc' sections. We add new options `--docdir' and `--etcdir' to both
    Dune's configure and `dune install'
    command. (<https://github.com/ocaml/dune/pull/4744>, fixes
    <https://github.com/ocaml/dune/issues/4723>, @ejgallego, thanks to
    @JasonGross for reporting this issue)

  • Fix issue where Dune would ignore `(env ... (coq (flags ...)))'
    declarations appearing in `dune' files
    (<https://github.com/ocaml/dune/pull/4749>, fixes
    <https://github.com/ocaml/dune/issues/4566>, @ejgallego @rgrinberg)

  • Disable some warnings on Coq 8.14 and `(lang coq (>= 0.3))' due to
    the rework of the Coq "native" compilation system
    (<https://github.com/ocaml/dune/pull/4760>, @ejgallego)

  • Fix a bug where instrumentation flags would be added even if the
    instrumentatation was disabled (@nojb,
    <https://github.com/ocaml/dune/pull/4770>)

  • Fix <https://github.com/ocaml/dune/issues/4682>: option `-p' takes
    now precedence on environement variable `DUNE_PROFILE'
    (<https://github.com/ocaml/dune/pull/4730>,
    <https://github.com/ocaml/dune/pull/4774>, @bobot, reported by
    @dra27 <https://github.com/ocaml/dune/issues/4632>)

  • Fix installation with opam of package with dune sites. The
    `.install' file is now produced by a local `dune install' during the
    build phase (<https://github.com/ocaml/dune/pull/4730>,
    <https://github.com/ocaml/dune/pull/4645>, @bobot, reported by
    @kit-ty-kate <https://github.com/ocaml/dune/issues/4198>)

  • Fix multiple issues in the sites feature
    (<https://github.com/ocaml/dune/pull/4730>,
    <https://github.com/ocaml/dune/pull/4645> @bobot, reported by
    @Lelio-Brun <https://github.com/ocaml/dune/issues/4219>, by @Kakadu
    <https://github.com/ocaml/dune/issues/4325>, by @toots
    <https://github.com/ocaml/dune/issues/4415>)


Hardcaml MIPS CPU Learning Project and Blog
═══════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/hardcaml-mips-cpu-learning-project-and-blog/8088/1>


"Alexander (Sasha) Skvortsov announced
──────────────────────────────────────

  Tl;dr: I’m [writing a blog] about making a MIPS CPU in Hardcaml.

  Hi! My name is Sasha, and I’m a student at Penn State majoring in CS
  and Math. Last semester, I took a computer engineering class where we
  built a pipelined MIPS CPU in Verilog as a semester-long project. I
  enjoyed the class, but a lot of frustration came from Verilog itself.

  A few months ago, I came across the [Signals and Threads Programmable
  Hardware episode]. I really liked the idea of [Hardcaml]: a library to
  write and test hardware designs in OCaml. Representing circuits as
  functions felt like a good abstraction, and I’ve been wanting to learn
  OCaml for a while.

  So this summer, a friend and I are rewriting the Verilog MIPS CPU we
  made last semester into Hardcaml.  We’re still working on the project,
  but have made some good progress and wanted to share it in case anyone
  finds it interesting / useful. If anyone wants to take a look, it’s
  [up on GitHub].

  We’ve written some blog posts about our project:

  1. [Some more background on what we’re doing and why]
  2. [An ELI5 overview of how hardware, and pipelined CPUs in
     particular, work]
  3. [Another high-level overview of Verilog, hardware design, FPGAs,
     and why I think OCaml might be a great fit for hardware design]
  4. [How to set up a Hardcaml project, including testing and Verilog
     generation]
  5. [How to split Hardcaml circuits into multiple modules]

  There’s also a few more that we’ve written code for, but are still
  drafting blog posts about:

  • How to work with memory in Hardcaml
  • How to design stateful, sequential circuits in Hardcaml
  • A safer design pattern for Hardcaml circuits

  I’m new to both OCaml and blogging, and this has definitely been a fun
  experience so far! Would love to hear any feedback / comments.


[writing a blog] <https://ceramichacker.com/>

[Signals and Threads Programmable Hardware episode]
<https://signalsandthreads.com/programmable-hardware/>

[Hardcaml] <https://github.com/janestreet/hardcaml>

[up on GitHub] <https://github.com/askvortsov1/hardcaml-mips>

[Some more background on what we’re doing and why]
<https://ceramichacker.com/blog/1-1x-hardcaml-mips-intro-what-and-why>

[An ELI5 overview of how hardware, and pipelined CPUs in particular,
work]
<https://ceramichacker.com/blog/2-2x-a-bit-on-computers-hardware-and-cpus>

[Another high-level overview of Verilog, hardware design, FPGAs, and why
I think OCaml might be a great fit for hardware design]
<https://ceramichacker.com/blog/4-3x-verilog-fpgas-and-why-ocaml>

[How to set up a Hardcaml project, including testing and Verilog
generation]
<https://ceramichacker.com/blog/5-4x-ocaml-setup-hardcaml-basics-and-project-plan>

[How to split Hardcaml circuits into multiple modules]
<https://ceramichacker.com/blog/11-5x-multi-module-circuits-in-hardcaml>


dune-release 1.5.0
══════════════════

  Archive: <https://discuss.ocaml.org/t/ann-dune-release-1-5-0/8095/1>


Nathan Rebours announced
────────────────────────

  On behalf of the dune-release team I'm pleased to announce that we're
  releasing dune-release.1.5.0.

  It has been quite a while since the last release so there are numerous
  changes and improvements in this one, along with a lot of bug fixes.

  The two main new features in 1.5.0 are:
  • A draft release mode that creates a draft Github release and a draft
    PR to opam-repository. It comes with an `undraft' command that will
    undraft both and update the opam file's `url.src' field
    accordingly. We believe this feature will prove helpful to
    maintainers of tools such as `dune' which releases are often watched
    by distribution maintainers. Draft releases allow you to wait until
    you have opam-repository's CI approval to actually create a GH
    release that will notify anyone watching the repository. This
    feature is still a bit experimental, we have ideas on how to improve
    it but we wanted to get a first version out to collect feedback on
    how it is used and what you folks expect from it.
  • A `check' command that you can run ahead of a release to know if
    dune-release has all the information it needs in the repository,
    along with running the lint, build and test checks it normally runs
    after building the tarball. We're aware that it can be frustrating
    to see dune-release fail right in the middle of the release
    process. We're trying to improve this situation and this is a first
    step in that direction.

  You can see the full changelog [here]

  You'll note we also deprecated a few features such as delegates (as we
  announced in [this post]), opam 1.x and the `--user' option and
  corresponding config file field.  This release is likely to be the
  last 1.x release of `dune-release' except for important bug fixes as
  we'll start working on 2.0 soon.

  Our main goals for 2.0 are to make the experience for github users as
  seemless as possible. We want the tool to do the right thing for those
  users without them having to configure anything. Delegates got in the
  way there and that's why we're removing them.  We do care about our
  non github users and we've worked on making it as configurable as
  possible so that you can integrate it in your release workflow. The
  situation should already have improved quite a bit with this release
  as we fixed several bugs for non github hosted repositories. We want
  to make sure that these users will be happy with dune-release 2.0 as
  well.  Hopefully in the future dune-release will support other release
  workflows such as handling gitlab hosted repositories but we want to
  make sure our main user base is happy with the tool before adding
  this.

  We'll communicate a bit more on our plans for 2.0 in the next few
  months. Our hope is that it will hit opam before the end of this year.

  We hope that you'll like this new version and wish you all successful
  and happy releases!


[here] <https://github.com/ocamllabs/dune-release/releases/tag/1.5.0>

[this post]
<https://discuss.ocaml.org/t/replacing-dune-release-delegates/4767>


anders 0.7.1
════════════

  Archive: <https://discuss.ocaml.org/t/ann-anders-0-7-1/8098/1>


Namdak Tonpa announced
──────────────────────

  The HTS language proposed by Voevodsky exposes two different presheaf
  models of type theory: the inner one is homotopy type system presheaf
  that models HoTT and the outer one is traditional Martin-Löf type
  system presheaf that models set theory with UIP. The motivation behind
  this doubling is to have an ability to express semisemplicial
  types. Theoretical work on merging meta-theoretical and homotopical
  languages was continued in [2LTT] [Anenkov, Capriotti, Kraus,
  Sattler].

  While we are on our road to HTS with Lean-like tactic language,
  currently we are at the stage of regular cubical (HoTT) type checker
  with CHM-style primitives, or more general CCHM type checker. You may
  try it at Github: [groupoid/anders].

  ┌────
  │ $ opam install anders
  │ $ anders
  │ Anders theorem prover [PTS][MLTT][CCHM-4][HTS].
  │ 
  │    invoke = anders | anders list
  │      list = [] | command list
  │   command = check filename     | lex filename
  │           | parse filename     | help
  │           | cubicaltt filename | girard
  │           | trace
  └────

  Anders is idiomatic and educational. We carefully draw the favourite
  Lean-compatible syntax to fit 130 LOC in Menhir, the MLTT core (based
  on Mini-TT) is 500 LOC and pretypes presheaf is another 500 LOC.


[2LTT] <https://arxiv.org/pdf/1705.03307.pdf>

[groupoid/anders] <https://github.com/groupoid/anders>


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: 31723 bytes --]

         reply index

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

Reply instructions:

You may reply publically 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=878s2j8vvc.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

caml-list - the Caml user's mailing list

Archives are clonable: git clone --mirror https://inbox.ocaml.org/caml-list

AGPL code for this site: git clone https://public-inbox.org/ public-inbox