Skip to content

Talks programmation système en Ocaml pour prof de prépa - Juillet 2022

License

Notifications You must be signed in to change notification settings

lyrm/systeme_en_ocaml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

À propos

Le contenu de ce dépôt a été créé pour une présentation en juillet 2022 sur la programmation système en OCaml à destination des professeurs des classes préparatoires MPI, à l'occasion des journées MP2I/MPI à l'ENS de Lyon.

La présentation

Disponible ici:

  • Partie 1: présentation de la programmation système via module Unix par la construction d'un mini-shell.
  • Partie 2: quelques projets de l'écosystème OCaml:
    • MirageOS: un système d'exploitation modulaire.
    • OCaml 5: prochaine version d'OCaml introduisant la programmation multicore dans le langage.
    • QCheck: vérification automatique de propriétés

Programmes

Les programmes présentés sont implémentés dans la section code. Pour les utiliser, il faut une installation d'OCaml avec le gestionnaire de paquets opam.

Installation d'OCaml

La première étape est d'installer opam: https://opam.ocaml.org/doc/Install.html

OCaml 4.14.0

Un switch est une installation d'OCaml à une version choisie avec un ensemble de paquets. On crée un switch avec OCaml 4.14.0.

  • opam switch create 4.14.0

OCaml 5.0.0

Le code du répertoire concurrence est souvent accompagné d'une version utilisant les domains de OCaml 5.0 en commentaires (pour éviter les problèmes de compilations quand une version antérieure est utilisée).

Il est possible de tester OCaml 5.0 en version alpha avec une version d'opam supérieure à 2.1.0:

  • opam switch create 5.0.0~alpha0 --repo=default,alpha=git+https://github.com/kit-ty-kate/opam-alpha-repository.git

Paquets nécessaires à la compilation

opam install dune qcheck lwt cmdliner

Outils de développement supplémentaires

opam install ocaml-lsp-server ocamlformat

Github Codespaces

Github Codespace est une fonctionnalité de Github permettant d'obtenir un espace de développement pré-configuré. Utilisez le bouton "<> Code" puis "Create codespace on main" pour y accéder.

À partir de là, une machine virtuelle pré-configurée démarre et offre un environnement de développement basé sur VS Code. Il permet d'obtenir de façon très rapide une installation OCaml complète contenant le code souhaité.

Note: le service est payant pour la plupart des utilisateurs, mais il existe des offres gratuites pour professeurs et étudiants:

Un dépôt minimal ré-utilisable est disponible ici: https://github.com/TheLortex/ocaml-codespace. Créer un dépôt compatible avec Codespaces consiste simplement à avoir une configuration dans le dossier .devcontainer. Plus infos: https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/introduction-to-dev-containers.

Programmation système en OCaml

Lien externes

Les documents ci-dessous ont été utilisé pour la préparation de la présentation:

Code du minishell

  • Lien: /code/minishell/
  • Exécuter: cd code && dune exec ./minishell/minishell.exe

Implémentation d'un shell en OCaml. Utilisation des fonctionalités du module Unix:

  • descripteurs de fichiers / entrée et sortie standard
  • fork et execvp
  • dup2
  • pipes

Algorithmes d'exclusion mutuelle

Peterson

Boulangerie

QCheck

  • Cet example montre comment on peut automatiquement vérifier des propriétés sur une fonction arbitraire et trouver des contre-exemples minimaux.
  • Lien: /code/tp.qcheck/tp.ml
  • Exécuter: cd code && dune exec ./tp.qcheck/tp.exe

Liens divers

Questions ?

L'onglet discussion est disponible pour poser vos questions ! Nous somme prêts à venir vous aider pour la mise en place de cours et d'environnements de développement adaptés à la programmation en OCaml.

Tarides

Tarides est une start-up fondée en 2018 à Paris dont le but est de promouvoir l'utilisation d'OCaml, notamment pour les applications critiques. Elle participe à l'écosystème du langage de programmation en contribuant à de nombreux projets open source.

Plus d'infos sur le site https://tarides.com

About

Talks programmation système en Ocaml pour prof de prépa - Juillet 2022

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages