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

Alan Schmitt
2024-12-31T08:03:57Z

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

Hello

Here is the latest OCaml Weekly News, for the week of December 24 to 31,
2024.

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

Using Property-Based Testing to Test OCaml 5
First release of elm_playground
First release of flatunionfind
Serving This Article from RAM with Dream for Fun and No Real Benefit
Other OCaml News
Old CWN

Using Property-Based Testing to Test OCaml 5
════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/blog-using-property-based-testing-to-test-ocaml-5/14550/2>

Jan Midtgaard announced
───────────────────────

I've written up part 2 on our effort to utilize property-based testing
to stress test the OCaml 5 run time system. Happy Christmas reading!
🎄🎅 🎁 😄

<https://tarides.com/blog/2024-12-23-multicore-property-based-tests-for-ocaml-5-challenges-and-lessons-learned/>

First release of elm_playground
═══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-first-release-of-elm-playground/15838/1>

Yoann Padioleau announced
─────────────────────────

It is my pleasure to announce the first release of `elm_playground',
an OCaml package that allows you to easily create /pictures/,
/animations/, and even /video games/ in a portable way using an API
that really simplifies how to view the computer and its devices (the
screen, keyboard, and mouse). The library offers a native backend to
run the games from a terminal and a web backend to run the games in
your browser.

This is a port of the excellent Elm playground package
<https://github.com/evancz/elm-playground> to OCaml.

You can install it via OPAM via `opam install elm_playground'.

Here are a few examples of code using the library.

First a "picture" app:

┌────
│ (* from https://elm-lang.org/examples/picture *)
│ open Playground
│
│ let app =
│ picture [
│ rectangle brown 40. 200.
│ |> move_down 80.;
│ circle green 100.
│ |> move_up 100.;
│ ]
│
│ let main = Playground_platform.run_app app
└────

<https://global.discourse-cdn.com/flex020/uploads/ocaml/optimized/2X/7/76fc1990fe116911097764df986f64fed41c28a4_2_470x500.png>

Then an "animation" app:
┌────
│ (* from https://elm-lang.org/examples/animation *)
│ open Playground
│
│ let view time = [
│ octagon darkGray 36.
│ |> move_left 100.
│ |> rotate (spin 3. time);
│ octagon darkGray 36.
│ |> move_right 100.
│ |> rotate (spin 3. time);
│ rectangle red 300. 80.
│ |> move_up (wave 50. 54. 2. time)
│ |> rotate (zigzag (-. 2.) 2. 8. time);
│ ]
│
│ let app =
│ animation view
│
│ let main = Playground_platform.run_app app
└────

<https://global.discourse-cdn.com/flex020/uploads/ocaml/optimized/2X/e/e91563cbb6a0863570bbb19b057f5e8dae7164bf_2_470x500.png>

And finally a "game" app:
┌────
│ (* from https://elm-lang.org/examples/mouse *)
│ open Playground
│
│ let view _computer (x, y) = [
│ square blue 40.
│ |> move x y
│ ]
│
│ let update computer (x, y) =
│ (x +. to_x computer.keyboard, y +. to_y computer.keyboard)
│
│ let app =
│ game view update (0., 0.)
│
│ let main = Playground_platform.run_app app
└────

<https://global.discourse-cdn.com/flex020/uploads/ocaml/optimized/2X/2/24e8ffe672cda66c6a49e02013347cda0640f771_2_470x500.png>

Note that you can write more complex games. For example here is a
screenshot of a toy tetris app:

<https://global.discourse-cdn.com/flex020/uploads/ocaml/original/2X/4/4ded1d55c9994935c5ec3786ae549ba3a71b8eb6.png>

For more information, follow the README at
<https://github.com/aryx/ocaml-elm-playground>

And merry christmas!

First release of flatunionfind
══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-first-release-of-flatunionfind/15847/1>

François Pottier announced
──────────────────────────

I am pleased to announce the first release of `flatunionfind', a small
library that offers a union-find data structure, stored inside a
vector.

This library is an alternative to my existing library `unionFind', and
could be faster or slower, depending on your use case.

┌────
│ opam update
│ opam install flatunionfind
└────

For more information, see the [documentation].

Happy unions and finds, FP.

[documentation]
<https://cambium.inria.fr/~fpottier/flatunionfind/doc/flatunionfind/>

Serving This Article from RAM with Dream for Fun and No Real Benefit
════════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/serving-this-article-from-ram-with-dream-for-fun-and-no-real-benefit/15856/1>

Thomas Letan announced
──────────────────────

I’ve been playing with my website lately, more precisely on how the
contents is delivered to the readers. Before, it was merely a boring,
static website delivered by Nginx; now it’s a Dream-powered HTTP
server with all the pages in-memory.

[I’ve written about this fun, little project], and you may find the
article interesting. It covers several topis: fun experiments with the
Dream library, HTTP arcane one cannot ignore if they want to implement
a browser-friendly server, and even some Docker because why not!

Happy holidays everyone!

[I’ve written about this fun, little project]
<https://soap.coffee/~lthms/posts/DreamWebsite.html>

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

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

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

• [Serving This Article from RAM with Dream for Fun and No Real
Benefit]
• [Multicore Property-Based Tests for OCaml 5: Challenges and Lessons
Learned]

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

[Serving This Article from RAM with Dream for Fun and No Real Benefit]
<https://soap.coffee/~lthms/posts/DreamWebsite.html>

[Multicore Property-Based Tests for OCaml 5: Challenges and Lessons
Learned]
<https://tarides.com/blog/2024-12-23-multicore-property-based-tests-for-ocaml-5-challenges-and-lessons-learned>

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