সফটওয়্যার নির্মাণ স্বয়ংক্রিয় করার জন্য মেসন একটি সফ্টওয়্যার টুল। এটি পাইথনে লেখা বিনামূল্যে এবং ওপেন সোর্স।
সম্প্রতি মেসন ১.৪ বিল্ড সিস্টেমের নতুন সংস্করণ প্রকাশের ঘোষণা করা হয়েছে। এই সংস্করণে এফএস মডিউলের নির্দিষ্ট কিছু ফাংশনের জন্য উন্নত সাপোর্টের পাশাপাশি সামঞ্জস্যতার উন্নতি, নতুন ফিচার এবং আরও অনেক কিছু রয়েছে।
যারা মেসন (Meson) সম্পর্কে জানেন না, তাদের জন্য বলছি, এটি একটি বিল্ড সিস্টেম যা এক্স.অর্গ সার্ভার (X.Org Server), মেসা (Mesa), লাইটটিপিডি (Lighttpd), সিস্টেমডি (systemd), জি-স্ট্রিমার (GStreamer), ওয়েল্যান্ড (Wayland), জিনোম (GNOME), এবং জিটিকে (GTK)-এর মতো উল্লেখযোগ্য প্রজেক্টগুলোতে ব্যবহৃত হয়। এর প্রধান লক্ষ্য হলো একটি দ্রুত এবং ব্যবহারকারী-বান্ধব বিল্ড প্রক্রিয়া প্রদান করা। এটি ডিফল্টভাবে নিনজা টুলকিট (Ninja toolkit) ব্যবহার করে, তবে এক্সকোড (Xcode) এবং ভিজ্যুয়াল স্টুডিও (Visual Studio)-র মতো অন্যান্য ব্যাকএন্ডের সাথেও সামঞ্জস্যপূর্ণ।
এই সিস্টেমে একটি সমন্বিত ক্রস-প্ল্যাটফর্ম ডিপেন্ডেন্সি ম্যানেজার রয়েছে যা ডিস্ট্রিবিউশনগুলোর জন্য প্যাকেজ তৈরি করাকে সহজ করে তোলে। কম্পাইলেশন নিয়মগুলো একটি নির্দিষ্ট, সহজবোধ্য ভাষায় সংজ্ঞায়িত করা থাকে, ফলে সেগুলো লেখার জন্য প্রয়োজনীয় সময় কমে যায়।
মেসন সি, সি++, ফোরট্রান, জাভা এবং রাস্টের মতো একাধিক ভাষায় নির্মাণ প্রকল্প সমর্থন করে এবং একটি ক্রমবর্ধমান বিল্ড মোড অফার করে যা শুধুমাত্র শেষ বিল্ডের পর থেকে পরিবর্তন দ্বারা প্রভাবিত উপাদানগুলিকে পুনর্নির্মাণ করে। অতিরিক্তভাবে, মেসন পুনরাবৃত্তিযোগ্য বিল্ড তৈরি করতে পারে, এটি নিশ্চিত করে যে বিভিন্ন পরিবেশে বিল্ড চালানো সম্পূর্ণরূপে অভিন্ন এক্সিকিউটেবল তৈরি করে।
মেসন 1.4 এর প্রধান নতুনত্ব
মেসন ১.৪-এর এই নতুন সংস্করণে FS মডিউলের জন্য যুক্ত হওয়া সমর্থনের উপর আলোকপাত করা হয়েছে, যা এখন fs.name, fs.parent, fs.replace_suffix এবং fs.stem ফাংশনগুলিতে build_tgt ও custom_tgt কম্পাইলেশন টার্গেট অবজেক্টের পাশাপাশি একটি কম্পাইলেশন টার্গেট ইনডেক্স (custom_idx) সমর্থন করে।
এই নতুন সংস্করণের আরেকটি উল্লেখযোগ্য পরিবর্তন হলো, মেসন এখন সিমেক-ভিত্তিক সাবপ্রজেক্টগুলো থেকে প্রজেক্ট ভার্সন পড়তে পারে। এর ফলে, কোনো সিমেক সাবপ্রজেক্ট অ্যাক্সেস করার সময় ভার্সন সংক্রান্ত সীমাবদ্ধতাগুলো সঠিকভাবে যাচাই করা নিশ্চিত হয়।
এছাড়াও, লেখা হতে থাকা ফাইলগুলোর জন্য ডিরেক্টরি কাঠামো তৈরি করার বিকল্পটি নির্বাচন করতে, এখন `qt4`, `qt5`, এবং `qt6` মডিউলগুলোর `compile_ui`, `compile_moc`, এবং preprocessing ফাংশনগুলোতে `preserve_paths` আর্গুমেন্টটি যোগ করা হয়েছে।
এছাড়াও উল্লেখ্য যে debugstl সক্রিয় থাকা অবস্থায় stldebug-এ Clang সমর্থন যোগ করা হয়েছিল, env অবজেক্টে unset() পদ্ধতি চালু করা হয়েছিল এবং ফাইলের সম্পূর্ণ পাথ পেতে ফাইল অবজেক্টে full_path() পদ্ধতি যোগ করা হয়েছিল।
নতুন কাস্টম ডিপেন্ডেন্সি হিসেবে numpy-config টুল এবং pkg-config-এর সাপোর্ট যুক্ত করা হয়েছে । এটি NumPy 2.0.0 থেকে পাওয়া যাবে। NumPy ইনস্টল হয়ে গেলেই numpy-config-এর সাপোর্ট স্বয়ংক্রিয়ভাবে কাজ করবে। তবে, pkg-config ফাইলটি Python সাইট প্যাকেজের মধ্যে অবস্থিত, যার মানে হলো PKG_CONFIG_PATH কনফিগার না করে এটি তাৎক্ষণিকভাবে ব্যবহার করা যাবে না।
এই নতুন সংস্করণের অন্যান্য উল্লেখযোগ্য পরিবর্তনগুলোর মধ্যে রয়েছে:
- ndebug কনফিগারেশনের মাধ্যমে C++ stdlib-এ দাবী চেক (GLIBCXX_ASSERTIONS) নিয়ন্ত্রণ করার ক্ষমতা।
- qt মডিউল ফাংশনে preserve_pathsun কীওয়ার্ড আর্গুমেন্ট যোগ করা হয়েছে
- compiler.preprocess() এর জন্য নির্ভরশীল লক্ষ্যমাত্রা উল্লেখ করা এখন সম্ভব। প্রিপ্রসেসিং শুরু হওয়ার আগে এই লক্ষ্যগুলি অবশ্যই তৈরি করা উচিত।
- Bindgen বাইন্ডিং জেনারেটর এখন C++ হেডার ফাইল নির্ধারণের জন্য Meson heuristics-কে সমর্থন করে।
- বিন্ডজেনের জন্য ভাষা সেটিংস ওভাররাইড করার ক্ষমতা যুক্ত করা হয়েছে।
- মেমরি স্যানিটাইজারের মতো স্যানিটাইজার চালানোর সময় ত্রুটির সম্মুখীন হওয়ার পরে পরীক্ষাগুলি ডিফল্টরূপে ব্যর্থ হয়৷
- C6000 CPU পরিবারের জন্য Texas Instruments C/C++ কম্পাইলারের জন্য সমর্থন যোগ করা হয়েছে।
অবশেষে, আপনি যদি আরও জানতে আগ্রহী হন, তাহলে নিচের লিঙ্কে বিস্তারিত তথ্য পেয়ে যাবেন ।
লিনাক্সে মেসন কিভাবে ইনস্টল করবেন?
যারা তাদের সিস্টেমে এই বিল্ড সিস্টেম ইন্সটল করতে আগ্রহী তাদের জন্য, আমরা নীচে শেয়ার করা নির্দেশাবলী অনুসরণ করে তা করতে পারেন।
তাদের জানা উচিত যে মেসন PyPi তে উপলব্ধ, তাই এটি কমান্ডের সাথে ইনস্টল করা যেতে পারে:
pip3 install meson
একটি নোট হিসাবে, আপনার জানা উচিত যে পিপ ইনস্টল করার জন্য টাইপ করার সঠিক কমান্ডটি সিস্টেমের মধ্যে পরিবর্তিত হতে পারে, তাই এটি সুপারিশ করা হয় যে আপনি পাইপ-এর পাইথন 3 সংস্করণ ব্যবহার করুন।