Attn: Development Editor, Latest OCaml Weekly News
Alan Schmitt <[email protected]>
| Newsgroups | gmane.comp.lang.caml.inria |
|---|---|
| Message-ID | <[email protected]> |
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:[email protected]>
[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/>