Internships @ OCamlPro


Looking for an internship?


Améliorations pour l’application web Try OCaml
Stage 3-6 mois, niveau M1 à M2 (PDF)

Fonctionnelle et plébiscitée par la communauté OCaml, cette nouvelle version est cependant toujours en version “Beta”, et nous aimerions y apporter une gamme d’améliorations de petite et plus grande envergure. Les objectifs pourront porter sur l’amélioration de l’interface et des fonctionnalités OCaml et Web.

Interface Graphique pour la Gestion de Paquets d’OCaml
Stage 3-6 mois, niveau M1 à M2 Recherche (PDF)

L’objectif de ce stage est de développer une interface graphique pour opam pour permettre à ses utilisateurs débutants d’accéder rapidement à ses fonctionnalités les plus avancées, tout en rendant la gestion au quotidien de multiples installations d’OCaml plus facile.

Améliorer et centraliser la documentation pour une distribution OCaml
Stage 3-6 mois, niveau M1 à M2 (PDF)

Les développeurs OCaml utilisent aujourd'hui Opam pour installer OCaml et tous les outils et bibliothèques dont ils ont besoin. Néanmoins, la documentation sur ces bibliothèques est loin d'être centralisée. L'objectif de ce stage est d'améliorer docs.ocaml.pro; de la génération de la documentation, à rendre la navigation entre les pages plus accessible et ergonomique et étendre les capacités de recherche en la rendant plus avancée.

Heuristique d'inlining complexe
Stage 3-6 mois, niveau M1 à M2 Recherche (PDF)

Dans un compilateur optimisant, l'inlining est une optimisation centrale, elle permet aux autres optimisations de s'activer. Ce stage contient une large base théorique à développer, le résultat attendu pour OCamlPro sera la théorie et l'expérience acquise, et non le code lui même.

Typage et Analyse de code Cobol
Stage 3-6 mois, niveau M1 à M3 Recherche (PDF)

OCamlPro a acquis une expertise sur le langage COBOL, et a commencé le développement de plusieurs outils, basés sur un parseur COBOL en OCaml, issu d'un travail titanesque. L'objectif de ce stage est de participer au développement de cette boîte à outils en OCaml pour COBOL .

Définitions récursives et schémas de compilation en ML
Stage 6 mois, niveau M2 (PDF)

L'équipe compilation d'OCamlPro, qui travaille sur le compilateur OCaml, s'intéresse à spécifier formellement les définitions récursives qui ont du sens et la façon de les compiler. Le but de ce stage est de formaliser et d'implémenter un schéma de compilation plus efficace que le schéma par global store présenté dans l'article, qui est utilisé actuellement dans le compilateur.

Optimisation de code Wasm
Stage 3 mois, niveau M1 (PDF)

L'équipe WebAssembly chez OCamlPro travaille entre autres sur l'outil Owi, développé en interne. Avec cet outil, l’utilisateur peut exécuter symboliquement des programmes WebAssembly et obtenir un modèle donnant les valeurs des entrées pour lesquelles le programme lève une erreur ou atteint une violation d’assertion. L’objectif de ce stage est d’identifier ou de concevoir des optimisations pouvant être bénéfiques à l’exécution symbolique.


Past internships


Généralisation de la Récursion terminale modulo constructeur
Stage 3-6 mois, niveau M1 à M2 Recherche (PDF)

L’objectif de ce stage est d’étudier et implémenter cette généralisation. Le stage se déroulera au sein de l’équipe flambda chez OCamlPro qui développe des optimisations sur le langage OCaml.

Améliorations de la bibliothèque OCaml-Canvas
Stage 3-6 mois, niveau M1 à M2 (PDF)

[OCaml-Canvas] est une bibliothèque de canevas portable pour OCaml sur les systèmes GNU/Linux (X11 et Wayland), macOS (Quartz) et Windows (GDI), proposant également un backend Javascript pour une utilisation dans un navigateur web. Un des aspects fondamentaux de cette bibliothèque est de limiter au strict minimum les dépendances à des bibliothèques externes, afin de maximiser la portabilité.

Détection de fonction identité à la compilation
Stage 6 mois, niveau M2 Recherche (PDF)

L’objectif est d’étudier la faisabilité de cette analyse, y compris documenter les choix possibles et leurs avantages et désavantages respectifs. Le stage se déroulera au sein de l’équipe flambda qui développe des optimisations sur le langage OCaml. Le travail réalisé a vocation à être intégré au compilateur officiel par l’équipe flambda par la suite.

Alt-Ergo for the Win(dows)
Stage 3-6 mois, niveau M1 à M2 Recherche (PDF)

Le but premier de ce stage sera de compiler Alt-Ergo sous windows grâce aux outils de la communauté comme la cross compilation de Dune ou opam-cross-windows. Le second but de ce stage sera de mettre en place une intégration continue de cette compilation sous windows sur le dépot Github d’Alt-Ergo via des services comme Azure de Microsoft.

Alt-Ergo Fuzz
Stage 3-6 mois, niveau M1 à M2 Recherche (PDF)

Le premier but de ce stage serait de faire un état des lieux des travaux effectués sur le fuzzing des outils supportant le standard smt-lib, ainsi qu’étudier les résultats de tels outils de fuzzing sur Alt-Ergo. Dans un second temps, le but sera de créer un fuzzer pour le langage d’entrée d’Alt-Ergo.

Alt-Ergo on the bench
Stage 3-6 mois, niveau M1 à M2 (PDF)

La première tâche du stage serait de renforcer la mise en place et l’intégration de l’outil benchpress de Simon Cruanes sur notre serveur. La seconde tâche concernera l’automatisation de tests. Pour cela nous souhaiterions mettre en place un système qui teste notre branche principale du dépôt Github d’Alt-Ergo dès que cette dernière est modifiée.

Améliorations pour l’application web Try OCaml
Stage 3-6 mois, niveau M1 à M2 (PDF)

Fonctionnelle et plébiscitée par la communauté OCaml, cette nouvelle version est cependant toujours en version “Beta”, et nous aimerions y apporter une gamme d’améliorations de petite et plus grande envergure. Les objectifs pourront porter sur l’amélioration de l’interface et des fonctionnalités OCaml et Web.

Fuzzing d'interprète Webassembly
Stage 3-6 mois, niveau M1 à M2 (PDF)

De nombreux interpréteurs WebAssembly ont été développés récemment. L'idée principale de ce stage est de développer un fuzzer en OCaml pour Wasm afin de comparer les différents interpréteurs existants et s'assurer de leur cohérence.

Détection de logique minimale d'un problème SMT
Stage 5-6 mois, niveau M1 à M2 (PDF)

La première tâche du stage consistera à établir une liste de critères qui permet de déterminer la logique minimale d’un problème SMTLIB2, et la deuxième partie du stage sera d’implémenter ces critères dans Dolmen.