روبي 3.2.0 خپور شو، یو متحرک اعتراض لرونکی پروګرامینګ ژبه چې د پروګرام په پراختیا کې خورا اغیزمنه ده او د پرل، جاوا، پایتون، سمالټک، ایفل، اډا او لیسپ غوره ځانګړتیاوې شاملوي. د پروژې کوډ د BSD ("2-کلاز BSDL") او "روبي" جوازونو لاندې ویشل شوی، کوم چې د GPL جواز وروستۍ نسخه ته اشاره کوي او د GPLv3 سره په بشپړه توګه مطابقت لري.
اصلي پرمختګونه:
- د CRuby ترجمان یو لومړنی پورټ اضافه شوی دی. دا د ویب براوزر کې د چلولو لپاره یا د جلا رن ټایمونو لاندې د WebAssembly منځګړیتوب کوډ سره ترکیب کوي، لکه wasmtime. د WASI (WebAssembly System Interface) API د سټینډلون اجرا کولو پرمهال د عملیاتي سیسټم سره مستقیم تعامل لپاره کارول کیږي. د نورو شیانو په مینځ کې، د WASI په سر د VFS ریپر چمتو شوی، چې د روبي ټول غوښتنلیک ته اجازه ورکوي چې د یو واحد .wasm فایل په توګه بسته شي. په براوزر کې چلول د روزنې او مظاهرې ویب خدماتو رامینځته کولو لپاره کارول کیدی شي، لکه TryRuby. د پراختیا په اوسني مرحله کې، پورټ په بریالیتوب سره د بنسټیزو او بوټسټریپ ټیسټ سویټونو څخه تیریږي، کوم چې د Thread API نه کاروي. پورټ د فایبرونو، استثناوو، یا کثافاتو راټولولو ملاتړ هم نه کوي.
- د YJIT په پروسه کې JIT کمپیلر، چې د Shopify ای کامرس پلیټ فارم د پراختیا کونکو لخوا د ریل چوکاټ او ډیری میتودونو په کارولو سره د روبي برنامو فعالیت ښه کولو لپاره د نوښت برخې په توګه رامینځته شوی، د باثباته او د تولید کارولو لپاره چمتو په توګه اعلان شوی. د پخوانیو کارول شوي MJIT JIT کمپیلر څخه کلیدي توپیر، کوم چې د ټولو میتودونو پروسس کولو پر بنسټ والړ دی او د بهرني C کمپیلر کاروي، دا دی چې YJIT د Lazy Basic Block Versioning (LBBV) کاروي او یو مدغم JIT کمپیلر لري. د LBBV څخه مننه، JIT په پیل کې یوازې د میتود پیل تالیف کوي، او پاتې نور وروسته تالیف کوي، وروسته له هغه چې د کارول شوي متغیرونو او دلیلونو ډولونه د اجرا کولو پرمهال ټاکل کیږي. YJIT د x86-64 او arm64/aarch64 معمارۍ لپاره شتون لري. Linux، MacOS، BSD او نور UNIX پلیټ فارمونه.
د CRuby برعکس، YJIT په Rust کې لیکل شوی او د تالیف لپاره د rustc 1.58.0+ کمپائلر ته اړتیا لري. له همدې امله، د YJIT جوړول په ډیفالټ ډول غیر فعال دي او اختیاري دي. د YJIT کارول د تشریح شوي کوډ په پرتله د yjit-bench بنچمارک کې فعالیت 41٪ ښه کولو لپاره ښودل شوي.

- د غیر موثر او اوږدمهاله منظم اظهارونو کې د بهرني معلوماتو پروسس کولو پرمهال د خدماتو څخه انکار بریدونو (ReDoS) پروړاندې اضافي محافظت اضافه شوی. د مطابقت الګوریتم، چې د یادولو تخنیک کاروي، د پام وړ ښه شوی دی. د مثال په توګه، د '/^a*b?a*$/ =~ "a" * 50000 + "x"' اظهار اجرا کولو وخت له 10 څخه 0.003 ثانیو ته راټیټ شوی. د دې اصلاح کولو لګښت د حافظې مصرف زیاتول دي، کوم چې د ان پټ ډیټا اندازې څخه نږدې 10 ځله دی. د کمولو دوهم اقدام د وخت پای تعریف کولو وړتیا ده (د مثال په توګه، "Regexp.timeout = 1.0") چې دننه منظم اظهار باید پروسس شي.
- د syntax_suggest حالت اوس شامل شوی، چې د ورک شوي یا غیر ضروري تړلو "پای" بیان پورې اړوند د غلطیو لاملونو تشخیص کې مرسته کوي. بې ساري 'پای'، ورک شوی کلیمه ('do', 'def', 'if', etc.)؟ ۱ ټولګي Dog > ۲ defbark > ۳ پای ۴ پای
- د ډولونو او دلیلونو پورې اړوند غلطیو لپاره د دلیلونو نښه کولو وړتیا د غلطۍ موقعیت ښودلو حالت کې اضافه شوې ده، د مثال په توګه: test.rb:2:in `+': nil په انټیجر (TypeError) کې نشي جبري کیدی sum = ary[0] + ary[1] ^^^^^^
- د نورو میتودونو ته د دلیلونو سیټونو لیږلو لپاره نوی ترکیب اضافه شوی: def foo(*) bar(*) end def baz(**) quux(**) end
- ruby_vm/mjit/compiler د زاړه MJIT JIT کمپیلر د روبي پر بنسټ بیا لیکل دی. دا MJIT په جلا پروسه کې چلوي، نه د MJIT کارګر تار دننه.
- بنډلر ۲.۴ اوس د انحصارونو اداره کولو پر مهال د پب ګرب نسخه چیکر کاروي، کوم چې د ډارټ ژبې لپاره د پب پیکج مدیر کې هم کارول کیږي. پخوا کارول شوی مولینیلو الګوریتم په روبي ګیمز کې کارول کیږي، مګر په راتلونکي کې به د پب ګرب لخوا هم ځای په ځای شي.
- د جوړ شوي قیمتي ماډلونو نسخې او هغه چې په معیاري کتابتون کې شامل دي تازه شوي دي.
سرچینه: opennet.ru

