پیش نمایش استاندارد WebAssembly 2.0 موجود است

W3C پیش‌نویس مشخصات جدیدی را منتشر کرده است که میان‌افزار WebAssembly 2.0 و API مرتبط با آن را استاندارد می‌کند و امکان ایجاد برنامه‌های کاربردی با کارایی بالا را فراهم می‌کند که در مرورگرها و پلتفرم‌های سخت‌افزاری قابل حمل هستند. WebAssembly کد متوسط، جهانی و سطح پایین مستقل از مرورگر را برای اجرای برنامه های کاربردی که از زبان های برنامه نویسی مختلف کامپایل شده اند، ارائه می دهد. با استفاده از JIT برای WebAssembly، می توانید به سطوح عملکردی نزدیک به کد بومی دست یابید.

فناوری WebAssembly را می توان برای انجام وظایف با کارایی بالا در مرورگر مانند رمزگذاری ویدیو، پردازش صدا، گرافیک و دستکاری سه بعدی، توسعه بازی، عملیات رمزنگاری و محاسبات ریاضی با اجازه دادن به کد نوشته شده به زبان های کامپایل شده مانند C/C++ استفاده کرد. .

از جمله اهداف اصلی WebAssembly اطمینان از قابل حمل بودن، رفتار قابل پیش بینی و اجرای کد یکسان در پلتفرم های مختلف است. اخیراً WebAssembly همچنین به عنوان یک پلتفرم جهانی برای اجرای ایمن کد در هر زیرساخت، سیستم عامل و دستگاهی، نه محدود به مرورگرها، تبلیغ شده است.

W3C سه پیش نویس مشخصات WebAssembly 2.0 را منتشر کرده است:

  • WebAssembly Core - یک ماشین مجازی سطح پایین برای اجرای کد میانی WebAssembly را توصیف می کند. منابع مرتبط با WebAssembly در قالب «.wasm»، مشابه فایل‌های «.class» در جاوا، حاوی داده‌های ثابت و بخش‌های کد برای کار با آن داده‌ها، ارائه می‌شوند.
  • رابط جاوا اسکریپت WebAssembly - یک API برای ادغام با جاوا اسکریپت ارائه می دهد. به شما امکان می دهد مقادیر را دریافت کنید و پارامترها را به توابع WebAssembly منتقل کنید. اجرای WebAssembly از مدل امنیتی جاوا اسکریپت پیروی می کند و تمام تعاملات با سیستم اصلی مانند اجرای کد جاوا اسکریپت انجام می شود.
  • WebAssembly Web API - یک رابط برنامه نویسی را بر اساس مکانیسم Promise برای درخواست و اجرای منابع ".wasm" تعریف می کند. فرمت منبع WebAssembly برای شروع اجرا بدون انتظار برای بارگیری کامل فایل بهینه شده است، که پاسخگویی برنامه های وب را بهبود می بخشد.

تغییرات اصلی WebAssembly 2.0 نسبت به نسخه اول استاندارد:

  • پشتیبانی از نوع برداری v128 و دستورالعمل های برداری مرتبط که به شما امکان می دهد اقداماتی را روی چندین مقدار عددی به صورت موازی انجام دهید (SIMD، داده های چندگانه یک دستورالعمل).
  • امکان وارد کردن و صادرات متغیرهای جهانی قابل تغییر، که امکان اتصال سراسری برای مقادیری مانند نشانگرهای پشته در ++C را فراهم می کند.
  • دستورالعمل‌های جدید تبدیل شناور به int که به جای ایجاد استثنا در هنگام سرریز شدن نتیجه، حداقل یا حداکثر مقدار ممکن (ضروری برای SIMD) را برمی‌گرداند.
  • دستورالعمل بسط علامت اعداد صحیح (افزایش عمق بیت یک عدد با حفظ علامت و مقدار).
  • پشتیبانی از بلوک ها و توابعی که چندین مقدار را برمی گرداند (علاوه بر ارسال چندین پارامتر به توابع).
  • پیاده سازی توابع جاوا اسکریپت BigInt64Array و BigUint64Array برای تبدیل بین نوع جاوا اسکریپت BigInt و نمایش WebAssembly از اعداد صحیح 64 بیتی.
  • پشتیبانی از انواع مرجع (funcref و externref) و دستورالعمل های مرتبط با آنها (select، ref.null، ref.func و ref.is_null).
  • دستورالعمل های Memory.copy، memory.fill، memory.init و data.drop برای کپی کردن داده ها بین مناطق حافظه و پاک کردن مناطق حافظه.
  • دستورالعمل برای دسترسی مستقیم و اصلاح جداول (table.set، table.get، table.size، table.grow). امکان ایجاد، وارد کردن و صادرات چندین جدول در یک ماژول. توابع برای کپی/پر کردن جداول در حالت دسته ای (table.copy، table.init و elem.drop).

منبع: opennet.ru

اضافه کردن نظر