[ANN] v0.17 release of Jane Street packages

[ANN] v0.17 release of Jane Street packages

Dear OCaml developers,

We are pleased to announce the v0.17 release of Jane Street packages!

This release comes with 15 new packages and a multitude of new features and fixes.

Switch to OCaml 5.1

We are switching Base and all our packages (except sexplib0) to OCaml 5.1 and above. We are also switching sexplib0 to 4.14 to take advantage of the Tail Recursion Modulo Cons optimization in the compiler.

Core on OCaml 5.2

Due to some changes to Stdlib.Gc in OCaml 5.2, core.v0.17.0 fails to compile with that language version. We will release a fix that allows using Core with OCaml 5.2 soon.

Edit: core.v0.17.1 was released and supports OCaml 5.2.

Torch and VCaml

Due to some issues with their builds, torch.v0.17.0 and vcaml.v0.17.0 were omitted from the main v0.17 release. We will soon submit those packages to opam.


Browse our GitHub repositories and look at the respective CHANGES.md files for changes since the v0.16 release. For examples, see changelogs for Base, Async_kernel, and Bonsai.

New packages

async_log – a logging library for Async code, moved from async_unix

capitalization – a library for case conventions and renaming identifiers

codicons – icons from VS Code for use with Bonsai

gel – a library to mark non-record fields global for use with our compiler extensions

hardcaml_event_driven_sim – a simulator library for Hardcaml

ocaml_intrinsics_kernel – a split from ocaml_intrinsics compatible with javascript

ocaml_openapi_generator – an OpenAPI 3 to OCaml client generator

ppx_diff – a ppx for generation of diffs and update functions for OCaml types.

ppx_embed_file – a ppx that allows embedding files directly into executables/libraries as strings or bytes

ppxlib_jane – utilities for working with Jane Street AST constructs

ppx_quick_test – a ppx providing an ergonomic wrapper for quickcheck tests, similar to ppx_inline_test

ppx_string_conv – deriving to_stringand of_string

uopt – unsafe option type that does not allocate, moved from core_kernel

versioned_polling_state_rpc – helper functions for versioned Polling_state_rpc.t

virtual_dom_toplayer – bindings for the floating_positioning javascript library


To better understand the quick switch to OCaml 5, how does the versioning of Base work? Is there a version of these packages that are tied to the stable OCaml 4.14 and which will still get updates in parallel?

base.v0.16.3 is the latest version of Base supported on OCaml 4.14. It will not receive new updates except for critical bugfixes if necessary.

Just be aware that 5.1 is still described as experimental (as is 5.2). This also concerns people who do not use the parallelism features yet since many parts of the runtime have been modified.

This marker is likely to be dropped with OCaml 5.3[1], as all the missing features from OCaml 4.14 (apart from the intentionally dropped native 32-bit support) should have been restored.

  1. My opinion, rather than something that’s been formally discussed between core devs, yet… β†©οΈŽ

1 Like

I am not talking about the feature set though, but possible runtime bugs. In addition, there is an open question regarding the interaction between the C and OCaml memory models, that likely requires a FFI change, which concerns people who want to use parallelism features.