Personalizarea build-urilor cu profile de release
În Rust, profilele de release (release profiles) sunt profile predefinite și customizabile care oferă programatorului control sporit asupra diverselor opțiuni de compilare. Fiecare profil este configurat independent față de celelalte.
Cargo pune la dispoziție două profile principale: profilul dev
, activat de Cargo la executarea comenzii cargo build
, și profilul release
, folosit de Cargo când lansezi cargo build --release
. Profilul dev
este setat cu valori implicite optimizate pentru dezvoltare, iar profilul release
are valori implicite optimizate pentru versiunile de publicare finală.
S-ar putea să recunoști aceste nume de profile din afișajele build-urilor efectuate:
$ cargo build
Finished dev [unoptimized + debuginfo] target(s) in 0.0s
$ cargo build --release
Finished release [optimized] target(s) in 0.0s
dev
și release
sunt aceste profile diferite utilizate de compilatorul Rust.
Cargo are o serie de setări standard pentru fiecare profil, care intră în vigoare dacă nu există secțiuni [profile.*]
definite explicit în fișierul Cargo.toml. Personalizând secțiunile [profile.*]
, poți modifica orice subansamblu din aceste setări standard. Iată valorile implicite pentru setarea opt-level
ale profilelor dev
și release
:
Filename: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
Parametrul opt-level
determină numărul de optimizări aplicate codului tău de către Rust, cu o gamă de la 0 la 3. Aplicarea mai multor optimizări prelungește timpul de compilare, de aceea, în faza de dezvoltare unde codul este compilat frecvent, este de preferat să folosești mai puține optimizări pentru a avea un timp de compilare scurt, chiar dacă codul executabil va fi mai lent. Prin urmare, valoarea implicită a opt-level
pentru profilul dev
este 0
. În schimb, când ești pregătit să lansezi codul, este recomandat să aloci mai mult timp compilării. Codul în modul release va fi compilat o singură dată, însă va fi rulat de nenumărate ori, preferându-se astfel un timp de compilare mai mare pentru a obține un cod executabil mai rapid. Din acest motiv, valoarea implicită pentru opt-level
în profilul release
este 3
.
Poți modifica o setare implicită adăugând o valoare diferită în Cargo.toml. Să zicem că dorim să utilizăm nivelul de optimizare 1 în profilul de dezvoltare. În acest caz, putem adăuga următoarele două linii în fișierul Cargo.toml al proiectului:
Numele fișierului: Cargo.toml
[profile.dev]
opt-level = 1
Codul de mai sus suprascrie setarea implicită de 0
. Acum, la executarea comenzii cargo build
, Cargo va implementa valorile implicite ale profilului dev
împreună cu ajustarea făcută de noi la opt-level
. Setând opt-level
la valoarea 1
, Cargo va aplica mai multe optimizări decât cele implicite, dar mai puține decât într-o compilare destinată profilului release.
Pentru lista completă a opțiunilor de configurare și a valorilor implicite pentru fiecare profil, consultă documentația Cargo.