Installation des outils de développement en OCaml et Rust

Cette page regroupe quelques instructions/suggestions pour travailler confortablement avec OCaml et Rust, que ce soit à l'ENS en salles info ou sur vos machines.

1. OCaml : installation des outils

1. A. Installation d'opam

Si le programme opam est déjà installé (lancer opam dans un terminal pour vérifier), passer à l'étape suivante. Normalement, c'est le cas sur les machines de l'ENS.

Sous Debian ou Ubuntu (récent)

Dans un terminal, exécuter (en tant que super-utilisateur) la commande

apt-get install opam

Sous OSX

Installer homebrew puis exécuter dans un terminal la commande

brew install opam

1. B. Initialisation d'opam et installation d'ocaml 4.14

Attention, plusieurs des commandes suivantes demandent confirmation avec une ligne du style:

> Do you want to continue? [Y/n]
Il faut répondre "y" (yes) pour valider, ou "n" (no) pour abandonner, puis un retour à la ligne (touche "Entrée"). La lettre en majuscule indique le choix par défaut si vous faites simplement "Entrée". Il faut donc lancer les commandes données ci-dessous une à une et vérifier si des questions vous sont posées !

Avant d'utiliser opam pour la première fois, il faut l'initialiser. Pour ce faire, lancer les commandes suivantes :

opam init
eval $(opam env)
On va maintenant créer un "switch" opam dédié au cours. Lancer les commandes suivantes :
opam switch create prog2 ocaml-base-compiler.4.14.0
eval $(opam env)

1. C. Installation du reste des outils OCaml

On peut maintenant installer des paquets opam avec la commande opam install. Installer les paquets qui seront utiles pour le cours :

opam install dune down ocamlformat
eval $(opam env)
Pour utiliser Down (amélioration du toplevel) :
echo -e '#use "topfind";;\n#use "down.top";;' > ~/.ocamlinit

1. D. Création et compilation d'un projet de test

On peut utiliser dune pour créer un projet de test contenant un programme "Hello world" :
dune init project td0_ocaml
Ceci va créer un dossier td0_ocaml dans le dossier courant, et l'initialiser avec un squelette minimal de projet. Le code est dans le fichier td0_ocaml/src/main.ml. Tester que tout compile bien :
cd td0_ocaml
dune build
dune exec bin/main.exe
Lors du développement, il est souvent utile d'exécuter dune en continu, de manière à ce qu'il recompile automatiquement le code à chaque modification. Pour ce faire, on lance :
dune build --watch

2. OCaml : configuration de l'éditeur

On peut travailler confortablement avec OCaml en utilisant un éditeur comme Emacs, Vim, ou Visual Studio Code. Dans le doute, utiliser Visual Studio Code et suivre les instructions correspondantes.

Visual Studio Code pour OCaml

Visual Studio Code est pré-installé sur les machines de l'ENS. Si vous utilisez votre propre machine, il faudra d'abord l'installer.

Commencer par installer un paquet opam dont VScode aura besoin :

opam install ocaml-lsp-server

Vous pouvez lancer VScode en cliquant sur son icône ou avec la commande

code

Cliquer sur l'icône et chercher l'extension "OCaml Platform" en tapant "OCaml" dans la barre de recherche. L'installer.

Cliquer sur "Open folder" et naviguer dans le dossier du projet de test td0_ocaml.

Ouvrir le fichier src/main.ml dans votre dossier de travail. Il devrait être reconnu comme un fichier OCaml (petite icône orange avec un chameau). Vérifier qu'il est typé à la volée et que les types/erreurs sont affichés.

Pour exécuter un programme OCaml, ouvrir un nouveau terminal (menu Terminal) puis y lancer la commande (par exemple) :

dune exec src/main.exe

Il est également possible d'envoyer tout le fichier à un toplevel OCaml avec Ctrl-A (tout sélectionner) puis Shift-Entrée.

Configuration de Visual Studio Code

C'est dans le menu File puis Preferences puis Settings, ou plus simplement Ctrl-,. Il y a une barre de recherche.

Pour OCaml, il est indispensable de modifier le comportement par défaut de la complétion automatique de VSCode, qui choisit la première complétion possible lorsque l'on appuie sur la touche Entrée. Sans cela, le mot-clé in en fin de ligne est automatiquement remplacé par in_channel_length ! Chercher l'option appelée Editor: Accept Suggestion On Enter et lui donner la valeur off.

Emacs pour OCaml

Si vous souhaitez utiliser emacs, vous devez installer les modes Tuareg et Merlin et ocp-indent pour Emacs avec la commande opam install tuareg merlin ocp-indent et suivre les instructions affichées à l'écran (voir section précédente).

La configuration d'Emacs se fait dans un fichier .emacs situé à la racine de votre compte. L'installation ci-dessus aura ajouté des lignes dans ce fichier. Au final, il pourra ressembler à quelque chose comme ça.

Le mode Merlin compile votre programme chaque fois que vous sauvez (pour signaler les erreurs), mais ne construit pas d'exécutable.

Pour construire un exécutable, vous pouvez appeler le compilateur OCaml directement depuis Emacs avec la commande Meta-x compile (Meta s'obtient avec la touche Alt ou Esc, au choix). Vous pouvez relancer la même commande avec Meta-x recompile. Si le compilateur OCaml signale une erreur, vous pouvez vous placer directement sur la position correspondante avec Meta-x next-error. Vous pouvez simplifier les raccourcis clavier de ces trois commandes en insérant par exemple les lignes suivantes dans votre fichier ~/.emacs :

(global-set-key [f5] 'compile)
(global-set-key [f6] 'recompile)
(global-set-key [f7] 'next-error)
C'est là une façon très efficace de travailler. (Et vous pourrez utiliser ces raccourcis pour toute autre chose que la programmation OCaml.)

Dans le source, on accède au type inféré par le compilateur avec Ctrl-c Ctrl-t et à la complétion avec M-x completion-at-point. Voir la documentation.

Si vous souhaitez des raccourcis Ctrl-C, Ctrl-V, Ctrl-X pour le copier-coller sous Emacs, vous pouvez ajouter la ligne

  (custom-set-variables '(cua-mode t nil (cua-base)))
à votre fichier .emacs pour activer le mode Cua pour Emacs. C'est fait dans le fichier .emacs proposé.

Vim pour OCaml

Pour utiliser Vim, vous devez installer le mode Merlin pour Vim avec la commande opam install merlin. Ajouter ensuite les lignes suivantes dans votre fichier de configuration Vim (par exemple ~/.vimrc) :

let g:opamshare = substitute(system('opam config var share'),'\n$','','''')
execute "set rtp+=" . g:opamshare . "/merlin/vim"

filetype plugin on
filetype indent off
syntax enable
Les deux premières lignes permettent à Vim de retrouver l'emplacement des fichiers Merlin.

On peut lancer une compilation avec :make (si la compilation est assurée par un Makefile). En cas d'erreur, le curseur sera placé à l'endroit correspondant.

Dans le source, on accède au type inféré par le compilateur avec \ t et à la complétion avec Ctrl-x Ctrl-o. Voir la documentation.

3. Rust : installation des outils

3. A. Installation de rust et cargo via rustup

Le plus simple est d'installer un environnement de développement Rust via l'outil Rustup, qui installe à la fois un compilateur Rust, et le gestionnaire de paquets Cargo. Ceci peut se faire à l'aide de la commande suivante :

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Puis en acceptant la configuration par défaut en tapant "1" puis "Entrée". Il faut alors charger les nouvelles variables d'environnement:
source "$HOME/.cargo/env"

3. B. Création et compilation d'un projet de test

On peut alors créer un nouveau projet avec la commande

cargo new td0-rust
qui crée un nouveau dossier td0-rust, avec une arborescence pour un simple programme "Hello, world". Le code est dans le fichier td0-rust/src/main.rs. On peut alors le compiler avec la commande :
cd td0-rust
cargo build
Et l'exécuter avec la commande :
cargo run

3. C. Exercices rustlings

On demandera de faire quelques exercices liés à Rust chaque semaine, appelés rustlings. On peut les installer avec la commande suivante :

curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh
Ou, pour les installer dans un dossier de son choix :
curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh | bash -s mondossier/
Ouvrir ensuite le dossier téléchargé dans son éditeur, et lire le fichier README.md (section "Doing exercises") pour commencer.

4. Rust : configuration de l'éditeur

Visual Studio Code pour Rust

Pour développer en Rust dans Visual Studio Code, il faut installer l'extension "rust-analyzer". Comme pour OCaml, il faut chercher cette extension dans le menu accessible avec l'icône .

Emacs pour Rust

Il faut installer le mode Rust pour Emacs, en suivant les instructions décrites sur cette page.


Cette page est fortement inspirée de la page du cours de compilation de Jean-Christophe Filliâtre. Merci à lui.

Merci à Basile Clément, Stéphane Lengrand, Kim Nguyen et Andrei Paskevich pour leur aide dans la préparation de cette page.


retour à la page du cours