OCaml. The OCaml 4.0 release in 2012 added Generalized Algebraic Data Types (GADTs) and first-class modules in order to increase the flexibility of the language. The OCaml 5.0.0 release in 2022 is a complete rewrite of the language runtime, removing the global GC lock and adding effect handlers via delimited continuations. These changes enable support for shared-memory parallelism and color-blind concurrency respectively. OCaml's development continued within the Cristal team at INRIA until 2005, when it was succeeded by the Gallium team. Subsequently, Gallium was succeeded by the Cambium team in 2019. Features OCaml features a static type system, type inference, parametric polymorphism, tail recursion, pattern matching, first class lexical closures, functors (parametric modules), exception handling, effect handling, and incremental generational automatic garbage collection. OCaml is notable for extending ML-style type inference to an object system in a general-purpose language. This permits structural subtyping, where object types are compatible if their method signatures are compatible, regardless of their declared inheritance (an unusual feature in statically typed languages). A foreign function interface for linking to C primitives is provided, including language support for efficient numerical arrays in formats compatible with both C and Fortran. OCaml also supports creating libraries of OCaml functions that can be linked to a main program in C, so that an OCaml library can be distributed to C programmers who have no knowledge or installation of OCaml. The OCaml distribution contains: Lexical analysis and parsing tools called ocamllex and ocamlyacc Debugger that supports stepping backwards to investigate errors Documentation generator Profiler – to measure performance Many general-purpose libraries The native code compiler is available for many platforms, including Unix, Microsoft Windows, and Apple macOS. Portability is achieved through native code generation support for major architectures: IA-32, X86-64 (AMD64), Power, RISC-V, ARM, and ARM64. OCaml bytecode and native code programs can be written in a multithreaded style, with preemptive context switching. OCaml threads in the same domain execute by time sharing only. However, an OCaml program can contain several domains. There are several libraries for distributed computing such as Functory and ocamlnet/Plasma. Development environment Since 2011, many new tools and libraries have been contributed to the OCaml development environment: Development tools opam is a package manager for OCaml. Merlin provides IDE-like functionality for multiple editors, including type throwback, go-to-definition, and auto-completion. Dune is a composable build-system for OCaml. OCamlformat is an auto-formatter for OCaml. ocaml-lsp-server is a Language Server