← Retour au blog
tech 20 June 2026

OCaml 5.5.0: A Game-Changing Update

OCaml 5.5.0 introduces key enhancements like module-dependent functions and a relocatable compiler, transforming the development experience.

Article inspired by the original source
OCaml 5.5.0 released ↗ discuss.ocaml.org

Introduction

OCaml, the statically typed programming language favored by many developers for its performance and reliability, has just released version 5.5.0. This update celebrates Blaise Pascal's birthday with features that promise to transform how developers interact with this language.

Module-Dependent Functions

One of the major highlights of this release is the introduction of module-dependent functions. This allows modules to be used as function arguments in a form of lightweight functors. For example, you can define a function to print a map generated by the Map.Make functor:

``ocaml let pp_map (module M: Map.S) pp_key pp_v ppf set = if M.is_empty set then Format.fprintf ppf "ø" else let pp_sep ppf () = Format.fprintf ppf ",@ " in let pp_binding ppf (k,v) = Format.fprintf ppf "@[%a@ =@ %a@]" pp_key k pp_v v in Format.fprintf ppf "@[{@ %a@ }@]" (Format.pp_print_seq ~pp_sep pp_binding) (M.to_seq set) ``

This function, unlike first-class modules, depends on the module M that must be statically known, thus offering increased flexibility while maintaining type safety.

Relocatable Compiler

Another significant enhancement is the relocatable compiler. Now, a compiler installation can be moved or copied without the risk of hard-to-debug errors due to mixing incompatible bytecode runtime interpreters. This makes creating new local switches in Opam easier, reducing the time required to create new development environments.

Polymorphic Functions as Function Arguments

Version 5.5.0 also introduces the ability to define higher-rank polymorphic functions directly using an explicit type annotation on a function argument, simplifying their usage. For instance:

``ocaml let apply_map (map: 'a 'b. ('a -> 'b) -> 'a list -> 'b list) = map string_of_int [1;2;3], map List.singleton ["x"; "y"] let _ = apply_map List.map ``

This avoids going through a record or object, making the code more readable and easier to maintain.

Impact on the Community

These technical improvements have a profound impact on the OCaml community. By making development easier and increasing flexibility, they allow developers to focus more on business logic and less on managing technical constraints.

Conclusion

OCaml 5.5.0 marks a significant step forward for the language, offering powerful tools for developers looking to optimize their code and workflow. Whether you're a tech entrepreneur or a seasoned developer, this update is an opportunity to rediscover OCaml and its capabilities.

Let's discuss your project in 15 minutes.

OCaml programming module-dependent functions relocatable compiler polymorphic functions
Deepthix newsletter · 100% AI · every Monday 8am

An AI agent reads tech for you.

Our AI agent scans ~200 sources per week and ships the best articles to your inbox Monday 8am. Free. One click to unsubscribe.

Visit the newsletter page →

Want to automate your operations?

Let's talk about your project in 15 minutes.

Book a call