|
|
Log in / Subscribe / Register

OCaml Weekly News March 12

From:  Alan Schmitt <alan.schmitt-AT-polytechnique.org>
To:  "lwn" <lwn-AT-lwn.net>, caml-list-AT-inria.fr
Subject:  Attn: Development Editor, Latest OCaml Weekly News
Date:  Tue, 12 Mar 2024 11:31:09 +0100
Message-ID:  <m2edcfkahe.fsf@mac-03220211.irisa.fr>

Hello

Here is the latest OCaml Weekly News, for the week of March 05 to 12,
2024.

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

Js_of_ocaml 5.7
Bindings to QuickJS
Ocaml-windows 5.1.1
First release candidate for OCaml 4.14.2
OCaml.org Newsletter: February 2024
Announcing the New Dark Mode on OCaml.org
Call for presentations – ML 2024: ACM SIGPLAN ML Family Workshop
dream-html 3.0.0
ppx_minidebug 1.3.0: toward a logging framework
Other OCaml News
Old CWN


Js_of_ocaml 5.7
═══════════════

  Archive: <https://discuss.ocaml.org/t/ann-js-of-ocaml-5-7/14191/2>


Hhugo announced
───────────────

  Js_of_ocaml 5.7.1 has been released today.

  It fixes a mis-compilation bug introduced in the last release.

  As always, see the [Changelog ] for other changes.


[Changelog ]
<https://github.com/ocsigen/js_of_ocaml/blob/master/CHANGE...>


Bindings to QuickJS
═══════════════════

  Archive: <https://discuss.ocaml.org/t/ann-bindings-to-quickjs/14263/1>


David Sancho announced
──────────────────────

  I’m happy to announce a new library ([quickjs.ml]) that I have been
  working on, sometimes on-stream with the help of a few people
  (specially @welltypedbitch) and other times, just coding lonely.

  It’s an early project to bind to quickjs
  *<https://bellard.org/quickjs>* a small and embeddable JavaScript
  engine. It supports the ES2023 specification including modules,
  asynchronous generators, proxies and BigInt.

  It passes nearly 100% of the ECMAScript Test Suite tests when
  selecting the ES2023 features. A summary is available at [Test262
  Report] and has very low startup time (compared to other JS Engines).

  The need to bind to a JavaScript engine on OCaml appeared while
  working with server-reason-react components. While moving ReasonReact
  components from the browser into the server.

  Those components relied on JavaScript APIs such as DOM APIs, but also
  some “pure” JS. The part of the browser isn’t available on the server
  (obv) so we discard it with a ppx (called browser_ppx
  <https://twitter.com/davesnx/status/1765059888550686892>) but still
  there were some (”pure JS”) code that could run on the server such as
  Array/List/String operations, RegExp, i18n, Date, etc.

  On the browser, those apis are available under `melange.js' (which are
  bindings to JS:
  [https://melange.re/v2.0.0/communicate-with-javascript]) and I made an
  effort of having similar implemenations on `server-reason-react.js'
  which implemented in OCaml the same APIs, but there were a few issues
  that I couldn’t resolve in OCaml (or I didn’t want to resolve), for
  example the JavaScript RegExp engine had backtracing and named groups
  which Pcre (the first approach I used) doesn’t have.

  Those APIs are available (with a full test suite) on many JS engines,
  so It was a matter of choosing one and bind to it… which brings to
  release [quickjs.ml] into opam with RegExp support and ongoing
  *BigInt, Date, parse numbers, and encode/decode URI.*

  Let me know if you find it useful, and feel free to collab!

  PS: I'm very aware that the meme writes itself, OCaml to JS and now we
  bring JS into OCaml.


[quickjs.ml] <https://opam.ocaml.org/packages/quickjs/>

[Test262 Report] <https://test262.fyi/>

[https://melange.re/v2.0.0/communicate-with-javascript]
<https://melange.re/v2.0.0/communicate-with-javascript/>

[quickjs.ml] <http://quickjs.ml>


Ocaml-windows 5.1.1
═══════════════════

  Archive: <https://discuss.ocaml.org/t/ann-ocaml-windows-5-1-1/14268/1>


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

  A little over a week ago, `ocaml-windows.5.1.1' was added to
  [ocaml-cross/opam-cross-windows] 🎊

  The `opam-cross-windows' repository provides `opam' packages that
  build libraries and binaries targetting the windows platform from
  linux and macos hosts using the [mingw-w64] cross-compiler and
  [mxe.cc] for extenal dependencies.

  The addition of a `ocaml' cross-compiler version `5.1.1' makes it
  possible to compile code using the awesome new set of feature of the
  ocaml 5.x releases!

  A lot of packages still need to be updated to support the ocaml 5
  compiler. Fortunately, adding new `dune'-based packages has become
  remarkably easy thanks to `dune''s great cross-compilation
  support. Also, the CI could use some love.

  If you find it useful, feel free to come help!


[ocaml-cross/opam-cross-windows]
<https://github.com/ocaml-cross/opam-cross-windows>

[mingw-w64] <https://www.mingw-w64.org/>

[mxe.cc] <https://mxe.cc/>


First release candidate for OCaml 4.14.2
════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/first-release-candidate-for-o...>


octachron announced
───────────────────

  The release of OCaml version 4.14.2 is imminent.

  OCaml 4.14.2 is a new update to the stable 4.14 branch of OCaml. This
  new release backports many safe bug fixes from the OCaml 5 branch and
  fixes a handful of compatibility issues of OCaml 4.14.1 with newer
  operating system versions.

  A full list of bug fixes is available below.

  In order to ensure that the future release works as expected, we are
  planning to test a release candidate during the upcoming week (the rc
  candidate might take some time to propagate on the opam repository).

  If you find any bugs, please report them here on [GitHub].


[GitHub] <https://github.com/ocaml/ocaml/issues>

Installation Instructions
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  The base compiler can be installed as an opam switch with the
  following commands on opam 2.1:
  ┌────
  │ opam update
  │ opam switch create 4.14.2~rc1
  └────

  The source code for the release candidate is available on

  • [GitHub]
  • [Inria archives]


[GitHub] <https://github.com/ocaml/ocaml/archive/4.14.2-rc1.tar.gz>

[Inria archives]
<https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.2...>

◊ Fine-Tuned Compiler Configuration

  If you want to tweak the configuration of the compiler, you can switch
  to the option variant with:
  ┌────
  │ opam update
  │ opam switch create <switch_name> ocaml-variants.4.14.2~rc1+options <option_list>
  └────

  where `<option_list>' is a space-separated list of `ocaml-option-*'
  packages. For instance, for a `flambda' and `no-flat-float-array'
  switch:
  ┌────
  │ opam switch create 4.14.2~rc1+flambda+nffa ocaml-variants.4.14.2~rc1+options
ocaml-option-flambda ocaml-option-no-flat-float-array
  └────

  All available options can be listed with `opam search ocaml-option'.


Changes Since OCaml 4.14.1
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ Runtime System:

  • [#11764], [#12577]: Add prototypes to old-style C function
    definitions and declarations. (Antonin Décimo, review by Xavier
    Leroy and Nick Barnes)
  • [#11763], [#11759], [#11861], [#12509], [#12577]: Use strict
    prototypes on primitives. (Antonin Décimo, review by Xavier Leroy,
    David Allsopp, Sébastien Hinderer and Nick Barnes)
  • (*breaking change*) [#10723]: Do not use `-flat-namespace' linking
    for macOS.  (Carlo Cabrera, review by Damien Doligez)
  • [#11332], [#12702]: Make sure `Bool_val(v)' has type `bool' in C++
    (Xavier Leroy, report by ygrek, review by Gabriel Scherer)


  [#11764] <https://github.com/ocaml/ocaml/issues/11764>

  [#12577] <https://github.com/ocaml/ocaml/issues/12577>

  [#11763] <https://github.com/ocaml/ocaml/issues/11763>

  [#11759] <https://github.com/ocaml/ocaml/issues/11759>

  [#11861] <https://github.com/ocaml/ocaml/issues/11861>

  [#12509] <https://github.com/ocaml/ocaml/issues/12509>

  [#10723] <https://github.com/ocaml/ocaml/issues/10723>

  [#11332] <https://github.com/ocaml/ocaml/issues/11332>

  [#12702] <https://github.com/ocaml/ocaml/issues/12702>


◊ Build System:

  • [#11590]: Allow installing to a destination path containing spaces
    (Élie Brami, review by Sébastien Hinderer and David Allsopp)
  • [#12372]: Pass option `-no-execute-only' to the linker for OpenBSD
    >= 7.3 so that code sections remain readable, as needed for closure
    marshaling.  (Xavier Leroy and Anil Madhavapeddy, review by Anil
    Madhavapeddy and Sébastien Hinderer)
  • [#12903]: Disable control flow integrity on OpenBSD >= 7.4 to avoid
    illegal instruction errors on certain CPUs.  (Michael Hendricks,
    review by Miod Vallat)


  [#11590] <https://github.com/ocaml/ocaml/issues/11590>

  [#12372] <https://github.com/ocaml/ocaml/issues/12372>

  [#12903] <https://github.com/ocaml/ocaml/issues/12903>


◊ Bug fixes:

  • [#12061], [#12063]: Don't add inconsistent equalities when computing
    high-level error messages for functor applications and
    inclusions. (Florian Angeletti, review by Gabriel Scherer)
  • [#12878]: Fix incorrect treatment of injectivity for private
    recursive types.  (Jeremy Yallop, review by Gabriel Scherer and
    Jacques Garrigue)
  • [#12971], [#12974]: Fix an uncaught Ctype. Escape exception on some
    invalid programs forming recursive types. (Gabriel Scherer, review
    by Florian Angeletti, report by Neven Villani)
  • [#12264], [#12289]: Fix `compact_allocate' to avoid a pathological
    case that causes very slow compaction. (Damien Doligez, report by
    Arseniy Alekseyev, review by Sadiq Jaffer)
  • [#12513], [#12518]: Automatically enable emulated `fma' for Visual
    Studio 2019+ to allow configuration with either
    pre-Haswell/pre-Piledriver CPUs or running in VirtualBox. Restores
    parity with the other Windows ports, which don't require explicit
    `--enable-imprecise-c99-float-ops'. (David Allsopp, report by Jonah
    Beckford and Kate Deplaix, review by Sébastien Hinderer)
  • [#11633], [#11636]: Bug fix in `caml_unregister_frametable'
    (Frédéric Recoules, review by Gabriel Scherer)
  • [#12636], [#12646]: More prudent reinitialisation of I/O mutexes
    after a fork() (Xavier Leroy, report by Zach Baylin, review by
    Enguerrand Decorne)
  • (*breaking change*) [#10845] Emit frametable size on AMD64 BSD
    (OpenBSD, FreeBSD, NetBSD) systems (emitted for Linux in [#8805])
    (Hannes Mehnert, review by Nicolás Ojeda Bär)
  • [#12958]: Fix `tail-modulo-cons' compilation of `try-with', `&&',
    and `||' expressions.  (Gabriel Scherer and Nicolás Ojeda Bär,
    report by Sylvain Boilard, review by Gabriel Scherer)


  [#12061] <https://github.com/ocaml/ocaml/issues/12061>

  [#12063] <https://github.com/ocaml/ocaml/issues/12063>

  [#12878] <https://github.com/ocaml/ocaml/issues/12878>

  [#12971] <https://github.com/ocaml/ocaml/issues/12971>

  [#12974] <https://github.com/ocaml/ocaml/issues/12974>

  [#12264] <https://github.com/ocaml/ocaml/issues/12264>

  [#12289] <https://github.com/ocaml/ocaml/issues/12289>

  [#12513] <https://github.com/ocaml/ocaml/issues/12513>

  [#12518] <https://github.com/ocaml/ocaml/issues/12518>

  [#11633] <https://github.com/ocaml/ocaml/issues/11633>

  [#11636] <https://github.com/ocaml/ocaml/issues/11636>

  [#12636] <https://github.com/ocaml/ocaml/issues/12636>

  [#12646] <https://github.com/ocaml/ocaml/issues/12646>

  [#10845] <https://github.com/ocaml/ocaml/issues/10845>

  [#8805] <https://github.com/ocaml/ocaml/issues/8805>

  [#12958] <https://github.com/ocaml/ocaml/issues/12958>


OCaml.org Newsletter: February 2024
═══════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ocaml-org-newsletter-february...>


Sabine Schmaltz announced
─────────────────────────

  Welcome to the February 2024 edition of the OCaml.org newsletter! This
  update has been compiled by the OCaml.org team. You can find [previous
  updates] on Discuss.

  Our goal is to make OCaml.org the best resource for anyone who wants
  to get started and be productive in OCaml. The OCaml.org newsletter
  provides an update on our progress towards that goal and an overview
  of the changes we are working on.

  We couldn't do it without all the amazing OCaml community members who
  help us review, revise, and create better OCaml documentation.  Your
  feedback enables us to better prioritise our work. Thank you!

  This newsletter covers:
  • *OCaml Documentation:* New documentation has been released, and
     existing documentation has been improved.
  • *OCaml Cookbook:* A prototype of an OCaml cookbook that provides
     short code examples that solve practical problems using packages
     from the OCaml ecosystem is on staging.ocaml.org/cookbook.
  • *Dark Mode:* We're almost ready to release dark mode now.
  • *Community Section Rework:* We are preparing wireframes for the
     community section to better present the existing content. In
     addition, we started preliminary work towards a dedicated "Events"
     page.
  • *General Improvements:* As usual, we also worked on general
     maintenance and improvements based on user feedback, so we're
     highlighting some of our work below.


[previous updates] <https://discuss.ocaml.org/tag/ocamlorg-newsletter>

Open Issues for Contributors & Outreachy Application Period
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  There are open issues for external contributors. However, since
  github.com/ocaml/ocaml.org participates in the Outreachy application
  period, we might have a shortage of open issues in March, since
  Outreachy applicants will quickly take them on.

  You can find [open issues for contributors here]!


[open issues for contributors here]
<https://github.com/ocaml/ocaml.org/issues?q=is%3Aissue+is...>


OCaml Documentation
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  *User Testing*

  Twenty-one brave newbies accepted being observed for one hour while
  discovering OCaml through the online docs and completing a couple of
  programming tasks. Many thanks to all the participants of the user
  testing sessions we held!

  Half of the user testing participants used the recently [updated
  tutorials], the other half used [v2.ocaml.org/docs]. Our takeaway from
  this is:
  • Learning OCaml isn't hard. However, learning functional programming
    is. Most participants who had previous FP experience successfully
    completed the tasks.
  • The updated docs do a little better than the manual at teaching both
    OCaml and FP to participants without FP experience. A few of them
    succeeded at the more complex tasks using the new tutorials, while
    all participants without FP experience failed using the old
    documentation.

  By observing the participants try to make sense of the tasks and find
  relevant materials in the documentation, we have identified many
  smaller changes that are likely to improve the user experience on the
  documentation pages.

  *Relevant PRs and Activities:*

  • *In Progress:*
  • *In Review (internal):*
    • [Higher-Order Functions]
  • *In Review (community):*
    • [File Manipulation] (see [Discuss Thread])
    • [Polymorphic Variants] (see [Discuss Thread])
  • *Published:*
    • [Maps]
    • [Sets]
    • [Options]
    • [Modules, Functors, Libraries With Dune] (see [Discuss])
    • [Labelled Arguments]
    • [The OCaml Playground] by [@The-Amoghavarsha]
    • [Running Commands in an opam Switch]
    • [Mutable State / Imperative Programming] (see [Discuss Thread])
    • Announcement on Discuss: [New Tutorials on Basics of OCaml]
    • [Basic Data Types] (see [Discuss Thread])
    • [Functions and Values] (see [Discuss Thread])
    • [Installing OCaml] (see [Discuss Thread])
    • [A Tour Of OCaml] (see [Discuss Thread])
    • [Your First OCaml Program] (see [Discuss Thread])
    • [Introduction to opam Switches]
    • [Fix Homebrew Errors on Apple M1]
    • [Operators]
    • [Error Handling] (see [Discuss Thread])
    • [Arrays] (see [Discuss Thread])
    • [Sequences] (see [Discuss Thread])
  • *Other Activity*:
    • [(docs) Basic Data Types: Add link to module Str]
    • [First class module (Learning/Language/Module System)] by
      [@F-Loyer]
    • [Update bp_03_run_executables_and_tests.md] by [@F-Loyer]
    • [DOC: replace dream with yojson in first program] by
      [@heathhenley]
    • [Update typo + change from append to prepend] by [@danipoma]
    • [Add workspace file for use with dune-pkg] by [@gridbugs]
    • [Fix typos in guidelines] by [@cionx]
    • [Removing dune from setup instructions] by [@The-Amoghavarsha]
    • [Improve some wording in the functors tutorial] by
      [@neuroevolutus]
    • [Add link from operators to monads] by [@cuihtlauac]
    • [(doc) Improve wording in "Libraries with Dune" tutorial] by
      [@The-Amoghavarsha]
    • [Replace Variable by Parameter] by [@cuihtlauac]
    • [(docs) Adding an example of a closure that contains mutable state
      in Mutable State & Imperative Tutorial] by [@The-Amoghavarsha]
    • [(docs) Recommend dune watch mode] by [@yawaramin]
    • [(docs) Set “Sets“ as Set's tutorial title] by [@cuihtlauac]
    • [(docs) Correct map to map_error in Error Handling Guide] by
      [@cuihtlauac]
    • [Omit mention of Merlin] by [@yawaramin]


[updated tutorials] <https://ocaml.org/docs>

[v2.ocaml.org/docs] <https://v2.ocaml.org/docs>

[Higher-Order Functions] <https://github.com/ocaml/ocaml.org/pull/2044>

[File Manipulation] <https://github.com/ocaml/ocaml.org/pull/1400>

[Discuss Thread]
<https://discuss.ocaml.org/t/help-review-the-new-file-mani...>

[Polymorphic Variants] <https://github.com/ocaml/ocaml.org/pull/1531>

[Discuss Thread]
<https://discuss.ocaml.org/t/new-draft-tutorial-on-polymor...>

[Maps] <https://github.com/ocaml/ocaml.org/pull/2045>

[Sets] <https://github.com/ocaml/ocaml.org/pull/948>

[Options] <https://github.com/ocaml/ocaml.org/pull/1800>

[Modules, Functors, Libraries With Dune]
<https://github.com/ocaml/ocaml.org/pull/1778>

[Discuss]
<https://discuss.ocaml.org/t/draft-tutorials-on-modules-fu...>

[Labelled Arguments] <https://github.com/ocaml/ocaml.org/pull/1881>

[The OCaml Playground] <https://github.com/ocaml/ocaml.org/pull/1880>

[@The-Amoghavarsha] <https://github.com/The-Amoghavarsha>

[Running Commands in an opam Switch]
<https://github.com/ocaml/ocaml.org/pull/1825>

[Mutable State / Imperative Programming]
<https://github.com/ocaml/ocaml.org/pull/1529>

[Discuss Thread]
<https://discuss.ocaml.org/t/draft-tutorial-on-mutability-...>

[New Tutorials on Basics of OCaml]
<https://discuss.ocaml.org/t/new-tutorials-on-basics-of-oc...>

[Basic Data Types] <https://github.com/ocaml/ocaml.org/pull/1514>

[Discuss Thread]
<https://discuss.ocaml.org/t/ocaml-org-tutorial-revamping-...>

[Functions and Values] <https://github.com/ocaml/ocaml.org/pull/1512>

[Discuss Thread]
<https://discuss.ocaml.org/t/ocaml-org-tutorial-revamping-...>

[Installing OCaml] <https://ocaml.org/docs/installing-ocaml>

[Discuss Thread]
<https://discuss.ocaml.org/t/help-revamping-the-getting-st...>

[A Tour Of OCaml] <https://ocaml.org/docs/tour-of-ocaml>

[Your First OCaml Program] <https://ocaml.org/docs/your-first-program>

[Introduction to opam Switches]
<https://ocaml.org/docs/opam-switch-introduction>

[Fix Homebrew Errors on Apple M1] <https://ocaml.org/docs/arm64-fix>

[Operators] <https://ocaml.org/docs/operators>

[Error Handling] <https://ocaml.org/docs/error-handling>

[Discuss Thread]
<https://discuss.ocaml.org/t/ann-new-get-started-documenta...>

[Arrays] <https://ocaml.org/docs/arrays>

[Discuss Thread]
<https://discuss.ocaml.org/t/feedback-needed-new-arrays-tu...>

[Sequences] <https://ocaml.org/docs/sequences>

[Discuss Thread]
<https://discuss.ocaml.org/t/creating-a-tutorial-on-sequen...>

[(docs) Basic Data Types: Add link to module Str]
<https://github.com/ocaml/ocaml.org/pull/2060>

[First class module (Learning/Language/Module System)]
<https://github.com/ocaml/ocaml.org/pull/2090>

[@F-Loyer] <https://github.com/F-Loyer>

[Update bp_03_run_executables_and_tests.md]
<https://github.com/ocaml/ocaml.org/pull/2092>

[DOC: replace dream with yojson in first program]
<https://github.com/ocaml/ocaml.org/pull/2093>

[@heathhenley] <https://github.com/heathhenley>

[Update typo + change from append to prepend]
<https://github.com/ocaml/ocaml.org/pull/2095>

[@danipoma] <https://github.com/danipoma>

[Add workspace file for use with dune-pkg]
<https://github.com/ocaml/ocaml.org/pull/2105>

[@gridbugs] <https://github.com/gridbugs>

[Fix typos in guidelines] <https://github.com/ocaml/ocaml.org/pull/2115>

[@cionx] <https://github.com/cionx>

[Removing dune from setup instructions]
<https://github.com/ocaml/ocaml.org/pull/2020>

[Improve some wording in the functors tutorial]
<https://github.com/ocaml/ocaml.org/pull/2023>

[@neuroevolutus] <https://github.com/neuroevolutus>

[Add link from operators to monads]
<https://github.com/ocaml/ocaml.org/pull/2054>

[@cuihtlauac] <https://github.com/cuihtlauac>

[(doc) Improve wording in "Libraries with Dune" tutorial]
<https://github.com/ocaml/ocaml.org/pull/2047>

[Replace Variable by Parameter]
<https://github.com/ocaml/ocaml.org/pull/2059>

[(docs) Adding an example of a closure that contains mutable state in
Mutable State & Imperative Tutorial]
<https://github.com/ocaml/ocaml.org/pull/2046>

[(docs) Recommend dune watch mode]
<https://github.com/ocaml/ocaml.org/pull/2064>

[@yawaramin] <https://github.com/yawaramin>

[(docs) Set “Sets“ as Set's tutorial title]
<https://github.com/ocaml/ocaml.org/pull/2073>

[(docs) Correct map to map_error in Error Handling Guide]
<https://github.com/ocaml/ocaml.org/pull/2087>

[Omit mention of Merlin] <https://github.com/ocaml/ocaml.org/pull/2117>


Upcoming OCaml Cookbook
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  We made some progress towards adding a new, community-driven section
  to the Learn area: the OCaml Cookbook. The cookbook aims to be a
  compilation of recipes that provide code samples that solve
  practical-minded tasks using packages from the OCaml ecosystem.

  Here is the design we are considering:
  • Category: High-level groups of tasks, e.g., networking, data
    compression, or command line arguments.
  • Task: Single thing to be done in a category, e.g., write to a file,
    make an HTTP GET request, or return an exit status.
  • Recipe: Version of task using a package, e.g., HTTP GET using
    `curly' or `cohttp'.

  A rough prototype is on staging.ocaml.org/cookbook. The contributions
  and the user feedback we received suggest that the structure of the
  cookbook needs to be refined one more time until it is ready to be
  released.

  A good place to give feedback on the cookbook is [this discuss
  thread].

  *Relevant PRs and Activities:*
  • [Prototype OCaml Cookbook]
  • Contributions to the Cookbook:
    • (WIP) [Cookbook : filesystem] by [@F-Loyer]
    • (WIP) [Cookbook networking] by [@F-Loyer]
    • (WIP) [Cookbook xml] by [@F-Loyer]
    • (WIP) [Cookbook : Web / simple HTTP client] by [@F-Loyer]
    • (WIP) [Cookbook Web / uri] by [@F-Loyer]
    • (WIP) [Cookbook: Regexp (ppx_regexp)] by [@F-Loyer]
    • [Cookbook : encoding] by [@F-Loyer]
    • [Cookbook : and Sorting list and arrays] by [@F-Loyer]
    • [Cookbook textprocessing] by [@F-Loyer]
    • [Cookboot : Add a Database / ezsqlite entry] by [@F-Loyer]
    • [Cookbook concurrency : Lwt] by [@F-Loyer]
    • [Cookbook caqti ppx rapper] by [@F-Loyer]
    • [Cookbook Ezsqlite - typo and rewriting] by [@F-Loyer]
    • [Cookbook Sorting - typo] by [@F-Loyer]


[this discuss thread]
<https://discuss.ocaml.org/t/feedback-help-wanted-upcoming...>

[Prototype OCaml Cookbook]
<https://github.com/ocaml/ocaml.org/pull/1839>

[Cookbook : filesystem] <https://github.com/ocaml/ocaml.org/pull/2099>

[@F-Loyer] <https://github.com/F-Loyer>

[Cookbook networking] <https://github.com/ocaml/ocaml.org/pull/2112>

[Cookbook xml] <https://github.com/ocaml/ocaml.org/pull/2121>

[Cookbook : Web / simple HTTP client]
<https://github.com/ocaml/ocaml.org/pull/2123>

[Cookbook Web / uri] <https://github.com/ocaml/ocaml.org/pull/2124>

[Cookbook: Regexp (ppx_regexp)]
<https://github.com/ocaml/ocaml.org/pull/2125>

[Cookbook : encoding] <https://github.com/ocaml/ocaml.org/pull/2097>

[Cookbook : and Sorting list and arrays]
<https://github.com/ocaml/ocaml.org/pull/2098>

[Cookbook textprocessing] <https://github.com/ocaml/ocaml.org/pull/2104>

[Cookboot : Add a Database / ezsqlite entry]
<https://github.com/ocaml/ocaml.org/pull/2100>

[Cookbook concurrency : Lwt]
<https://github.com/ocaml/ocaml.org/pull/2107>

[Cookbook caqti ppx rapper]
<https://github.com/ocaml/ocaml.org/pull/2108>

[Cookbook Ezsqlite - typo and rewriting]
<https://github.com/ocaml/ocaml.org/pull/2119>

[Cookbook Sorting - typo] <https://github.com/ocaml/ocaml.org/pull/2118>


Dark Mode
╌╌╌╌╌╌╌╌╌

  In December, [oyenuga17] started to implement the new dark mode on
  OCaml.org.

  By now, the new dark mode is mostly complete, but it hasn't been
  reviewed or tested sufficiently.

  We have enabled the dark mode on staging.ocaml.org, based on your
  browser / operating system preferences. If you want to help, you can
  view the dark mode on staging.ocaml.org and report anything you see by
  opening an issue.

  *Completed Pages:*
  • [Learn/Get Started + Language + Guides] by [@oyenuga17]
  • [Learn/Excercises] by [@oyenuga17]
  • [Learn/Books] by [@oyenuga17]
  • [Learn/Platform Tools] by [@oyenuga17]
  • [Packages Search Results] by [@oyenuga17]
  • [Packages + Community] by [@oyenuga17]
  • [Blog + Jobs + Changelog] by [@oyenuga17]
  • [Learn/Overview] by [@oyenuga17]
  • [Install + Papers + Logos and Policy Pages] by [@oyenuga17]
  • [Governance + Outreachy Internships Page] by [@oyenuga17]
  • [Komepage + Tutorial Search Results Page] by [@oyenuga17]
  • [OCaml Workshop + Success Stories] by [@oyenuga17]


[oyenuga17] <https://github.com/oyenuga17>

[Learn/Get Started + Language + Guides]
<https://github.com/ocaml/ocaml.org/pull/1897>

[@oyenuga17] <https://github.com/oyenuga17>

[Learn/Excercises] <https://github.com/ocaml/ocaml.org/pull/1902>

[Learn/Books] <https://github.com/ocaml/ocaml.org/pull/1903>

[Learn/Platform Tools] <https://github.com/ocaml/ocaml.org/pull/1919>

[Packages Search Results] <https://github.com/ocaml/ocaml.org/pull/1946>

[Packages + Community] <https://github.com/ocaml/ocaml.org/pull/1973>

[Blog + Jobs + Changelog] <https://github.com/ocaml/ocaml.org/pull/2001>

[Learn/Overview] <https://github.com/ocaml/ocaml.org/pull/1836>

[Install + Papers + Logos and Policy Pages]
<https://github.com/ocaml/ocaml.org/pull/2032>

[Governance + Outreachy Internships Page]
<https://github.com/ocaml/ocaml.org/pull/2053>

[Komepage + Tutorial Search Results Page]
<https://github.com/ocaml/ocaml.org/pull/2069>

[OCaml Workshop + Success Stories]
<https://github.com/ocaml/ocaml.org/pull/2109>


Community Section Rework
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  This month, we have started to do user research on the community area
  and gathered feedback and ideas on the current pages. Among others, we
  have identified these:
  • the Community section needs a better Events directory
  • the Jobs page needs to be more easily reachable from the community
    page
  • it would be great to highlight Open Source projects from the OCaml
    ecosystem that are looking for contributors

  If you have opinions on the community section, feel free to share them
  in [this discuss thread]!

  *Relevant PRs and Activities:*
  • [Create Community Subnav to put Jobs under Community] by [@sabine]
  • [Add Title for Breadcrumb Subnav (e.g. "Learn" / "Community")] by
    [@sabine]


[this discuss thread]
<https://discuss.ocaml.org/t/looking-for-ideas-for-the-com...>

[Create Community Subnav to put Jobs under Community]
<https://github.com/ocaml/ocaml.org/pull/2018>

[@sabine] <https://github.com/sabine>

[Add Title for Breadcrumb Subnav (e.g. "Learn" / "Community")]
<https://github.com/ocaml/ocaml.org/pull/2022>


General Improvements
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Many thanks go out to the many contributors who helped improve
  OCaml.org in February. Find them listed below!

  *Relevant PRs and Activities:*
  • General:
    • [Make tutorial field short_title optional] by
      [@amarachigoodness74]
    • [(build) Dont Crunch the data/ Folder] by [@sabine]
    • [Refine Learn Landing Page Styles to meet Figma Design] by
      [@sabine]
    • [Remove obsolete text on difficulty symbols on exercises page] by
      [@cuihtlauac]
    • [make the github links on ocaml.org point to the ocaml org] by
      [@v-gb]
    • [feat: create ocaml playground mobile view ] by [@FatumaA]
    • [Add OCaml Language Manual button on Learn Overview hero section]
      by [@sabine]
    • [Bugfix: Remove the duplicated "Docs" link and make it looks like
      the figma] by [@kiyov09]
    • [Advertise atom feed in head using link] by [@cuihtlauac]
    • [adjust list bullet color] by [@egmaleta]
    • [Make the playground cursor more obvious] by [@sabine]
    • [Add Two Packages to "Is OCaml Web Yet?"] by [@F-Loyer]
  • Data parsing:
    • [(ood-gen) Make optional list types in 'tutorials' type
      non-optional] by [@egmaleta]
    • [(ood-gen) Adjust type of fields with `list option' type to `list'
      in Changelog, News, Planet, and Workshop] by [@egmaleta]
    • [(ood-gen) Unify Data.Event / Data.Meetup into Data.Event /
      Data.Event/RecurringEvent] by [@sabine]
    • [(ood-gen) Adjust type of fields with `option' type in Workshop]
      by [@egmaleta]
    • [Do not generate empty data/watch.yml] by [@cuihtlauac]
    • [Don't let get_ok swallow error causes] by [@cuihtlauac]
    • [(ood-gen) Adjust type of fields with bool option type to bool in
      Release] by [@egmaleta]
  • Data:
    • [Changelog entry for OCaml 5.2.0~alpha1] by [@Octachron]
    • [Add changelog entry for ppxlib.0.32.0 release] by [@NathanReb]
    • [changelog: add dune.3.13.1] by [@emillon]
    • [Add missing changelogs for January] by [@tmattio]
    • [(data) add MirageOS hack retreat] by [@sabine]
    • [Add changelog for dune.3.14.0] by [@emillon]


[Make tutorial field short_title optional]
<https://github.com/ocaml/ocaml.org/pull/2024>

[@amarachigoodness74] <https://github.com/amarachigoodness74>

[(build) Dont Crunch the data/ Folder]
<https://github.com/ocaml/ocaml.org/pull/2016>

[@sabine] <https://github.com/sabine>

[Refine Learn Landing Page Styles to meet Figma Design]
<https://github.com/ocaml/ocaml.org/pull/2028>

[Remove obsolete text on difficulty symbols on exercises page]
<https://github.com/ocaml/ocaml.org/pull/2040>

[@cuihtlauac] <https://github.com/cuihtlauac>

[make the github links on ocaml.org point to the ocaml org]
<https://github.com/ocaml/ocaml.org/pull/2048>

[@v-gb] <https://github.com/v-gb>

[feat: create ocaml playground mobile view ]
<https://github.com/ocaml/ocaml.org/pull/2076>

[@FatumaA] <https://github.com/FatumaA>

[Add OCaml Language Manual button on Learn Overview hero section]
<https://github.com/ocaml/ocaml.org/pull/2120>

[Bugfix: Remove the duplicated "Docs" link and make it looks like the
figma] <https://github.com/ocaml/ocaml.org/pull/2116>

[@kiyov09] <https://github.com/kiyov09>

[Advertise atom feed in head using link]
<https://github.com/ocaml/ocaml.org/pull/2075>

[adjust list bullet color]
<https://github.com/ocaml/ocaml.org/pull/2067>

[@egmaleta] <https://github.com/egmaleta>

[Make the playground cursor more obvious]
<https://github.com/ocaml/ocaml.org/pull/2071>

[Add Two Packages to "Is OCaml Web Yet?"]
<https://github.com/ocaml/ocaml.org/pull/2078>

[@F-Loyer] <https://github.com/F-Loyer>

[(ood-gen) Make optional list types in 'tutorials' type non-optional]
<https://github.com/ocaml/ocaml.org/pull/2039>

[(ood-gen) Adjust type of fields with `list option' type to `list' in
Changelog, News, Planet, and Workshop]
<https://github.com/ocaml/ocaml.org/pull/2042>

[(ood-gen) Unify Data.Event / Data.Meetup into Data.Event /
Data.Event/RecurringEvent]
<https://github.com/ocaml/ocaml.org/pull/2102>

[(ood-gen) Adjust type of fields with `option' type in Workshop]
<https://github.com/ocaml/ocaml.org/pull/2068>

[Do not generate empty data/watch.yml]
<https://github.com/ocaml/ocaml.org/pull/2063>

[Don't let get_ok swallow error causes]
<https://github.com/ocaml/ocaml.org/pull/2061>

[(ood-gen) Adjust type of fields with bool option type to bool in
Release] <https://github.com/ocaml/ocaml.org/pull/2055>

[Changelog entry for OCaml 5.2.0~alpha1]
<https://github.com/ocaml/ocaml.org/pull/2025>

[@Octachron] <https://github.com/Octachron>

[Add changelog entry for ppxlib.0.32.0 release]
<https://github.com/ocaml/ocaml.org/pull/2036>

[@NathanReb] <https://github.com/NathanReb>

[changelog: add dune.3.13.1]
<https://github.com/ocaml/ocaml.org/pull/2050>

[@emillon] <https://github.com/emillon>

[Add missing changelogs for January]
<https://github.com/ocaml/ocaml.org/pull/2096>

[@tmattio] <https://github.com/tmattio>

[(data) add MirageOS hack retreat]
<https://github.com/ocaml/ocaml.org/pull/2113>

[Add changelog for dune.3.14.0]
<https://github.com/ocaml/ocaml.org/pull/2058>


Announcing the New Dark Mode on OCaml.org
═════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/announcing-the-new-dark-mode-...>


Sabine Schmaltz announced
─────────────────────────

  I am happy to announce the launch of the new Dark Mode feature on
  ocaml.org.

  This enhancement was led by UX/UI designer @Claire_Vandenberghe,
  focusing on an intuitive and eye-friendly design suitable for extended
  use. The implementation of this feature was carried out by Outreachy
  intern @Seun, spanning from December to March. We are very happy with
  her work.

  This update aims to provide a more comfortable browsing experience,
  especially for those who prefer a darker interface for reading
  documentation.

  We invite you to explore the new dark mode and report any issues and
  possible improvements [here]! :sparkles::heart:


[here] <https://github.com/ocaml/ocaml.org/issues>


Call for presentations – ML 2024: ACM SIGPLAN ML Family Workshop
════════════════════════════════════════════════════════════════

  Archive:

<https://discuss.ocaml.org/t/call-for-presentations-ml-202...>


Guillaume Munch-Maccagnoni announced
────────────────────────────────────

  We are happy to invite submissions to the *ML 2024* workshop:


Higher-order, Typed, Inferred, Strict: ACM SIGPLAN ML Family Workshop
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Co-located with [ICFP ]
  Date
        Friday, September 6, 2024
  Location
        Milan, Italy

  [Call for presentations ]

  ML (originally, “Meta Language”) is a family of programming languages
  that includes dialects known as Standard ML, OCaml, and F#, among
  others. The development of these languages has inspired a large amount
  of computer science research, both practical and theoretical.

  The ML Family Workshop is an established informal workshop aiming to
  recognize the entire extended ML family and to provide the forum to
  present and discuss common issues: all aspects of the design,
  semantics, theory, application, implementation, and teaching of the
  members of the ML family. We also encourage presentations from related
  languages (such as Haskell, Scala, Rust, Nemerle, Links, Koka, F*,
  Eff, ATS, etc), to promote the exchange of ideas and experience. The
  ML family workshop will be held in close coordination with the OCaml
  Users and Developers Workshop.

  We plan the workshop to an be in-person event with remote
  participation (streamed live). Speakers are generally expected to
  present in person (we will work to make remote presentations
  possible).

  • Deadline for talk proposals: *Thursday, June 6, 2024 (AoE)*
  • Notification of acceptance: *Saturday, July 6, 2024*
  • Workshop: *Friday, September 6, 2024*


[ICFP ] <https://icfp24.sigplan.org/>

[Call for presentations ]
<https://icfp24.sigplan.org/home/mlworkshop-2024>


Format
╌╌╌╌╌╌

  The ML 2024 workshop will continue the informal approach followed
  since 2010. Presentations are selected by the program committee from
  submitted proposals. There are no published proceedings, so
  contributions may be submitted for publication elsewhere. The main
  criterion is the promoting and informing the development of the entire
  extended ML family and delivering a lively workshop atmosphere. We
  particularly encourage talks about works in progress, presentations of
  negative results (things that were expected to but did not quite work
  out) and informed positions.

  We seek presentations on topics including (but not limited to):
  language design, implementation, type systems, applications,
  environments, semantics. We specifically encourage reporting what did
  not meet expectations or what, despite all efforts, did not work to
  satisfaction. Four kinds of submissions are solicited: Research
  Presentations, Experience Reports, Demos, and Informed Positions.

  The point of the submission should be clear from its first two pages
  (PC members are not obligated to read any further.)

  See the [full call for presentations ] for scope and submission
  instructions.


[full call for presentations ]
<https://icfp24.sigplan.org/home/mlworkshop-2024#Call-for-...>


dream-html 3.0.0
════════════════

  Archive: <https://discuss.ocaml.org/t/ann-dream-html-3-0-0/14013/6>


Yawar Amin announced
────────────────────

  [ANN] dream-html 3.2.0

  Thanks to Marco Schneider for noticing and adding a missing
  convenience wrapper for `Dream.send', now we have `Dream_html.send' to
  write markup directly to a WebSocket as text.

  Also a change to use our internal function to escape the text inside
  HTML comments ie `comment "xyz"'.


ppx_minidebug 1.3.0: toward a logging framework
═══════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-ppx-minidebug-1-3-0-towar...>


Lukasz Stafiniak announced
──────────────────────────

  Happy to say [ppx_minidebug 1.4.0] is now in the opam repository. The
  two new features since 1.3.0 are:

  • a _Table of Contents_ view on logs, a log file with selected log
    entry headers as hyperlinks pointing to anchors in the regular log
    file(s), the table of contents logs preserve the log tree hierarchy
    but don't use folding,
  • time stamps optionally output as time elapsed since the start of a
    program rather than as wall-clock times.

  What future development of `ppx_minidebug' would you like to see?

  [poll type=regular results=always public=true chartType=bar]
  • I want flame graphs
  • I want better support for exceptions
  • I want `%log_entry' (release 1.5.0 already)
  • ppx_minidebug is already good enough for me
  • ppx_minidebug is not for me anyway
  [/poll]

  Thank You!


[ppx_minidebug 1.4.0] <https://ocaml.org/p/ppx_minidebug/latest>


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

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

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

  • [A Time for Change: Our Response to the White House Cybersecurity
    Press Release]


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

[A Time for Change: Our Response to the White House Cybersecurity Press
Release]
<https://tarides.com/blog/2024-03-07-a-time-for-change-our...>


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
  to the [caml-list].

  [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>

[caml-list] <https://sympa.inria.fr/sympa/info/caml-list>

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



to post comments


Copyright © 2024, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds