د شپږو میاشتو پراختیا وروسته
د LLVM 9.0 نوې ب featuresې د هدف RISC-V پلیټ فارم څخه د تجربې ډیزاین ټاګ لرې کول ، د OpenCL لپاره C++ ملاتړ ، په LLD کې په متحرک ډول بار شوي برخو ته د برنامه ویشلو وړتیا ، او د "تطبیق" پلي کول شامل دي.
-
زیاته کړه د GCC ځانګړي بیان پلي کول "asm لاړ "، کوم چې تاسو ته اجازه درکوي د راټولونکي انلاین بلاک څخه په C کوډ کې لیبل ته لاړ شئ. دا فیچر د x86_64 جوړښت سره په سیسټمونو کې د کلینګ په کارولو سره په "CONFIG_JUMP_LABEL=y" حالت کې د لینکس کرنل جوړولو لپاره اړین دی. په تیرو ریلیزونو کې اضافه شوي بدلونونو په پام کې نیولو سره، د لینکس کرنل اوس د x86_64 معمارۍ لپاره په کلینګ کې جوړ کیدی شي (پخوا یوازې د بازو، aarch64، ppc32، ppc64le او mips آرکیټیکچرونو لپاره ودانۍ ملاتړ کیده). سربیره پردې ، د Android او ChromeOS پروژې دمخه د کرنل جوړولو لپاره د کلینګ کارولو لپاره بدل شوي ، او ګوګل د دې تولید لینکس سیسټمونو لپاره د کرنلونو جوړولو لپاره کلینګ د اصلي پلیټ فارم په توګه ازموي. په راتلونکي کې، د LLVM نورې برخې د کرنل جوړولو په پروسه کې کارول کیدی شي، په شمول د LLD، llvm-objcopy، llvm-ar، llvm-nm، او llvm-objdump؛ - په OpenCL کې د C++17 کارولو لپاره تجربوي ملاتړ اضافه شوی. په ځانګړو ځانګړتیاو کې د پتې د ځای ځانګړتیاوو لپاره ملاتړ، د ډول کاسټینګ آپریټرانو لخوا د پته ځای تبادله بندول، د ویکتور ډولونو چمتو کول لکه د C لپاره په OpenCL کې، د انځورونو، پیښو، چینلونو او نورو لپاره د ځانګړي OpenCL ډولونو شتون.
- د نوي تالیف کونکي بیرغونه "-ftime-trace" او "-ftime-trace-granularity = N" اضافه شوي ترڅو د مخکني پای (تحصیل کولو ، پیل کولو) او پس منظر (د اصلاح مرحلې) د مختلف مرحلو د اجرا کولو وخت په اړه راپور رامینځته کړي. راپور په json بڼه کې خوندي شوی، د کروم:://tracing او speedscope.app سره مطابقت لري؛
- د "__declspec(مختص کونکی)" مشخص کونکي پروسس کول او د ورته ډیبګ کولو معلوماتو نسل اضافه کول چې تاسو ته اجازه درکوي د لید سټوډیو چاپیریال کې د حافظې مصرف وڅاري؛
- د C ژبې لپاره، د "__FILE_NAME__" میکرو لپاره مالتړ اضافه شوی، کوم چې د "__FILE__" میکرو سره ورته دی، مګر د بشپړې لارې پرته یوازې د فایل نوم پکې شامل دی؛
- C++ د مختلف C++ ب featuresو پوښلو لپاره د پتې ځای ځانګړتیاو لپاره ملاتړ پراخه کړی ، پشمول د پیرامیټر او دلیل نمونې ، د حوالې ډولونه ، د بیرته راستنیدو ډول انفرنس ، توکي ، اتومات تولید شوي افعال ، جوړ شوي آپریټرونه او نور ډیر څه.
- د OpenCL، OpenMP او CUDA لپاره د ملاتړ سره تړلي وړتیاوې پراخې شوې. پدې کې د جوړ شوي OpenCL افعالونو ضمني شاملولو لپاره لومړني ملاتړ شامل دی (د "-fdeclare-opencl-builtins" بیرغ اضافه شوی)، د cl_arm_integer_dot_product توسیع پلي شوی، او د تشخیص وسایل پراخ شوي؛
- د جامد شنونکي کار ښه شوی او د جامد تحلیل ترسره کولو اسناد اضافه شوي. د شته چیکر ماډلونو او ملاتړ شوي اختیارونو ښودلو لپاره بیرغونه اضافه شوي ("-تجزیه-چیکر[-اختیار]-مدد"، "-تجزیه-چیکر [-اختیار]-مدد-الفا" او "-تجزیه-چیکر [-اختیار] - مرسته " - پراختیا کونکی"). د اخطارونو سره د غلطیو په توګه چلند کولو لپاره د "-تجزیه - غلط" بیرغ اضافه شوی.
د تایید نوي طریقې اضافه شوي:- security.insecureAPI.DeprecatedOrUnsafeBufferHandling د بفرونو سره د کار کولو لپاره د ناامنه کړنو پیژندلو لپاره؛
- osx.MIGChecker د MIG (Mach Interface جنریټر) د کال قواعدو څخه د سرغړونې لټون لپاره؛
- optin.osx.OSObjectCStyleCast د غلط XNU libkern اعتراض تبادلې موندلو لپاره؛
- apiModeling.llvm د LLVM کوډبیس کې د غلطیو موندلو لپاره د ماډلینګ چیک کولو دندو د سیټ سره؛
- د غیر پیل شوي C++ شیانو چک کولو لپاره مستحکم کوډ (په optin.cplusplus بسته کې غیر ابتدایي شوی اعتراض)؛
- د کلینګ فارمیټ استعمال په C# ژبه کې د کوډ فارمیټ کولو لپاره ملاتړ اضافه کړی او د مایکروسافټ لخوا کارول شوي کوډ فارمیټ سټایل لپاره ملاتړ چمتو کوي؛
- clang-cl، یو بدیل کمانډ لاین انٹرفیس چې د ویژول سټوډیو کې شامل cl.exe کمپیلر سره د اختیار کچې مطابقت چمتو کوي ، هیوریسټیک اضافه کړی ترڅو غیر موجود فایلونه د کمانډ لاین اختیارونو په توګه چلند وکړي او ورته خبرداری ښکاره کړي (د مثال په توګه ، کله چې "clang-cl /diagnostic :caret /c test.cc" چلوي؛
- د نویو چکونو لویه برخه د لینټ کلینګ پاکولو کې اضافه شوې، په شمول د OpenMP API ته ځانګړي شوي چکونه شامل دي؛
-
پراخ شوی د سرور وړتیاوېclangd (کلینګ سرور)، په کوم کې چې د شالید شاخص جوړونې حالت په ډیفالټ فعال شوی، د کوډ سره د متناسب کړنو لپاره ملاتړ اضافه شوی (متغیر ترلاسه کول، د اتوماتیک او میکرو تعریفونو پراخول، د تښتیدلو تارونو تبادله غیر خلاص شوي ته)، د ښودلو وړتیا د کلینګ - پاک څخه اخطارونه، د سرلیک فایلونو کې د غلطیو تشخیص پراخ شوی او د ډول درجه بندي په اړه د معلوماتو ښودلو وړتیا اضافه کړې؛
اصلي
- په LLD لینکر کې د تجربی تقسیم کولو خصوصیت اضافه شوی، کوم چې تاسو ته اجازه درکوي یو پروګرام په څو برخو وویشئ، چې هر یو یې په جلا ELF فایل کې موقعیت لري. دا ب featureه تاسو ته اجازه درکوي د برنامه اصلي برخه پیل کړئ ، کوم چې به د عملیاتو په جریان کې د اړتیا سره سم نور اجزاو بار کړي (د مثال په توګه ، تاسو کولی شئ جوړ شوي PDF لیدونکي په جلا فایل کې جلا کړئ ، کوم چې به یوازې هغه وخت لوډ شي کله چې کارونکي PDF خلاص کړي. دوتنه).
د LLD لینکر
مخې ته راوړل داسې حالت ته چې د arm32_7، arm64، ppc64le او x86_64 آرکیټیکچرونو لپاره د لینکس کرنل سره وصل کولو لپاره مناسب وي.
نوي انتخابونه "-" (د stdout ته محصول)، "-[no-] اجازه ورکوونکي-شلیب-نا تعریف شوي"، "-نا تعریف شوي-ګلوب"، "-nmagic"، "-omagic"، "- انحصار-کتابتون"، "- z ifunc-noplt" او "-z common-page-size". د AArch64 جوړښت لپاره، د BTI (څانګې هدف شاخص) او PAC (د پوائنټر تصدیق کوډ) لارښوونې لپاره ملاتړ اضافه شوی. د MIPS، RISC-V او PowerPC پلیټ فارمونو ملاتړ د پام وړ ښه شوی. د WebAssembly لپاره د متحرک لینک کولو لپاره لومړني ملاتړ اضافه شوی؛ - په libc++ کې
پلي شوي د افعال اندازه، std::is_constant_evaluated، std::midpoint او std::lerp، میتودونه "مخکې" او "شاته" په std::span کې اضافه شوي، د ډولونو ځانګړتیاوې std::is_unbounded_array او std::is_bounded_array اضافه شوي , std ظرفیتونه پراخ شوي دي: : اټومي. د GCC 4.9 لپاره ملاتړ بند شوی دی (د GCC 5.1 او نوي ریلیزونو سره کارول کیدی شي). ملاتړ اضافه کړواسي (WebAssembly System Interface، د براوزر څخه بهر د WebAssembly کارولو لپاره انٹرفیس)؛ - نوي اصلاحونه اضافه شوي. په ځینو حاالتو کې bcmp ته د memcmp کالونو تبادله فعاله شوې. د کود جدولونو لپاره د رینج چیک کولو پلي کول په کوم کې چې د ټیټ سویچ بلاکونه د لاسرسي وړ ندي یا کله چې لارښوونې نه کارول کیږي ، د مثال په توګه ، کله چې د ډول باطل سره فنکشن زنګ وهل؛
- د RISC-V معمارۍ لپاره پس منظر ثبات شوی، کوم چې نور د تجربې په توګه موقعیت نلري او د ډیفالټ لخوا جوړ شوی. د MAFDC توسیعونو سره د RV32I او RV64I لارښوونې سیټ ډولونو لپاره د بشپړ کوډ تولید ملاتړ چمتو کوي؛
- د X86، AArch64، ARM، SystemZ، MIPS، AMDGPU او PowerPC آرکیټیکچرونو لپاره بیکینډونو کې ډیری پرمختګونه شوي دي. د مثال په توګه، د معمارۍ لپاره
AArch64 د SVE2 (Scalable Vector Extension 2) او MTE (د حافظې ټاګ کولو توسیع) لارښوونو لپاره ملاتړ اضافه کړ؛ د ARM بیکینډ کې، د Armv8.1-M جوړښت او MVE (M-Profile ویکتور توسیع) توسیع لپاره ملاتړ اضافه شوی. د GFX10 (Navi) معمارۍ لپاره ملاتړ AMDGPU بیکینډ کې اضافه شوی ، د فنکشن زنګ وړتیاوې په ډیفالټ فعال شوي ، او یو ګډ پاس فعال شویDPP (Data-Parallel Primitives). - د LLDB ډیبګر اوس د بیکټریس لپاره رنګ روښانه کول او د DWARF4 debug_types او DWARF5 debug_info بلاکونو لپاره اضافي ملاتړ لري؛
- د COFF په شکل کې د اعتراض او اجرا وړ فایلونو ملاتړ په llvm-objcopy او llvm-strip یوټیلیټیز کې اضافه شوی.
سرچینه: opennet.ru