Sessions passĂ©es - OCaml Users in PariS đŸȘ

đŸȘ Meetup OUPS (OCaml Users in PariS)

Meetup OUPS (OCaml Users in PariS) : le passĂ© đŸȘ

Les vidéos des meetups OUPS passés sont disponibles ici !

oups picture

Mai 2023 Mars 2023 Janvier 2023 DĂ©cembre 2022 Septembre 2022 Mai 2022 Mars 2022 DĂ©cembre 2021

Mai 2023

Retrofitting OCaml Modules - Clément Blaudeau

ML modules offer large-scale notions of composition and modularity. Provided as an additional layer on top of the core language, they have proven both vital to the working OCaml and SML programmers, and inspiring to other use-cases and languages. Unfortunately, their meta-theory remains difficult to comprehend, and more recent extensions (abstract signatures, module aliases) lack a complete formalization. Building on a previous translation from ML modules to Fω, we propose a new comprehensive description of a significant subset of OCaml modules, including both applicative and generative functors and transparent ascription -- a useful new feature. By exploring the translations both to and from Fω, we provide a complete description of the signature avoidance issue, as well as insights on the limitations and benefits of the path-based approach of OCaml type-sharing.

slides | vidéo

Formal reasoning rules for the OCaml FFI - Armaël Guéneau

OCaml provides an FFI mechanism (Foreign Function Interface) allowing OCaml programs to call external functions implemented in C, typically by writing "glue code" helping bridge the two languages. This "glue code" needs to be carefully written and obey a number of rules when interacting with the OCaml runtime (cf chapter 22 of the manual). Failure to follow one of these rules typically result in silent corruption of the program memory, resulting in fatal and hard to debug crashes. This presentation will present ongoing research on formalizing the rules one need to follow to correctly use the OCaml FFI. We will see how a small number of permissions can capture the requirements one must obey in order to write bug-free glue code.

slides | vidéo

Mars 2023

Creusot: a prophetic verifier for Rust - Xavier Denis

Rust is a fairly recent programming language for system programming, bringing static guarantees of memory safety through a strong ownership policy. This feature opens promising advances for deductive verification, which aims at proving the conformity of Rust code with respect to a specification of its intended behavior. We present Creusot, a tool for the formal specification and deductive verification of Rust. Creusot's specification language features a notion of prophecies to reason about memory mutation. Rust provides advanced abstraction features based on a notion of traits, extensively used in the standard library and in user code. The support for traits is at the heart of Creusot's approach of verification and specification of programs

slides | vidéo

Deux moteurs de recherche pour l'ecosystĂšme OCaml - Arthur Wendling

Sherlocode et Sherlodoc sont deux petits outils pour explorer les nombreux projets publiés sur opam. Le premier permet de grep en temps réel leur code source, tandis que le second facilite la recherche dans leur documentation (à la Hoogle). Durant la présentation, on verra que ces outils existent pour satisfaire deux envies : répondre à des questions tordues sur l'usage d'OCaml, mais aussi apprendre à coder ce type de moteur de recherche. On expliquera donc comment les recherches par regex et par type ont été implémentées, grùce à des astuces élégantes empruntées à la littérature... et des hacks douteux qu'il vaudrait mieux ne pas ébruiter.

vidéo

Janvier 2023

Analyse statique par interprétation abstraite de programmes fonctionnels manipulant des types algébriques récursifs - Mila Valnet

Afin de prĂ©venir les erreurs de programmation, des analyseurs statiques ont Ă©tĂ© dĂ©veloppĂ©s pour de nombreux langages ; cependant, aucun analyseur mature ne cible l’analyse de valeurs pour un langage fonctionnel Ă  la ML. On dĂ©crira ici un analyseur statique de valeurs par interprĂ©tation abstraite pour un langage fonctionnel typĂ© du premier ordre, approche sĂ»re et automatique pour garantir l’absence d’erreurs Ă  l’exĂ©cution. Cette approche nous permet d’analyser des fonctions rĂ©cursives manipulant des types algĂ©briques rĂ©cursifs et d’infĂ©rer dans un domaine abstrait leur relation entrĂ©e-sortie. Une implĂ©mentation est en cours sur la plateforme MOPSA et analyse avec succĂšs de courts programmes de quelques lignes. Ce travail ouvre ainsi la voie vers une analyse de valeurs prĂ©cise et relationnelle basĂ©e sur l’interprĂ©tation abstraite pour les langages fonctionnels d’ordre supĂ©rieur Ă  la ML.

vidéo

YOcaml - Xavier Van de Woestyne

YOCaml est un générateur de blog statique qui a été développé pour tester la bibliothÚque Preface. Il est relativement peu pragmatique, partiellement mal documenté et ne dispose d'aucune stratégie de mise en cache efficace. Cependant, sa genÚse est amusante (et tùche d'utiliser des outils peu présents dans le monde de OCaml) et certaines contributions extérieures ont permis de le rendre assez explicitement couplable avec MirageOS. Dans cette présentation, je vous propose de découvrir son fonctionnement général, quelques choix de design et un bref tutoriel sur comment l'utiliser.

slides | vidéo

DĂ©cembre 2022

Camlboot: debootstrapping the OCaml compiler - Nathanaëlle Courant (OCamlPro)

In this talk, I will present Camlboot, a project which debootstraps the OCaml compiler, that is, is able to compile the OCaml compiler without using the bootstrap binary. Camlboot consists in a naĂŻve compiler for a subset of OCaml called MiniML, and an interpreter for OCaml written in MiniML. I will first justify the interest of debootstrapping, then explain the architecture and parts of Camlboot, and finally present the experimental validation of Camlboot.

vidéo

La voix du Chameau - Enguerrand Decorne

Cette présentation sera une introduction informelle et simpliste à la programmation musicale via un ordinateur. Il existe de nombreux langages de "live coding" (SonicPi, TidalCycles), mais il est aussi tout à fait possible d'expérimenter de s'amuser avec notre langage favori! Je présenterai divers projets sur lesquels j'ai expérimenté, avec des démonstrations sonores en accompagnement. Avertissement: cette présentation contient des compliments au protocole MIDI.

vidéo

Septembre 2022

COBOL 101 – Émilien Lemaire (OCamlPro)

COBOL est un langage trĂšs ancien et est assez Ă©loignĂ© de ceux que nous manipulons tous les jours. MalgrĂ© cela il reste l’un des plus utilisĂ©s dans le monde. Durant cette prĂ©sentation je vais donc vous introduire au langage, voir comment sont Ă©crit les programmes, comment les variables sont-elles dĂ©clarĂ©es et comment les manipuler. Je vais aussi vous prĂ©senter quelques features “intĂ©ressantes” du langage, dont certaines sont inattendues.

slides | code | vidéo

OCaml Multicore – Florian Angeletti

OCaml 5.0 est la premiÚre nouvelle version majeure d'OCaml en dix ans d'évolution du langage. Cette nouvelle version majeure dénote une réécriture presque totale de l'environnement d'exécution afin de supporter deux nouveautés majeures: le parallélisme et les effets algébriques. Mon exposé propose de faire un tour de ces nouvelles fonctionnalités du langage, mais aussi de présenter le travail accompli pour préserver la compatibilité avec tout le code OCaml existant.

slides | vidéo

Opam-bin: Opam et paquets binaires – Fabrice Le Fessant (OCamlPro)

L’utilisation d’un gestionnaire de paquets sources comme Opam n’est pas toujours optimale en temps, car l’outil passe beaucoup de temps Ă  recompiler des paquets, dĂšjĂ  compilĂ©s dans le passĂ© ou par d’autres utilisateurs. Le plugin Opam-bin rĂ©pond Ă  ce problĂšme en permettant de crĂ©er Ă  la volĂ©e des paquets binaires, qui seront rĂ©utilisĂ©s Ă  l’avenir et peuvent ĂȘtre partagĂ©s avec d’autres utilisateurs. L’exposĂ© montre son utilisation et comment il fonctionne.

slides | vidéo

Mai 2022

La session de Mai 2022 est sponsorisée par LambdaNantes.

LambdaNantes est une collection d'évÚnements (récurrents) qui s'intéressent à l'utilisation des langages "dit Applicatifs" (ou fonctionnels) à Nantes.

Gospel - Clément Pascutto

Gospel is a behavioural specification language for OCaml program. It provides developers with a non-invasive and easy-to-use syntax to annotate their module interfaces with formal contracts that describe type invariants, mutability, function pre-conditions and post-conditions, effects, exceptions, and much more!

slides | vidéo

MirageOS 4 - Romain Calascibetta

MirageOS 4 vient de sortir récemment et c'est l'occasion de (re)présenter ce projet permettant de construire des unikernels. Nous y présenterons les nouvelles features et possibilités et nous ferons une introspection de 3 ans de travail de l'équipe core.

slides | vidéo

Tezt: A tasty taste of Tezt tests - Romain Bardou

Tezt is a test framework for OCaml. It is well suited for unit and regression tests and particularly shines for integration tests, i.e. tests that launch external processes. It was made with a focus on user experience. It allows you to easily select tests from the command-line and provides pretty logs. It also can run tests in parallel, automatically split the set of tests into several well-balanced batches to be run in parellel CI jobs, produce JUnit outputs, and more. It has been in use at Nomadic for the last 2 years and is thus quite battle-tested.

slides | vidéo

Mars 2022

Interfacing OCaml with Sundials for numerical simulation - Timothy Bourke

Sundials/ML is an OCaml interface to (most of) the Sundials suite of numerical solvers. It provides access to the underlying C library and exploits features of the OCaml type and module systems to document and ensure its correct utilisation. We reimplemented a hundred-odd of the examples provided with Sundials to aid in developing, debugging, and benchmarking the OCaml library. The standard examples, iterated hundreds or thousands of times, are rarely twice as slow in OCaml as in C and usually less than 50% slower. We also found many bugs in our code (and a few in Sundials itself) by executing these examples with valgrind.

slides

Epidemiological inference in OCaml - Benjamin Nguyen-Van-Yen

OCaml is a great choice for simulating mathematical models: Its functional nature and its type and module system allow to easily express mathematical models and to simulate them in a modular and (reasonably) efficient manner. I will share some of the code and results from my PhD about the Bayesian inference of infectious diseases, with simulation of stochastic processes, MCMC, phylogenetic inference, and musical populations.

slides | vidéo

DĂ©cembre 2021

Monolith - François Pottier

In this talk, I will give a brief presentation and demo of Monolith, a tool that helps apply random testing or fuzz testing to an OCaml library. Monolith provides a rich specification language, which allows the user to describe her library’s API, and an engine, which generates clients of this API and executes them. This reduces the problem of testing a library to the problem of testing a complete program, one that is effectively addressed by off-the-shelf fuzzers such as AFL.

slides | vidéo

GĂ©nĂ©rer 340 000 molĂ©cules valides par secondes sur un seul cƓur et Ă  dos de chameau - François BĂ©renger

La conception de molĂ©cules par ordinateur est un sujet qui revient Ă  la mode. Pour gĂ©nĂ©rer in-silico des molĂ©cules aux propriĂ©tĂ©s optimisĂ©es, une fonction de score peut ĂȘtre couplĂ©e Ă  un gĂ©nĂ©rateur molĂ©culaire. Nous allons montrer une mĂ©thode simple qui permet de gĂ©nĂ©rer uniquement des molecules valides, Ă  haute frĂ©quence. Le logiciel libre FASMIFRA implĂ©mente cette mĂ©thode en OCaml.

slides | vidéo

Pourquoi Ă©crire du C quand on peut faire pire en OCaml ? - Pierre Chambart (OCamlPro)

Durant cette prĂ©sentation, nous vous emmĂšnerons visiter les profondeurs d’OCaml. Vous y dĂ©couvrirez comment Ă©crire du code lorsque votre seul objectif est d’éviter les allocations. À condition bien Ă©videmment de ne pas craindre la honte. Vous pourrez Ă©galement apercevoir de vĂ©ritables morceaux de flambda et de futurs vĂ©ritables morceaux de flambda2.

slides | vidéo