۳۰ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

روبی از WebAssembly برای باینری های CRuby پشتیبانی می کند

Ruby 3.2.0 با پشتیبانی اولیه WASI عرضه می‌شود و به باینری‌های CRuby اجازه می‌دهد در مرورگرهای وب، محیط‌های لبه‌های بدون سرور و سایر جاسازی‌کننده‌های WebAssembly/WASI اجرا شوند.

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 برای اجرای ایمن و سریع برنامه ها در مرورگرها معرفی شد، در حالی که امکان انتخاب زبان در توسعه وب را نیز فراهم می کند.

Microsoft Copilot Studio برای ساخت عوامل هوش مصنوعی

توسعه دهندگان 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 را اجرا می کنند.

Google Firebase برنامه‌های افزودنی را گسترش می‌دهد تا قابل تنظیم‌تر شود

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 ادغام شده است تا به یافتن موقعیت خطاهایی مانند ends.
  • قابلیت ErrorHighlight اکنون به آرگومان یا آرگومان‌های مربوطه برای TypeError و ArgumentError اشاره می‌کند.
  • آگومان‌های استراحت ناشناس و باقی مانده کلیدواژه اکنون می‌توانند به‌جای استفاده در پارامترهای متد، به‌عنوان آرگومان ارسال شوند.
  • String#byteindex و String#byterindex برای عملیات بایت برای String اضافه شده‌اند.