Release Profile-এর সাহায্যে Build Customize করা
Rust-এ, release profile গুলো হল predefined এবং customizable profile যেগুলোতে different configuration থাকে, যা একজন programmer-কে কোড compile করার জন্য বিভিন্ন option-এর উপর আরও বেশি control রাখার সুযোগ দেয়। প্রতিটি profile একে অপরের থেকে independently configure করা হয়।
Cargo-র দুটি প্রধান profile রয়েছে: dev
প্রোফাইল যা Cargo ব্যবহার করে যখন আপনি cargo build
চালান এবং release
প্রোফাইল যা Cargo ব্যবহার করে যখন আপনি cargo build --release
চালান। Dev
প্রোফাইলটি development-এর জন্য ভালো default সহ define করা হয়েছে, এবং release
প্রোফাইলে release build-গুলোর জন্য ভালো default রয়েছে।
এই profile-গুলোর নাম আপনার build-গুলোর output থেকে পরিচিত হতে পারে:
$ 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
হল compiler-এর ব্যবহৃত এই different profile গুলো।
Cargo-র প্রতিটি profile-এর জন্য default setting রয়েছে যা প্রযোজ্য হয় যখন আপনি project-এর Cargo.toml ফাইলে explicitly কোনো [profile.*]
section যোগ করেননি। আপনি যে কোনো profile customize করতে চান তার জন্য [profile.*]
section যোগ করে, আপনি default setting গুলোর যেকোনো subset override করেন। উদাহরণস্বরূপ, dev
এবং release
profile-গুলোর জন্য opt-level
setting-এর default value গুলো এখানে দেওয়া হল:
Filename: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
Opt-level
setting টি আপনার কোডে Rust যে সংখ্যক optimization apply করবে তা নিয়ন্ত্রণ করে, যার range হল 0 থেকে 3। আরও optimization apply করলে compiling time বাড়ে, তাই আপনি যদি development-এ থাকেন এবং প্রায়শই আপনার কোড compile করেন, তাহলে resulting code ধীরে চললেও আপনি দ্রুত compile করার জন্য কম optimization চাইবেন। তাই dev
-এর জন্য default opt-level
হল 0
। যখন আপনি আপনার কোড release করার জন্য প্রস্তুত হন, তখন compile করতে আরও বেশি সময় ব্যয় করা সবচেয়ে ভালো। আপনি release mode-এ শুধুমাত্র একবার compile করবেন, কিন্তু আপনি compiled program টি বহুবার চালাবেন, তাই release mode দ্রুততর কোডের জন্য দীর্ঘতর compile time-এর trade-off করে। সেই কারণেই release
প্রোফাইলের জন্য ডিফল্ট opt-level
হল 3
।
আপনি Cargo.toml-এ এটির জন্য একটি different value যোগ করে একটি default setting override করতে পারেন। উদাহরণস্বরূপ, যদি আমরা development profile-এ optimization level 1 ব্যবহার করতে চাই, তাহলে আমরা আমাদের প্রোজেক্টের Cargo.toml ফাইলে এই দুটি লাইন যোগ করতে পারি:
Filename: Cargo.toml
[profile.dev]
opt-level = 1
এই কোডটি 0
-এর default setting টিকে override করে। এখন যখন আমরা cargo build
চালাই, তখন Cargo dev
প্রোফাইলের জন্য default গুলো ব্যবহার করবে এবং তার সাথে opt-level
-এ আমাদের customization যোগ করবে। যেহেতু আমরা opt-level
কে 1
-এ set করেছি, তাই Cargo default-এর চেয়ে বেশি optimization apply করবে, কিন্তু release build-এর মতো ততটা নয়।
প্রতিটি প্রোফাইলের জন্য configuration option এবং default-গুলোর complete list-এর জন্য, Cargo’s documentation দেখুন।