Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.