Personnaliser les compilations avec les profils de publication

Dans Rust, les profils de publication sont des profils prédéfinis et personnalisables avec différentes configurations qui permettent au développeur d'avoir plus de contrôle sur différentes options de compilation du code. Chaque profil est configuré indépendamment des autres.

Cargo a deux profils principaux : le profil dev que cargo utilise lorsque vous lancez cargo build et le profil release (NdT : publication) que cargo utilise lorsque vous lancez cargo build --release. Le profil dev est défini avec de bons réglages par défaut pour le développement, et le profil release a de bons réglages par défaut de compilation pour la publication.

Ces noms de profils vous rappellent peut-être quelque chose sur la sortie standard de vos compilations :

$ cargo build
    Finished dev [unoptimized + debuginfo] target(s) in 0.0s
$ cargo build --release
    Finished release [optimized] target(s) in 0.0s

Les profils dev et release sont mentionnés dans cette sortie de compilation, pour indiquer les différents profils qu'utilise le compilateur.

Cargo a des réglages par défaut pour chacun des profils qui s'appliquent lorsqu'il n'y a pas de section [profile.*] dans le fichier Cargo.toml du projet. En ajoutant les sections [profile.*] pour chaque profil que vous souhaitez personnaliser, vous pouvez remplacer n'importe quel paramètre par défaut. Par exemple, voici les valeurs par défaut pour le paramètre opt-level des profils dev et release :

Fichier : Cargo.toml

[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

Le paramètre opt-level contrôle le nombre d'optimisations que Rust va appliquer à votre code, sur une échelle allant de 0 à 3. L'application d'un niveau plus haut d'optimisation signifie un allongement de la durée de compilation, donc si vous êtes en train de développer et que vous compilez souvent votre code, vous préférerez certainement avoir une compilation rapide même si le code qui en résulte s'exécute plus lentement. C'est la raison pour laquelle la valeur par défaut de opt-level pour dev est à 0. Lorsque vous serez prêt à publier votre code, il sera préférable de passer un peu plus de temps à le compiler. Vous ne compilerez en mode publication (NdT : release) qu'une seule fois, mais vous exécuterez le programme compilé plusieurs fois, donc le mode publication opte pour un temps de compilation plus long afin que le code s'exécute plus rapidement. C'est pourquoi le paramètre opt-level par défaut pour le profil release est à 3.

Vous pouvez remplacer n'importe quel paramètre par défaut en ajoutant une valeur différente dans Cargo.toml. Par exemple, si nous voulons utiliser le niveau 1 d'optimisation dans le profil de développement, nous pouvons ajouter ces deux lignes à notre fichier Cargo.toml :

Fichier : Cargo.toml

[profile.dev]
opt-level = 1

Ce code remplace le paramètre par défaut à 0. Maintenant, lorsque nous lançons cargo build, cargo va utiliser les réglages par défaut du profil dev ainsi que notre valeur personnalisée de opt-level. Comme nous avons réglé opt-level à 1, Cargo va appliquer plus d'optimisation que par défaut, mais pas autant que dans une compilation de publication.

Pour la liste complète des options de configuration et leurs valeurs par défaut pour chaque profil, référez-vous à la documentation de cargo.