دلایل گوگل مبنی بر جایگزینی PNaCI با WebAssembly

دلایل گوگل مبنی بر جایگزینی PNaCI با WebAssembly

از دید گوگل اکنون که سخن از اجرای کدهای به‌ اصطلاح نِیتو روی مرورگر به میان آمده است، لباس کهنه باید جای خود را به جامه‌ای نو دهد و این در حالی است که این غول نرم‌افزاری دنیا برای نیل به این هدف درصدد است تا WebAssembly را جایگزین Portable Native Client یا به اختصار PNaCI نماید. طبق گفتهٔ گوگل، ایراد بزرگ PNaCI این بود که با همهٔ مرورگرها سازگاری نداشت و این در حالی است که WebAssembly چنین مزیتی را در اختیارتان می‌گذارد. از این رو، گوگل قصد دارد تا به پشتیبانی اپلیکیشن‌ها و اِکستنشن‌های کروم از PNaCI پایان دهد.

اولین کسی باشید که به این سؤال پاسخ می‌دهید

به‌ زَعم گوگل، استفاده از PNaCI آن‌قدر کم است که کنار رفتنش را توجیه می‌کند و از سوی دیگر هم WebAssembly اکوسیستم فعالی دارد که به برقراری هماهنگی‌های بهتری نیز منجر خواهد شد. Brad Nelson، از مهندسان نرم‌افزار گوگل که تجربهٔ کدنویسی با NaCI ،PNaCI و WebAssembly را دارا است، در این باره می‌گوید:

از دیرباز برای اجرای کدهای نِیتو در وب باید یک پلاگین ویژه روی مرورگر نصب می‌کردین اما ما در سال 2013 سندباکس PNaCI رو معرفی کردیم تا هم به ساخت اپلیکیشن‌های امن، پرتابل و بسیار کارآمد کمک کنه و هم نیاز به پلاگین رو از میان برداره. این روش روی کروم خوب جواب داد اما نتونست راه‌کاری ارائه بده که با همهٔ مرورگرها سازگار باشه!

مهاجرت گوگل به وب‌اسمبلی نشان می‌دهد که این فناوری پیشرفت‌های بیشتری در پیش خواهد داشت زیرا به منزلهٔ فرمتی است که با مرورگرها سازگار بوده و این قابلیت را دارا است تا کارایی اپلیکیشن‌های تحت وب را ارتقاء داده و اجازهٔ راه‌یابی زبان‌هایی فراتر از جاوااسکریپت را در مرورگرها صادر کند. لازم به ذکر است که تمام کمپانی‌های بزرگ عرضه‌کنندهٔ مرورگر از جمله بنیاد موزیلا، مایکروسافت، گوگل و اپل در توسعهٔ وب‌اسمبلی مشارکت کرده‌اند. Brad Nelson در همین باره می‌گوید که اپلیکیشن‌هایی که از وب‌اسمبلی استفاده می‌کنند هم‌اکنون در چندین مرورگر اجرا می‌شوند:

- کروم و فایرفاکس به‌ صورت نِیتیو از وب‌اسمبلی پشتیبانی می‌کنند. 
- و پیش‌نسخه‌های مرورگر اج و سافاری نیز با وب‌اسمبلی سازگارند (که این بدان معنا است که دو مرورگر آخر نیز در آیندهٔ نزدیک از آن پشتیبانی خواهند کرد.)

PNaCI کدهای C و ++C را به فرمی از JS موسوم به AsmJS کامپایل می‌کند (برای آشنایی بیشتر با این فناوری، به مقالهٔ تغییر آیندهٔ بازی‌های کامپیوتری با فناوری Asm.js و تبدیل مرورگرها به یک پلتفرم بازی مراجعه نمایید.) گوگل برای مهاجرت از PNaCI به WebAssembly پیشنهادهایی ارائه داده و توصیه کرده است که در بیشتر موارد، کامپایلر Emscripten از کیت توسعهٔ نرم‌افزار PNaCI را به‌ کار ببرید. این شرکت همچنین به معرفی قابلیت ShareArrayBuffer پرداخته است تا راه را برای اجرای متقابل به‌ اصطلاح WebAssembly Threads هموار سازد. مضاف بر این، قابلیت دیگری موسوم به True-Asynce اجازه می‌دهد تا وب‌اسمبلی در پشت صحنه کامپایل شود (در صورتی‌ که علاقمند به کسب اطلاعات بیشتر در مورد وب‌اسمبلی هستید، می‌توانید به مقالهٔ جستاری در زبان Assembly و آشنایی بیشتر با مفهوم WebAssembly مراجعه نمایید.)

منبع