WebAssembly

WebAssembly (که اغلب به‌صورت Wasm خلاصه می‌شود) قالبی باینری برای دستورالعمل‌هاست که به‌عنوان هدفی قابل حمل جهت کامپایل زبان‌های سطح بالا مانند C، ++C، Rust و دیگر زبان‌ها طراحی شده است. این فناوری استقرار Applicationهای سمت کاربر و سمت سرور روی وب را ممکن می‌کند. Wasm قالبی Bytecode در سطح پایین است که در ماشین مجازی اجرا می‌شود؛ معمولاً ماشین مجازی‌ای که در مرورگرهای وب ادغام شده است. هرچند در ابتدا برای وب توسعه داده شد، WebAssembly یک Runtime یونیورسال است و در محیط‌های غیر وب مانند IoT و دستگاه‌های Edge نیز کاربرد دارد.

مسئله‌ای که حل می‌کند

سال‌ها Stack موسوم به LAMP (Linux Apache MySQL PHP) الگوی Applicationهای وب‌محور بود. بعدها JavaScript پادشاه توسعه Front-end شد و Applicationهای مبتنی بر Node.js به هنجار بدل شدند. با تکامل فناوری وب، تمرکز شدید روی زبان‌های تفسیرشده قرار گرفت؛ زبان‌هایی که حتی با پیشرفت‌های فناورانه نیز معمولاً از زبان‌های کامپایل‌شده کارایی کمتری دارند. هرچند JavaScript در طول سال‌ها بهبود یافته، هنوز در اجرای وظایف محاسباتی سنگین با محدودیت‌های کارایی روبه‌رو است. زبان‌های تفسیرشده که در Runtime کامپایل می‌شوند، هنگام اجرا در محیط‌های متفاوت با مشکلات کارایی و عملکرد مواجه می‌شوند. در مقابل، باینری‌های کامپایل‌شده مادامی که به‌درستی کامپایل شده باشند، معمولاً یکسان اجرا می‌شوند؛ اما از نظر تاریخی، باینری کامپایل‌شده برای محیط وب مناسب نبود.

چگونه کمک می‌کند

WebAssembly قالب باینری سطح پایینی فراهم می‌کند که می‌تواند با سرعتی نزدیک به اجراهای Native عمل کند و به Applicationهای وب اجازه می‌دهد محاسبات پیچیده را کارآمد انجام دهند. توسعه‌دهندگان می‌توانند با استفاده از مهارت‌های موجود خود در زبان‌هایی مثل C، ++C، Rust و دیگر زبان‌ها Applicationهای وب بسازند. این قابلیت امکانات جدیدی ایجاد می‌کند و اجازه می‌دهد Codebaseها و Libraryهای موجود دوباره مورد استفاده قرار گیرند. همچنین ماژول‌های WebAssembly می‌توانند روی مرورگرها، سیستم‌عامل‌ها و دستگاه‌های مختلف به‌شکلی پایدار اجرا شوند و نیاز به کد Platform-Specific را کاهش دهند. در مجموع، WebAssembly محدودیت‌های کارایی، محدودیت زبان، قابل حمل بودن کد، نگرانی‌های امنیتی، اندازه کد و زمان بارگذاری را هدف قرار می‌دهد و محیطی قدرتمندتر و انعطاف‌پذیرتر برای توسعه Applicationهای وب فراهم می‌کند.


آخرین ویرایش September 26, 2025: [fa] Add Persian to the list of localized languages (6511f5f)