[Caml-list] Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt
2024-06-18T13:05:58Z

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

Hello

Here is the latest OCaml Weekly News, for the week of June 11 to 18,
2024.

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

Your opam-repository PRs are now tested on Windows
Forester 4.1
fun-sql 0.2.3
dream-html and pure-html 3.5.2
Control Structures, English translation of lectures by Xavier Leroy
Ppxlib dev meetings
Other OCaml News
Old CWN

Your opam-repository PRs are now tested on Windows
══════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-your-opam-repository-prs-are-now-tested-on-windows/14781/1>

Kate announced
──────────────

Following the merge of [Windows support for the compiler in
opam-repository] and the [release of opam 2.2.0~beta3], I'm happy to
announce that a basic Windows CI using Github Actions is now in use in
opam-repository, so all your new PRs are now being tested on Windows
too.

This is a big milestone, however the upstream opam-repository hasn't
been tested with Windows before and thus many packages lacking the
proper availability metadata will fail to build in the next month or
so. If you see a package that is definitely not going to be available
on Windows, please do report it in the [opam-repository bug-tracker]
or even better open a PR if you have the time. When opening such
PRs/issues, it would help the maintainers to copy/paste the failing
log in the PR description.

Most such PRs should simply add the following line to the failing
package(s):
┌────
│ available: os != "win32"
└────

If you notice any issues in the Github Action itself or want to
improve it, please feel free to open a PRs/issue for that too, the
code is available in [opam-repository/.github/workflows/windows.yml].

[Windows support for the compiler in opam-repository]
<https://github.com/ocaml/opam-repository/pull/25861>

[release of opam 2.2.0~beta3]
<https://discuss.ocaml.org/t/ann-opam-2-2-0-beta3/14772>

[opam-repository bug-tracker]
<https://github.com/ocaml/opam-repository/issues>

[opam-repository/.github/workflows/windows.yml]
<https://github.com/ocaml/opam-repository/blob/master/.github/workflows/windows.yml>

Forester 4.1
════════════

Archive: <https://discuss.ocaml.org/t/ann-forester-4-1/14800/1>

Jon Sterling announced
──────────────────────

I am pleased to announce the release of [Forester 4.1] on opam, which
is an OCaml utility to develop “Forests”, which are densely
interlinked mathematical websites / Zettelkästen similar to the
[Stacks project] or [Kerodon ]. You can see the [release notes] on my
own [Forest].

There are a few new features, including a simplified command `forester
init` to setup a fresh forest.

Thanks to Kento Okura, Nick Hu, and Trebor Huang for their
contributions to this release.

[Forester 4.1] <http://www.jonmsterling.com/jms-00S9.xml>

[Stacks project] <https://stacks.math.columbia.edu>

[Kerodon ] <https://kerodon.net>

[release notes] <http://www.jonmsterling.com/jms-00S9.xml>

[Forest] <https://www.jonmsterling.com>

fun-sql 0.2.3
═════════════

Archive: <https://discuss.ocaml.org/t/ann-fun-sql-0-2-3/14806/1>

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

I am happy to announce the initial release of fun-sql, a simple
functional-style query library for SQLite and PostgreSQL.

To use it with SQLite: <https://ocaml.org/p/fun-sqlite>

To use it with PostgreSQL: <https://ocaml.org/p/fun-postgresql>

Fun-sql is not an ORM, it's a query execution and data mapping library
(sometimes called a micro-ORM). It does three things:

1. Create the prepared statement and encode the parameters
2. Execute the query
3. Decode the resultset into OCaml types using a set of combinators.

Here's an example:

┌────
│ open Fun_postgresql
│
│ module Note(Db : sig val db : Postgresql.connection end) = struct
│ open Db
│
│ type t = { id : int; txt : string }
│ let ret = ret (fun row -> { id = int 0 row; txt = text 1 row })
│
│ (* Prepared statement: *)
│ let edit = query db "update note set txt = $1 where id = $2"
│
│ (* Use by simply calling it: *)
│ let edit id txt = edit ~args:Arg.[int id; text txt] unit
│ (* val edit : int -> string -> unit *)
│
│ (* Prepared statement: *)
│ let by_id = query db "select id, txt from note where id = $1"
│
│ let by_id id = only (by_id ~args:Arg.[int id] ret)
│ (* val by_id : int -> t *)
│ end
└────

The design enforces the use of prepared statements–indeed, with
PostgreSQL, a prepared statement corresponding to a query can be
created only _once,_ so you have to ensure that you use a pattern like
the above.

MySQL support is also desired and I will get to it at some point
unless someone beats me to it!

dream-html and pure-html 3.5.2
══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-dream-html-pure-html-3-5-2/14808/1>

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

Pleased to announce the release of dream-html 3.5.2, which actually
spawns a new package pure-html: <https://ocaml.org/p/pure-html>

This package offers the same functionality as dream-html, _except_
without a Dream dependency, so you can use whatever web server you
like, or even use it for other applications than web servers. It works
exactly the same way as dream-html, except the top-level module is
`Pure_html':

┌────
│ open Pure_html
│ open HTML
│
│ let content = article [] [
│ p [] [txt "Header"];
│ p [] [txt "Body"];
│ ]
└────

pure-html has a runtime dependency only on the `uri' package.

Control Structures, English translation of lectures by Xavier Leroy
═══════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/control-structures-english-translation-of-lectures-by-xavier-leroy/14810/1>

unfode announced
────────────────

[Website].

Really learned a lot from the slides. For example, the most
understandable definition of continuation I've ever seen:
Given a control point in a program, its continuation is
the sequence of computations that remain to be done once
the execution reaches the given control point in order to
finish the execution of the whole program.

[Website] <https://xavierleroy.org/CdF/2023-2024/index.html>

Ppxlib dev meetings
═══════════════════

Archive: <https://discuss.ocaml.org/t/ppxlib-dev-meetings/12441/24>

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

This month's meeting is scheduled today, Tuesday June 18th, at 6:00PM
CET.

Sorry for posting the announcement so late!

Here is the meeting agenda:
• 5.2 AST bump
• Driver Transform refactoring
• 5.3 support
‣ Added a trunk CI build, we should be able to consider merging
‣ Still need documentation for releases
• Driver anti-warning 34 code gen
‣ Still haven't heard from Janestreet, we need their feedback before
moving forward with this
• Ocamlfind support
‣ There seem to be a bug when a ppxlib based ppx is invoked directly
using ocamlfind -package
‣ Is this something we want to actively maintain
• Dune w/ ppx
‣ Nathan got back to it, hopefully it should be ready soon
• Repo hygiene: issue triage
‣ We have a lot of issues, most of which are extremely old
‣ A lot of issues are actually questions on how to use ppxlib for
ppx authors
‣ It's worth having a go at closing the irrelevant issues and have
some classification system for the rest

The meeting will be hosted on google meet here:
<https://meet.google.com/yxw-ejnu-cju>

You are welcome to join!

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

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

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

• [Creating the SyntaxDocumentation Command - Part 2: OCaml LSP]
• [MirageVPN server]

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

[Creating the SyntaxDocumentation Command - Part 2: OCaml LSP]
<https://tarides.com/blog/2024-07-12-creating-the-syntaxdocumentation-command-part-2-ocaml-lsp>

[MirageVPN server]
<https://blog.robur.coop/articles/miragevpn-server.html>

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