Are you interested in using a functional programming language like OCaml for web development? This post will give you an overview of a great resource you might want to consider (if you're not using it already!). Ocsigen is a collection of projects that provide a complete framework for the OCaml developer looking to create websites and mobile apps. It’s got you covered, from simple server-side websites to client-side programs and complex client-server applications. The Start of Ocsigen So, h...| Tarides RSS Feed
We are thrilled to announce that our sister company, Parsimoni, is part of Techstars’ autumn 2025 space accelerator programme in Los Angeles! They are in great company, with 4 other very synergistic space startups ANT61, Azora, CISGAM, and Translunar Exports and Servicing Incorporated. Kick off was on the 8th of September. For the next 3 months, Parsimoni will benefit from Techstars’ mentorship, network, and investment to drive their mission of making satellite-based resources accessible ...| Tarides RSS Feed
You may have read our recent post discussing our involvement in the Gospel Project. In today's follow-up post, we will focus on Ortac, a tool we have been developing at Tarides as part of the Gospel Project. What is Ortac? Ortac aims to give OCaml programmers easy access to dynamic formal verification, also known as specification-driven testing. At its core, it translates computable Gospel terms into equivalent OCaml expressions. Different Ortac modes can then use these translations to genera...| Tarides RSS Feed
Refactoring features have contributed to the popularity of editors like IntelliJ, as well as certain programming languages whose editor support offers interactive mechanisms to manage code — Gleam being an excellent example. Even though OCaml has some features related to refactoring (such as renaming occurrences, substituting typed holes with expressions, and case analysis for pattern matching), the goal of my internship was to kickstart work on a robust set of features to enable the smooth...| Tarides RSS Feed
Tarides builds secure, high-performance software systems using OCaml and open-source technology. They offer development, consulting, and training services.| tarides.com
Timéo shares his project integrating new refactoring features into Merlin, improving user experience with a new command.| tarides.com
Are you looking to learn something new about OCaml? Or do you want to contribute to the community in a new way? OCaml.org hosts the OCaml Cookbook, a collection of projects that users can try out, as well as contribute new ones for others to enjoy. This post will introduce you to the concept, show you how to add new recipes, and hopefully leave you inspired to check it out for yourself! Why do We Care About OCaml.org? Tarides supports the maintenance and development of OCaml.org, OCaml’s ho...| Tarides RSS Feed
Jane Street is a well-known OCaml powerhouse. They have a reputation for expertise and a long history of supporting the open-source community. Jane Street have been developing experimental features on a branch of OCaml, using them in production internally, and preparing them to be shared with the rest of the ecosystem. These extensions are now bundled and distributed together under the name OxCaml. We are always excited about projects that bring new features to OCaml and improve it for its us...| Tarides RSS Feed
Each year, Tarides has the pleasure of hosting several interns who work across different areas within the company. This year, we welcomed Kashish, who joined us to work on enhancing the visualisations for OCaml's memory profiling (you can check out our blog post about the return of Statmemprof for some more context). This post will explore Kashish's project and the steps we took to improve the visualisations available with OCaml's memory profiling tools. Background: Improving the OCaml 5 Memo...| Tarides RSS Feed
When considering which projects to focus on, our highest priority tends to be those that restore support for tools users rely on or introduce new tools that address a compelling problem. One of those tools is the LLDB debugger, which needed some attention after the OCaml 5 update. LLDB is the primary supported debugger for macOS and comes included with Xcode as part of Apple's developer tools. It supports both the ARM64 and AMD64 platforms, which OCaml also supports. Ensuring a smooth macOS e...| Tarides RSS Feed
We have recently posted about the process of enabling Dune to build as many packages as possible. Since then, we've been hard at work, going through the failures and fixing issues as we go along. In today's post, I'll give you an overview of what we have achieved so far, as well as an idea of what is yet to come. What Has Improved Since Last Time If you check our tracking issue, you'll notice there are significantly more items there than there were before. We've made enhancements in how dune ...| Tarides RSS Feed
Tarides collaborates with several partners to implement new cutting-edge technologies based on our experience with OCaml. One of our special interest areas is the space sector and improving the security and versatility of satellite software. This is the driving force behind the SpaceOS and ORCHIDE projects. With funding from BPIFrance, a French public investment bank striving to detect and foster the innovative projects of the future, we are proud to announce our part in an exciting new ventu...| Tarides RSS Feed
Should you use OCaml for web projects? Web development trends are a hotly debated topic in the computer programming world and the familiar faces of languages and frameworks are unlikely to change: hypertext markup language or HTML, CSS, and JavaScript are the core technologies (with server-side technologies such as PHP, Python, etc.), and React, Vue, Svelte, and Angular are proving to be as popular as ever. AI and machine learning might be the biggest foreseeable changes to the industry, driv...| Tarides RSS Feed
BOB Konferenz is a 10-year-old conference whose tagline is: "The software development conference for everyone dissatisfied with the status quo"! Indeed, BOB is a conference that focusses on a variety of subjects that strongly converge with the interests of Tarides (and the OCaml world in general). It aims to cover topics such as functional programming, "fancy types" (dependent types, gradual typing, linear types, ...), formal methods for correctness and robustness, abstractions for concurrenc...| Tarides RSS Feed
After the release of OCaml 5, restoring any features that were left out of the initial release has been a high priority for our teams and collaborators. We call this effort our 'feature parity' project, and compaction is one example of a feature being brought back to OCaml 5 under its banner. In this post, we look at another returning property, MSVC support, and the steps along the path to implementation. If you want to skip straight to the code, check out the #12954 pull request (and the doz...| Tarides RSS Feed
Since we published The Dune Developer Preview a lot of things have improved on the package management front. While the developer preview has demonstrated how Dune can manage dependencies in a unified workflow, we have been working on making it practical for more projects to adopt Dune to handle their package dependencies. Our goal is to slowly move from a developer preview to a mature feature that the general public can use and rely on. What do we mean by maturation? The goal is fuzzy (as wit...| Tarides RSS Feed
OCaml is in space! With its impressive performance and security guarantees, OCaml is a great choice for the many interconnected devices that power our world. Satellites are not only crucial to the functioning of these devices, but the new generation of satellites are beginning to function like Cloud servers, where one device hosts more than one software and performs more than one service. The natural next step, considering the growing need for agile multi-purpose satellites and the suitabilit...| Tarides RSS Feed
On Thursday, January 30, 2025, I spontaneously decided to join three of my colleagues, Jules Aguillon, Xavier Van de Woestyne, and Paul-Elliot Angles d'Auriac, in attending FOSDEM 2025. When I realised that FOSDEM was still taking proposals for Birds-of-a-Feather (BOF) sessions, I submitted a proposal to organise a Functional Languages BOF session around the idea of gathering the Functional Programming community to showcase projects and elegant solutions to real world programming problems. I ...| Tarides RSS Feed
Among the big changes that came with OCaml 5, concurrency via effect handlers was introduced alongside the I/O library Eio, letting users take advantage of effects to write more efficient concurrent programs. In an exciting new project, we are transitioning one of the biggest OCaml open source projects, Ocsigen, from Lwt concurrency to concurrency using effects. The most exciting part of this project is that we will develop tools to automate parts of the transition and document how we achieve...| Tarides RSS Feed
Welcome to part two of our feature parity series! In it, we present returning features that were originally lost when OCaml gained multicore support. The addition of multiple domains means that the underpinning design decisions behind certain features have had to change significantly, and work is ongoing to adapt them and return them to OCaml 5. One of these features is memory profiling, which, after much theoretical consideration, has been successfully adapted to OCaml 5. Memory profiling is...| Tarides RSS Feed
Happy New Year, OCamlers! 🎉 As we usher in another year, we have something special to celebrate — a New Year's gift that promises to make your coding experience even better! We have been working on exciting new features in VSCode designed to boost productivity, streamline workflows, and make your development journey smoother and more enjoyable. For users of Emacs, we have a brand new emacs mode for interacting with the lsp server that will make your coding experience as enjoyable as it s...| Tarides RSS Feed
The first feature-complete release of Wasm_of_OCaml (also known as WSOO) is out! A low-level virtual machine and portable compilation target, Wasm is popular with many developers thanks to its flexibility and wide compatibility. We introduced you to Wasm and the benefits of bringing support for it to OCaml in our blog post on it in 2023. Since then, Wasm_of_ocaml has undergone new developments, so let’s take a look at what’s new and give you an overview of the release. What is Wasm_of_oca...| Tarides RSS Feed
OCaml 5 brought significant changes to fundamental parts of the language – notably concurrency using effects and multithreaded parallelism. This has caused some features and tools compatible with OCaml 4.14 to be incompatible with the new update, and several projects at Tarides aim to restore compatibility where that is the case. In today’s post, we will focus on the efforts toward creating a MirageOS port for OCaml 5. The main benefit of making MirageOS compatible with OCaml 5 is to make...| Tarides RSS Feed
At Tarides, we believe in making OCaml a mainstream programming language by improving its tooling and integration with other successful ecosystems. In 2024, we focused our efforts on initiatives to advance this vision by addressing key technical challenges and engaging with the community to build a stronger foundation for OCaml’s growth. This report details our work, the rationale behind our choices, and the impact achieved. We are very interested in getting your feedback: please get in tou...| Tarides RSS Feed
Bringing new features to OCaml is not a trivial procedure, and any new contribution is subject to rigorous testing and inspection. The introduction of Multicore OCaml added a whole new dimension of complexity to the process, and this post takes you behind-the-scenes of a project that sprang from troubleshooting the restoration of MSVC to OCaml 5. Motivation OCaml 5.3 is released and comes with a restored MSVC (Microsoft Visual C/C++ compiler) port. It had been removed with the introduction of...| Tarides RSS Feed
We have a brand new OCaml release on our hands! 5.3 comes packed with features, fixes, and optimisations, including the return of some ‘familiar faces’. Support for the MSVC port is returning, as is statistical memory profiling now compatible with multicore projects. This post highlights new and restored features, notable changes and user experience improvements, plus some bug fixes. There is no way that I can cover everything in this update, so I recommend that you check out the Changes ...| Tarides RSS Feed
In a previous post, we discussed how we have developed property-based tests (PBTs) to stress test the new runtime system in OCaml 5, and gave concrete examples of such tests. In this second part, we discuss some of the challenges and the lessons learned from that effort. Testing APIs With Hidden or Uncontrolled State In part 1, we saw how STM and Lin were useful to test stateful module interfaces, like Float.Array. The OCaml standard library and runtime however also expose modules that are st...| Tarides RSS Feed
OCaml is a valuable and powerful tool, combining performance, security, and reliability. Joining the ecosystem, community, and learning the language can help you make the most of its capabilities if you're not already familiar with it. But how can we make learning OCaml easier? As with other functional programming languages, its visibility can be limited by factors such as your educational and professional environment, or the programmers you follow. Nevertheless, the world of software develop...| Tarides RSS Feed
The first version of the Saturn library is out! Saturn is a new OCaml 5 library available on opam, which offers a collection of well-tested, benchmarked, and efficient concurrent data structures ready to be used with OCaml Multicore. Access to concurrent-safe data structures saves developers from the time-consuming and often error-prone process of designing their own. This post will give you an overview of the library, its main features, and some use cases. The team encourages you to try the ...| Tarides RSS Feed
In part one of our series on Notafs, we outlined the motivations and challenges behind creating a file system for MirageOS tailored to the SpaceOS use case of storing large files on disk in satellites. Furthermore, Notafs can be used to run the irmin-pack backend of Irmin, which, in turn, provides users with an amazing file system for their MirageOS projects. In this post, we delve into more detail concerning the design choices behind Notafs and provide some benchmarks and visualisations to g...| Tarides RSS Feed
We are pleased to announce one (or two) new filesystems for MirageOS! The motivation behind creating them is an exciting new use case requiring the system to store data on disk. MirageOS allows you to compile OCaml applications into unikernels. By selecting the operating system functionalities required, a unikernel can be constructed for your application using only the necessary components. This process reduces the attack surface and increases the hardware efficiency of your final application...| Tarides RSS Feed
1. Introduction The Language Server Protocol (LSP) defines a standardised protocol that facilitates communication between an editor (client) and a language server. It is developed by Microsoft and was designed to simplify the process of adding language support to different code editors by abstracting away the most common implementation details of the programming language. OCaml-LSP, which relies on Merlin's amazing engine, is an implementation of the LSP protocol for the OCaml programming lan...| Tarides RSS Feed
FUN OCaml describes itself as a "two day open-source hacking event dedicated to OCaml enthusiasts and developers around the globe". This past September, 70+ developers descended upon a coworking space in Berlin, Germany, to learn, socialise, and hack together. Some had travelled from as far away as Brazil and the United States to join the event in person, and some combined it with React Alicante and ICFP for a summer filled with functional programming. As a key sponsor - alongside Ahrefs and ...| Tarides RSS Feed
We are steadfast OCaml advocates, providing core maintenance, hosting community events, and bringing groundbreaking new features to the language. We choose OCaml because it is a programming language with a unique combination of strengths, combining an expressive syntax and strong type system with memory safety and the power of multicore programming. OCaml’s success is the combined result of the innovative efforts, passion, and dedication of the people who contribute to its development. The ...| Tarides RSS Feed
The world of cryptocurrency and internet transactions is constantly evolving, and the changing landscape of technologies that support this growing industry often means that legislation struggles to keep up, allowing cybercriminals to exploit loopholes and take advantage of the lack of oversight. Concerted effort across the sector is necessary to address this vulnerability. To that end, we are thrilled to announce the ARGOS project, which stands for Analyse et Représentation des Graphes des O...| Tarides RSS Feed
It has been a while since the biggest functional programming event of the year: ICFP 2024 in Milan, Italy. The annual conference, sponsored by ACMSIGPLAN, combines world-class talks with workshops on some of the biggest functional programming languages, including ML, Haskell, OCaml, Scheme and Erlang. Tarides are co-sponsors of ICFP, and several of our team members attend each year. This year, we had six talks given by Tarides team members and many of our colleagues chose to go as participant...| Tarides RSS Feed
We’re excited to share a significant update to Dune's Package Management system, particularly one that will be of great interest to OCaml developers. For those who have been exploring Dune’s experimental package management capabilities over the past six months, you’ll be pleased to know that we've recently merged a feature allowing OCaml compiler packages to be installed directly through Dune. Until now, Dune’s Package Management has supported the installation of various packages from...| Tarides RSS Feed
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 Tarides, we aim to make Dune the recommended frontend for the OCaml Platform, offering new users a seamless developer experience. The motivation behind Dune Package Management is clear. For years, the...| Tarides RSS Feed
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 to introduce this new way to ease OCaml workflows. If you are an OCaml developer, this is the time to explore the future of package management and development yourself. Why the Wait? Our progress ha...| Tarides RSS Feed
Training your teams has proven benefits, enhancing the efficiency and quality of work, and equipping members with the skills they need to tackle new challenges. Specialist training empowers them to use new techniques, leverage advanced technologies, and solve more complex problems. At Tarides, we are launching a new initiative to share our expertise and industry experience in a series of customisable, flexible training courses designed to unlock new possibilities for your teams. How Tarides C...| Tarides RSS Feed
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 serves as a gateway to the greater OCaml Platform. For a quick introduction to OCaml, check out the tutorials on OCaml.org. What is Dune? Dune is much more than a simple build tool. It automaticall...| Tarides RSS Feed
We have had the pleasure of hosting several interns in the compiler team this past year. Their projects have tackled varied and challenging tasks touching on different aspects of compiler development, ranging from modularising the observability tool Olly to creating eBPF-based kernel-side performance monitoring, improving polyglot package management, and lifting limitations of the Ortac tool that helps developers test Gospel specifications for OCaml. Let's take a look at what the interns have...| Tarides RSS Feed
Are you curious about Eio but not sure what to expect? Eio is an effects-based direct-style concurrency library for OCaml 5. I recently spoke with Simon Grondin from Asemio about his personal experience using the I/O library Eio. He was kind enough to share the good and the bad and give me insight into how the library has worked for his projects. If you want to know what programming with Eio is like from another user's perspective, this interview is for you. Let's explore what Simon had to sa...| Tarides RSS Feed
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 documentation generator. To make your experience with odoc even smoother, the odoc team has created the odoc Cheatsheet. What is odoc? odoc is a powerful documentation generator specifically designed for ...| Tarides RSS Feed
Compaction is a feature that rearranges OCaml values in memory to free up space, which can then be returned to the operating system. In the OCaml 5.2 release, the technique returns to the OCaml Garbage Collector for the first time since its removal in the 5.0 multicore update. This is part one of our feature parity series highlighting features returning to OCaml in an effort to restore feature parity with OCaml 4.14. When OCaml gained multicore support (that is, the ability to execute on mult...| Tarides RSS Feed
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 explores how to debug OCaml programs using LLDB on macOS. Developers familiar with languages like C, C++, or Rust may already have experience using LLDB, as it is a common choice on Linux or FreeBS...| Tarides RSS Feed
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 creates an easy-to-use foundation for formal specifications, allowing users to include them in generated documentation and perform automated testing and verification. This important work is funded i...| Tarides RSS Feed
Feeling fashionable? Milan is calling! ICFP 2024 will be held in the Italian fashion capital from 2-7 September, and there is something there for everyone to enjoy. The ACM SIGPLAN International Conference on Functional Programming is a yearly highlight with various keynotes, tutorials, and tracks to discover. Can't wait for September 2nd? Check out the talks we're bringing to the conference this year and get a taste of what's to come! Tarides Talks We are excited about all the talks at the O...| Tarides RSS Feed
With the release of merlin-lib5.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 active buffer. This is no longer the case! Occurrences queries will now return every usage of the selected identifier across all of the project's source files. There are some limitations that come wi...| Tarides RSS Feed
Parallel programming opens up brand-new possibilities. Using multiple cores means that users can benefit from powerful OCaml features (like formal proofs and high security) while enjoying greater performance, enabling them to improve their services or projects. However, introducing such a significant change to the OCaml ecosystem would not be practical without providing tools that help users ensure memory safety in parallel programming. This is where multicore tests come in, as does ThreadSan...| Tarides RSS Feed
A seismic event in the IT world, everyone is talking about the CrowdStrike update that caused global chaos earlier this month. There are many great articles and blog posts dissecting the event and suggesting ways to avoid a repeat. Rather than join our voice to the chorus and explain how a small change could have avoided the entire palaver, we will approach the topic more broadly. While it is helpful to understand what happened with CrowdStrike, the next major outage will likely arise from a ...| Tarides RSS Feed
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 VSCode editor. 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 ...| Tarides RSS Feed
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 and how we implemented them. Challenge The OCaml HTML manuals have URL references such as https://v2.ocaml.org/manual/types.html#sss:typexpr-sharp-types, and they do not refer to any specific compi...| Tarides RSS Feed
We love hosting internships. It is rewarding to potentially facilitate someone’s first foray into the OCaml ecosystem, helping them establish a hopefully life-long foothold in the world of open-source programming. It is also a great opportunity to get new perspectives on existing issues. Fresh eyes can reinvigorate topics, highlighting different pain points and new solutions which benefit the entire community. Sometimes, we also find ourselves just trying to keep up with our interns as they...| Tarides RSS Feed
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 you, ones that show you where to look and what is going wrong, can make a huge difference. We recently introduced you to the monitoring system runtime_events, which allows users to monitor their runt...| Tarides RSS Feed
In March, the OCaml.org team at Tarides embarked on a mission to enhance the OCaml.org community pages. After engaging with the OCaml community, we identified several areas for improvement. Our goal was to boost the community's usability and visibility, ensuring it supported a wider audience and promoted more active engagement. The OCaml community covers various domains, helping the language grow and supporting developers in their careers. To better serve our users, we decided to redesign the...| Tarides RSS Feed
Not all of our projects have a definite end: a grand culmination of effort and time where we pop champagne and set off fireworks (which is, of course, how we celebrate most of the time). Indeed, providing ongoing support for the OCaml ecosystem is one of our biggest priorities, and it means that we resolve issues, maintain libraries, and improve features continuously over time. Providing high-quality maintenance may not be glamorous, but it is crucial work that keeps the OCaml compiler runnin...| Tarides RSS Feed
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 SyntaxDocumentation command into it. OCaml LSP is a broad and complex project, so we will be limiting the scope of this article just to what's relevant for the SyntaxDocumentation command. Language Serv...| Tarides RSS Feed
We entrust some of our most sensitive information to an invisible stream of information flowing back and forth across the globe. Cybersecurity concerns everyone, and Tarides is developing secure, lasting, and high-performing solutions for a diverse set of users. This post introduces you to cutting-edge technology, employing some of the latest research in software development and cybersecurity to give you a sense of what the future of hardware and software security looks like. Tarides is colla...| Tarides RSS Feed
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 we’ll illustrate in this article. The command has recently received a bit of love, making it more usable, and we are taking advantage of this refresh to introduce it and showcase some use cases. A...| Tarides RSS Feed
We want to make learning and using OCaml easier for more people. Realising this goal involves expanding OCaml support to where the users are and making their experience smooth and hassle-free. It is generally accepted that the current state of OCaml on Windows is not comparable to other popular platforms like Linux and macOS. This is the case even though Windows is the preferred platform for 60% of developers and the platform that around 33% of OCaml.org visitors use! To address this misalign...| Tarides RSS Feed
There has been a new release of OCaml! The 5.2 release brings several new features, along with improvements, optimisations, and bug fixes. New features include compaction, ThreadSanitizer, and restored support for compiling to the POWER architeture on OCaml, plus other crucial changes that prepare the ground for future updates. This post highlights new and restored features and gives you a good overview of the release. We won’t cover everything, however, so if you’re looking for an exhaus...| Tarides RSS Feed
The stable opam 2.2 and a fully Windows compatible ecosystem of OCaml libraries and tools are getting closer every month. That's extremely exciting! With opam 2.2, Windows users will be able to use OCaml directly and natively without extra set-up or workarounds. Everyone is excited about this future, so we often forget people who want to use OCaml on Windows now and without set-up problems. In this guide, we demonstrate how to set up OCaml on Windows using WSL2. With WSL2, you can write OCaml...| Tarides RSS Feed
Hacking retreats are great ways for programmers to connect, explore new ideas, and learn from each other. One of the most popular OCaml retreats is the much-loved Mirage retreat, organised annually in Morocco. But for us OCaml enthusiasts located elsewhere, the journey can be challenging (not to mention the climate impact!). That’s why the Chennai office decided to host a retreat in Tamil Nadu, India, this past March. Hosting local events and retreats across the globe encourages more people...| Tarides RSS Feed
In 2022, Multicore OCaml became reality. Programming on multiple threads brings new possibilities, but also new complexities. In order to foster confidence in OCaml 5 and retain OCaml's reputation as a trustworthy and memory-safe platform, Tarides has developed multicoretests: Two property-based testing libraries with a test suite built on top. This effort has successfully pinpointed a range of issues and contributed towards a stable multicore environment for the OCaml community to build on. ...| Tarides RSS Feed
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 that provides modern IDE features for OCaml. Merlin currently has an arsenal of tools that enable code navigation, completion, and a myriad of others. To use Merlin, we give it commands, kinda like ...| Tarides RSS Feed
Welcome to part two! If you haven't already, check out part one, where we introduce DSCheck and share one of its uses in a naive counter implementation. This post will give you a behind-the-scenes look at how DSCheck works its magic, including the theory behind it and how to write a test for our naive counter implementation example. We’ll conclude by going a bit further, showing you how DSCheck can be used to check otherwise hard-to-prove properties in the Saturn library. How Does DSCheck W...| Tarides RSS Feed
Over the past year, the OCaml.org team has been hard at work addressing user feedback to make the OCaml.org Learn section more accessible and organised in order to facilitate learning OCaml and enriching the overall OCaml experience. In 2023, I joined the OCaml.org team as a UX /UI Designer. One of the challenges was to analyse and revise the OCaml.org Learn area's user-flow. This post provides an overview of the recent updates from the official OCaml.org documentation. These updates are part...| Tarides RSS Feed
Nitrokey is one of the world’s foremost open-source hardware security companies. They develop IT security hardware for data encryption, decryption, and signing, including key and user authentication. After eight years of development, they recently released the first fully open-source Hardware Security Module (HSM): an easy-to-use, highly-secure, and customisable security solution. Tarides is proud to have played a part in the development of Nitrokey’s HSM solution NetHSM, helping to get t...| Tarides RSS Feed
The OCaml 5 update brought much-anticipated support for programming on multiple cores. It also introduced support for concurrency via effect handlers – one of the first mainstream languages to do so. This significant update has had profound performance and UX implications, propelling OCaml into new areas of software development. At the core of this leap forward is the ambition to craft a modern, direct-style I/O stack that seamlessly interfaces with the latest kernel I/O advancements, such ...| Tarides RSS Feed
There are plenty of exciting computer programming events happening in India, including the 5 day OCaml retreat that Tarides is hosting in Auroville this week – look out for future posts on that! Another great (and bigger!) event is the annual free and open source software conference IndiaFOSS organised by FOSS united, most recently held in Bengaluru this past October. At the conference, I had the pleasure of presenting on my experience introducing a Code of Conduct (CoC) to an open-source c...| Tarides RSS Feed
As seasoned proponents of safety-by-design, we were pleased to see the February 26th White House press release titled "Future Software Should Be Memory Safe." The accompanying report touches on important topics, most significantly regarding the critical importance of memory safety. The U.S. government's emphasis on secure-by-design measures in software development sets a commendable example in the global cybersecurity landscape. As experts in OCaml, a pragmatic language that combines memory s...| Tarides RSS Feed
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 search engine known as Sherlodoc. These updates make navigating OCaml documentation more efficient and user-friendly, benefiting both seasoned OCaml programmers and those just venturing into the world o...| Tarides RSS Feed
ICFP 2024 will be upon us sooner than you might think! The call for papers closes on the 28th of February, and I wish everyone submitting good luck. Hopefully I will see you around Milan this upcoming September (at the OCaml Workshop, of course!) and to stave off your ICFP cravings until then, enjoy my account of last year's conference. The 28th ACM SIGPLAN International Conference on Functional Programming (ICFP) was held in Seattle, WA, US between 4-9 September 2023. Tarides was a silver sp...| Tarides RSS Feed
Reaping the plentiful benefits of parallel programming requires the careful management of the intricacies that come with it. Tarides played a significant part in making OCaml Multicore a reality, and we have continued to work on supporting tools that make parallel programming in OCaml as seamless as possible. To that end, the OCaml memory model is carefully designed to help developers reason about their programs, and OCaml 5 introduced several guarantees to make multi-threaded programming saf...| Tarides RSS Feed
The OCaml.org team, which includes members from Tarides, have been working hard to improve OCaml.org. In the first half of 2023, our primary focus was on the much-needed overhaul of OCaml.org's documentation and overall UX Design. We aspired to enhance user experience and accessibility throughout the year, with an eye on boosting accessibility as we progress. The transition to more semantic HTML was a crucial step in addressing the previously subpar accessibility. Simultaneously, we've been c...| Tarides RSS Feed
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, OCaml 5’s new multicore capabilities – whilst bringing significant performance improvements – can compound this problem even further. In light of this, it’s easy to see how organisations ...| Tarides RSS Feed
There is no room for complacency in software development! In the OCaml ecosystem, improvements are continuously introduced to optimise existing workflows, introduce new features, and boost performance. MirageOS is a toolchain for creating unikernels (very small images that embed both an application and the OS components needed to run it) from several libraries written in OCaml. It allows users to create robust, fast, and secure applications. We invest in the development of MirageOS, supportin...| Tarides RSS Feed
Imagine you have a brand-new coffee machine. One morning, you traipse excitedly down the stairs only to discover that, alas, your appliance has turned into a potato. The next day, it turns back into a coffee machine. And so it continues: on some days, it dispenses you perfect, frothy coffee; on other days, it dispenses Coca-Cola; and on some days, it doggedly persists with being a root vegetable. Overall, how satisfied would you be with your new coffee machine? Sure, sometimes the beverage yo...| Tarides RSS Feed
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 understand OCaml's quirks but also become familiar with its libraries and tools. odoc powers the OCaml.org package documentation, so it's used widely by the entire OCaml community. odoc is a documentation...| Tarides RSS Feed
It has been a few months since we announced our new product for both older and newer models of satellites: SpaceOS. Since then, there have been exciting updates to the use of SpaceOS for innovative satellite applications. Tarides is thrilled to announce our partnership with several esteemed organisations in the earth observation and space technology sector: Thales Alenia Space France, University Politechnica of Bucharest, KpLabs, and Thales Romania. Under the banner of project ORCHIDE, part o...| Tarides RSS Feed
Tarides is conducting a survey targeting non-OCaml programmers to learn their thoughts about this functional programming language and uncover any misconceptions surrounding it. Please take a few mintues to fill it out if you haven't yet done so. This post shows our preliminary findings based on a relatively small sample size within the Twitter community. The survey aimed to shed light on the challenges hindering its broader acceptance among programmers unfamiliar with its ecosystem and princi...| Tarides RSS Feed
Your choice of programming language matters. A recent press release from the US National Security Agency (NSA), in tandem with the US Cybersecurity and Infrastructure Security Agency (CISA) alongside international cybersecurity agencies, urges the adoption of memory-safe programming languages for enhanced software security. We see a strong alignment between this global effort and Tarides’ principles and practices. Our recent blog posts "Your Programming Language and Its Impact on Cybersecur...| Tarides RSS Feed
When I was in my early 20s, I developed a chronic illness that (amongst other things) has affected my mobility. Becoming disabled is an eye-opening experience, as it makes you acutely aware of two things: First, there are many ways in which society genuinely tries to help people with disabilities, and second, there are just as many (if not more) ways that society fails to accommodate disabled people. This is usually not done maliciously – or even consciously – but arises due to ignorance,...| Tarides RSS Feed
Have you had difficulty installing OCaml for your projects? We have created a video tutorial showing you how to use Opam to install OCaml on Linux and macOS. All you need to complete the tutorial is a computer running either Linux or macOS, and an internet connection. By the end of the tutorial you will have OCaml 5 installed on your machine, and can start your journey with OCaml. For ideas of what to do next, check out the tutorials on OCaml.org. Our goal is to promote and encourage wider ad...| Tarides RSS Feed
It is a truth universally acknowledged, that a programmer in possession of a free Saturday afternoon must be in want of a good old OCaml hacking session. To address this pressing need, we recently hosted another OCaml Hacking Day event – this time at our Tarides India office in Chennai. We had a total of twelve hackers with varying levels of experience participating. Everyone gathered for talks, snacks, mingling, and most excitingly some hands-on hacking! A Talk and a Welcome People began t...| Tarides RSS Feed
OCaml is constantly evolving. Developers collaborate to bring support for new features, improve workflows, and resolve pain points. To this end, the OCaml-Wasm GitHub organisation was recently established. Its goal is to bring WebAssembly support to OCaml. WebAssembly, more commonly known as Wasm, is a low-level virtual machine that is both language- and platform-independent. In essence, Wasm is a binary format designed as a portable compilation target for programming languages. It enables de...| Tarides RSS Feed
Irmin is a collection of OCaml libraries that makes it easy to build applications with Git-like data stores. We recently releasedirmin-client and irmin-server as official Irmin packages. These packages open up a new way to use Irmin by implementing a custom protocol that lets you write a client application that can interact with a remote data store as if it is local using the Irmin Store API. In addition to creating a simple example, we also thought it would be fun to build a browser extensio...| Tarides RSS Feed
OCaml Multicore opened up a new world of performance for developers, something that Nomadic Labs has tested with great results. Rather than relying on one core to do everything, the program can take advantage of multiple cores simultaneously for a significant performance boost. With new programming possibilities come new classes of bugs, which require updated detection methods. One of these types of bugs is called a data race. A data race is a race condition that occurs when two accesses are ...| Tarides RSS Feed
In a world that never stops, it's easy to get lost in the hustle and bustle of daily life, often overlooking the importance of maintaining our mental well-being, one of the most vital aspects of our existence. Especially on World Mental Health Day, observed every October 10th, it's crucial to reflect on the significance of mental health both in our personal lives and within the workplace. At Tarides, we understand that true success goes beyond profits and productivity; it's about the well-bei...| Tarides RSS Feed
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 Linux, OBuilder had Windows and macOS support added later. Previous blog posts have covered porting to macOS and OCaml CI in general. Here we cover the work to add the remaining Tier-1 supported arc...| Tarides RSS Feed
Thomas Leonard and Jonathan Ludlam hosted a tutorial on porting Lwt applications to OCaml 5 and Eio at arguably the world's largest functional programming conference: ICFP. The tutorial is a great introduction to Eio, with a clear step-by-step approach that is accessible to developers of different experience levels. This article provides some context to the tutorial and Eio in general. If you would rather skip straight to the code, check out the tutorial on GitHub. Eio: a Brief Introduction O...| Tarides RSS Feed
I have had the pleasure of attending some great conferences over the past year, where I have presented some of the latest and most exciting OCaml use cases developed at Tarides. With our new SpaceOS solution, Tarides can provide significant quality-of-life upgrades for industries that rely on satellites to power their critical infrastructure. In this post, I’ll share the best parts of my experience at the different conferences along with my key takeaways. India Space Congress 2023 The India...| Tarides RSS Feed
Internships at Tarides We regularly have the pleasure of hosting internships where we work with engineers from all over the world on a diverse range of projects. By collaborating with people who are relatively new to the OCaml ecosystem, we get to benefit from their perspective. Seeing things with fresh eyes helps with identifying holes in documentation, gaps in workflows, as well as other ways to improve user experience. In turn, we offer interns the opportunity to work on a project in OCaml...| Tarides RSS Feed
ICFP 2023 The 28th ACM SigplanInternational Conference on Functional Programming is taking place in Seattle as I’m typing. This is the largest international research conference on functional programming, and this year’s event features fascinating keynotes (including one from OCaml’s very own Anil Madhavapeddy!), deep dives on various topics like compilation and verification, tutorials, networking opportunities, and workshops on several functional programming languages. Out of this verit...| Tarides RSS Feed
Did you know that the programming language you use can have a huge impact on the cybersecurity of your applications? In a 2022 meeting of the Cybersecurity Advisory Committee, the Cybersecurity and Infrastructure Security Agency’s Senior Technical Advisor Bob Lord commented that: “About two-thirds of the vulnerabilities that we see year after year, decade after decade” are related to memory management issues. Memory Unsafe Languages One can argue that cyber vulnerabilities are simply a ...| Tarides RSS Feed
This is the follow-up post continuing the discussion of the development of Kcas. Part 1 discussed the development done on the library to improve performance and add a transaction mechanism that makes it easy to compose atomic operations without really adding more expressive power. In this part we'll discuss adding a fundamentally new feature to Kcas that makes it into a proper STM implementation. Get Busy Waiting If shared memory locations and transactions over them essentially replace tradit...| Tarides RSS Feed
In the past few months I've had the pleasure of working on the Kcas library. In this and a follow-up post, I will discuss the history and more recent development process of optimising Kcas and turning it into a proper Software Transactional Memory (STM) implementation for OCaml. While this is not meant to serve as an introduction to programming with Kcas, along the way we will be looking at a few code snippets. To ensure that they are type correct — the best kind of correct* — I'll use th...| Tarides RSS Feed
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 platforms. In 2022, Patrick Ferris of Tarides, successfully implemented a macOS worker for OBuilder. The workers were added to opam-repo-ci and OCaml CI, and this work was presented at the OCaml worksh...| Tarides RSS Feed
Our mission is to build sustainable and secure software infrastructure that will not only work for decades but also positively impact the world. This includes our work on essential open-source libraries and tooling in the OCaml space, but also extends to include cutting-edge innovation through MirageOS technologies. We are investigating mission-critical IoT use cases: one of which is facilitating the deployment of secure high-performance applications in space to help data scientists write mod...| Tarides RSS Feed