পরিশিষ্ট E - এডিশন (Editions)

প্রথম অধ্যায়ে, আপনি দেখেছেন যে 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 কী নির্দেশ করে যে কম্পাইলার আপনার কোডের জন্য কোন এডিশন ব্যবহার করবে। যদি কী-টি বিদ্যমান না থাকে, তাহলে পশ্চাৎগামী সামঞ্জস্যতার কারণে Rust 2015 কে এডিশন ভ্যালু হিসাবে ব্যবহার করে।

প্রতিটি প্রোজেক্ট ডিফল্ট 2015 এডিশন ছাড়া অন্য কোনো এডিশন বেছে নিতে পারে। এডিশনগুলিতে বেমানান পরিবর্তন থাকতে পারে, যেমন একটি নতুন কীওয়ার্ড অন্তর্ভুক্ত করা যা কোডের আইডেন্টিফায়ারের সাথে বিরোধ করে। যাইহোক, আপনি যদি সেই পরিবর্তনগুলিতে অপ্ট ইন না করেন, তাহলে আপনি যে Rust কম্পাইলার ভার্সন ব্যবহার করছেন তা আপগ্রেড করলেও আপনার কোড কম্পাইল হতে থাকবে।

সমস্ত Rust কম্পাইলার ভার্সন সেই কম্পাইলারের প্রকাশের আগে বিদ্যমান যেকোনো এডিশনকে সমর্থন করে এবং তারা যেকোনো সমর্থিত এডিশনের ক্রেটগুলিকে একসাথে লিঙ্ক করতে পারে। এডিশন পরিবর্তনগুলি শুধুমাত্র কম্পাইলার প্রাথমিকভাবে কোড পার্স করার পদ্ধতিকে প্রভাবিত করে। অতএব, আপনি যদি Rust 2015 ব্যবহার করেন এবং আপনার একটি ডিপেন্ডেন্সি Rust 2018 ব্যবহার করে, তাহলে আপনার প্রোজেক্ট কম্পাইল হবে এবং সেই ডিপেন্ডেন্সি ব্যবহার করতে পারবে। বিপরীত পরিস্থিতি, যেখানে আপনার প্রোজেক্ট Rust 2018 ব্যবহার করে এবং একটি ডিপেন্ডেন্সি Rust 2015 ব্যবহার করে, তাও কাজ করে।

স্পষ্ট করার জন্য: বেশিরভাগ ফিচার সমস্ত এডিশনে উপলব্ধ থাকবে। যেকোনো Rust এডিশন ব্যবহারকারী ডেভেলপাররা নতুন স্থিতিশীল রিলিজ হওয়ার সাথে সাথে উন্নতি দেখতে থাকবেন। যাইহোক, কিছু ক্ষেত্রে, প্রধানত যখন নতুন কীওয়ার্ড যোগ করা হয়, কিছু নতুন ফিচার শুধুমাত্র পরবর্তী এডিশনগুলিতে উপলব্ধ হতে পারে। আপনি যদি এই ধরনের ফিচারগুলির সুবিধা নিতে চান তবে আপনাকে এডিশন পরিবর্তন করতে হবে।

আরও বিশদ বিবরণের জন্য, Edition Guide হল এডিশন সম্পর্কে একটি সম্পূর্ণ বই যা এডিশনগুলির মধ্যে পার্থক্য গণনা করে এবং cargo fix-এর মাধ্যমে কীভাবে স্বয়ংক্রিয়ভাবে আপনার কোডকে একটি নতুন এডিশনে আপগ্রেড করবেন তা ব্যাখ্যা করে।