Mengkustomisasi Build dengan Release Profiles
Di Rust, release profiles (profil rilis) adalah profil yang sudah didefinisikan sebelumnya (predefined) dan bisa dikustomisasi dengan berbagai konfigurasi yang memungkinkan programmer buat punya lebih banyak kontrol atas berbagai opsi saat men-compile kode. Setiap profil dikonfigurasi secara independen satu sama lain.
Cargo punya dua profil utama: profil dev yang dipakai Cargo saat kita
menjalankan cargo build, dan profil release yang dipakai Cargo saat kita
menjalankan cargo build --release. Profil dev didefinisikan dengan
default yang bagus buat fase development (pengembangan), dan profil
release punya default yang bagus buat release builds (build versi rilis).
Nama-nama profil ini mungkin terasa familier dari output build yang pernah kita jalankan:
$ cargo build
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
$ cargo build --release
Finished `release` profile [optimized] target(s) in 0.32s
dev dan release adalah profil-profil berbeda yang dipakai sama compiler.
Cargo punya pengaturan default buat setiap profil yang berlaku kalau kita
belum menambahkan bagian [profile.*] secara eksplisit di file Cargo.toml
milik project kita. Dengan menambahkan bagian [profile.*] buat profil mana
pun yang mau kita kustomisasi, kita bisa menimpa (override) sebagian dari
pengaturan default-nya. Misalnya, ini adalah nilai default buat pengaturan
opt-level di profil dev dan release:
Nama file: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
Pengaturan opt-level mengontrol seberapa banyak optimasi yang bakal
diterapkan Rust ke kode kita, dengan rentang nilai dari 0 sampai 3. Menerapkan
lebih banyak optimasi bakal memperpanjang waktu kompilasi, jadi kalau kita
sedang dalam fase pengembangan dan sering men-compile kode kita, kita bakal
mau lebih sedikit optimasi agar kodenya bisa di-compile lebih cepat meskipun
kode akhirnya nanti berjalan lebih lambat. Oleh karena itu, nilai opt-level
default buat dev adalah 0. Saat kita sudah siap merilis kode kita, hal
terbaik adalah menghabiskan lebih banyak waktu buat kompilasi. Kita cuma
bakal men-compile dalam mode release sesekali saja, tapi kita bakal
menjalankan program yang sudah di-compile itu berkali-kali, jadi mode
release menukar waktu kompilasi yang lebih lama demi mendapatkan kode yang
berjalan lebih cepat. Itulah kenapa nilai opt-level default buat profil
release adalah 3.
Kita bisa menimpa pengaturan default dengan menambahkan nilai yang berbeda untuknya di Cargo.toml. Misalnya, kalau kita mau memakai tingkat optimasi 1 di profil development, kita bisa menambahkan dua baris ini ke file Cargo.toml project kita:
Nama file: Cargo.toml
[profile.dev]
opt-level = 1
Kode ini menimpa pengaturan default yaitu 0. Sekarang pas kita menjalankan
cargo build, Cargo bakal memakai nilai-nilai default buat profil dev
ditambah dengan kustomisasi kita pada opt-level. Karena kita menge-set
opt-level jadi 1, Cargo bakal menerapkan lebih banyak optimasi daripada
nilai default-nya, tapi tidak sebanyak di versi release build.
Buat melihat daftar lengkap dari opsi konfigurasi dan nilai default dari setiap profil, silakan cek dokumentasi Cargo.