Ruby 3.2.0 با پشتیبانی اولیه WASI عرضه میشود و به باینریهای CRuby اجازه میدهد در مرورگرهای وب، محیطهای لبههای بدون سرور و سایر جاسازیکنندههای WebAssembly/WASI اجرا شوند.
Ruby 3.2.0، یک ارتقاء به زبان پویا منبع باز محبوب معرفی شده در روز کریسمس، پشتیبانی اولیه WASI (رابط سیستم WebAssembly) را ارائه می دهد. پشتیبانی WebAssembly و WASI به توسعه دهندگان این امکان را می دهد که باینری های CRuby ایجاد کنند که در مرورگرهای وب، محیط های لبه بدون سرور و سایر جاسازی کننده های WebAssembly/WASI اجرا شوند.
Ruby 3.2.0 در ruby-lang.org موجود است. پورت WASI که مجموعههای تست پایه و بوت استرپ را بدون استفاده از Thread API میگذراند. فرمت دستورالعمل باینری WebAssembly برای اجرای ایمن و سریع برنامه ها در مرورگرها معرفی شد، در حالی که امکان انتخاب زبان در توسعه وب را نیز فراهم می کند.
توسعه دهندگان Ruby گفتند WASI و WebAssembly در حال حاضر ویژگی هایی برای پیاده سازی Fiber، استثنا و جمع آوری زباله ندارند. CRuby این شکاف را با استفاده از Asyncify پر می کند و تبدیل باینری را برای کنترل اجرا فراهم می کند. توسعه دهندگان Ruby همچنین یک سیستم فایل مجازی در بالای WASI ساخته اند تا برنامه های Ruby را بتوان در یک فایل .wasm بسته بندی کرد و توزیع برنامه های Ruby را آسان تر می کند.
Ruby 3.2.0 همچنین دارای یک YJIT آماده تولید (Yet Another Ruby JIT) است، یک JIT سبک وزن و مینیمالیستی که در داخل CRuby ساخته شده است. YJIT بیش از یک سال است که روی حجم کاری تولید آزمایش شده است و دیگر آزمایشی نیست. YJIT که برای بهبود عملکرد برنامه طراحی شده و ۴۱ درصد سریعتر از مفسر Ruby است، کد را با استفاده از معماری نسخه اولیه بلوک (BBV) کامپایل می کند. مورد استفاده هدف سرورهایی است که Ruby on Rails را اجرا می کنند.
YJIT در حالت آزمایشی در Ruby 3.1 که یک سال زودتر از Ruby 3.2 منتشر شد، نشان داده شد. YJIT از هر دو پردازنده x86-64 و arm64/aarch64 در لینوکس، macOS، BSD و دیگر پلتفرمهای یونیکس پشتیبانی میکند. نسخه جدید همچنین از Apple M1/M2، AWS Graviton و Raspberry Pi 4 پشتیبانی میکند.
همچنین در Ruby 3.2.0:
- کامپایلر MJIT مجدداً بهعنوان
ruby_vm/mjit/compiler
برای بهبود عملکرد پیادهسازی شده است. - یک الگوریتم تطبیق Regexp (بیان منظم) بهبود یافته به کاهش ReDoS (انکار عبارت منظم از سرویس) کمک می کند. به عنوان یک معیار بازگشتی، یک ویژگی مهلت زمانی برای مسابقات Regexp نیز معرفی شده است.
Set
اکنون به عنوان یک کلاس داخلی بدون نیاز بهنیاز به "set"
در دسترس است.- یک ویژگی
syntax_suggest
، که قبلاً به عنوانdead_end
شناخته میشد، در Ruby ادغام شده است تا به یافتن موقعیت خطاهایی مانندend
s. - قابلیت
ErrorHighlight
اکنون به آرگومان یا آرگومانهای مربوطه برایTypeError
وArgumentError
اشاره میکند. - آگومانهای استراحت ناشناس و باقی مانده کلیدواژه اکنون میتوانند بهجای استفاده در پارامترهای متد، بهعنوان آرگومان ارسال شوند.
String#byteindex
وString#byterindex
برای عملیات بایت برای String اضافه شدهاند.
پست های مرتبط
روبی از WebAssembly برای باینری های CRuby پشتیبانی می کند
روبی از WebAssembly برای باینری های CRuby پشتیبانی می کند
روبی از WebAssembly برای باینری های CRuby پشتیبانی می کند