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, 03 May 2022 11:11:28 +0200
Message-ID: <875ymnugjj.fsf@m4x.org> (raw)

[-- Attachment #1.1: Type: text/plain, Size: 15706 bytes --]

Hello

Here is the latest OCaml Weekly News, for the week of April 26 to May
03, 2022.

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

ATD now supports TypeScript
pp_loc 2.0
Windows-friendly OCaml 4.12 distribution - Diskuv OCaml 0.1.0
V3.ocaml.org: we are live!
Remaking an Old Game in OCaml
Old CWN


ATD now supports TypeScript
═══════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/atd-now-supports-typescript/9735/1>


Martin Jambon announced
───────────────────────

  [ATD] is a language for specifying typed interfaces for communicating
  across programming languages. It turns concrete type definitions
  ("schema") into code for each language. This code can read and write
  JSON safely, relieving the user of worrying about the structure of the
  JSON data.

  Starting from version 2.5.0, ATD provides `atdts', a single executable
  that turns a file `foo.atd' into `foo.ts'. See the [tutorial] for an
  introduction. The programming languages targeted by ATD are now:

  • Java
  • OCaml
  • Python + mypy
  • ReScript (BuckleScript)
  • Scala
  • TypeScript

  For an expert overview of the features that are currently supported,
  check out the test data:
  • [ATD input]
  • [TypeScript output]

  See also the [announcement for atdpy] that we made a month ago.


[ATD] <https://github.com/ahrefs/atd>

[tutorial] <https://atd.readthedocs.io/en/latest/atdts.html#tutorials>

[ATD input]
<https://github.com/ahrefs/atd/blob/master/atdts/test/atd-input/everything.atd>

[TypeScript output]
<https://github.com/ahrefs/atd/blob/master/atdts/test/ts-expected/everything.ts>

[announcement for atdpy]
<https://discuss.ocaml.org/t/atdpy-derive-safe-json-interfaces-for-python/9544>


pp_loc 2.0
══════════

  Archive: <https://discuss.ocaml.org/t/ann-pp-loc-2-0/9741/1>


Armael announced
────────────────

  Do you know how OCaml now displays errors by quoting back part of the
  source, highlighting the faulty part? For instance, with a single-line
  error location:
  ┌────
  │ File "foo.ml", line 1, characters 12-14:
  │ 1 | let foo x = yy + 1;;
  │                 ^^
  └────
  or a multi-line location:
  ┌────
  │ File "bar.ml", lines 3-5, characters 10-10:
  │ 3 | ..........function
  │ 4 |   | A -> 0
  │ 5 |   | B -> 1
  └────

  Do you have your own language/configuration file/… parser or
  typechecker, that could benefit from nice, user-friendly error
  messages?

  The [pp_loc] library provides an easy-to-use implementation of the
  same source-quoting mechanism that is used in the OCaml compiler. It
  provides a single function `pp' which will display the relevant part
  of the input given the location(s) of the error.

  ┌────
  │ val pp :
  │   ?max_lines:int ->
  │   input:Input.t ->
  │   Format.formatter ->
  │   loc list ->
  │   unit
  └────
  (As one can see from the signature, `pp' also supports displaying
  several locations at once on the same source snippet, for
  multi-location errors.)

  The full [documentation is available online], and the library is
  available on opam (`opam install pp_loc').

  This new version, thanks to the contribution of @c-cube, makes the
  `loc' type more flexible. It should now be easy to create source
  locations that can be passed to `pp', however you represent them in
  your parser (be it as (line,column) pairs, offsets, or any combination
  of those…). For more details, see the [Pp_loc.Position] module.

  I am completely open to more PRs or ideas for improving the library
  further, and displaying source locations in even nicer ways!

  Happy error-message printing!


[pp_loc] <https://github.com/Armael/pp_loc>

[documentation is available online]
<https://armael.github.io/pp_loc/pp_loc/Pp_loc/index.html>

[Pp_loc.Position]
<https://armael.github.io/pp_loc/pp_loc/Pp_loc/Position/index.html>


Windows-friendly OCaml 4.12 distribution - Diskuv OCaml 0.1.0
═════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-windows-friendly-ocaml-4-12-distribution-diskuv-ocaml-0-1-0/8358/18>


jbeckford announced
───────────────────

  A single `setup-*.exe' executable is now all that is necessary to
  install the Diskuv OCaml distribution on 64-bit Windows!

  Today you can use a prerelease of v0.4.0 which is available at
  <https://github.com/diskuv/dkml-installer-ocaml/releases/download/v0.4.0-prerel11/setup-diskuv-ocaml-windows_x86_64-0.4.0.exe>

  The prerelease:
  • is for *experienced Windows users only* because the prerelease is
    not signed! You will have to fight with your browser, operating
    system and anti-virus software to run the setup executable
  • is *not reproducible*. Because many Diskuv packages have not yet
    made it into Opam, the builds need several `opam pin' of unstable
    branches.
  • has not been incorporated into the
    <https://diskuv.gitlab.io/diskuv-ocaml> documentation site. But the
    [Beyond Basics] documentation should still be accurate.

  Once those items above are addressed, a real (non-prerelease) 0.4.0
  will be announced.

        Existing Diskuv OCaml users: Your existing Opam switches
        should be unaffected by the upgrade. But please make sure
        you can recreate your Opam switches (ie. use a `.opam'
        file) if something goes wrong.

  Release notes, including details of the migration to the Apache 2.0
  license, are at available at
  [https://github.com/diskuv/dkml-installer-ocaml/releases/tag/v0.4.0-prerel11]


[Beyond Basics]
<https://diskuv.gitlab.io/diskuv-ocaml/doc/BeyondBasics.html#beyondbasics>

[https://github.com/diskuv/dkml-installer-ocaml/releases/tag/v0.4.0-prerel11]
<https://github.com/diskuv/dkml-installer-ocaml/releases/tag/v0.4.0-prerel11>


V3.ocaml.org: we are live!
══════════════════════════

  Archive: <https://discuss.ocaml.org/t/v3-ocaml-org-we-are-live/9747/1>


Thibaut Mattio announced
────────────────────────

  I am thrilled to announce that <https://ocaml.org/> now serves version
  3 of the site! Here's an overview of the major features in this new
  version:

  • [Central OCaml package documentation], which contains the
    documentation of every version of every OCaml packages.
  • [OCaml job board], which lists job opportunities from the community.
  • [A syndicated blog], which links to blog articles from the community
    and offers original blog posts.
  • [OCaml success stories] which explore how major OCaml industrial
    users solved real-world challenges using OCaml.
  • [Resources for learning OCaml], which aggregates resources and
    tutorials to learn OCaml.
  • [An interactive OCaml playground] to try OCaml code directly in the
    browser.

  Version 2 remains accessible at <https://v2.ocaml.org/>, and older
  URLs to ocaml.org will be redirected to the v2 URL from now
  on. Similarly, v3.ocaml.org URLs will continue to work.

  Community feedback was instrumental and has been driving the direction
  of the project since day one. For instance, having a centralized
  package documentation site; or facilitating the hiring of OCaml
  developers and finding OCaml jobs were major concerns that were
  highlighted in the last [OCaml Survey]. They were what prompted us to
  work on the documentation site and the job board respectively.

  We've also listened to the community feedback we received along the
  way, and in particular, here's an overview of everything we've been
  doing to address the feedback we received after our last Discuss post:
  <https://hackmd.io/IniIM_p3Qs2UB74cuKK7UQ>.

  Given how critical your input is to drive the project, I am deeply
  grateful to every one who took the time to share insights, suggestions
  and bug reports. Some of the suggestions will need more work and
  couldn't happen before launch, but we've listened to every one and
  will keep working on improving OCaml.org to address pain points of the
  community.  Thank you, and keep the feedback coming!

  We're also starting to see a lot of contributions from external
  contributors. OCaml.org is open source, and contributions from anyone
  are extremely welcome! Never hesitate to open a PR if you see
  something you'd like to improve! You can read our [Contributing Guide]
  to learn how to contribute.


[Central OCaml package documentation] <https://ocaml.org/packages>

[OCaml job board] <https://ocaml.org/opportunities>

[A syndicated blog] <https://ocaml.org/blog>

[OCaml success stories] <https://ocaml.org/success-stories>

[Resources for learning OCaml] <https://ocaml.org/learn>

[An interactive OCaml playground] <https://ocaml.org/play>

[OCaml Survey]
<https://discuss.ocaml.org/t/ann-ocaml-user-survey-2020/6624>

[Contributing Guide]
<https://github.com/ocaml/ocaml.org/blob/main/CONTRIBUTING.md>

Ecosystem Contributions
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  As the storefront of the OCaml ecosystem, we couldn't develop the next
  version of OCaml.org without contributing back! As a result, we've
  published several packages on opam that we're using for OCaml.org:

  • [dream-accept]: Accept headers parsing for Dream
  • [dream-encoding]: Encoding primitives for Dream.
  • [hilite]: Generate HTML ready for syntax-highlighting with CSS by
    parsing markdown documents.

  Other packages that are yet to be released are:

  • [code-mirror]: The code-mirror bindings
  • [js_top_worker]: An OCaml toplevel designed to run in a web worker

  We've also made contributions downstream:

  • odoc: [Support for HTML fragments in odoc]
  • river: [API changes and capability to fetch metadata from RSS post
    links]

  A huge thank you to the community for your constant effort in making
  OCaml such a great language to work with! In particular, here are some
  amazing community projects we are building upon: [Dream], [Brr] and
  [Omd] and [many more]


[dream-accept] <https://github.com/tmattio/dream-accept>

[dream-encoding] <https://github.com/tmattio/dream-encoding>

[hilite] <https://github.com/patricoferris/hilite>

[code-mirror]
<https://github.com/patricoferris/jsoo-code-mirror/tree/static>

[js_top_worker] <https://github.com/jonludlam/js_top_worker>

[Support for HTML fragments in odoc]
<https://github.com/ocaml/odoc/pull/842>

[API changes and capability to fetch metadata from RSS post links]
<https://github.com/kayceesrk/river/pull/6>

[Dream] <https://aantron.github.io/dream/>

[Brr] <https://github.com/dbuenzli/brr>

[Omd] <https://github.com/ocaml/omd>

[many more] <https://github.com/ocaml/ocaml.org/blob/main/ocamlorg.opam>


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

  Launching the website is the first step on our roadmap to improve
  OCaml’s online presence.

  As mentioned above, the immediate goal is to be ready for this OCaml
  5.00.0 release. With this in mind, we want to focus on improving the
  documentation and ensuring it includes good user pathways to learn
  about Domains, Effects, and generally how to write concurrent programs
  in OCaml.

  In addition to the documentation, some of the other projects on our
  roadmap are:

  • Toplevels for all the packages that compile to JavaScript.
  • Including OCaml Weekly News in the OCaml blog.
  • A better search through packages, documentation, and packages'
    documentation.

  This is an exciting time! Stay tuned!


Call for maintainers
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  There's a lot of ways to contribute if you'd like to help. Our
  [contributing guide] should be a good entry point to learn what you
  can do as a community contributor.

  We're also looking for maintainers. As we're completing the first
  milestone with the launch and will start working on new projects, now
  is a great time to get involved!

  If you'd like to help on the initiatives on our roadmap above (or
  others!), feel free to reach out to me by email at
  thibaut@tarides.com, or by replying to this post.


[contributing guide]
<https://github.com/ocaml/ocaml.org/blob/main/CONTRIBUTING.md>


Acknowledgements
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  This project was a huge effort that started over a year ago, and the
  result of dozens of [contributors]. We want to thank every one who
  contributed to the site.

  In particular, for the groundwork on rethinking the sitemap, user
  flows, new content, design, and frontend and package docs, we thank
  Ashish Agarwal, Kanishka Azimi, Richard Davison, Patrick Ferris, Gemma
  Gordon, Isabella Leandersson, Thibaut Mattio and Anil Madhavapeddy.

  For the work on the package site infrastructure and UI, we thank Jon
  Ludlam, Jules Aguillon and Lucas Pluvinage. And for the work on the
  designs and bringing them to life on the frontend, we thank Isabella
  Leandersson and Asaad Mahmood.

  For the work on the new content and reviewing the existing one, we
  thank Christine Rose and Isabella Leandersson.

  For the contributions on the content for Ahrefs, Jane Street and
  LexiFi respectively, we thank Louis Roché, James Somers, Nicolás Ojeda
  Bär.

  We’d also like to thank the major funders who supported the work on
  revamping the website: grants from the Tezos Foundation, Jane Street
  and Tarides facilitated the bulk of the work. Thank you, and if anyone
  else wishes to help support it on an ongoing basis then donations to
  the OCaml Software Foundation and grants to the maintenance teams
  mentioned above are always welcomed.


[contributors] <https://github.com/ocaml/ocaml.org/graphs/contributors>


Remaking an Old Game in OCaml
═════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/remaking-an-old-game-in-ocaml/9760/1>


Yotam Barnoy announced
──────────────────────

  I've starting blogging about a [side-project of mine]. Hopefully I'll
  find the time to write some further entries in the series, including
  about reverse engineering a binary with IDA.


[side-project of mine]
<https://justabluddyblog.wordpress.com/2022/05/01/remaking-an-old-game-in-ocaml/>


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 #1.2: Type: text/html, Size: 26538 bytes --]

[-- Attachment #2: Type: text/plain, Size: 119 bytes --]

Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'INRIA.

         reply index

Thread overview: 108+ 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
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
2021-09-21  9:10 Alan Schmitt
2021-09-28  6:37 Alan Schmitt
2021-10-19  8:23 Alan Schmitt
2021-11-02  8:50 Alan Schmitt
2021-11-09 10:08 Alan Schmitt
2021-11-16  8:41 Alan Schmitt
2021-11-30 10:52 Alan Schmitt
2021-12-14 11:02 Alan Schmitt
2021-12-21  9:12 Alan Schmitt
2021-12-28  9:00 Alan Schmitt
2022-01-04  7:56 Alan Schmitt
2022-01-11  8:21 Alan Schmitt
2022-01-25 12:45 Alan Schmitt
2022-02-01 13:07 Alan Schmitt
2022-02-08 13:16 Alan Schmitt
2022-02-22 12:43 Alan Schmitt
2022-03-01 13:54 Alan Schmitt
2022-03-15  9:59 Alan Schmitt
2022-03-22 13:01 Alan Schmitt
2022-03-29  7:43 Alan Schmitt
2022-04-05 11:50 Alan Schmitt
2022-04-12  8:10 Alan Schmitt
2022-04-19  5:35 Alan Schmitt
2022-04-26  6:44 Alan Schmitt
2022-05-03  9:11 Alan Schmitt [this message]
2022-05-10 12:31 Alan Schmitt
2022-05-17  7:12 Alan Schmitt
2022-05-24  8:04 Alan Schmitt
2022-05-31 12:29 Alan Schmitt
2022-06-07 10:16 Alan Schmitt
2022-06-14  9:30 Alan Schmitt
2022-06-21  8:07 Alan Schmitt
2022-06-28  7:37 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=875ymnugjj.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