Saturn 1.0: Data structures for OCaml Multicore
Announcing the 1.0 release of Saturn, a library of efficient, tested, concurrent data structures ready to use with OCaml 5.
Communications Officer
Discover our latest posts on #devtools and explore related insights and stories.
Saturn 1.0: Data structures for OCaml Multicore
Announcing the 1.0 release of Saturn, a library of efficient, tested, concurrent data structures ready to use with OCaml 5.
Communications Officer
Irmin on MirageOS: Under-the-Hood With Notafs
Features of the Notafs filesystem for MirageOS which, designed to be used on satellites with SpaceOS, lets users use Irmin as a filesystem for MirageOS.
Principal Software Engineer
Irmin on MirageOS: Introducing the Notafs File System
Announcing a new filesystem for MirageOS projects, designed to be used on satellites with SpaceOS, that also lets developers use Irmin with MirageOS!
Principal Software Engineer
Advanced Code Navigation in OCaml-LSP
Tweaking the Language Server Protocol to perform code navigation in unintended but useful ways for OCaml.
Software Engineer
Dune Developer Preview: Installing The OCaml Compiler With Dune Package Management
Dune's Package Management system now supports direct installation of OCaml compilers, eliminating the need for external tools. This update improves efficiency, as compilers can be shared across projects, reducing build times. The enhancement makes Dune Package Management more robust and ready for broader use.
Technical Writer
Dune Package Management: Revolutionising OCaml Development
At Tarides, we’ve been working on an initiative to improve the OCaml development experience: Dune Package Management. As outlined in the Platform Roadmap, which was created through community collaboration, the aim is to unify all OCaml development workflows under a single, streamlined tool. At Tar…
Technical Writer
Introducing the Dune Developer Preview: A New Era for OCaml Development
The Dune team is excited to announce the arrival of Dune Developer Preview, an experimental nightly release of Dune created to test improvements, including the new package management feature. This is a major milestone for OCaml development! We've been working hard improving Dune, and we're excited t…
Technical Writer
Introducing Dune: The Essential Build System for OCaml Developers
One of the first tools you'll encounter when adopting OCaml is Dune, OCaml's official build system. Understanding what Dune is and how it serves you is key to crafting everything from a small project to maintaining large-scale codebases. So let's dive in! Learn how Dune makes development easier and …
Technical Writer
Introducing the odoc
Cheatsheet: Your Handy Guide to OCaml Documentation
For developers diving into the OCaml ecosystem, one of the essential tools you'll encounter is odoc. Whether you're a seasoned OCaml programmer or just starting out, understanding how to generate and navigate documentation efficiently is crucial. This is where odoc comes in, OCaml's official documen…
Technical Writer
Easy Debugging for OCaml With LLDB
If you’re just getting started with OCaml, you may be wondering how to effectively debug your code when things go wrong. Fortunately, OCaml's ecosystem has evolved, offering modern tools that make debugging a more approachable task. Tarides engineer Tim McGilchrist recently wrote a blog post that …
Technical Writer
Getting Specific: Announcing the Gospel and Ortac Projects
Part of the benefit of open-source development is the opportunity to collaborate on projects across traditional organisational boundaries, such as academia and industry. Tarides is part of a larger effort to develop a behavioural specification language and associated tooling for OCaml. The project c…
Senior Software Engineer
Communications Officer
Project-Wide Occurrences: A New Navigation Feature for OCaml 5.2 Users
With the release of merlin-lib 5.1-502 and associated ocaml-lsp-server, we brought a new, exciting feature to OCaml's editor tooling: project-wide occurrences. The traditional "occurrences" query in Merlin modes, named "Find All References" in LSP-based mode, was used to only return results in the a…
Principal Software Engineer
Creating the SyntaxDocumentation Command - Part 3: VSCode Platform Extension
In the final installment of our series on the SyntaxDocumentation command, we delve into its integration within the OCaml VSCode Platform extension. Building on our previous discussions about Merlin and OCaml LSP, this article explores how to make SyntaxDocumentation an opt-in feature in the popular…
Software Engineer
OCaml Compiler Manual HTML Generation
In order to avoid long, confusing URLs on the OCaml Manual pages, we set out to create a solution that shortens these URLs, including section references, and contains the specific version. The result improves readability and user experience. This article outlines the motivation behind these changes …
Senior Software Engineer
Introducing Olly: Providing Observability Tools for OCaml 5
It might be tempting to think that we can write code that works perfectly the first time around, but in reality optimisation and troubleshooting forms a big part of programming. However, there are more and less productive (and frustrating!) ways of problem solving. Having the right tools to guide yo…
Communications Officer
Creating the SyntaxDocumentation Command - Part 2: OCaml LSP
In the first part of this series, Creating the SyntaxDocumentation Command - Part 1: Merlin, we explored how to create a new command in Merlin, particularly the SyntaxDocumentation command. In this continuation, we will be looking at the amazing OCaml LSP project and how we have integrated our Synta…
Software Engineer
Effective ML Through Merlin's Destruct Command
The Merlin server and OCaml LSP server, two closely related OCaml language servers, enhance productivity with features like autocompletion and type inference. Their lesser known, yet highly useful destruct command simplifies the use of pattern matching by generating exhaustive match statements, as w…
Senior Software Engineer
Creating the SyntaxDocumentation Command - Part 1: Merlin
OCaml development has never been more enchanting, thanks to Merlin – the wizard of the editor realm. The magic of Merlin is something that makes programming in OCaml a very nice experience. By Merlin, I don't mean the old gray-haired, staff-bearing magic guy. I'm talking about the editor service t…
Software Engineer
Two Major Improvements in odoc: Introducing Search Engine Integration
In the world of OCaml documentation generation, there have been two significant enhancements that promise to make navigating OCaml documentation easier and more efficient. These improvements are divided into two distinct but interrelated components: changes in odoc itself and improvements in a searc…
Senior Software Engineer
Technical Writer
Are Your Programs Doing What You Think They're Doing? Introducing Monitoring Tools for Multicore OCaml
As programs grow in size and complexity, they become more challenging to optimise. When the cause of a particular performance issue can theoretically be attributed to multiple sources, developers need concrete data to drive their decision making and avoid time-consuming guesswork. As you can imagine…
Communications Officer
Meet odoc, OCaml's Documentation Generator
Effective documentation is a cornerstone of software development. It helps developers understand how to use a language, its libraries, and its tooling, which leads to more robust and maintainable code. When it comes to OCaml, odoc is the wizard behind the scenes, ensuring developers not only underst…
Technical Writer
Porting OBuilder to FreeBSD
OBuilder is a tool for performing arbitrary, reproduceable builds of OCaml-related software within a sandboxed environment. It is used by the CI team at Tarides to provide OCaml-based Continuous Integration (CI) for projects like opam-repo-ci, ocaml-ci, and multicoretest-ci. Originally written for L…
Principal Software Engineer
Principal Software Engineer
OBuilder on macOS
The CI team at Tarides provides critical infrastucture to support the OCaml community. At the heart of that infrastructure is providing a cluster of machines for running jobs. This blog post details how we improved our support for macOS and moved closer to our goal of supporting all Tier1 OCaml plat…
System Administrator
Sandmark: Boosting Multicore Projects with Performance Benchmarking
Introduction In the realm of software development, continuous improvement is paramount. When it comes to Multicore projects, the need for thorough benchmarking becomes even more critical. This is where Sandmark comes into play. Sandmark, developed for the OCaml programming language, has proven to be…
Senior Software Engineer
OCaml-CI Renovated
OCaml-CI started with the goal of making a better continuous build system for OCaml projects. When we began in 2019, the goals were clear: it should provide a zero-configuration experience for OCaml projects using opam and Dune, and it should use an incremental architecture to avoid expensive recomp…
Principal Software Engineer
Principal Software Engineer
Advanced Merlin Features: Destruct and Construct
Merlin is one of the most important tools for OCaml users, but a lot of its advanced feature often remain unknown. For OCaml newcomers who might not know, Merlin is the server software that provides intelligence to code editors when working on OCaml documents. It allows one to easily navigate the co…
Principal Software Engineer
Hillingar: MirageOS Unikernels on NixOS
NixOS allows reproducible deployments of systems by managing configuration declaratively. MirageOS is a unikernel creation framework that creates targeted operating systems for high-level applications that can run on a hypervisor. By building MirageOS unikernels with Nix, we can enable reproducible …
Software Engineer
Up-to-Date Online Documentation
Into the Fire The OCaml ecosystem relies on various resources and infrastructure such as ocaml.org, OCaml Docker images, opam-repo-ci, that are built and deployed using OCurrent. OCurrent is a library to express workflows and keep things up to date. As many of these projects are created using the sa…
Senior Software Engineer
OCaml's Platform Installer Alpha Release
Yesterday we announced the OCaml 5 beta release, and today we're excited to introduce the OCaml Platform Installer! The OCaml Platform is the recommended toolchain when working with OCaml. This new installer enables programmers to quickly set up the OCaml developer environment, so they don't need to…
Technical Writer
Faster Incremental Builds with Dune 3
In February 2022, we released Dune 3.0. This updated version is the result of considerable development work over the previous six months. Dune 3.0 contains many new features, one of which is “watch mode,” an exciting new feature explained below. As a build system, Dune’s main goal is to build …
Principal Software Engineer
The Magic of Merlin
Tarides provides support and development services for OCaml tools, packages, and libraries for our commercial partners and for the benefit of the entire OCaml community. We focus on groundbreaking innovation, feature development, and crucial maintenance of OCaml-based projects. One of these projects…
Technical Writer
Benchmarking OCaml projects with current-bench
Regular CI systems are optimised for workloads that do not require stable performance over time. This makes them unsuitable for running performance benchmarks. current-bench provides a predictable environment for performance benchmarks and a UI for analysing results over time. Similar to a CI system…
Software Engineer
Recent and upcoming changes to Merlin
Merlin is a language server for the OCaml programming language; that is, a daemon that connects to your favourite text editor and provides the usual services of an IDE: instant feedback on warnings and errors, autocompletion, "type of the code under the cursor", "go to definition", etc. As we (Fréd…
Principal Software Engineer
Fuzzing OCamlFormat with AFL and Crowbar
AFL (and fuzzing in general) is often used to find bugs in low-level code like parsers, but it also works very well to find bugs in high level code, provided the right ingredients. We applied this technique to feed random programs to OCamlFormat and found many formatting bugs. OCamlFormat is a tool …
Principal Software Engineer
An introduction to fuzzing OCaml with AFL, Crowbar and Bun
American Fuzzy Lop or AFL is a fuzzer: a program that tries to find bugs in other programs by sending them various auto-generated inputs. This article covers the basics of AFL and shows an example of fuzzing a parser written in OCaml. It also introduces two extensions: the Crowbar library which can …
Senior Software Engineer
Release of OCamlFormat 0.10
We are pleased to announce the release of OCamlFormat 0.10 (available on opam). There have been numerous changes since the last release, so here is a comprehensive list of the new features and breaking changes to help the transition from OCamlFormat 0.9. ocamlformat-0.10 now works on the 4.08 AST, a…
Senior Software Engineer
An introduction to OCaml PPX ecosystem
These last few months, I spent some time writing new OCaml PPX rewriters or contributing to existing ones. It's a really fun experience. Toying around with the AST taught me a lot about a language I thought I knew really well. Turns out I actually had no idea what I was doing all these years. All jo…
Senior Software Engineer
Dune 1.9.0
Tarides is pleased to have contributed to the dune 1.9.0 release which introduces the concept of library variants. Thanks to this update, unikernels builds are becoming easier and faster in the MirageOS universe! This also opens the door for a better cross-compilation story, which will ease the addi…
Senior Software Engineer
Release of OCamlFormat 0.9
We are pleased to announce the release of OCamlFormat (available on opam). There have been numerous changes since the last release, so here is a comprehensive list of the new features and breaking changes to help the transition from OCamlFormat 0.8. Additional dependencies OCamlFormat now requires: …
Senior Software Engineer
How configurator reads C constants
Dune comes with a library to query OS-specific information, called configurator. It is able to evaluate C expressions and turn them into OCaml value. Surprisingly, it even works when compiling for a different architecture. How can it do that? …
Principal Software Engineer
OCamlFormat 0.8
We are proud to announce the release of OCamlFormat 0.8 (available on opam). To ease the transition from the previous 0.7 release here are some highlights of the new features of this release. The full changelog is available on the project repository. Precedence of options In the previous version you…
Senior Software Engineer
Dune 1.2.0
After a tiny but important patch release as 1.1.1, the dune team is thrilled to announce the release of dune 1.2.0! Here are some highlights of the new features in that version. The full list of changes can be found in the dune repository. Watch mode When developing, it is common to edit a file, run…
Principal Software Engineer