Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Alan Schmitt <alan.schmitt@polytechnique.org>
To: "lwn" <lwn@lwn.net>, caml-list@inria.fr
Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News
Date: Tue, 09 Apr 2024 11:15:58 +0200	[thread overview]
Message-ID: <m2frvusxpt.fsf@mac-03220211.irisa.fr> (raw)

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

Hello

Here is the latest OCaml Weekly News, for the week of April 02 to 09,
2024.

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

moonpool 0.6
sqids 0.1.0
OCaml Retreat at Auroville, India (March 10th - March 15th)
Miou, a simple scheduler for OCaml 5
OCaml.org Newsletter: March 2024
Opam 102: Pinning Packages, by OCamlPro
dune 3.15
Ocsigen: summary of recent releases
Js_of_ocaml 5.7
Eio Developer Meetings
Ocaml developer at Routine, Paris
dream-html 3.0.0
Other OCaml News
Old CWN


moonpool 0.6
════════════

  Archive: <https://discuss.ocaml.org/t/ann-moonpool-0-6/14424/1>


Simon Cruanes announced
───────────────────────

  Dearest friends of the dual hump,

  I'm happy to announce the release of [moonpool 0.6]. Moonpool is a
  library of schedulers and concurrency primitives for OCaml 4.xx and
  5.xx, based on threads (possibly spread on multiple domains). Previous
  release announcements ([0.5], [0.4], [0.3], [0.2], [0.1]) contain more
  details.

  This release is fairly large and contains some new libraries. The
  biggest improvement is the addition of `moonpool.fib' (OCaml 5 only):
  it defines lightweight _fibers_ with structured concurrency, where the
  fibers can run on a thread pool chosen by the user.  Fibers also come
  with fiber-local storage and a notion of cancellation that is
  propagated to children fibers. Overall, fibers are a nicer abstraction
  than bare futures (especially with monadic combinators). There are
  currently no cooperative IO primitives provided by the scheduler but I
  have plans.

  Another new, more experimental library is `moonpool-lwt' (OCaml 5
  only) which allows for interoperability between Lwt and moonpool: a
  moonpool future (or fiber) can be turned into a Lwt promise; and it
  becomes possible to `await' a Lwt promise from moonpool, in a
  thread-safe way.

  Docs:
  • [moonpool]
  • [moonpool-lwt]


[moonpool 0.6] <https://github.com/c-cube/moonpool/releases/tag/v0.6>

[0.5] <https://discuss.ocaml.org/t/ann-release-of-moonpool-0-5/13387>

[0.4] <https://discuss.ocaml.org/t/ann-moonpool-0-4/12941>

[0.3] <https://discuss.ocaml.org/t/ann-moonpool-0-3/12632>

[0.2] <https://discuss.ocaml.org/t/ann-moonpool-0-2/12447>

[0.1] <https://discuss.ocaml.org/t/ann-moonpool-0-1/12387>

[moonpool] <https://c-cube.github.io/moonpool/moonpool/index.html>

[moonpool-lwt]
<https://c-cube.github.io/moonpool/moonpool-lwt/index.html>


sqids 0.1.0
═══════════

  Archive: <https://discuss.ocaml.org/t/ann-sqids-0-1-0/14425/1>


Leo Soares announced
────────────────────

  I'm happy to announce the first release (0.1.0) of the [official OCaml
  port of Sqids].

        Sqids (pronounced "squids") is an open-source library that
        lets you generate short unique identifiers from
        numbers. These IDs are URL-safe, can encode several
        numbers, and do not contain common profanity words.

  <https://opam.ocaml.org/packages/sqids>


[official OCaml port of Sqids] <https://sqids.org/ocaml>


OCaml Retreat at Auroville, India (March 10th - March 15th)
═══════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ocaml-retreat-at-auroville-india-march-10th-march-15th/14006/4>


Sudha Parimala announced
────────────────────────

  I'm happy to share the experience report from the first OCaml Retreat:
  <https://ocamlretreat.org/2024/03/24/retreat-experience.html>.  Thanks
  to all the participants for contributing to the magic of the event. We
  hope to run more such retreats in the future!


Miou, a simple scheduler for OCaml 5
════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-miou-a-simple-scheduler-for-ocaml-5/12963/14>


Calascibetta Romain announced
─────────────────────────────

  I am delighted to announce the release of `miou.0.1.0'. This release
  is undoubtedly the culmination and synthesis of the work of several
  individuals to offer a library that best fits our needs. We're quite
  convinced by the API we're proposing and quite happy with the
  implementation. As such, we're coming out of beta to offer version
  0.1.0. Above all, this means that the API will change very little, and
  the library is now ready for use. However, we are not yet in 1.0.0
  because we would like to give you time to use Miou, to observe
  possible bugs, and to give us time to correct these possible bugs in
  order to prepare version 1.0.0 with peace of mind. You can install the
  package via OPAM (it will be available soon):
  ┌────
  │ $ opam install miou
  └────

  We would sincerely like to thank all individuals who have contributed,
  whether directly or indirectly, to the project.

  Furthermore, this new version of Miou builds upon the excellent work
  of @polytypic and his [picos] project. We have incorporated certain
  elements that are suitable for implementing a scheduler, and we hope
  that our efforts will lead to a certain standardization of the effects
  used by different schedulers in OCaml.

  This rewrite has been carried out while trying to maintain the same
  semantics and API as what we offered in version `0.0.1~beta2'
  (however, it is the nature of a beta to potentially break
  versions). This rewrite culminated in the reimplementation of an [HTTP
  client and server] (supporting http/1.1 or h2 with TLS which can
  handle [200k req/sec]) as well as our good old [happy-eyeballs]
  example. Moreover, the outcome of these implementations is more
  satisfying to us than their previous versions. At least for now,
  considering the various changes our cooperative has embarked on¹, we
  will not yet release them.

  We also took the time to integrate a version of the priority queue
  verified using [Why3]. We would like to thank @Armael and
  @backtracking (as well as the individuals who contributed to and
  maintained the [Vocal] project) for their assistance.

  Finally, I would like to personally thank the [Robur] cooperative for
  providing me with the necessary time to evolve this project.

  This release further confirms what we aim to offer to users, and in
  this regard, we have taken the time to write a small book explaining
  the use of Miou. This can also be seen as an introduction to
  asynchronous programming and effects. It is available [here] and is
  part of the Miou distribution.

  For any questions or assistance, we are available via email, this
  forum, or Discord.

  Happy hacking!

  *¹*: As explained in [this article], we try to replace `Cstruct.t' by
  `string' and it requires obviously a deep change across severals
  packages.


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

[HTTP client and server] <https://github.com/robur-coop/httpcats>

[200k req/sec]
<https://twitter.com/Dinoosaure/status/1775586989749788745>

[happy-eyeballs] <https://github.com/robur-coop/miou/tree/main/happy>

[Why3] <https://www.why3.org/>

[Vocal] <https://github.com/ocaml-gospel/vocal>

[Robur] <https://robur.coop/>

[here] <https://robur-coop.github.io/miou/>

[this article]
<https://blog.robur.coop/articles/speeding-ec-string.html>


OCaml.org Newsletter: March 2024
════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ocaml-org-newsletter-march-2024/14431/1>


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

  Welcome to the March 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 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 enabled the dark mode on all pages of OCaml.org,
     based on your operating system / browser settings.
  • *Community & Marketing Pages Rework:* We are seeking feedback on
     wireframes for the community section and for the marketing-related
     pages.
  • *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
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  You can find [open issues for contributors here]!


[open issues for contributors here]
<https://github.com/ocaml/ocaml.org/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22+no%3Aassignee>


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

  We're in the process of adding a community-driven section to the Learn
  area: the OCaml Cookbook. This cookbook is designed as a collection of
  recipes, offering code samples for tackling real-world tasks using
  packages from the OCaml ecosystem. It's a practical effort to enrich
  our learning resources, making them more applicable and useful for our
  community.

  This month, our focus shifted towards finalizing the cookbook for
  release. This includes
  • restructuring the directory structure and placement of recipe files,
    and
  • adding tasks to the cookbook, so that you can contribute recipes for
    these tasks (we took inspiration from the excellent [Rust
    Cookbook]).

  It will always be possible to propose more tasks for the OCaml
  Cookbook. The main criteria here are:
  1. task must require more than just a single Standard Library function
     call to solve,
  2. task must be focused on common problems that occur when trying to
     build products,
  3. if in doubt, make the task more specific, instead of more generic.

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

  *Relevant PRs and Activities:*
  • [(WIP) Cookbook compression / decompression] by @F-Loyer
  • [Cookbook : fix in Lwt (type mismatch with iter_s/iter_p functions)]
    by @F-Loyer
  • [Update 00-caqti-ppx-rapper.ml - fix caqti-driver-sqlite ->
    caqti-driver-sqlite3] by @F-Loyer


[Rust Cookbook] <https://rust-lang-nursery.github.io/rust-cookbook/>

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

[(WIP) Cookbook compression / decompression]
<https://github.com/ocaml/ocaml.org/pull/2133>

[Cookbook : fix in Lwt (type mismatch with iter_s/iter_p functions)]
<https://github.com/ocaml/ocaml.org/pull/2127>

[Update 00-caqti-ppx-rapper.ml - fix caqti-driver-sqlite ->
caqti-driver-sqlite3] <https://github.com/ocaml/ocaml.org/pull/2126>


Dark Mode Released
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  We're happy to anounce that we shipped the Dark Mode for
  OCaml.org. Dark mode is activated based on your operating system /
  browser settings. If you see anything wrong, please open an issue and
  include the URL on which you're seeing a problem.

  *Relevant PRs and Activities:*
  • [Announce Dark Mode on Discuss]
  • [Add Preliminary Dark Mode for Package Documentation] by @sabine
  • [Fix: dark text color on blue background] by @amarachigoodness74
  • [(dark mode) adjust breadcrumbs text color] by @sabine
  • [(ui) Activate Dark Mode] by @sabine
  • [Correctly invert text on "Is OCaml Web" page] by @SquidDev
  • [fix: add missing darkmode styles for in-package search results] by
    @sabine
  • [Remove legacy tailwind colors and styles, tidy up darkmode colors]
    by @sabine


[Announce Dark Mode on Discuss]
<https://discuss.ocaml.org/t/announcing-the-new-dark-mode-on-ocaml-org/14273>

[Add Preliminary Dark Mode for Package Documentation]
<https://github.com/ocaml/ocaml.org/pull/2159>

[Fix: dark text color on blue background]
<https://github.com/ocaml/ocaml.org/pull/2138>

[(dark mode) adjust breadcrumbs text color]
<https://github.com/ocaml/ocaml.org/pull/2161>

[(ui) Activate Dark Mode] <https://github.com/ocaml/ocaml.org/pull/2160>

[Correctly invert text on "Is OCaml Web" page]
<https://github.com/ocaml/ocaml.org/pull/2191>

[fix: add missing darkmode styles for in-package search results]
<https://github.com/ocaml/ocaml.org/pull/2299>

[Remove legacy tailwind colors and styles, tidy up darkmode colors]
<https://github.com/ocaml/ocaml.org/pull/2301>


Homepage & Marketing Pages Rework
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  The Home page project kicked off with an analysis of user surveys and
  interviews, and the development of an initial wireframe for the
  homepage and the "Industrial Users" and "Academic Users" pages.

  We've been [reaching out to the community on Discuss] and Twitter to
  find what people say about OCaml, so we can give a bit more context
  through testimonials on the "Academic Users" page.

  Besides this, we've been [asking on Twitter for ideas for the main
  tagline of the homepage]

  You can comment on the wireframes in Figma [here].

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


[reaching out to the community on Discuss]
<https://discuss.ocaml.org/t/academic-ocaml-users-testimonials/14338>

[asking on Twitter for ideas for the main tagline of the homepage]
<https://x.com/sabine_s_/status/1772264108479467629?s=20>

[here]
<https://www.figma.com/file/eLNSdvayxqvvfBsRsdbJXN/OCaml-Home-Page?type=design&node-id=5%3A2500&mode=design&t=hHclskuVpoOzKP2u-1>

[this discuss thread]
<https://discuss.ocaml.org/t/your-feedback-needed-on-ocaml-home-page-wireframe/14366>


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

  This week, we focused on creating wireframes for the Event, Job,
  Internship, and Workshop pages, followed by soliciting feedback from
  the community via Discuss. Concurrently, work commenced on the UI
  design for the Community Landing page, as well as the Event and Job
  pages.

  We also made some improvements to the Events section on the Community
  page. This involves better treatment of start/end times of events, as
  well as listing more upcoming events.

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

  *Relevant PRs and Activities:*
  • Invite people to add events to events directory:
    <https://discuss.ocaml.org/t/add-your-ocaml-events-to-the-community-page-on-ocaml-org/14251>
  • [Improve Events Directory] by @sabine
  • [Fix template bug on upcoming events list] by @sabine
  • [Make clear upcoming event time is UTC] by @sabine
  • Data contributed to events:
    • [(data) Add S-REPLS event] by @sabine
    • [(data) fix wrong date on event] by @sabine
    • [(data) Add OCaml Retreat Auroville] by @D8kTwoXfSUWLdpXruFrQiw
    • [(data) add OCaml Manila Meetup] by @sabine


[this discuss thread]
<https://discuss.ocaml.org/t/looking-for-ideas-for-the-community-page-at-ocaml-org/14032/9>

[Improve Events Directory]
<https://github.com/ocaml/ocaml.org/pull/2132>

[Fix template bug on upcoming events list]
<https://github.com/ocaml/ocaml.org/pull/2136>

[Make clear upcoming event time is UTC]
<https://github.com/ocaml/ocaml.org/pull/2307>

[(data) Add S-REPLS event]
<https://github.com/ocaml/ocaml.org/pull/2135>

[(data) fix wrong date on event]
<https://github.com/ocaml/ocaml.org/pull/2143>

[(data) Add OCaml Retreat Auroville]
<https://github.com/ocaml/ocaml.org/pull/2134>

[(data) add OCaml Manila Meetup]
<https://github.com/ocaml/ocaml.org/pull/2305>


Outreachy Application Period & Internship
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  In March, OCaml.org hosted the application period for one [Outreachy
  internship] on creating an interactive experience for solving OCaml
  exercises.

  The process of selecting an Outreachy intern involved creating and
  managing 15 issues, reviewing 61 pull requests from 8 applicants.  The
  tasks were similar in nature and dealt with restructuring the
  exercises to enable an interactive experience, adding test cases and
  solutions (where missing).

  *Relevant PRs and Activities:*
  • [Create practice folder] by @cuihtlauac
  • [Sort exercises by slug before emitting template] by @csaltachin
  • Turning exercises into practice @Ozyugoo, @mnaibei,
    @divyankachaudhari, @Kxrishx03, @maha-sachin, @MissJae, @jahielkomu,
    @Appleeyes


[Outreachy internship] <https://www.outreachy.org/>

[Create practice folder] <https://github.com/ocaml/ocaml.org/pull/2166>

[Sort exercises by slug before emitting template]
<https://github.com/ocaml/ocaml.org/pull/2227>


General Improvements and Data Additions
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  *Relevant PRs and Activities:*
  • (WIP) we're moving the OCaml Language Manual from v2.ocaml.org to
    ocaml.org
  • set up dlvr.it to automatically post RSS feed items from OCaml
    Planet and OCaml Changelog to new ocaml_org Twitter account
  • [Link to recently added videos on watch.ocaml.org] by @sabine
  • [Change twitter account from OCamlLang to ocaml_org] by @sabine
  • [fix: small improvements on news.eml] by @sabine
  • [is yet category slug] by @cuihtlauac
  • [Add a badge from the green web foundation to the carbon footprint
    page] by @0xrotense
  • Deployment of odoc 2.4.1 to package documentation pipeline:
    • [Compatibility with odoc.2.4.1] by @gpetiot
    • [Patch for voodoo / odoc 2.4.1 upgrade] by @sabine
    • [chore: set doc url to live, after voodoo upgrade] by @sabine
  • Data:
    • [(data) add ocaml.org newsletter February] by @sabine
    • [Changelog entry for OCaml 4.14.2~rc1] by @Octachron
    • [Add dune.3.14.2 announcement] by @Leonidas-from-XIV
    • [OCaml 4.14.2 release and changelog pages] by @Octachron
    • [OCaml 4.14.2: fix release year] by @edwintorok
    • [Add Platform changelogs for February 2024] by @tmattio
    • [Changelog entry for OCaml 5.2.0~beta1] by @Octachron
    • [Add Outreachy winter 2023 round] by @patricoferris
  • Documentation:
    • [DOC: note about windows ppx_show] by @heathhenley
    • [(docs) Fix small typos] by @kenranunderscore
    • [(docs) Add link for instances of Array] by @rmeis06
    • [Linking exercise to tutorials] by @rmeis06
    • [Explain why t-first works with labels ] by @mikhailazaryan
    • [Document that begin … end use] by @rmeis06
    • [Use uniform syntax for eval steps] by @cuihtlauac
    • [Linking mentions of atomic module to doc] by @rmeis06
    • [Linking Bigarray references] by @rmeis06
    • [(docs) fix example in 'Libraries With Dune'] by @0xRamsi
    • [Fix typo in 4ad_01_operators.md] by @vog
    • [(docs) Use DkML 2.1.0] by @jonahbeckford


[Link to recently added videos on watch.ocaml.org]
<https://github.com/ocaml/ocaml.org/pull/2128>

[Change twitter account from OCamlLang to ocaml_org]
<https://github.com/ocaml/ocaml.org/pull/2111>

[fix: small improvements on news.eml]
<https://github.com/ocaml/ocaml.org/pull/2295>

[is yet category slug] <https://github.com/ocaml/ocaml.org/pull/2303>

[Add a badge from the green web foundation to the carbon footprint page]
<https://github.com/ocaml/ocaml.org/pull/2241>

[Compatibility with odoc.2.4.1]
<https://github.com/ocaml-doc/voodoo/pull/128>

[Patch for voodoo / odoc 2.4.1 upgrade]
<https://github.com/ocaml/ocaml.org/pull/2300>

[chore: set doc url to live, after voodoo upgrade]
<https://github.com/ocaml/ocaml.org/pull/2304>

[(data) add ocaml.org newsletter February]
<https://github.com/ocaml/ocaml.org/pull/2154>

[Changelog entry for OCaml 4.14.2~rc1]
<https://github.com/ocaml/ocaml.org/pull/2145>

[Add dune.3.14.2 announcement]
<https://github.com/ocaml/ocaml.org/pull/2190>

[OCaml 4.14.2 release and changelog pages]
<https://github.com/ocaml/ocaml.org/pull/2225>

[OCaml 4.14.2: fix release year]
<https://github.com/ocaml/ocaml.org/pull/2286>

[Add Platform changelogs for February 2024]
<https://github.com/ocaml/ocaml.org/pull/2288>

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

[Add Outreachy winter 2023 round]
<https://github.com/ocaml/ocaml.org/pull/2244>

[DOC: note about windows ppx_show]
<https://github.com/ocaml/ocaml.org/pull/2094>

[(docs) Fix small typos] <https://github.com/ocaml/ocaml.org/pull/2152>

[(docs) Add link for instances of Array]
<https://github.com/ocaml/ocaml.org/pull/2146>

[Linking exercise to tutorials]
<https://github.com/ocaml/ocaml.org/pull/2148>

[Explain why t-first works with labels ]
<https://github.com/ocaml/ocaml.org/pull/2157>

[Document that begin … end use]
<https://github.com/ocaml/ocaml.org/pull/2147>

[Use uniform syntax for eval steps]
<https://github.com/ocaml/ocaml.org/pull/2183>

[Linking mentions of atomic module to doc]
<https://github.com/ocaml/ocaml.org/pull/2153>

[Linking Bigarray references]
<https://github.com/ocaml/ocaml.org/pull/2163>

[(docs) fix example in 'Libraries With Dune']
<https://github.com/ocaml/ocaml.org/pull/2247>

[Fix typo in 4ad_01_operators.md]
<https://github.com/ocaml/ocaml.org/pull/2219>

[(docs) Use DkML 2.1.0] <https://github.com/ocaml/ocaml.org/pull/2249>


Opam 102: Pinning Packages, by OCamlPro
═══════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/blog-opam-102-pinning-packages-by-ocamlpro/14437/1>


OCamlPro announced
──────────────────

  Greetings Cameleers,

  Here’s another heads up for all opam users: [Opam 102: Pinning
  Packages], our latest blog post breaking down opam for the community;
  as a keen eye would have already guessed, today's subject is package
  pinning!

  We hope that this may be useful to anybody curious about getting
  acquainted with opam's pins. This article is made for whom wonders how
  they work and when they are useful to be aware of.

  Hoping that it may serve as a reference for all newcomers to the
  ecosystem.

  We appreciate and are thankful for every reader, we welcome all your
  feedback, right here, in this thread. :smile:

  Kind regards, The OCamlPro Team


[Opam 102: Pinning Packages]
<https://ocamlpro.com/blog/2024_03_25_opam_102_pinning_packages/>


dune 3.15
═════════

  Archive: <https://discuss.ocaml.org/t/ann-dune-3-15/14438/1>


Marek Kubica announced
──────────────────────

  We're happy to announce that Dune 3.15.0 is now available. This
  feature has many fixes and new features that you can find in the
  changelog.

  There are a few new features that we would like to specially
  highlight.


Removal of previous limitations in many forms
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Prior to Dune 3.15 there were a number of limitations where percent
  forms like `%{env:...}' could be used to expand to useful values.  In
  this release, @rgrinberg put some effort to relax a lot of these
  restrictions where possible.

  In the new version some of these limitations have been lifted, so for
  example `{env:...}' can be used in `install' stanzas ([#10160]).

  Likewise there was no consistency where `%{cma:...}' or `%{cmo:...}'
  could be used. With [#10169], these forms should work consistently
  everywhere.

  Similarly the variables allowed in `enabled_if' fields have been
  expanded in [#10250], from just allowing variables that can be
  computed from the context to now allowing all variables as long as
  expanding these variables does not introduce dependency cycles.

  These relaxed rules can also be combined to enable a library depending
  on environment variables, e.g. `(enabled_if
  %{env:ENABLE_LIBFOO=false}))'.


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

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

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


Overlapping names in different contexts
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Continuing the theme of conditionally enabling or disabling code to be
  built, @jchavarri and @rgrinberg's work on [#10220] makes it possible
  to have overlapping names between `executable' and `melange.emit'
  targets. This can be useful when a name is to be shared in different
  contexts (e.g. one context with native compilation and one emitting
  code for the browser).


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


Properly output UTF-8 encoded text when formatting
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Dune does not assume an encoding of dune files, however when files
  were formatted the formatter would err on the safe side and escape
  bytes outside the ASCII range. This means that UTF-8 characters
  outside of ASCII would get escaped into decimal escape sequences.

  This was especially annoying in places where the user would write
  natural language texts, which is common when defining Opam packages in
  `dune-project' files. For example a discussion of a paper by Paul
  Erdős, Peter Frankl, Vojtěch Rödl would upon reformatting be turned
  into Paul Erd\\197\\145s, Peter Frankl, Vojt\\196\\155 R\\195\\182,
  which does a disservice to these scientists and is hard to read.

  Thanks to the work of @moyodiallo in [#9728] starting with Dune 3.15
  the original encoding will be preserved, so your package descriptions
  will be more readable.


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


Changelog
╌╌╌╌╌╌╌╌╌

◊ Added

  • Add link flags to to `ocamlmklib' for ctypes stubs (#8784,
    @frejsoya)
  • Remove some unnecessary limitations in the expansions of percent
    forms in install stanza. For example, the `%{env:..}' form can be
    used to select files to be installed. (#10160, @rgrinberg)
  • Allow artifact expansion percent forms (`%{cma:..}', `%{cmo:..}',
    etc.) in more contexts. Previously, they would be randomly forbidden
    in some fields. (#10169, @rgrinberg)
  • Allow `%{inline_tests}' in more contexts (#10191, @rgrinberg)
  • Remove limitations on percent forms in the `(enabled_if ..)' field
    of libraries (#10250, @rgrinberg)
  • Support dialects in `dune describe pp' (#10283, @emillon)
  • Allow defining executables or melange emit stanzas with the same
    name in the same folder under different contexts. (#10220,
    @rgrinberg, @jchavarri)


◊ Fixed

  • coq: Delay Coq rule setup checks so OCaml-only packages can build in
    hybrid Coq/OCaml projects when `coqc' is not present. Thanks to
    @vzaliva for the test case and report (#9845, fixes #9818,
    @rgrinberg, @ejgallego)
  • Fix conditional source selection with `select' on `bigarray' in
    OCaml 5 (#10011, @moyodiallo)
  • melange: fix inconsistency in virtual library
    implementation. Concrete modules within a virtual library can now
    refer to its virtual modules too (#10051, fixes #7104, @anmonteiro)
  • melange: fix a bug that would cause stale `import' paths to be
    emitted when moving source files within `(include_subdirs ..)'
    (#10286, fixes #9190, @anmonteiro)
  • Dune file formatting: output utf8 if input is correctly encoded
    (#10113, fixes #9728, @moyodiallo)
  • Fix expanding dependencies and locks specified in the cram
    stanza. Previously, they would be installed in the context of the
    cram test, rather than the cram stanza itself (#10165, @rgrinberg)
  • Fix bug with `dune exec --watch' where the working directory would
    always be set to the project root rather than the directory where
    the command was run (#10262, @gridbugs)
  • Regression fix: sign executables that are promoted into the source
    tree (#10263, fixes #9272, @emillon)
  • Fix crash when decoding dune-package for libraries with
    `(include_subdirs qualified)' (#10269, fixes #10264, @emillon)


Changed
╌╌╌╌╌╌╌

  • Remove the `--react-to-insignificant-changes' option. (#10083,
    @rgrinberg)


Ocsigen: summary of recent releases
═══════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ocsigen-summary-of-recent-releases/13817/8>


Vincent Balat announced
───────────────────────

  Eliom 10.4:
  • Basic client-server distillery template: sqlite is now the default
    backend
  • Basic template now has license unlicense
  • Basic template fixes
  • Compatibility with Tyxml >= 4.6.0 (by Vincent Laporte)

  Ocsigen Start 6.3
  • Adding license Unlicense to the template
  • Dependecy to Tyxml >= 4.6


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

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


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

  Js_of_ocaml 5.7.2 was released recently. It adds missing primitives
  required by OCaml 5.2.0~beta


Eio Developer Meetings
══════════════════════

  Archive: <https://discuss.ocaml.org/t/eio-developer-meetings/12207/5>


Sudha Parimala announced
────────────────────────

  Following the release of Eio 1.0
  (<https://discuss.ocaml.org/t/ann-eio-1-0-first-major-release/14334>),
  Eio goes into maintenance mode for a bit. We've decided to pause the
  Eio developer meetings until further notice. Meanwhile, we remain
  active on the [issue tracker] and the [matrix channel]. I encourage
  folks to try out Eio and report their findings.


[issue tracker] <https://github.com/ocaml-multicore/eio/issues>

[matrix channel] <https://matrix.to/#/#eio:roscidus.com>


Ocaml developer at Routine, Paris
═════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/job-ocaml-developer-at-routine-paris/14448/1>


mefyl announced
───────────────

  Routine ([https://routine.co ]) is once more looking for OCaml
  developers.

  Routine is a personal productivity assistant and knowledge
  manager. The technological stack revolves heavily around OCaml which
  represents 80% of the codebase, both client and server side. The
  remaining 20% are the UIs in various frontend framework:
  • Browser and desktop (Linux/Macos/Windows) through electron, using
    Js_of_ocaml (eyeing on WASM).
  • iOS via Swift bindings.
  • Android via JVM bindings (upcoming).

  Our technological and academic background leads us to use designs
  that, I think, can pique the interest of seasoned Ocaml developer.
  Amongst other things :

  • Type-driven programming based on ppx derivers that produces
    typescript declaration for frontend bindings, JSON schema to expose
    and consume external REST APIs (Google, Notion, …), automatic SQL
    bindings, etc.
  • Automatic API and foreign binding generation for the different front
    end technology, cross compilation.
  • [Incremental ] based state updates to refresh minimal subsets of the
    app.
  • Integrated graph query language to query and manipulate all the app
    data, including defining custom data types and workflows.
  • Highly concurrent implementation through Lwt and Eio - migrating to
    the later as we go. Exception-free design. OCaml 5 with all the
    goodies.
  • Angstrom based parsing for the interactive console with highlighting
    and completion.
  • Everything is very much library-oriented, with loads of reusable and
    scaffolded packages. Most of the work is intended to be open
    sources, or already has been published.
  • An obsession for compile-time checks and type safety.

  We use state of the art CI/CD and development processes. Salary is up
  to market standard depending on the profile, plus usual options
  package, to be discussed. We have a preference for presential work in
  our Paris 11th office (Charonne, 3 days a week) to help foster team
  spirit but we won't pass on talented remote individuals.

  We're looking to extend the team with talented and passionate
  engineers who see the global picture and will work through all layers
  of the project to see it succeed and create something we're proud
  of. While we expect great OCaml and general computer science
  proficiency, we’re open to most levels of experience. Thoroughness and
  a love for well rounded, robust and beautiful software design is a
  must have - but that comes bundled with OCaml love, right ?

  Do not hesitate to reach out for any question here, at
  [quentin.hocquet@routine.co](<mailto:quentin.hocquet@routine.co>) or
  refer this to someone who may be interested.

  Thanks for your time and happy hacking !


[https://routine.co ] <https://routine.co>

[Incremental ] <https://github.com/janestreet/incremental>


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

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


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

  [ANN] dream-html 3.3.1

  Add `to_xml' and `pp_xml' functions to render in XML style

  Normally, dream-html defaults to rendering nodes in HTML style,
  meaning that void elements are rendered just like opening tags. Eg
  `<br>'. With the new `to_xml' and `pp_xml' functions, we can now
  render nodes in XML style, meaning `<br />'. This allows XML parsers
  to successfully parse the output. So eg you can use dream-html to
  author an ePub book.

  Escape URI attributes like `href' with normal attribute escaping rules
  in addition to percent-encoding. Most significantly, ampersands are
  encoded now, eg `/foo?a=1&b=2' is rendered as `/foo?a=1&amp;b=2'.

  Change where line breaks are inserted into the output markup, so that
  there is no chance of injecting spurious whitespace into the rendered
  page. This gives complete control over whitespace to the user.


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

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

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

  • [Updates to OCaml.org's Learn Section: Enhancing UI and UX]


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

[Updates to OCaml.org's Learn Section: Enhancing UI and UX]
<https://tarides.com/blog/2024-04-03-updates-to-ocaml-org-s-learn-section-enhancing-ui-and-ux>


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


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

             reply	other threads:[~2024-04-09  9:16 UTC|newest]

Thread overview: 236+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-09  9:15 Alan Schmitt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-04-15  9:51 Alan Schmitt
2025-04-08 13:14 Alan Schmitt
2025-04-01  9:12 Alan Schmitt
2025-03-25  8:06 Alan Schmitt
2025-03-18 10:18 Alan Schmitt
2025-03-11 15:00 Alan Schmitt
2025-03-04 14:01 Alan Schmitt
2025-02-25 10:36 Alan Schmitt
2025-02-18 14:33 Alan Schmitt
2025-02-11  7:17 Alan Schmitt
2025-02-04 12:05 Alan Schmitt
2025-01-28 13:24 Alan Schmitt
2025-01-21 15:47 Alan Schmitt
2025-01-14  8:20 Alan Schmitt
2025-01-07 17:26 Alan Schmitt
2024-12-31  8:03 Alan Schmitt
2024-12-24  8:55 Alan Schmitt
2024-12-17 13:05 Alan Schmitt
2024-12-10 13:48 Alan Schmitt
2024-12-03 14:44 Alan Schmitt
2024-11-26  8:30 Alan Schmitt
2024-11-19  6:52 Alan Schmitt
2024-11-12 15:00 Alan Schmitt
2024-11-05 13:22 Alan Schmitt
2024-10-29 13:30 Alan Schmitt
2024-10-22 12:42 Alan Schmitt
2024-10-15 13:31 Alan Schmitt
2024-10-08 10:56 Alan Schmitt
2024-10-01 13:37 Alan Schmitt
2024-09-24 13:18 Alan Schmitt
2024-09-17 14:02 Alan Schmitt
2024-09-10 13:55 Alan Schmitt
2024-09-03  8:24 Alan Schmitt
2024-08-27  9:02 Alan Schmitt
2024-08-20  9:29 Alan Schmitt
2024-08-13 13:21 Alan Schmitt
2024-08-06  9:00 Alan Schmitt
2024-07-30 13:26 Alan Schmitt
2024-07-23 13:30 Alan Schmitt
2024-07-16  6:24 Alan Schmitt
2024-07-09  9:19 Alan Schmitt
2024-07-02  7:30 Alan Schmitt
2024-06-25 13:58 Alan Schmitt
2024-06-18 13:05 Alan Schmitt
2024-06-11 15:04 Alan Schmitt
2024-06-04 13:26 Alan Schmitt
2024-05-28  9:07 Alan Schmitt
2024-05-21 13:07 Alan Schmitt
2024-05-14 13:25 Alan Schmitt
2024-05-07  7:30 Alan Schmitt
2024-04-30  7:22 Alan Schmitt
2024-04-23 12:17 Alan Schmitt
2024-04-16 12:00 Alan Schmitt
2024-04-02 14:31 Alan Schmitt
2024-03-26  6:32 Alan Schmitt
2024-03-19 15:09 Alan Schmitt
2024-03-12 10:31 Alan Schmitt
2024-03-05 14:50 Alan Schmitt
2024-02-27 13:53 Alan Schmitt
2024-02-20  9:12 Alan Schmitt
2024-02-13  8:42 Alan Schmitt
2024-02-06 15:14 Alan Schmitt
2024-01-30 14:16 Alan Schmitt
2024-01-23  9:45 Alan Schmitt
2024-01-16 10:01 Alan Schmitt
2024-01-09 13:40 Alan Schmitt
2024-01-02  8:59 Alan Schmitt
2023-12-26 10:12 Alan Schmitt
2023-12-19 10:10 Alan Schmitt
2023-12-12 10:20 Alan Schmitt
2023-12-05 10:13 Alan Schmitt
2023-11-28  9:09 Alan Schmitt
2023-11-21  7:47 Alan Schmitt
2023-11-14 13:42 Alan Schmitt
2023-11-07 10:31 Alan Schmitt
2023-10-31 10:43 Alan Schmitt
2023-10-24  9:17 Alan Schmitt
2023-10-17  7:46 Alan Schmitt
2023-10-10  7:48 Alan Schmitt
2023-10-03 13:00 Alan Schmitt
2023-09-19  8:54 Alan Schmitt
2023-09-12 13:21 Alan Schmitt
2023-09-05  9:00 Alan Schmitt
2023-08-29 13:04 Alan Schmitt
2023-08-22  9:20 Alan Schmitt
2023-08-15 16:33 Alan Schmitt
2023-08-08  8:53 Alan Schmitt
2023-08-01  7:13 Alan Schmitt
2023-07-25  8:45 Alan Schmitt
2023-07-11  8:45 Alan Schmitt
2023-07-04  9:18 Alan Schmitt
2023-06-27  8:38 Alan Schmitt
2023-06-20  9:52 Alan Schmitt
2023-06-13  7:09 Alan Schmitt
2023-06-06 14:22 Alan Schmitt
2023-05-30 15:43 Alan Schmitt
2023-05-23  9:41 Alan Schmitt
2023-05-16 13:05 Alan Schmitt
2023-05-09 11:49 Alan Schmitt
2023-05-02  8:01 Alan Schmitt
2023-04-25  9:25 Alan Schmitt
2023-04-18  8:50 Alan Schmitt
2023-04-11 12:41 Alan Schmitt
2023-04-04  8:45 Alan Schmitt
2023-03-28  7:21 Alan Schmitt
2023-03-21 10:07 Alan Schmitt
2023-03-14  9:52 Alan Schmitt
2023-03-07  9:02 Alan Schmitt
2023-02-28 14:38 Alan Schmitt
2023-02-21 10:19 Alan Schmitt
2023-02-14  8:12 Alan Schmitt
2023-02-07  8:16 Alan Schmitt
2023-01-31  6:44 Alan Schmitt
2023-01-24  8:57 Alan Schmitt
2023-01-17  8:37 Alan Schmitt
2022-11-29 14:53 Alan Schmitt
2022-09-27  7:17 Alan Schmitt
2022-09-20 14:01 Alan Schmitt
2022-09-13  8:40 Alan Schmitt
2022-08-23  8:06 Alan Schmitt
2022-08-16  8:51 Alan Schmitt
2022-08-09  8:02 Alan Schmitt
2022-08-02  9:51 Alan Schmitt
2022-07-26 17:54 Alan Schmitt
2022-07-19  8:58 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=m2frvusxpt.fsf@mac-03220211.irisa.fr \
    --to=alan.schmitt@polytechnique.org \
    --cc=caml-list@inria.fr \
    --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