Blog
The OCaml Planet RSS
Articles and videos contributed by both experts, companies and passionate developers from the OCaml community. From in-depth technical articles, project highlights, community news, or insights into Open Source projects, the OCaml Planet RSS feed aggregator has something for everyone.
Want your Blog Posts or Videos to Show Here?
To contribute a blog post, or add your RSS feed, check out the Contributing Guide on GitHub.
[OCaML'23] Targeted Static Analysis for OCaml C Stubs: Eliminating gremlins from the code Edwin Török Migration to OCaml 5 requires updating a lot of C bindings due to the removal of naked pointer support. Writing OCaml user-defined primitives in C is a necessity, but is unsafe and error-prone. It does not benefit from either OCaml’s or C’s type checking, and existing C static analysers are not aware of the OCaml GC safety rules, and cannot infer them from existing macros alone. The alternative is automatically generating C stubs, which requires correctly managing value lifetimes. Having a static analyser for OCaml to C interfaces is useful outside the OCaml 5 porting effort too. After some motivating examples of real bugs in C bindings a static analyser is presented that finds these known classes of bugs. The tool works on the OCaml abstract parse and typed trees, and generates a header file and a caller model. Together with a simplified model of the OCaml runtime this is used as input to a static analysis framework, Goblint. An analysis is developed that tracks dereferences of OCaml values, and together with the existing framework reports incorrect dereferences. An example is shown how to extend the analysis to cover more safety properties. The tools and runtime models are generic and could be reused with other static analysis tools.
[OCaML'23] Less Power for More Learning: Restricting OCaml Features for Effective Teaching Max Lang, Nico Petzendorfer We present a framework for sandboxing and restricting features of the OCaml programming language to effectively automate the grading of programming exercises, scaling to hundreds of submissions. We describe how to disable language and library features that should not be used to solve a given exercise. We present an overview of an implementation of a mock IO system to allow testing of IO-related exercises in a controlled environment. Finally, we detail a number of security considerations to ensure submitted code remains sandboxed, allowing automatic grading to be trusted without manual verification. The source code of our implementation is publicly available [1]. [1] As a git repository at https://github.com/just-max/less-power.
[OCaML'23] Less Power for More Learning: Restricting OCaml Features for Effective Teaching Max Lang, Nico Petzendorfer We present a framework for sandboxing and restricting features of the OCaml programming language to effectively automate the grading of programming exercises, scaling to hundreds of submissions. We describe how to disable language and library features that should not be used to solve a given exercise. We present an overview of an implementation of a mock IO system to allow testing of IO-related exercises in a controlled environment. Finally, we detail a number of security considerations to ensure submitted code remains sandboxed, allowing automatic grading to be trusted without manual verification. The source code of our implementation is publicly available [1]. [1] As a git repository at https://github.com/just-max/less-power.
[OCaML'23] Parallel Sequences in Multicore OCaml Andrew Tao I present my implementation of a parallel sequences abstraction that utilizes the support for shared memory parallelism in the new OCaml 5.0.0 multicore runtime. This abstraction allows clients to create highly parallelizable programs without needing to write, or even understand, the low-level implementation details necessary to parallelize large tasks.
[OCaML'23] Parallel Sequences in Multicore OCaml Andrew Tao I present my implementation of a parallel sequences abstraction that utilizes the support for shared memory parallelism in the new OCaml 5.0.0 multicore runtime. This abstraction allows clients to create highly parallelizable programs without needing to write, or even understand, the low-level implementation details necessary to parallelize large tasks.
[OCaML'23] Efficient OCaml compilation with Flambda 2 Pierre Chambart, Vincent LAVIRON, Mark Shinwell Flambda 2 is an IR and optimisation pass for OCaml centred around inlining. We discuss the engineering constraints that shaped it and the overall structure that allows the compiler to be fast enough to handle very large industrial code bases.
[OCaML'23] Efficient OCaml compilation with Flambda 2 Pierre Chambart, Vincent LAVIRON, Mark Shinwell Flambda 2 is an IR and optimisation pass for OCaml centred around inlining. We discuss the engineering constraints that shaped it and the overall structure that allows the compiler to be fast enough to handle very large industrial code bases.
[OCaML'23] State of the OCaml Platform 2023 Thibaut Mattio, Anil Madhavapeddy, Thomas Gazagnaire, David Allsopp This paper reflects on a decade of progress and developments within the OCaml Platform, from its inception in 2013 with the release of opam 1.0, to today where it stands as a robust toolchain for OCaml developers. We review the last three years in detail, emphasizing the advancements and innovations that have shaped the OCaml development landscape and highlighting key milestones such as the migration to Dune as the primary build system, and the development of a Language Server Protocol (LSP) server for OCaml. We also outline our plan for the coming years. The roadmap is informed by community feedback, discussions with Platform tool maintainers, and insights from industrial users of OCaml. The final version of this evolving roadmap, designed to shape the future of the OCaml developer experience, will be presented at the International Conference on Functional Programming (ICFP).
[OCaML'23] State of the OCaml Platform 2023 Thibaut Mattio, Anil Madhavapeddy, Thomas Gazagnaire, David Allsopp This paper reflects on a decade of progress and developments within the OCaml Platform, from its inception in 2013 with the release of opam 1.0, to today where it stands as a robust toolchain for OCaml developers. We review the last three years in detail, emphasizing the advancements and innovations that have shaped the OCaml development landscape and highlighting key milestones such as the migration to Dune as the primary build system, and the development of a Language Server Protocol (LSP) server for OCaml. We also outline our plan for the coming years. The roadmap is informed by community feedback, discussions with Platform tool maintainers, and insights from industrial users of OCaml. The final version of this evolving roadmap, designed to shape the future of the OCaml developer experience, will be presented at the International Conference on Functional Programming (ICFP).
[OCaML'23] Eio 1.0 – Effects-based IO for OCaml 5 Thomas Leonard, Patrick Ferris, Christiano Haesbaert, Lucas Pluvinage, Vesa Karvonen, Sudha Parimala, KC Sivaramakrishnan, Vincent Balat, Anil Madhavapeddy Eio provides an effects-based direct-style IO stack for OCaml 5. This talk introduces Eio’s main features, such as use of effects, multi-core support and lock-free data-structures, support for modular programming, interoperability with other concurrency libraries such as Lwt, Async and Domainslib, and interactive monitoring support enabled by the custom runtime events in OCaml 5.1. We will report on our experiences porting existing applications to Eio.





