OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of September 10 to 17, 2024.

Table of Contents

Ptime 1.2.0 – Mtime 2.1.0 – Qrc 0.2.0

Daniel Bünzli announced

There are new releases of these packages:

See the individual release notes for details about the changes.

The library structure of Ptime and Mtime was changed to align it on the mythical library convention and make it for less surprising names (it used to make sense, it no longer does):

  • The {M,P}time_clock modules are now in the {p,m}time.clock libraries as they should be. These libraries were also made to export the base {p,m}time library so that you can trim you requires when you use the clocks.
  • The libraries {p,m}time.clock.os are deprecated. They now simply export {p,m}time.clock and warn on usage.

Best and a big thanks to my donors

Unicode 16.0.0 update for Uucd, Uucp, Uunf and Uuseg

Daniel Bünzli announced

Unicode 16.0.0 was released on September 10th. It adds 5185 new characters for a total of 154'998 characters.

If you are into retrocomputing or terminal graphics this may be your ultimate chance to find an odd character to make an effect among the 686 new symbols for legacy computing that are added – I'm hearing this may me be the last batch, the resource is finite! See the announcement page for links to all the other equally interesting additions.

If you are obsessed about deep linking into standard definitions, note that the normative core specification becomes a proper HTML document; rather than a bunch of PDF files or that 1400 pages hard-copy I once purchased for 5.0.0 circa 2007 :–). The neat result is that we can now precisely hyperlink to the normative definition of an OCaml Uchar.t value.

Accordingly these libraries had to be updated (aggregated, boring, release notes here)

  • Uucd 16.0.0 Unicode character database decoder for OCaml, docs
  • Uucp 16.0.0 Unicode character properties for OCaml, docs
  • Uunf 16.0.0 Unicode text normalization for OCaml, docs
  • Uuseg 16.0.0 Unicode text segmentation for OCaml, docs

Both Uucd and Uucp are incompatible releases sinces new block and script enumerants were added.

Other than that the minimal Unicode introduction and Unicode OCaml tips is still here and remember that despite the uninformed myths OCaml :heart: Unicode.

A big thanks for funding from the OCaml Software Foundation and from my faithful donors.

Outreachy Demo Presentation

Patrick Ferris announced

The demo presentation video is now online: https://watch.ocaml.org/w/peT3MdWjS1BYYMbowEJ1gv – thank you to everyone who joined and particularly the mentors, co-mentors and interns!

A big thank you also to Tarides and Jane Street for providing resources and funding to make this round possible. A reminder that today is the last day to sign up to the next round – Outreachy December 2024 Round!

Live Stream to follow OCaml Workshop, ML Workshop, and other talks at ICFP

jbeckford announced

FYI: For people like me who were on vacation or otherwise unavailable, the several hour Live Stream is still available.

The intro to the workshop and the first OCaml talk start at https://www.youtube.com/live/OuQqblCxJ2Y?t=2254s.

DkML 2.1.2 and opam 2.2.0

jbeckford announced

DkML 2.1.3 was released. The major changes are:

Upgrading is:

winget remove dkml # Ignore "exit code: 4294967295"
winget install dkml

The full release notes are at https://gitlab.com/dkml/distributions/dkml/-/releases/2.1.3.

store v0.1.0

Basile Clément announced

I would like to announce the first release of store (docs), a library providing a snapshottable bag of mutable references, an efficient data-structure for back-tracking workloads.

To install it, type opam update && opam install store.

Store provides a simple API for capturing and restoring state as well as easy-to-use high-level wrappers to automatically rollback changes on failure (tentatively) or unconditionally (temporarily). It boasts almost-zero overhead when back-tracking is not used and best-in-class performance for back-tracking use cases.

The design and implementation of Store is described in the paper Snapshottable stores, which was given a Distinguished Paper award at this year's ICFP in Milan. As recognized by this award, the paper is well-written and easy to understand; please give it a read if you are interested in either back-tracking workloads or subtle data structure invariants!

I also want to give a shout-out to François Pottier's Monolith, which proved invaluable during the development of Store to find and diagnose subtle bugs.

Store was developed through collaboration between myself (Basile Clément) at OCamlPro and Gabriel Scherer at Inria, and the persistent interface was formally verified by Clément Allain and Alexandre Moine at Inria.

Tsdl 1.1.0

Daniel Bünzli announced

There's a new release of Tsdl, thin bindings to the C SDL library. See the release notes for details.

  • Docs: online or odig doc tsdl
  • Install: opam install tsdl

Daniel

A big thanks to my donors.

OCaml-css 0.2.0

Zoggy announced

OCaml-css 0.2.0 is released and already available in opam (package css).

OCaml-css is a library to parse and print CSS. (docs)

Main changes are the introduction of property spaces and partial handling of nested rules.

Properties are now defined in spaces. A Css space is predefined, with some CSS properties, but you can define a new space with specific properties to use the CSS syntax for these properties in your application. (this is what is done in the to be not yet released 0.2.0 version of stk).

Nested style rules are now parsed and can be expanded. Nested @-rules are not handled yet.

OCaml-stk 0.2.0 and Chamo 4.1.0

Zoggy announced

Stk

A new release of OCaml-stk, 0.2.0, is now available in opam (package stk).

OCaml-stk is a Graphical User Interface library based on on libSDL 2, through the Tsdl bindings.

As the library is under heavy development, this release includes many changes: new widgets, better memory management, css-like theming, …

By cloning the repository and running make, you can then run ./_build/default/examples/examples.exe. This example application contains demonstrations of each widget with the corresponding code in the same window.

Chamo

A new release of Chamo, 4.1.0, is also available in opam (package chamo).

Chamo is a source code editor, even if it can be used to edit any text file. It is based on OCaml-stk. This release contains small bug fixes and follows changes in OCaml-stk.

DkCoder 2.1.3

jbeckford announced

I am happy to announce another release of DkCoder - a no-install OCaml-based scripting framework.

Major changes:

  • Split out the Java-like packaging and security tools into the MlFront project: https://discuss.ocaml.org/t/ann-mlfront-a-java-like-package-system-for-ocaml/15072.
  • The DkCoder and MlFront version numbers are now in sync with DkML version numbers. However, DkCoder is still alpha and there is at least one breaking change coming.
  • Several third-party "Us" scripts are embedded and supported. (They are listed at bottom of this post).

Docs: The main doc page is https://diskuv.com/dksdk/coder/2024-intro-scripting/. But I don't yet have good reference docs. The samples below have been updated and are good ways to see what DkCoder can do (use the V2_1 branches):

There are many bug fixes and new features. The full list is at https://github.com/diskuv/dkcoder/blob/1.0/CHANGES.md#2132 - all the sections from 0.4.0.1 to 2.1.3.2 (inclusive) are new.

New "Us" scripts

These scripts can be run inside any of the sample projects above, or used as ordinary modules in your own DkCoder project source code. Some scripts, but not all, have a --help option.

./dk DkFs_C99.Dir - Directory manipulation operations.
./dk DkFs_C99.File - (no help) File manipulation operations.
./dk DkFs_C99.Path - Path manipulation operations.
./dk DkNet_Std.Browser - Browser operations.
./dk DkNet_Std.Http - Download content.
./dk DkDev_Std.Legal.Record - Asks for and records your acceptance of legal terms and agreements.
./dk DkDev_Std.Exec - Execute a command in the DkCoder 2.1 runtime environment.
./dk DkDev_Std.Export - Create an `exports` field inside dkproject.jsonc summarizing all the You libraries.
./dk DkDev_Std.Jsontree - (no help) For in-place edits of JSON files.
./dk DkStdRestApis_Gen.* - (no help) (unstable, not ready). OpenAPI 3 service and client generator.

Other OCaml News

From the ocaml.org blog

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.