এক বছরের তীব্র উন্নয়নের পর, «GCC 15.1» এর নতুন সংস্করণ প্রকাশের ঘোষণা করা হয়েছে, যা এই জনপ্রিয় ওপেন সোর্স কম্পাইলার স্যুটের নতুন 15.x শাখার মধ্যে প্রথম স্থিতিশীল সংস্করণ হিসেবে অবস্থান করছে।
এই রিলিজটি কেবল আনুষ্ঠানিকভাবে নতুন GCC 15 সিরিজ চালু করে না, বরং GCC 16 উন্নয়নের প্রস্তুতির সূচনাও করে, কারণ 16.0 শাখাটি সমান্তরালভাবে তৈরি করা হয়েছে এবং পরবর্তী প্রধান রিলিজ, GCC 16.1 এর ভিত্তিপ্রস্তর স্থাপন করবে।
জিসিসি 15.1 প্রধান নতুন বৈশিষ্ট্য
এই নতুন সংস্করণের সবচেয়ে উল্লেখযোগ্য পরিবর্তনগুলির মধ্যে একটি হল GCC 15.1 C23 মান গ্রহণ করে সি কোড কম্পাইল করার জন্য ডিফল্ট হিসেবে, -std=gnu23 বিকল্পটি ব্যবহার করে। এই আপডেটটি ডিফল্টরূপে ব্যবহৃত পূর্ববর্তী স্ট্যান্ডার্ড, C17 (-std=gnu17) প্রতিস্থাপন করে এবং নতুন স্ট্যান্ডার্ডের বেশ কয়েকটি নতুন বৈশিষ্ট্য প্রবর্তন করে। তাদের মধ্যে রয়েছে ধ্রুবক nullptr, টাইপ _BitInt(n), এবং কীওয়ার্ড bool, true, এবং false, যা লিগ্যাসি কোডে বিদ্যমান শনাক্তকারীদের সাথে দ্বন্দ্ব সৃষ্টি করতে পারে।
GCC 15.1-এ অন্তর্ভুক্ত আরেকটি নতুন বৈশিষ্ট্য হল #বাইনারি ডেটা এম্বেড করার নির্দেশিকা, এবং অ-অনুপাতিক এবং পুনরুৎপাদনযোগ্য বৈশিষ্ট্য, যা কার্যকরকরণের ক্রম এবং ধারাবাহিক ফলাফল নির্ধারণের উপর অধিকতর নিয়ন্ত্রণ প্রদান করে। অতিরিক্তভাবে, ভবিষ্যতের C2Y স্ট্যান্ডার্ডের উপাদানগুলি বাস্তবায়িত হয়েছে, যেমন if শর্তের মধ্যে ঘোষিত চলক, কেস স্টেটমেন্টে মান পরিসর, কাল্পনিক প্রত্যয় i এবং j, এবং জটিল সংখ্যাগুলিতে প্রয়োগ করা ++ এবং — অপারেটরগুলির জন্য সমর্থন।
C++ এবং ভবিষ্যতের C++26-এর উন্নতি
C++ ভাষার ক্ষেত্রে, এর নতুন সংস্করণ GCC 15.1 C++26 স্ট্যান্ডার্ডের জন্য আলোচিত বৈশিষ্ট্যগুলি বাস্তবায়ন করে, "বন্ধু" অপারেটরের মতো নতুন বৈশিষ্ট্যগুলি চালু করা হয়েছে, নতুন অপারেটরের ভেরিয়েন্টগুলির সাথে constexpr ব্যবহার করা হয়েছে, এবং গ্যারান্টিযুক্ত টেল রিকার্সনের জন্য musttail-এর মতো স্ট্রাকচার্ড লিঙ্ক এবং অ্যাট্রিবিউটগুলির জন্য সিনট্যাক্সে উন্নতি করা হয়েছে।
C++23 সাপোর্টও সম্প্রসারিত হয়েছে এক্সপোর্ট ব্যবহারের জন্য নতুন নিয়ম, অস্থায়ী বস্তু পরিচালনার উন্নতি এবং libstdc++ এ std এবং std.compat মডিউলগুলির পরীক্ষামূলক বাস্তবায়ন সহ। উপরন্তু, ইউনিয়ন ইনিশিয়ালাইজেশনের জন্য নিরাপত্তা জোরদার করা হয়েছে এবং আরও দক্ষ টেমপ্লেট হ্যাশিং সিস্টেমের জন্য কোড সংকলন উন্নত করা হয়েছে।
স্ট্যাটিক বিশ্লেষণে নতুন সতর্কতা এবং উন্নতি
সিস্টেম এর স্ট্যাটিক বিশ্লেষণ একটি ভিজ্যুয়াল রিডিজাইন পেয়েছে যা প্রতীকের মাধ্যমে সমস্যাগুলি তুলে ধরে, C23 এ স্থানান্তরের জন্য টিপস এবং একটি নতুন libgdiagnostics লাইব্রেরি যা অন্যান্য প্রকল্পে ডায়াগনস্টিক লজিকের পুনঃব্যবহারের অনুমতি দেয়। SARIF ফর্ম্যাটে প্রতিবেদন তৈরির জন্য সহায়তাও চালু করা হয়েছে, যা আধুনিক কোড বিশ্লেষণ সরঞ্জামগুলির সাথে একীকরণকে সহজতর করে।
এ বিদ্যমান সতর্কতাগুলি নতুন সতর্কতাগুলির সাথে যুক্ত করা হয়, যেমন -ওয়ানালাইজার-অনির্ধারিত-আচরণ-পিটিআরডিফ সম্পর্কহীন পয়েন্টারগুলির মধ্যে বিয়োগ সনাক্ত করতে, -ট্রেইলিং-হোয়াইটস্পেস এবং -লিডিং-হোয়াইটস্পেস অপ্রয়োজনীয় ফাঁকা স্থান নির্দেশ করতে, এবং -হুইডার-গার্ড হেডার অন্তর্ভুক্তি সুরক্ষায় ত্রুটি সনাক্ত করতে।
অপ্টিমাইজেশন এবং সহায়তা
উল্লেখযোগ্য অপ্টিমাইজেশনের মধ্যে, LTO-এর জন্য একটি ক্রমবর্ধমান সংকলন মোড অন্তর্ভুক্ত করা হয়েছে (লিংক-টাইম অপ্টিমাইজেশন), পরিবর্তনগুলি ন্যূনতম হলে পুনঃসংকলনের গতি বাড়ানোর জন্য ডিজাইন করা হয়েছে। এছাড়াও লুপ ভেক্টরাইজেশন উন্নত করা হয়েছে, এমনকি এমন ক্ষেত্রেও যেখানে কম্পাইলের সময় অ্যারের আকার জানা থাকে না, এবং খুব বড় ফাইল কম্পাইল করার গতি বৃদ্ধি করে।
সাপোর্টের দিক থেকে, AArch64-তে ARMv8 এক্সটেনশন যোগ করা হয়েছে, অ্যাপল এম৩ এর মতো নতুন সিপিইউগুলির জন্য সমর্থন, কর্টেক্স-এক্স৯২৫ এবং এনভিআইডিআইএ গ্রেস, এবং MinGW প্ল্যাটফর্মকে প্রসারিত করে। AMD Radeon GPU-এর জন্য কোড জেনারেশন শক্তিশালী করা হয়েছে নতুন GFX9, GFX10.3, এবং GFX11 সিরিজের জন্য পরীক্ষামূলক সহায়তা. x86 আর্কিটেকচারের জন্য, AVX10.2 এবং নতুন AMX নির্দেশাবলীর জন্য সমর্থন সক্রিয় করা হয়েছে, এবং Xeon Phi Knights এর জন্য সমর্থন বন্ধ করা হয়েছে।
উপরন্তু, GCC 15.1 COBOL এর জন্য একটি কম্পাইলার প্রবর্তন করেছে (gcobol), x86-64 এবং AArch64 আর্কিটেকচারের জন্য সমর্থন সহ, এবং D ভাষার একটি আপডেটেড বাস্তবায়ন (সংস্করণ 2.111.0)। Fortran-এ স্বাক্ষরবিহীন পূর্ণসংখ্যার জন্য সমর্থন যোগ করা হয়েছে, এবং OpenMP 5.0 থেকে 6.0 গ্রহণ উন্নত করা হয়েছে, যার মধ্যে আন্তঃকার্যক্ষমতা উন্নতি এবং GPU-তে একীভূত মেমরি ব্যবহার অন্তর্ভুক্ত রয়েছে।