রিলিজ প্রোফাইলের মাধ্যমে বিল্ড কাস্টমাইজ করা
Rust-এ, রিলিজ প্রোফাইল (release profiles) হলো পূর্ব-নির্ধারিত এবং কাস্টমাইজযোগ্য প্রোফাইল যেখানে বিভিন্ন কনফিগারেশন থাকে। এটি একজন প্রোগ্রামারকে কোড কম্পাইল করার বিভিন্ন অপশনের উপর আরও বেশি নিয়ন্ত্রণ দেয়। প্রতিটি প্রোফাইল অন্যগুলো থেকে স্বাধীনভাবে কনফিগার করা হয়।
কার্গোর দুটি প্রধান প্রোফাইল আছে: dev প্রোফাইল, যা cargo build কমান্ড চালালে ব্যবহৃত হয়, এবং release প্রোফাইল, যা cargo build --release কমান্ড চালালে ব্যবহৃত হয়। dev প্রোফাইলটি ডেভেলপমেন্টের জন্য উপযুক্ত ডিফল্ট সেটিংস দিয়ে তৈরি, এবং release প্রোফাইলে রিলিজ বিল্ডের জন্য উপযুক্ত ডিফল্ট সেটিংস থাকে।
এই প্রোফাইলের নামগুলো আপনার বিল্ডের আউটপুট থেকে পরিচিত হতে পারে:
$ 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 এবং release এই ভিন্ন প্রোফাইলগুলো কম্পাইলার ব্যবহার করে।
কার্গোর প্রতিটি প্রোফাইলের জন্য ডিফল্ট সেটিংস রয়েছে, যা আপনার প্রজেক্টের Cargo.toml ফাইলে [profile.*] সেকশন যোগ না করা পর্যন্ত প্রযোজ্য থাকে। আপনি যে প্রোফাইলটি কাস্টমাইজ করতে চান, তার জন্য [profile.*] সেকশন যোগ করে ডিফল্ট সেটিংসের যেকোনো অংশকে ওভাররাইড করতে পারেন। উদাহরণস্বরূপ, এখানে dev এবং release প্রোফাইলের জন্য opt-level সেটিংয়ের ডিফল্ট ভ্যালুগুলো দেওয়া হলো:
ফাইলের নাম: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
opt-level সেটিংটি আপনার কোডে Rust কতগুলো অপটিমাইজেশন প্রয়োগ করবে তা নিয়ন্ত্রণ করে, যার মান ০ থেকে ৩ পর্যন্ত হতে পারে। বেশি অপটিমাইজেশন প্রয়োগ করলে কম্পাইলিংয়ের সময় বেড়ে যায়, তাই ডেভেলপমেন্টের সময় যখন আপনি ঘন ঘন কোড কম্পাইল করেন, তখন দ্রুত কম্পাইল করার জন্য কম অপটিমাইজেশন দরকার হয়, যদিও এর ফলে তৈরি হওয়া কোড কিছুটা ধীরগতিতে চলে। একারণে, dev প্রোফাইলের জন্য ডিফল্ট opt-level হলো 0। যখন আপনি আপনার কোড রিলিজ করার জন্য প্রস্তুত হবেন, তখন কম্পাইল করতে বেশি সময় ব্যয় করা ভালো। আপনি রিলিজ মোডে শুধু একবার কম্পাইল করবেন, কিন্তু কম্পাইল করা প্রোগ্রামটি অনেকবার চালাবেন, তাই রিলিজ মোড দ্রুতগতির কোডের জন্য দীর্ঘ কম্পাইল সময় বেছে নেয়। এ কারণেই release প্রোফাইলের ডিফল্ট opt-level হলো 3।
আপনি Cargo.toml ফাইলে কোনো ডিফল্ট সেটিংয়ের জন্য ভিন্ন ভ্যালু যোগ করে সেটিকে ওভাররাইড করতে পারেন। উদাহরণস্বরূপ, আমরা যদি ডেভেলপমেন্ট প্রোফাইলে অপটিমাইজেশন লেভেল 1 ব্যবহার করতে চাই, তাহলে আমরা আমাদের প্রজেক্টের Cargo.toml ফাইলে এই দুটি লাইন যোগ করতে পারি:
ফাইলের নাম: Cargo.toml
[profile.dev]
opt-level = 1
এই কোডটি 0-এর ডিফল্ট সেটিংকে ওভাররাইড করে। এখন আমরা যখন cargo build চালাব, কার্গো dev প্রোফাইলের ডিফল্ট সেটিংসের সাথে আমাদের কাস্টমাইজ করা opt-level ব্যবহার করবে। যেহেতু আমরা opt-level কে 1 সেট করেছি, কার্গো ডিফল্টের চেয়ে বেশি অপটিমাইজেশন প্রয়োগ করবে, কিন্তু রিলিজ বিল্ডের মতো অত বেশি নয়।
প্রতিটি প্রোফাইলের জন্য কনফিগারেশন অপশন এবং ডিফল্টগুলোর সম্পূর্ণ তালিকার জন্য, কার্গোর ডকুমেন্টেশন দেখুন।