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

Alan Schmitt
2025-04-15T09:51:45Z

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

Hello

Here is the latest OCaml Weekly News, for the week of April 08 to 15,
2025.

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

Semgrep is hiring OCaml developers to help develop our supply chain security product!
Subprocess: a library for launching and communicating with Unix commands
cudajit: Bindings to the `cuda' and `nvrtc' libraries
qcheck-lin and qcheck-stm 0.2
Call for Volunteers to Help Maintain the Opam-Repository
Dune package management update
Ocsigen public meeting
Looking for Maintainers / Moderators for the OCaml Cookbook
SCGI library for OCaml and eio
Other OCaml News
Old CWN

Semgrep is hiring OCaml developers to help develop our supply chain security product!
═════════════════════════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/semgrep-is-hiring-ocaml-developers-to-help-develop-our-supply-chain-security-product/16464/1>

Aaron Acosta announced
──────────────────────

Semgrep is an application security company focused on detecting and
remediating vulnerabilities. The static analysis engine is primarily
written in OCaml. We're looking for a senior or staff software
engineer to help us enhance our third-party vulnerability detection
capabilities. The ideal candidate has owned a critical tool, has
worked on an OCaml project, has experience leading development teams
and mentoring, and has some experience with supply chain security.

If this sounds interesting to you, see our job posting at
[Senior/Staff Program Analysis Engineer, Supply Chain]! Let me know if
you have any questions!

[Senior/Staff Program Analysis Engineer, Supply Chain]
<https://job-boards.greenhouse.io/semgrep/jobs/4672858007>

Subprocess: a library for launching and communicating with Unix commands
════════════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-subprocess-a-library-for-launching-and-communicating-with-unix-commands/16467/1>

Aaron Christianson announced
────────────────────────────

_An OCaml library with *[documentation]!?*_

Yes. I realize it's unorthodox, but I thought I'd give it a shot.

I began my programming journey a bit later than most, and I began it
with Bash. Over the years I've grown apart from Bash and even written
some semi-popular [anti-Bash propaganda].

However, while I'm not particularly a fan of shell programming
languages, I've maintained a long-term interest in the types of
automation tasks which the shell lends itself to, and I have a soft
spot in my heart for languages which make this type of programming a
priority—languages such as AWK, Perl and Ruby.

Since learning OCaml, I always felt that it could be a good language
for these kinds of jobs with its light syntax, extensive Unix
interface and great regex libraries (I'm talking about `Re' and
friends, not `Str').

However, I always felt the provided interfaces for working with
processes were… not quite what I was looking for. `Sys.command'
(combined with `Filename.quote_command', of course) is OK for what it
does, but it doesn't do much. The more extensive set of process
handling commands in the Unix library make just about anything
possible, but they don't _feel good_ to me.

So I set out to create a library for working with Unix commands which
feels right to me. Subprocess focuses on *safety* and *ease of use*—in
that order. I hope someone besides myself will feel the same about it.

Note that this is the first release (and my first public OCaml
library) and I welcome feedback and criticism.

• Github: <https://github.com/ninjaaron/ocaml-subprocess>
• Opam: <https://ocaml.org/p/subprocess/latest>
• Odoc docs:
<https://ninjaaron.github.io/ocaml-subprocess/subprocess/index.html>

[documentation]
<https://ninjaaron.github.io/ocaml-subprocess/subprocess/index.html>

[anti-Bash propaganda]
<https://github.com/ninjaaron/replacing-bash-scripting-with-python>

cudajit: Bindings to the `cuda' and `nvrtc' libraries
═════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-cudajit-bindings-to-the-cuda-and-nvrtc-libraries/15010/3>

Lukasz Stafiniak announced
──────────────────────────

cudajit 0.7.0 is now available in the opam repository. It is now split
into separate libraries covering NVRTC bindings and CUDA bindings, so
that `Nvrtc' doesn't need CUDA drivers to run.

Version 0.7.0 brings full native Windows compatibility.

Version 0.6.0 improves memory safety and debuggability.

cudajit.0.7.0 can be used with OCANNL neural_nets_lib.0.5.2 also in
the opam repository. Enjoy!

qcheck-lin and qcheck-stm 0.2
═════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-qcheck-lin-and-qcheck-stm-0-2/12301/6>

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

Version 0.8 of `qcheck-lin', `qcheck-stm', and
`qcheck-multicoretests-util' was just merged on the opam repository:
<https://github.com/ocaml-multicore/multicoretests/releases/tag/0.8>

The 0.8 release improves the error finding ability of the `Lin_thread'
and `STM_thread' modes:

• [#540]: Significantly increase the probability of context switching
in `Lin_thread' and `STM_thread' by utilizing `Gc.Memprof'
callbacks. Avoid on 5.0-5.2 without `Gc.Memprof' support.
• [#546]: Speed up `Lin''s default `string' and `bytes' shrinkers.
• [#547]: Add `Util.Pp.{cst4,cst5}'

Happy testing! :smiley:

[#540] <https://github.com/ocaml-multicore/multicoretests/pull/540>

[#546] <https://github.com/ocaml-multicore/multicoretests/pull/546>

[#547] <https://github.com/ocaml-multicore/multicoretests/pull/547>

Call for Volunteers to Help Maintain the Opam-Repository
════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/call-for-volunteers-to-help-maintain-the-opam-repository/16476/1>

Shon announced
──────────────

*The opam-repository needs your help! :camel::heart:*

*tl;dr*: Want to grow your OCaml connections and expertise while
supporting a pillar of the ecosystem? Then join us as an
opam-repository maintainer by commenting on the issue [Volunteer to
Maintain the opam Repository :raised_hand_with_fingers_splayed:]!

The [opam-repository] is the official store of package descriptions
for the extended OCaml ecosystem. It serves more than 4400 packages
thru the `opam' package manager and index, and it is approaching 200
new packages and releases per month. The `opam' system is unique among
widely used programming language packaging systems in offering the
following:

• It supports [system dependencies] to abstract over the packaging
complexities of most commonly used platforms.
• It is tested by an [extensive CI matrix] to ensure packages are
working, installable, and interoperable.
• It is [curated] to cultivate an ecosystem of high quality, useful
packages.

This all takes a lot of work and it presents a wide field of
interesting socio-technical problems and exciting opportunities.

Here are two of the projects we've tackled recently:

• Organizing and executing the archiving initiative, led by @hannes,
and presented in ["Pushing the opam-repository into a sustainable
repository"]
• Work to [Improve the CI systems and maintain the infrastructure]

*The [opam-repository maintainers] needs the help of curious and
motivated volunteers, like you!*

[Volunteer to Maintain the opam Repository
:raised_hand_with_fingers_splayed:]
<https://github.com/ocaml/opam-repository/issues/27740>

[opam-repository] <https://github.com/ocaml/opam-repository>

[system dependencies]
<https://opam.ocaml.org/doc/Manual.html#opamfield-depexts>

[extensive CI matrix]
<https://github.com/ocurrent/opam-repo-ci/blob/master/doc/platforms.md>

[curated]
<https://github.com/ocaml/opam-repository/tree/master/governance/policies>

["Pushing the opam-repository into a sustainable repository"]
<https://blog.robur.coop/articles/2025-03-26-opam-repository-archive.html>

[Improve the CI systems and maintain the infrastructure]
<https://ocaml.org/changelog/2024-10-02-updates>

[opam-repository maintainers]
<https://github.com/ocaml/opam-repository/tree/master/governance>

Opportunities
╌╌╌╌╌╌╌╌╌╌╌╌╌

This is a great opportunity for newer and seasoned members of the
OCaml community to serve a critical function and make a big impact on
the sustainability and health of our growing ecosystem:

• Connect with and support contributors from across the ecosystem.
• Contribute to a large, long-running open source project.
• Learn from an experienced group of caring and committed maintainers.
• Learn advanced techniques in packaging management, in a variety of
build systems, and in every niche of the extended OCaml ecosystem.
• Help to evolve the tooling, infrastructure, and processes that
enable our distributed community to share programs!

Next steps
╌╌╌╌╌╌╌╌╌╌

• Ask any questions in this thread, or by contacting one of the
[active maintainers] directly.
• Volunteer by commenting on the issue [Volunteer to Maintain the opam
Repository :raised_hand_with_fingers_splayed:].
• We will arrange for an orientation session for all interested
maintainer!

We look forward to working with you!

– The Opam Repository Maintainers

[Volunteer to Maintain the opam Repository
:raised_hand_with_fingers_splayed:]
<https://github.com/ocaml/opam-repository/issues/27740>

Dune package management update
══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/dune-package-management-update/16477/1>

Marek Kubica announced
──────────────────────

Hi fellow camel-wranglers,

It has been a bit quiet with updates lately with regards to the Dune
package management feature, but it doesn't mean that the work has
stalled. We're still continuing and got to a point where the code is
mature enough to test it on all packages in OPAM-repository.

Some of you might be aware of [OPAM-health-check]: a tool/service that
monitors how much of the OPAM ecosystem can be built successfully. We
extended it to build packages with Dune.

It's a bit of a longer read, with all the explanations and thoughts
that went into this, but I am sure it'll be interesting for you what
challenges we had, what progress happened in the last few months and
most importantly, where we currently are:

<https://tarides.com/blog/2025-04-11-expanding-dune-package-management-to-the-rest-of-the-ecosystem/>

We're of course not done yet. So expect more update posts as we try to
get as many projects working as possible in the future. If you have
questions, ideas, suggestions, feel free to drop in in this thread :-)

Thanks go out to my coworkers involved in this effort (@gridbugs
@maiste @art-w @ElectreAAS @shym @mtelvers).

[OPAM-health-check] <https://github.com/ocurrent/opam-health-check/>

Ocsigen public meeting
══════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-ocsigen-public-meeting/16408/3>

Continuing this thread, Vincent Balat announced
───────────────────────────────────────────────

Thank you for the attendance! This was a very dense meeting :) The
minutes of the meeting are available [here]

[here]
<https://docs.google.com/document/d/11oLeQs3whCj1BLztVmlr4tVA3G1xKl50ZewdN0CrHMI/edit?tab=t.0>

Looking for Maintainers / Moderators for the OCaml Cookbook
═══════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/looking-for-maintainers-moderators-for-the-ocaml-cookbook/16497/1>

Sabine Schmaltz announced
─────────────────────────

Hi everyone,

after we added the [OCaml Cookbook on OCaml.org], we got into a
position where we
1. had contributions sitting around for a while because we did not
have the capacity to review and moderate these additions, and
2. felt we do not have a good enough understanding of the ecosystem in
general to assess whether the chosen libraries are reasonable, or
whether there's other options that need to be mentioned.

To make the cookbook really useful, we need to build a better process
around maintaining it and adding to it.

I propose:
1. We appoint a handful of moderators / maintainers for the OCaml
Cookbook, drawing from volunteers.
2. I create a Telegram group to stay in contact with you all to ask
for help on cookbook PRs. (This could a group focused precisely on
the OCaml Cookbook.)

So, if you're up for helping with the cookbook, have any questions, or
other remarks, please reach out to sabine@tarides.com, or reply here!
:orange_heart:

[OCaml Cookbook on OCaml.org] <https://ocaml.org/cookbook>

SCGI library for OCaml and eio
══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/scgi-library-for-ocaml-and-eio/16498/1>

Marc Coquand announced
──────────────────────

Hey everyone!

To learn a bit of networking and eio, I wrote an [scgi library with
eio support]. It aims to just implement the scgi protocol and a few
helpers for writing HTTP responses. It's still very new, and I am
looking for feedback on the interface and implementation before I
publish it to opam.

Here's a simple ping/pong example to get started:

┌────
│ open Scgi_eio
│
│ let handler (request : Request.t) =
│ match Request.path request with
│ | ["ping"] ->
│ Http_response.body_string `Ok "pong"
│ | _ ->
│ Http_response.body_status `Not_found
│
│ let () : unit =
│ let port = 3000 in
│ Eio_main.run
│ @@ fun env ->
│ let addr = `Tcp (Eio.Net.Ipaddr.V4.loopback, port) in
│ let net = Eio.Stdenv.net env in
│ Eio.Switch.run
│ @@ fun sw ->
│ let conn = Eio.Net.listen net ~sw ~reuse_addr:true ~backlog:5 addr in
│ Eio.traceln "Listening to connections on port %s" (string_of_int port) ;
│ Eio.Net.run_server conn
│ (Scgi_eio.http_server ~settings:Scgi_eio.default_settings handler)
│ ~on_error:(Eio.traceln "Error handling connection: %a" Fmt.exn)
└────

[scgi library with eio support] <https://git.sr.ht/~marcc/scgi-eio>

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

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

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

• [Expanding Dune Package Management to the Rest of the Ecosystem]
• [DNSvizor - run your own DHCP and DNS MirageOS unikernel - gets some
testing]

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

[Expanding Dune Package Management to the Rest of the Ecosystem]
<https://tarides.com/blog/2025-04-11-expanding-dune-package-management-to-the-rest-of-the-ecosystem>

[DNSvizor - run your own DHCP and DNS MirageOS unikernel - gets some
testing] <https://blog.robur.coop/articles/dnsvizor02.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: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: 30370 bytes --]