LLVM 18.1.0 সমর্থন উন্নতি, ব্যাকএন্ড এবং আরও অনেক কিছু নিয়ে আসে

LLVM লোগো

LLVM হল কম্পাইলার তৈরির পাশাপাশি নতুন প্রোগ্রামিং ভাষা তৈরি করতে এবং বিদ্যমান ভাষাগুলির উন্নতিতে সাহায্য করার জন্য একটি কাঠামো।

প্রকল্পের উদ্বোধন LLVM 18.1.0 ছয় মাস বিকাশের পরে আসে এবং GCC q এর সাথে বৈশিষ্ট্যগুলির উন্নতি করেতারা কম্পাইলার, অপ্টিমাইজার এবং কোড জেনারেটর কভার করে। একটি উল্লেখযোগ্য পরিবর্তন এই সংস্করণে এটা 18.x শাখা থেকে শুরু হওয়া এলএলভিএম প্রকল্পে সংস্করণ নম্বর তৈরি করার নতুন স্কিম। GCC এবং GDB-এর মতো প্রকল্পগুলির অনুশীলন অনুসরণ করে, বিকাশের সময় সংস্করণ শূন্য ("N.0") ব্যবহার করা হয়েছে, যেখানে প্রথম স্থিতিশীল সংস্করণটি "N.1" সংখ্যাযুক্ত। এই পরিবর্তনটি চূড়ান্ত প্রকাশ শাখার বিল্ড থেকে মাস্টার শাখার উপর ভিত্তি করে বিল্ডগুলিকে আলাদা করে সুবিধা প্রদান করে।

উদাহরণস্বরূপ, বর্তমান রিলিজের (18.1.0) প্রস্তুতিতে, LLVM 18.0-এর অস্থির শাখা ব্যবহার করে উন্নয়ন করা হয়েছিল। তারপরে প্রথম স্থিতিশীল সংস্করণটি 18.1.0 নম্বর হিসাবে প্রকাশ করা হয়েছিল, যা একটি বিস্তৃত বিকাশ এবং পরীক্ষা চক্রের সমাপ্তি চিহ্নিত করে। এছাড়াও, এই নতুন স্কিমটি 18.1.1, 18.1.2, এবং আরও কিছু নম্বরের অধীনে প্রয়োজনে প্রতি দুই সপ্তাহে সংশোধনমূলক যোগাযোগ তৈরি করার অনুমতি দেয়।

এটি লক্ষ্য করা গুরুত্বপূর্ণ যে যদি বর্তমান শাখায় পরিবর্তন করা হয় যা ABI (অ্যাপ্লিকেশন বাইনারি ইন্টারফেস) কে প্রভাবিত করে, আপডেটটি সংস্করণের দ্বিতীয় সংখ্যার পরিবর্তনের সাথে প্রতিফলিত হবে, উদাহরণস্বরূপ, 18.2.0। এটি সামঞ্জস্যপূর্ণ এবং স্বচ্ছ সংস্করণ ব্যবস্থাপনা নিশ্চিত করে, ব্যবহারকারীদের প্রতিটি রিলিজে স্থায়িত্ব এবং পরিবর্তনের প্রয়োজনীয় স্পষ্টতা প্রদান করে।

এলএলভিএম 18.1.0 এর প্রধান নতুন বৈশিষ্ট্য

এই নতুন সংস্করণে যা LLVM 18.1.0 এর উপস্থাপিত হয়েছে, X86 আর্কিটেকচার, ISA এক্সটেনশনের জন্য সমর্থন উন্নতি বাস্তবায়িত হয়েছে. বিশেষ করে, USER_MSR, AVX10.1-256 এবং AVX10.1-512 এক্সটেনশনগুলির জন্য সমর্থন যোগ করা হয়েছে৷ এছাড়া, i128 প্রকারকে __int128 প্রকার GCC এবং ক্ল্যাং এর সাথে একীভূত করা হয়েছে, যা বাহ্যিক প্রকল্প যেমন মরিচা সঙ্গে বৃহত্তর বাইনারি সামঞ্জস্য সহজতর.

LLVM 18.1.0-এর আরেকটি হাইলাইট ছিল RISC-V, বেশ কিছু উন্নতি করা হয়েছে এবং স্থিতিশীল করে উল্লেখযোগ্য সংযোজন এবংl এক্সটেনশনের জন্য সমর্থন, প্লাস এক্সটেনশনের জন্য অন্তর্নির্মিত ফাংশন যোগ করা হয়েছে এবং RV32E, RV64E, ilp32e এবং lp64e আর্কিটেকচারে কোড তৈরির জন্য পরীক্ষামূলক সমর্থন প্রয়োগ করা হয়েছে।

স্থাপত্যের ব্যাকএন্ডে LoongArch, বিল্ট-ইন ফাংশন LSX এক্সটেনশনের জন্য যোগ করা হয়েছে (128-বিট SIMD) এবং LASX (256-বিট SIMD), LoongArch রেফারেন্স ম্যানুয়াল স্পেসিফিকেশন 1.10-এ প্রবর্তিত নতুন নির্দেশাবলীর জন্য সমর্থন যোগ করা হয়েছে এবং স্বয়ংক্রিয় ভেক্টরাইজেশনের জন্য প্রাথমিক সমর্থন প্রয়োগ করা হয়েছে।

AArch64 এ, প্রসেসরের জন্য প্রসারিত সমর্থন যেমন Cortex-A520, Cortex-A720 এবং Cortex-X4, এবং স্ট্যাক ক্ল্যাশ প্রোটেকশন মেকানিজমের জন্য সমর্থন প্রয়োগ করা হয়েছে, যা স্ট্যাক ওভারফ্লো সনাক্ত করে এবং স্ট্যাক এবং হিপের সংযোগের উপর ভিত্তি করে আক্রমণের পদ্ধতিগুলিকে ব্লক করে।

বিভিন্ন আর্কিটেকচারের ব্যাকএন্ডে এই সুনির্দিষ্ট উন্নতিগুলি ছাড়াও, WebAssembly, MIPS, PowerPC, এবং AMDGPU-এর মতো আর্কিটেকচারের ব্যাকএন্ডে সাধারণ উন্নতি করা হয়েছে। LLD লিঙ্কারের ক্ষমতাও প্রসারিত করা হয়েছে, RISC-V এবং AArch64 আর্কিটেকচারের জন্য সমর্থন উন্নত করা হয়েছে, এবং C++20, C++23, এবং C-এর ক্ষমতা অনুসরণ করতে Libc++ লাইব্রেরিতে আপডেটগুলি প্রয়োগ করা হয়েছে। মান। ++২৬।

অবশেষে, এলএলডিবি ডিবাগার বহিরাগত সার্ভার থেকে স্বয়ংক্রিয়ভাবে প্রতীক এবং বাইনারি ডেটা বের করার জন্য সমর্থন যোগ করেছে যেটি ডিবাগিনফোড প্রোটোকল সমর্থন করে, এইভাবে বিভিন্ন আর্কিটেকচারে ডিবাগিং ক্ষমতা প্রসারিত করে এবং এসএমই এবং এসএমই 2 (স্কেলেবল ম্যাট্রিক্স এক্সটেনশন) এর মতো এক্সটেনশনগুলির জন্য সমর্থন যোগ করে এবং এটি লক্ষ করা গুরুত্বপূর্ণ যে পাইথন ভাষার জন্য বাইন্ডিংগুলি কিছু এলাকায় সরানো হয়েছে, যা হতে পারে এই লিঙ্কগুলির উপর নির্ভর করে এমন উন্নয়ন প্রক্রিয়াগুলির সমন্বয় প্রয়োজন।

অংশগুলির জন্য C ল্যাঙ্গুয়েজ সম্পর্কিত পরিবর্তন সহ ক্ল্যাং 18-এ প্রয়োগ করা হয়েছে এমন উন্নতিগুলি:

  • GCC-এর সাথে সাদৃশ্য অনুসরণ করে "const" অ্যাট্রিবিউট সহ স্ট্রাকচার, ইউনিয়ন এবং অ্যারেগুলিকে এখন ধ্রুবক এক্সপ্রেশন হিসাবে ব্যবহার করার অনুমতি দেওয়া হয়েছে।
  • Enums এখন TBAA (Type-based Alias ​​Analysis) মেটাডেটাতে তাদের আসল পূর্ণসংখ্যার ধরন হিসাবে প্রতিফলিত হয়, পরিবর্তে একটি "char" টাইপ হিসাবে বিবেচিত হয়।
  • "counted_by" অ্যাট্রিবিউটের জন্য সমর্থন যোগ করা হয়েছে, যা আপনাকে নমনীয় অ্যারেতে উপাদানের সংখ্যা নির্ধারণ করতে নমনীয় অ্যারে সহ একটি কাঠামোতে একটি ক্ষেত্র নির্দিষ্ট করতে দেয়, ঝনঝনানিতে বাফার ওভারফ্লো চেকের দক্ষতা উন্নত করে।
  • মডিউল লিঙ্ক করতে এবং C23 স্ট্যান্ডার্ড সমর্থন করার জন্য "c23 প্রয়োজন" এক্সপ্রেশনের জন্য বাস্তবায়িত সমর্থন।
  • টেমপ্লেটে অতিরিক্ত ধরনের আনটাইপ না করা আর্গুমেন্ট ব্যবহার করার জন্য একটি পরীক্ষামূলক বৈশিষ্ট্য প্রয়োগ করা হয়েছিল, যা ফ্লোটিং পয়েন্টের মান, পয়েন্টার এবং সাববজেক্ট রেফারেন্সের স্পেসিফিকেশনের অনুমতি দেয়।
  • "ডিডুসিং এই" মেকানিজমের জন্য পরীক্ষামূলক সমর্থন যোগ করা হয়েছে, যা আপনাকে একটি টেমপ্লেটে "এই" অ্যাট্রিবিউট সহ প্যারামিটার ব্যবহার করতে এবং এই ফাংশনটির জন্য যে এক্সপ্রেশনটি বলা হয়েছিল তার বিভাগটি আবিষ্কার করতে দেয়৷

পরিশেষে, যদি আপনি এটি সম্পর্কে আরও জানতে আগ্রহী হন, তাহলে আপনি বিস্তারিত জানতে পারেন নীচের লিঙ্কে।