পরিশিষ্ট ঙ - এডিশন
অধ্যায় ১-এ আপনি দেখেছেন যে cargo new
আপনার Cargo.toml ফাইলে এডিশন সম্পর্কে কিছু মেটাডেটা যোগ করে। এই পরিশিষ্টে আলোচনা করা হবে এর অর্থ কী!
Rust ল্যাঙ্গুয়েজ এবং কম্পাইলারের একটি ছয়-সัปতাহের রিলিজ সাইকেল রয়েছে, যার মানে ব্যবহারকারীরা ক্রমাগত নতুন ফিচারের একটি স্রোত পান। অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজগুলো কম সময়ে বড় পরিবর্তন রিলিজ করে; Rust ঘন ঘন ছোট আপডেট রিলিজ করে। কিছু সময় পর, এই সমস্ত ছোট ছোট পরিবর্তনগুলো একত্রিত হয়ে বড় আকার ধারণ করে। কিন্তু এক রিলিজ থেকে অন্য রিলিজে, পেছনে ফিরে বলা কঠিন হতে পারে, “বাহ, Rust 1.10 এবং Rust 1.31-এর মধ্যে, Rust অনেক বদলে গেছে!”
প্রতি তিন বছর বা তার কাছাকাছি সময়ে, Rust টিম একটি নতুন Rust এডিশন তৈরি করে। প্রতিটি এডিশন যেসব ফিচার এসেছে সেগুলোকে সম্পূর্ণ আপডেট করা ডকুমেন্টেশন এবং টুলিংসহ একটি স্পষ্ট প্যাকেজে একত্রিত করে। নতুন এডিশনগুলো স্বাভাবিক ছয়-সัปতাহের রিলিজ প্রক্রিয়ার অংশ হিসেবেই পাঠানো হয়।
এডিশনগুলো বিভিন্ন মানুষের জন্য বিভিন্ন উদ্দেশ্যে কাজ করে:
- সক্রিয় Rust ব্যবহারকারীদের জন্য, একটি নতুন এডিশন ক্রমবর্ধমান পরিবর্তনগুলোকে একটি সহজবোধ্য প্যাকেজে একত্রিত করে।
- যারা ব্যবহারকারী নন, তাদের জন্য একটি নতুন এডিশন সংকেত দেয় যে কিছু বড় অগ্রগতি এসেছে, যা Rust-কে আরেকবার দেখার মতো করে তুলতে পারে।
- যারা Rust ডেভেলপ করছেন, তাদের জন্য একটি নতুন এডিশন পুরো প্রজেক্টের জন্য একটি সমাবেশের বিন্দু প্রদান করে।
এই লেখার সময়, চারটি Rust এডিশন উপলব্ধ রয়েছে: Rust 2015, Rust 2018, Rust 2021 এবং Rust 2024। এই বইটি Rust 2024 এডিশনের ইডিয়ম ব্যবহার করে লেখা হয়েছে।
Cargo.toml ফাইলের edition
কী (key) নির্দেশ করে যে কম্পাইলার আপনার কোডের জন্য কোন এডিশন ব্যবহার করবে। যদি কী-টি موجود না থাকে, তবে Rust ব্যাকওয়ার্ড কম্প্যাটিবিলিটির কারণে 2015
-কে এডিশন ভ্যালু হিসেবে ব্যবহার করে।
প্রতিটি প্রজেক্ট ডিফল্ট 2015 এডিশন ছাড়া অন্য কোনো এডিশন বেছে নিতে পারে। এডিশনগুলোতে ইনকম্প্যাটিবল পরিবর্তন থাকতে পারে, যেমন একটি নতুন কীওয়ার্ড অন্তর্ভুক্ত করা যা কোডের আইডেন্টিফায়ারের সাথে কনফ্লিক্ট করে। তবে, আপনি যদি সেই পরিবর্তনগুলো বেছে না নেন, তবে আপনার কোড কম্পাইল হতে থাকবে এমনকি আপনি যে Rust কম্পাইলার সংস্করণ ব্যবহার করছেন তা আপগ্রেড করার পরেও।
সমস্ত Rust কম্পাইলার সংস্করণ সেই কম্পাইলারের রিলিজে আগে বিদ্যমান যেকোনো এডিশন সমর্থন করে, এবং তারা যেকোনো সমর্থিত এডিশনের ক্রেটগুলোকে একসাথে লিঙ্ক করতে পারে। এডিশন পরিবর্তনগুলো শুধুমাত্র কম্পাইলার প্রাথমিকভাবে কোড পার্স করার পদ্ধতিকে প্রভাবিত করে। অতএব, যদি আপনি Rust 2015 ব্যবহার করেন এবং আপনার একটি ডিপেন্ডেন্সি Rust 2018 ব্যবহার করে, আপনার প্রজেক্ট কম্পাইল হবে এবং সেই ডিপেন্ডেন্সি ব্যবহার করতে সক্ষম হবে। বিপরীত পরিস্থিতি, যেখানে আপনার প্রজেক্ট Rust 2018 ব্যবহার করে এবং একটি ডিপেন্ডেন্সি Rust 2015 ব্যবহার করে, সেটাও কাজ করবে।
স্পষ্ট করে বলতে গেলে: বেশিরভাগ ফিচার সব এডিশনেই উপলব্ধ থাকবে। যেকোনো Rust এডিশন ব্যবহারকারী ডেভেলপাররা নতুন স্টেবল রিলিজ হওয়ার সাথে সাথে উন্নতি দেখতে থাকবেন। তবে, কিছু ক্ষেত্রে, প্রধানত যখন নতুন কীওয়ার্ড যোগ করা হয়, তখন কিছু নতুন ফিচার শুধুমাত্র পরবর্তী এডিশনগুলোতে উপলব্ধ হতে পারে। এই ধরনের ফিচারগুলোর সুবিধা নিতে হলে আপনাকে এডিশন পরিবর্তন করতে হবে।
আরও বিস্তারিত জানার জন্য, এডিশন গাইড হলো এডিশন সম্পর্কে একটি সম্পূর্ণ বই যা এডিশনগুলোর মধ্যে পার্থক্য গণনা করে এবং cargo fix
-এর মাধ্যমে কীভাবে স্বয়ংক্রিয়ভাবে আপনার কোড একটি নতুন এডিশনে আপগ্রেড করতে হয় তা ব্যাখ্যা করে।