Announcing the release of Alice v0.5.0 ! This change introduces parallel builds of packages. Install Alice v0.5.0 On all platforms that support opam , install Alice v0.5.0 with: opam update && opam install alice.0.5.0 On Windows, Alice v0.5.0 can be installed with WinGet : winget install OCaml.Alice --version 0.5.0 On macOS and Linux, the latest version of Alice can be installed with Homebrew :…
In my previous post I wrote about adding support for parallel builds to Alice using concurrency primitives from the Eio library. Eio doesn’t support spawning processes on Windows, and depending on Eio meant that I could no longer build Alice on Windows using Dune package management, which complicated development and CI workflows. It’s important to me that Windows users aren’t treated as…
I added support for parallel builds to the Alice build system. Alice runs external commands to build OCaml projects. While computing the build plan it runs the OCaml compiler to determine dependencies between object files, and then of course while executing the build plan it runs the compiler to compile OCaml code. Many invocations of the compiler are independent from one another presenting an…
Announcing the release of Alice v0.4.0 ! The main change in this version is switching the manifest format from TOML to KDL . Read this page for the reasoning behind this change. Migrating from earlier versions This example demonstrates how all the features of package manifests are represented in the old TOML format and the new KDL format. Alice.toml : [package] name = "foo" version = "0.1.0"…
Starting with the upcoming release of Alice v0.4.0, package manifests will change from TOML to KDL . The main reason is to avoid issues with nesting tables. Manifests are currently very simple but as Alice gains more features the manifest format will need to be extended, and I don’t want the syntactic difficulty of nesting tables in TOML to get in the way. There’s already an example of this in the…
Announcing the release of Alice v0.3.0 ! This release starts following the XDG Base Directory Specification . This means there is no longer a ~/.alice directory. Tools are installed to ~/.local/share/alice/current/bin , and Alice’s executable is installed to ~/.local/bin if using the install script. This is a breaking change. Migrating from earlier versions…
Announcing the release of Alice v0.2.0 ! This release adds support for LSP by generating .cmt files in the build directory and a .merlin file at the project’s root, as well as adding an additional development tool dot-merlin-reader which is necessary for using ocamllsp in non-Dune projects. There’s a new LSP page on this site with instructions for setting up your environment and editor to use LSP…
Announcing the release of Alice v0.1.3 . This is a patch release though it doesn’t make any visible changes. The purpose of the release is to add a patch which replaces the OCaml compiler version number in all lockfiles with a template placeholder. This makes it possible to change the version of the compiler that Dune expects to see in the environment when building the project. This is simplifies…
People are talking about Alice online. Here ’s my announcement post on the OCaml discuss forum where the project received a fair amount of praise as well as some helpful feedback. The project has almost 100 Github stars (98 at the time of writing). I’d been checking the number of stars each day because one of Homebrew’s requirements for acceptable packages in homebrew-core is “notability”, which…
Announcing the release of Alice v0.1.2. This is a patch release though it doesn’t make any visible changes. The purpose of the release is to add a zip archive containing the Windows executable . This is intended to make it possible to release Alice on the WinGet package manager. Release Notes Added Release a zip archive on windows with just alice.exe Pre-compiled binaries of Alice v0.1.2 can be…
Alice organizes code into packages. All the code for a package goes in OCaml source files in the package’s src directory. The presence of a main.ml file indicates that the package is executable , and will be linked into a program with the same name as the package. The presence of a lib.ml file indicates that the package is a library , and the contents of the lib.ml file (or lib.mli file if…
Announcing the release of Alice v0.1.1. This is a patch release with several minor fixes. It also introduces a “hermetic source archive” (the alice-0.1.1-hermetic-source.tar.gz file on the release page ) which can be built with Dune package management without needing to install the OCaml toolchain with Alice. The lock directory checked into the main branch of Alice specifies the compiler be…
Announcing the release of Alice v0.1.0. This is the first official release of Alice, so in lieu of a changelog, here’s a summary of the capabilities of Alice thus far: Multi-file packages with dependencies specified within the local filesystem can be built and incrementally rebuilt. Dependency and build graphs can be visualized with graphviz. The OCaml toolchain and some development tools can be…
Alice is my experimental work-in-progress build system and package manager for OCaml. To help users get started writing OCaml as smoothly as possible, Alice provides a mechanism for installing the pre-built versions of the OCaml compiler and other tools. This post is about using this feature of Alice to simplify setting up an OCaml environment for developing a project with Dune Package Management…
Alice is an experimental OCaml build system and package manager. I’m starting this blog to document progress on its development. Here’s a quick tour of Alice’s features at the time of writing. Installing OCaml tools One point of difference between OCaml’s packaging ecosystem and that of most other languages is that the OCaml compiler itself is considered to be a package. This avoids the need for…
This article was originally posted to my personal website . Alice is my toy OCaml build system project where I ask “What if Cargo but for OCaml?”. My main priority when designing Alice is accessibility but perhaps a more suitable term would be inclusivity as my goal is for the tool to be usable by as many people as possible. Alice is still in its infancy and is currently used by nobody but if the…