We don't have public release notes for this release yet. However, weare in the process of reviewing the past year of change logs and hopeto publish them online soon. In the meantime, here is a summary ofmajor changes and new features available in this release.

Simpler versioning

The first noteworthy change is the versioning scheme. We used toassign version numbers based on our internal ones. However thesedidn't make much sense outside of Jane Street, and especially therewas a huge gap between each releases. So we are now using a moreclassic versioning scheme.

In order to keep version numbers going up, they had to be prefixedwith a 'v'. And because this release introduce a new standard library,Base, with an API that is still under active development, the newversions start with v0.9.0.

Faster and more portable builds

This release is the first one to use Jbuilder [1], a new build system thatwas initially designed to ease the publication of our packages. Themain consequences for users are:

much faster compilation times. It has been observed that Jane Streetpackages such as Core are now 6 times faster to build and install

improved portability. For instance packages whose code is portablebuild on Windows with nothing more than a working OCaml compiler

Regarding portability, this release introduces configurator [2], a smallbut convenient package that helps finding out available systemfeatures. We started using it systematically in packages where we haveC stubs.

Better compatibility with multiple versions of OCaml

Since the switch to ppx our packages used to be stuck with one versionof the compiler. This was due to our heavy use of ppx rewriters and tothe fact that each version of OCaml tends to break code using thecompiler libraries.

In this release all our ppx code is based on theocaml-migrate-parsetree [1] library. As a result our packages nowbuild with OCaml from 4.03 to 4.06.

There are still some issues related to ppx versioning that will needone more round of refactoring to be solved.

New lighter, portable and guilt free standard library

This new release introduces Base [1], a wholesale replacement of thestandard library distributed with OCaml. It aims to provide betterstandards and conventions, while only offering fully portablefeatures.

Base is still under active development, and work on the API is not yetfinished. However, it was initially developed mostly by reorganisingcode from Core_kernel and it is the basis for all the Jane Street codebase, meaning that it is carefully reviewed and heavily tested. Using itin old and new code is a breeze.

Note that to be fully portable Base doesn't expose IOoperations. These are provided by the companion Stdio library [2].

Shexp was initially intended as a S-expression based shell to replacebash in Makefile based build for Jane Street packages. However, thisproject was superseded by Jbuilder. What's left is a nice processmonad allowing one to construct complex and typed process pipelines.Shexp is still in its infancy but has already been successfully usedfor various purposes.

Could you elaborate on the relationship between the new Base and the existing Core libraries? Is Base meant to replace Core in the near future? If so, does that mean that we can expect Core to be deprecated initially, and will have to port existing code using Core to Base?

Base: minimal stdlib replacement. Portable and lightweight and intended to be highly stable.

Core_kernel: Extension of Base. More full featured, with more code and dependencies, and APIs that evolve more quickly. Portable, and works on Javascript.

Core: Core_kernel extended with UNIX APIs.

None of these are going away. The most disruptive thing that we've discussed is adjusting the boundaries between Core_kernel and Core, e.g., Core may become the portable one, with unix dependencies moved out to a separate package. That said, such a shuffle is not coming soon.

I upgraded my local install to v0.9.1 of the Core libraries, but when trying to recompile a project against it, I get the error: Cannot locate deriver sexp. The configure script for that project (generated via oasis, I think) seems to locate px_tools and ppx_sexp_conv just fine.