Hello Here is the latest OCaml Weekly News, for the week of June 02 to 09, 2026. Table of Contents ───────────────── Richard Bird Distinguished Dissertation Award Announcing Pyro Caml: A Continuous Profiler for OCaml awso 0.9.1: Type-safe coverage for 400+ AWS APIs OCaml 4.14.3 for Plan 9 Call for Talk Proposals @ OCaml Workshop 2026 Ahrefs Grant Program for OCaml Old CWN Richard Bird Distinguished Dissertation Award ═════════════════════════════════════════════ Archive: François Pottier announced ────────────────────────── Hello fellow users of OCaml, If you or your students have defended a PhD in 2025 on a topic related to functional programming, then you may apply for the (new) Richard Bird Distinguished Dissertation Award. Announcement copied below. `===============================================================' CALL FOR NOMINATIONS Richard Bird Distinguished Dissertation Award 2025 Deadline: 31st August 2026 `===============================================================' OVERVIEW The Journal of Functional Programming is pleased to establish the Richard Bird Distinguished Dissertation Award, to recognise an outstanding PhD dissertation in functional programming. Richard Bird (1943-2022) was one of the leading figures in functional programming. He was a Professor in Oxford, where he founded the Algebra of Programming group, and served as Director of the Computing Laboratory. Richard is renowned for his many books and pearls on functional programming, which set a lasting standard for clear and elegant writing. It seems fitting that an award be established in his name to further encourage these values in the field. The award includes a prize of £1,000. Funding for the prize is supported by a generous donation from Richard himself to further the cause of functional programming. CRITERIA Eligible dissertations must have been completed in 2025. Depending on the institution, this may be the date of the viva, corrections being approved, graduation ceremony, or otherwise. The award is open to all topics within the remit of JFP, with a particular emphasis on dissertations that reflect Richard's own values of clarity, simplicity and elegance. For a dissertation to be considered for the award it should: • Reach a high standard of exposition; • Make a noteworthy contribution to the subject; • Place the results in the wider context of computer science. NOMINATIONS Please submit the following information to the award chair, graham.hutton@nottingham.ac.uk, by 31st August 2026: • Two letters of support, explaining why the dissertation should be considered for the award. One letter should be from the advisor/supervisor, and one from an independent source with no conflict of interest with the candidate, such as an external examiner or other expert in the field. • A copy of the dissertation itself. AWARD COMMITTEE • Graham Hutton (chair), University of Nottingham • Matthew Flatt, University of Utah • Jeremy Gibbons, University of Oxford • François Pottier, INRIA • Wouter Swierstra, University of Utrecht • Ningning Xie, University of Toronto The JFP editors-in-chief serve as observers of the committee. `===============================================================' Announcing Pyro Caml: A Continuous Profiler for OCaml ═════════════════════════════════════════════════════ Archive: Austin Theriault announced ────────────────────────── Hey y'all, last year I gave a [workshop] on observability at Fun OCaml, and a few folks asked me what was available for continuous profiling, and I wasn't aware of any solutions that supported OCaml directly. Since then I got the opportunity to work on one, and put it into use in production over at Semgrep, and now after battle testing it for a few months I'm happy to announce [Pyro Caml] is now available, and on [opam]. I got a good excuse to use a lot of cool OCaml tools like ocaml-rs, the runtime event system, and memprof, so needless to say it was a bunch of fun to write this :slight_smile: . If you're interested in the details I have a blog post [here] covering them. Currently it only supports CPU profiling, but we're potentially going to add memory/gc profiling in the coming months. Enjoy! [workshop] [Pyro Caml] [opam] [here] awso 0.9.1: Type-safe coverage for 400+ AWS APIs ════════════════════════════════════════════════ Archive: Michael Bacarella announced ─────────────────────────── Greetings OCaml enjoyers, Have you been annoyed with terraform plan telling you 10 minutes later that you have a typo? Are you frustrated with how type-ambiguous your cloud is? (Abe Simpson shaking fist at cloud) Or, maybe you wish you could have AWS libraries inside an ecosystem you trust. Well, this release is for you! I'm happy to announce `awso', a comprehensive AWS library. This was forked from `https://github.com/solvuu/awsm', which was never released to opam. `awso' provides typed OCaml bindings to AWS services generated from botocore's service definitions, so the compiler catches the typos and shape mismatches. The `awso' repo: What's in the tin ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ Typed clients for the full AWS surface area, generated from botocore 1.43.9 Four I/O backends: • `awso-eio' - Eio • `awso-async' — Async • `awso-lwt' — Lwt • `awso-sync' — Synchronous (blocking) over libcurl, for easy scripting and CLIs Also • `awso-cli': for fun, a kitchen-sink binary exposing every service as a composable subcommand, in the spirit of the Python aws CLI. (Ships as bytecode because linking \~400 native service libraries exceeds ARM64 executable size limits; yes really) Note: the AWS API is big. `opam install' may take awhile. An example using Eio ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┌──── │ (* ec2_describe_instances.ml *) │ module Ec2 = Awso_ec2_eio │ │ let print_row a b c d = Printf.printf "%-16s %-15s %-39s %-20s\n" a b c d │ │ let print_instance instance = │ let name = │ Option.bind instance.Ec2.Instance.tags (fun tags -> │ List.find_map │ (function │ | { Ec2.Tag.key = Some "Name"; value = Some v } -> Some v │ | _ -> None) │ tags) │ in │ let instance_type = │ match instance.instanceType with │ | Some it -> Ec2.InstanceType.to_string it │ | None -> "" │ in │ print_row │ instance_type │ (Option.value instance.publicIpAddress ~default:"") │ (Option.value instance.ipv6Address ~default:"") │ (Option.value name ~default:"") │ ;; │ │ let main env = │ let cfg = Awso_eio.Cfg.get_exn ~env () in │ match Ec2.describe_instances ~cfg (Ec2.DescribeInstancesRequest.make ()) with │ | Error e -> │ failwith │ (Printf.sprintf │ "Ec2.describe_instances: %s" │ (Yojson.Safe.to_string (Ec2.Ec2_error.to_json e))) │ | Ok { reservations; _ } -> ( │ let instances = │ reservations │ |> Option.value ~default:[] │ |> List.concat_map (function │ | { Ec2.Reservation.instances = None; _ } -> [] │ | { instances = Some instances; _ } -> instances) │ in │ match instances with │ | [] -> print_endline "no instances" │ | instances -> │ print_row "instance-type" "public ipv4" "public ipv6" "name"; │ print_row │ (String.make 16 '-') │ (String.make 15 '-') │ (String.make 39 '-') │ (String.make 20 '-'); │ List.iter print_instance instances) │ ;; │ │ let () = Eio_main.run main └──── Major changes in the fork from awsm ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ • Replaced lightweight higher-kinded polymorphism with a functorized approach (architectural detail: end users don't need to use functors!) • Restructured into `aws/{eio,async,lwt,sync}/' so each backend ships only what it needs • Consolidated per-service opam packages into sub-libraries under each backend, on advice from the opam-repository crew. opam install awso-async pulls in every service binding as awso-async. • Transport errors now raise instead of polluting the Result type; only AWS-side errors stay in Result, matching Async convention • Dropped Jane Street Core from the non-Async runtimes via a small Jane_compat shim; Yojson.Safe.t everywhere instead of ad-hoc JSON; Base is still required for some rewriters and other tooling, but still much lighter weight than all of Core • Codegen is committed to the tree, so `opam install' doesn't drag \~25 build-time packages into your dependency cone • Output shapes treat required as advisory, because AWS itself routinely omits fields it marks required (looking at you, AccessDeniedException with no Message). Input shapes still respect it. • Various [working examples here] Minimum OCaml 5.3.0 to install from opam, OCaml 4.14 if you bump your stack limit before building. See CHANGES.md for the full list, and TODO.md for things known to still be rough. [working examples here] A bit of history ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ OCaml's AWS bindings have a lineage that predates this fork by years, with substantial development at Solvuu and collaboration from Tarides. Special thanks to Jane Street for their contributions along the way. It was open-sourced a while back and has sat quietly since. `awso' is an attempt to dust it off, bring it forward to current OCaml, and give it a home where the community can utilize it. Genuine thanks to everyone whose work this builds on! There's a lot of good engineering under the hood that deserves to keep running. Help me get the credits right ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ The code in the public solvuu repo was copy/pasted over from an internal repository, so the public git history doesn't reflect everyone who contributed. If you worked on any earlier version and want to be credited, please reach out. Where it's going ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ 0.9.1 is meant as a release-candidate-quality baseline ahead of a 1.0.0. Near-term: working through TODO.md and more working examples. Issues and PRs welcome, particularly bug reports from real workloads. It works on 4.14 but you need to increase your stack size a bit to work around some non-TCO parts of the OCaml compiler. I'm trying to see if we can chunk things up differently to get it through opam-ci for OCaml 4.14. • Repo: • opam: opam install awso-eio (or -lwt, or -async, or -sync) Bear with me while I spin some things in TODO.md off into GitHub issues. But I'm also curious to hear what might be missing from this release for you. AI assistance disclosure ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ Most of this work is directly coded by multiple humans over several years. A bulk of my own work in the project was back in 2022 porting it to ppxlib, making it work in OCaml 5 and growing the supported services from a handful to hundreds (bugfixes, missing support, working around botocore spec errors). Most of this work happened before the age of LLMs. Remember when "generated code" meant /generated by OCaml/? This guy remembers. I've since recruited Claude Code with Opus 4.7 for the push towards an opam release: mostly in refactoring, catching up on the latest botocore spec, and reducing the dependency cone. I hereby declare I understand and can answer for every line of code in awso. Closing ╌╌╌╌╌╌╌ I'm happy to hear feedback, especially on API ergonomics. <3 Michael OCaml 4.14.3 for Plan 9 ═══════════════════════ Archive: Eduardo Cavazos announced ───────────────────────── Hey y'all 🙋‍♂️ I've been messing around with a port of OCaml 4.14.3 for Plan 9: The native compiler isn't supported yet. Just bytecode support, repl, etc. Call for Talk Proposals @ OCaml Workshop 2026 ═════════════════════════════════════════════ Archive: Continuing this thread, Sudha Parimala announced ──────────────────────────────────────────────── The website is now live at . Please refer to it for the latest information! The submission deadline is roughly three weeks away! Please consider submitting your work. Ahrefs Grant Program for OCaml ══════════════════════════════ Archive: Continuing this thread, Louis Roché announced ───────────────────────────────────────────── The recipient of the grants are: • [OCaml bindings for GTK 4] by Chris Armstrong • [LSP for menhir] by Federico Dal Pio Luogo • [Programmable Patterns for OCaml] by the team of Ningning Xie in the University of Toronto • [Update the WebAuthn OCaml library to specification level 3 from level 2 (2021)] by Robur • [Modernizing ocp-indent for OCaml 5.x] by ocamlpro • [Maintenance and Development of the Dream Web Framework] by Sebastian Willenbrink, • Introspectable OCaml, an OCaml variant (compile-time options) which provides an improved debugging and profiling experience, by [Shogan.ai] (Frederic Bour and Thomas Refis) [OCaml bindings for GTK 4] [LSP for menhir] [Programmable Patterns for OCaml] [Update the WebAuthn OCaml library to specification level 3 from level 2 (2021)] [Modernizing ocp-indent for OCaml 5.x] [Maintenance and Development of the Dream Web Framework] [Shogan.ai] 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] [the archive] [RSS feed of the archives] [caml-list] [Alan Schmitt]