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/>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.