# How we accidentally built a better build system for OCaml

DevFeed: [How we accidentally built a better build system for OCaml](<https://devfeed.tech/articles/how-we-accidentally-built-a-better-build-system-for-ocaml-20179.md>)

Original publisher: [Read original article](<https://blog.janestreet.com/how-we-accidentally-built-a-better-build-system-for-ocaml-index/>)

Author: Andrey Mokhov

Published: 2025-01-24T00:00:00Z

Content type: article

Language: en

Sources: [Jane Street](<https://devfeed.tech/sources/jane-street.md>)

Topics: [OCaml](<https://devfeed.tech/topics/ocaml.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>)

Tags: [build-system](<https://devfeed.tech/tags/build-system.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [ocaml](<https://devfeed.tech/tags/ocaml.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [portable](<https://devfeed.tech/tags/portable.md>), [speed](<https://devfeed.tech/tags/speed.md>)

## AI overview

Jane Street describes how dissatisfaction with OMake led to Jenga, then to the simpler cross-platform Jbuilder tool. Although Jbuilder was initially intended as a compatibility shim, its speed, portability, and hackability made it popular and led to its evolution into Dune.

## Source excerpt

A "build system" is one of the most important tools in a developer's toolbox. Roughly, it figures out how to create runnable programs from a bunch of different source files by calling out to the compiler, setting up and executing test suites, and so on. Because you interact with it daily, above all it has to be fast - but it also has to be flexible.