Wasmer 3.0، یک جعبه ابزار برای ساخت برنامه های کاربردی مبتنی بر WebAssembly، در دسترس است.

سومین نسخه اصلی پروژه Wasmer معرفی شد که یک زمان اجرا برای اجرای ماژول های WebAssembly ایجاد می کند که می تواند برای ایجاد برنامه های کاربردی جهانی که می توانند بر روی سیستم عامل های مختلف اجرا شوند و همچنین برای اجرای کدهای غیرقابل اعتماد به صورت مجزا استفاده می شود. کد پروژه به زبان Rust نوشته شده و تحت مجوز MIT توزیع شده است.

توانایی اجرای یک برنامه بر روی پلتفرم های مختلف با کامپایل کد در کد میانی WebAssembly سطح پایین، که می تواند بر روی هر سیستم عاملی اجرا شود یا در برنامه های زبان های برنامه نویسی دیگر تعبیه شود، فراهم می شود. برنامه ها کانتینرهای سبک وزنی هستند که کد شبه WebAssembly را اجرا می کنند. این کانتینرها به سیستم عامل متصل نیستند و می توانند شامل کدهایی باشند که در اصل به هر زبان برنامه نویسی نوشته شده است. جعبه ابزار Emscripten را می توان برای کامپایل در WebAssembly استفاده کرد. برای ترجمه WebAssembly به کد ماشین پلت فرم فعلی، از اتصال پشتیبان های مختلف کامپایل (Singlepass، Cranelift، LLVM) و موتورها (با استفاده از JIT یا تولید کد ماشین) پشتیبانی می کند.

برنامه ها از سیستم اصلی در یک محیط sandbox جدا شده اند و فقط به عملکرد اعلام شده دسترسی دارند (یک مکانیسم امنیتی مبتنی بر مدیریت قابلیت - برای اقدامات با هر یک از منابع (فایل ها، دایرکتوری ها، سوکت ها، تماس های سیستم و غیره)، به برنامه باید اختیارات مناسب داده شود). کنترل دسترسی و تعامل با سیستم با استفاده از WASI (WebAssembly System Interface) API ارائه می شود که رابط های برنامه نویسی را برای کار با فایل ها، سوکت ها و سایر عملکردهای ارائه شده توسط سیستم عامل فراهم می کند.

این پلتفرم به شما اجازه می دهد تا عملکرد اجرای برنامه را نزدیک به اسمبلی های بومی بدست آورید. با استفاده از Native Object Engine برای ماژول WebAssembly، می‌توانید کد ماشین ("wasmer compile -native" برای تولید فایل‌های شی .so، .dylib و .dll از پیش کامپایل شده) تولید کنید، که برای اجرا به حداقل زمان اجرا نیاز دارد، اما تمام ایزوله‌های sandbox را حفظ می‌کند. امکانات. امکان تهیه برنامه های از پیش کامپایل شده با Wasmer داخلی وجود دارد. Rust API و Wasm-C-API برای ایجاد افزونه ها و افزونه ها ارائه شده اند.

برای راه‌اندازی یک کانتینر WebAssembly، کافی است Wasmer را در سیستم زمان اجرا نصب کنید، که بدون وابستگی خارجی ("curl https://get.wasmer.io -sSfL | sh") ارائه می‌شود و فایل لازم را اجرا کنید ("wasmer test.wasm" ). برنامه ها در قالب ماژول های WebAssembly معمولی توزیع می شوند که می توانند با استفاده از مدیر بسته WAPM مدیریت شوند. Wasmer همچنین به عنوان یک کتابخانه در دسترس است که می تواند برای جاسازی کد WebAssembly در برنامه های Rust، C/C++، C#، D، Python، JavaScript، Go، PHP، Ruby، Elixir و Java استفاده شود.

تغییرات عمده در Wasmer 3.0:

  • قابلیت ایجاد فایل های اجرایی بومی برای هر پلتفرمی اضافه شده است. دستور "wasmer create-exe" به طور کامل برای تبدیل یک فایل کد میانی WebAssembly به فایل های اجرایی مستقل برای پلتفرم های لینوکس، ویندوز و macOS که می توانند بدون نصب Wasmer اجرا شوند، دوباره طراحی شده است.
  • راه اندازی بسته های WAPM واقع در پوشه wapm.io با استفاده از دستور wasmer run امکان پذیر است. برای مثال، اجرای «wasmer run python/python» بسته پایتون را از مخزن wapm.io دانلود و اجرا می‌کند.
  • Wasmer Rust API کاملاً بازطراحی شده است و سبک کار با حافظه را تغییر می دهد و امکان ذخیره ایمن اشیاء Wasm را در ساختار Store فراهم می کند. یک ساختار جدید MemoryView پیشنهاد شده است که به خواندن و نوشتن داده ها در یک منطقه حافظه خطی اجازه می دهد.
  • مجموعه ای از اجزای wasmer-js برای اجرای Wasmer در یک مرورگر وب و تعامل با آن از جاوا اسکریپت با استفاده از کتابخانه wasm-bindgen پیاده سازی شده است. wasmer-js با قابلیت‌های خود مطابق با اجزای wasmer-sys است که برای اجرای Wasmer در سیستم‌عامل‌های معمولی طراحی شده‌اند.
  • موتورها ساده شده اند. به جای موتورهای مجزا برای JIT، پیوندهای پویا و استاتیک (Universal، Dylib، StaticLib)، اکنون یک موتور مشترک ارائه شده است و بارگیری و ذخیره کد در سطح تنظیمات پارامترها کنترل می شود.
  • برای deserialize کردن مصنوعات، از چارچوب rkyv استفاده می شود که عملکرد در حالت کپی صفر را تضمین می کند. که نیازی به تخصیص حافظه اضافی ندارد و فقط با استفاده از بافر اولیه ارائه شده، deserialization را انجام می دهد. استفاده از rkyv سرعت راه اندازی را به میزان قابل توجهی افزایش داده است.
  • کامپایلر تک گذر Singlepass بهبود یافته است و پشتیبانی از توابع چند ارزشی، قابلیت اطمینان بهبود یافته و پشتیبانی از فریم های کنترل استثنا اضافه شده است.
  • اجرای بهبود یافته WASI (واسط سیستم WebAssembly) API. مشکلات رابط نرم افزار WASI برای کار با فایل سیستم برطرف شده است. انواع داخلی با استفاده از WAI (واسط‌های WebAssembly) دوباره طراحی شده‌اند که مجموعه‌ای از ویژگی‌های جدید را در آینده فعال می‌کند.

منبع: opennet.ru

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