روبي پروگرامنگ ٻولي جو رليز 3.2

روبي 3.2.0 جاري ڪيو ويو، هڪ متحرڪ اعتراض تي مبني پروگرامنگ ٻولي جيڪا پروگرام ڊولپمينٽ ۾ انتهائي ڪارائتو آهي ۽ پرل، جاوا، پٿون، سمال ٽالڪ، ايفل، اڊا ۽ لِسپ جون بهترين خاصيتون شامل ڪري ٿي. پروجيڪٽ ڪوڊ BSD ("2-شق BSDL") ۽ "روبي" لائسنس جي تحت ورهايو ويو آهي، جيڪو GPL لائسنس جي جديد ورزن ڏانهن اشارو ڪري ٿو ۽ مڪمل طور تي GPLv3 سان مطابقت رکي ٿو.

بنيادي سڌارا:

  • CRuby مترجم جو هڪ ابتدائي بندرگاهه شامل ڪيو ويو، جيڪو ويب برائوزر ۾ هلائڻ لاءِ WebAssembly وچولي ڪوڊ ۾ مرتب ڪري ٿو يا اسٽينڊل رن ٽائمز جهڙوڪ wasmtime. آپريٽنگ سسٽم سان سڌي رابطي لاءِ جڏهن الڳ الڳ هلندي، WASI (WebAssembly System Interface) API استعمال ڪيو ويندو آهي. ٻين شين مان، هڪ VFS لفافي WASI جي مٿي تي مهيا ڪيو ويو آهي، جيڪو توهان کي مڪمل روبي ايپليڪيشن کي هڪ واحد wasm فائل جي صورت ۾ پيش ڪرڻ جي اجازت ڏئي ٿو. برائوزر ۾ رننگ ٽريننگ ۽ ڊيمو ويب سروسز ٺاهڻ لاءِ استعمال ٿي سگھي ٿو جهڙوڪ TryRuby. ترقي جي موجوده اسٽيج تي، بندرگاهن ڪاميابيء سان بنيادي ۽ بوٽ اسٽراپ ٽيسٽ سوٽ پاس ڪري ٿو، جيڪي موضوع API استعمال نٿا ڪن. بندرگاهن فائبر، استثنا، يا ڪچرو گڏ ڪرڻ جي حمايت نه ڪندو آهي.
  • YJIT in-process JIT مرتب ڪندڙ، اي ڪامرس پليٽ فارم Shopify جي ڊولپرز پاران ٺاهيل هڪ شروعات جي حصي طور روبي پروگرامن جي ڪارڪردگي کي وڌائڻ لاءِ جيڪي ريل فريم ورڪ کي استعمال ڪن ٿا ۽ ڪيترن ئي طريقن کي سڏين ٿا، کي مستحڪم ۽ تيار قرار ڏنو ويو آهي. پيداوار جو استعمال. اڳ ۾ استعمال ٿيل MJIT JIT ڪمپلر کان اهم فرق، جيڪو سڀني طريقن جي پروسيسنگ تي ٻڌل آهي ۽ C ٻولي ۾ هڪ خارجي ڪمپلر استعمال ڪري ٿو، اهو آهي ته YJIT Lazy Basic Block Versioning (LBBV) استعمال ڪري ٿو ۽ هڪ مربوط JIT ڪمپلر تي مشتمل آهي. LBBV سان، JIT پهريون ڀيرو صرف طريقي جي شروعات کي گڏ ڪري ٿو، ۽ باقي ڪجهه وقت بعد گڏ ڪري ٿو، بعد ۾ استعمال ٿيل متغيرن ۽ دليلن جي قسمن جي عمل جي دوران طئي ٿيل آهن. YJIT لينڪس، MacOS، BSD ۽ ٻين UNIX پليٽ فارمن تي x86-64 ۽ arm64/aarch64 آرڪيٽيڪچرز لاءِ دستياب آهي.

    روبي جي برعڪس، YJIT ڪوڊ Rust ٻولي ۾ لکيل آهي ۽ rustc 1.58.0+ مرتب ڪرڻ لاءِ گهربل آهي، تنهن ڪري YJIT بلڊ ڊفالٽ طور بند ٿيل آهي ۽ اختياري آهي. جڏهن YJIT استعمال ڪندي، ڪارڪردگي ۾ 41٪ اضافو رڪارڊ ڪيو ويو جڏهن yjit-bench ٽيسٽ هلائڻ جي مقابلي ۾ تعبير استعمال ڪرڻ جي مقابلي ۾.

    روبي پروگرامنگ ٻولي جو رليز 3.2

  • شامل ڪيل اضافي تحفظ سروس حملن کي رد ڪرڻ جي خلاف جڏهن خارجي ڊيٽا کي غير موثر ۽ وقت سازي جي باقاعده اظهار (ReDoS) ۾ پروسيسنگ. ملندڙ الگورتھم، جيڪو يادگار ٽيڪنڪ استعمال ڪري ٿو، خاص طور تي بهتر ڪيو ويو آھي. مثال طور، ايڪسپريس '/^a*b?a*$/ =~ "a" * 50000 + "x"' جي عمل جو وقت 10 کان 0.003 سيڪنڊن تائين گھٽجي ويو. اصلاح جي قيمت ميموري جي استعمال ۾ اضافو آهي، جنهن جو استعمال ان پٽ ڊيٽا جي سائيز کان تقريباً 10 ڀيرا وڌيڪ آهي. ٻيو حفاظتي ماپ هڪ وقت ختم ڪرڻ جي صلاحيت آهي (مثال طور، "Regexp.timeout = 1.0") جنهن دوران باقاعده اظهار کي پروسيس ڪيو وڃي.
  • Syntax_suggest موڊ شامل ڪيو ويو آهي، جيڪو غائب يا اضافي بند ٿيڻ واري "آخر" اظهار سان لاڳاپيل غلطين جي سببن جي تشخيص ۾ مدد ڪري ٿو. بي مثال 'آخر'، غائب لفظ (`do'، `def`، `if`، وغيره)؟ 1 ڪلاس ڪتو > 2 defbark > 3 آخر 4 آخر
  • قسم ۽ دليلن سان لاڳاپيل غلطين لاء دليلن کي نشان لڳائڻ جي صلاحيت غلطي جي جڳھ جي ڊسپلي موڊ ۾ شامل ڪئي وئي آھي، مثال طور: test.rb:2:in `+': nil کي Integer (TypeError) sum = ary ۾ زبردستي نه ٿو ڪري سگھجي [0] + آري [1] ^^^^^^
  • دلائل جي سيٽ کي ٻين طريقن ڏانهن موٽڻ لاءِ نئون نحو شامل ڪيو ويو: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler تجويز ڪيل آهي - پراڻي MJIT JIT ڪمپيلر جو هڪ قسم، روبي ٻولي ۾ ٻيهر لکيو ويو آهي. انهي ڳالهه کي يقيني بڻايو وڃي ته MJIT هڪ MJIT ورڪر سلسلي ۾ هلڻ بدران هڪ الڳ عمل ۾ هلندو آهي.
  • Bundler 2.4 ۾، انحصار پروسيسنگ استعمال ڪري ٿو PubGrub ورزن ڊيڪٽر، پڻ استعمال ٿئي ٿو پب پيڪيج مينيجر ۾ ڊارٽ ٻولي لاءِ. اڳ ۾ استعمال ٿيل Molinillo الگورتھم RubyGems ۾ استعمال ٿيڻ جاري آھي، پر مستقبل ۾ PubGrub پاران پڻ تبديل ڪيو ويندو.
  • تعمير ٿيل گيم ماڊلز جا اپڊيٽ ورجن ۽ جيڪي معياري لائبريري ۾ شامل آھن.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو