Ruby ක්‍රමලේඛන භාෂාව නිකුත් කිරීම 3.2

Ruby 3.2.0 නිකුත් කර ඇත, ක්‍රමලේඛ සංවර්ධනයේදී ඉතා කාර්යක්‍ෂම වන ගතික වස්තු-නැඹුරු ක්‍රමලේඛන භාෂාවක් වන අතර Perl, Java, Python, Smalltalk, Eiffel, Ada සහ Lisp හි හොඳම විශේෂාංග ඇතුළත් වේ. ව්‍යාපෘති කේතය BSD ("2- වගන්ති BSDL") සහ "Ruby" බලපත්‍ර යටතේ බෙදා හැරේ, GPL බලපත්‍රයේ නවතම අනුවාදයට යොමු වන අතර GPLv3 සමඟ සම්පුර්ණයෙන්ම අනුකූල වේ.

ප්රධාන වැඩිදියුණු කිරීම්:

  • WebAssembly අතරමැදි කේතයට සම්පාදනය කරන CRuby භාෂණ පරිවර්තකයක ආරම්භක තොටක් එක් කරන ලද අතර එය වෙබ් බ්‍රවුසරයක හෝ Wasmtime වැනි ස්වාධීන ධාවන කාලවලදී ක්‍රියාත්මක වේ. වෙනම ක්‍රියාත්මක වන විට මෙහෙයුම් පද්ධතිය සමඟ සෘජු අන්තර්ක්‍රියා සඳහා, WASI (WebAssembly System Interface) API භාවිතා වේ. වෙනත් දේ අතර, WASI මත VFS බන්ධනයක් සපයනු ලැබේ, එමඟින් ඔබට Ruby භාෂාවෙන් සම්පූර්ණ යෙදුම තනි Wasm ගොනුවක් ආකාරයෙන් දර්ශනය කිරීමට ඉඩ සලසයි. ට්‍රයිරූබි වැනි නිබන්ධන සහ ආදර්ශන වෙබ් සේවා නිර්මාණය කිරීමට බ්‍රවුසරයක ක්‍රියාත්මක වීම භාවිතා කළ හැක. වත්මන් සංවර්ධන අදියරේදී, වරාය Thread API භාවිතා නොකරන මූලික සහ bootstrap පරීක්ෂණ කට්ටල සාර්ථකව සමත් වේ. වරාය ෆයිබර්, ව්‍යතිරේක, හෝ කසළ එකතු කිරීම සඳහා ද සහාය නොදක්වයි.
  • Rails රාමුව භාවිතා කරන සහ බොහෝ ක්‍රම කැඳවන Ruby වැඩසටහන් වල ක්‍රියාකාරිත්වය වැඩි කිරීමේ මුලපිරීමක කොටසක් ලෙස Shopify ඊ-වාණිජ්‍ය වේදිකාවේ සංවර්ධකයින් විසින් නිර්මාණය කරන ලද ක්‍රියාවලියේ පවතින JIT සම්පාදක YJIT, ස්ථාවර සහ සූදානම් බව ප්‍රකාශ කර ඇත. නිෂ්පාදන භාවිතය. ක්‍රම සැකසුම් මත පදනම් වූ සහ බාහිර C සම්පාදකයක් භාවිතා කරන, කලින් භාවිතා කළ MJIT JIT සම්පාදකයෙන් ඇති ප්‍රධාන වෙනස නම්, YJIT භාවිතා කරන්නේ Lazy Basic Block Versioning (LBBV) සහ ඒකාබද්ධ JIT සම්පාදකයක් අඩංගු වීමයි. LBBV ට ස්තූතිවන්ත වන්නට, JIT විසින් ක්‍රමයේ ආරම්භය පමණක් සම්පාදනය කරන අතර, ක්‍රියාත්මක කිරීමේදී භාවිතා කරන විචල්‍යයන් සහ තර්ක වර්ග තීරණය කළ පසු, ටික වේලාවකට පසු ඉතිරිය සම්පාදනය කරයි. YJIT Linux, MacOS, BSD, සහ අනෙකුත් UNIX වේදිකා මත x86-64 සහ arm64/aarch64 ගෘහ නිර්මාණ සඳහා ලබා ගත හැකිය.

    CRuby මෙන් නොව, YJIT කේතය රස්ට් වලින් ලියා ඇති අතර සම්පාදනය කිරීමට rustc 1.58.0+ සම්පාදකය අවශ්‍ය වේ, එබැවින් YJIT සම්පාදනය පෙරනිමියෙන් අක්‍රීය කර ඇති අතර එය විකල්ප වේ. YJIT භාවිතා කරන විට, අර්ථ නිරූපණය භාවිතා කිරීමට සාපේක්ෂව yjit-bench පරීක්ෂණය ධාවනය කරන විට කාර්ය සාධනයේ 41% වැඩි වීමක් වාර්තා විය.

    Ruby ක්‍රමලේඛන භාෂාව නිකුත් කිරීම 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 end 4 end
  • දෝෂ ස්ථාන ප්‍රකාරයට වර්ග සහ විස්තාරක සම්බන්ධ දෝෂවලදී තර්ක සලකුණු කිරීමේ හැකියාව එක් කරන ලදි, උදාහරණයක් ලෙස: test.rb:2:`+' හි: nil පූර්ණ සංඛ්‍යා (TypeError) වෙත බල කළ නොහැක sum = ary[ 0] + ary [1] ^^^^^^
  • වෙනත් තර්ක කට්ටල ක්‍රම වෙත හරවා යැවීම සඳහා නව වාක්‍ය ඛණ්ඩ එක් කරන ලදී: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler යෝජිත - පැරණි MJIT JIT සම්පාදකයේ ප්‍රභේදයක්, Ruby භාෂාවෙන් නැවත ලියා ඇත. MJIT සේවක නූල තුළ ක්‍රියාත්මක කිරීම වෙනුවට, වෙනම ක්‍රියාවලියක් තුළ MJIT ක්‍රියාත්මක කිරීම සහතික කර ඇත.
  • Bundler 2.4 හි, යැපුම් හැසිරවීම PubGrub අනුවාද සොයන්නා භාවිතා කරයි, එය Dart සඳහා pub පැකේජ කළමනාකරු විසින් ද භාවිතා කරයි. කලින් භාවිතා කරන ලද Molinillo ඇල්ගොරිතම RubyGems හි දිගටම භාවිතා වේ, නමුත් අනාගතයේදී PubGrub මගින් ප්‍රතිස්ථාපනය වනු ඇත.
  • බිල්ට් සහ සම්මත පුස්තකාල මැණික් මොඩියුලවල යාවත්කාලීන කරන ලද අනුවාද.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න