AssemblyScript، کدهای سطح پایین و باینریِ WebAssembly را بصورت پورتابل و بسیار سریع و قابل دسترس برای Developerهای TypeScript ارائه میکند، البته لازم به ذکر است که تنها زیرمجموعهای از TypeScript را مورد پشتیبانی قرار میدهد.
AssemblyScript باعث ایجاد یک پل ارتباطی میان WebAssembly و TypeScript میگردد. لازم به ذکر است که WebAssembly فرمت کد باینری Portable بوده و بهمنظور اجرای سریعتر برنامه های کاربردیِ تحت وب طراحی شده است و TypeScript نیز یک Superset زبان جاوا اسکریپتی میباشد که توسط مایکروسافت عرضه شده است.
AssemblyScript، به Developerها با یک پیشزمینهای از TypeScript و APIهای استاندارد جاوا اسکریپت به عنوان یکی از راهکارهای کامپایل کردن به WebAssembly ارائه میدهد. درحال حاضر این پروژه توسط Developer اصلی این شرکت، دانیل ویرتز، در حال گسترش بوده و در وضعیت تست قرار دارد. هدف از AssemblyScript، طراحی زبانی ساده میباشد که بتوان بهمنظور کامپایل نمودن با WebAssembly، بجای نصب و راهاندازی زنجیرهای از ابزارهای پیچیده، آنرا به صورت پکیجِ Npm نصب کرد.
کاری که AssemblyScript انجام میدهد بازنویسیِ TypeScript کامپایلرِ API بر روی BInaryen بهعنوان کامپایلر پسزمینه میباشد که قادر است باینریهای WebAssembly را تولید نماید. بهجای پیادهسازی دوبارهی TypeScript بهمنظور نزدیک شدن به هزینههای عملکرد، ، AssemblyScript تلاش مینماید تا بدون حمایت از ساختارهای Dynamic خاص، به اندازه معقول از ویژگیها پشتیبانی کند.
برنامههای AssemblyScript نیازمند برخی الزامات خاص میباشد، به عنوان مثال بهمنظور جلوگیری از تبدیلات ضمنیِ ناخواسته، Typeها باید نوشته شوند. همچنین پارامترهای توابع انتخابی نیازمند مقداردهی اولیه نیستند و علاوه بر آن Union Typeها توسط این طراحی پشتیبانی نمیشوند، البته ClassType | Null, Any و Undefined استثنا هستند.
AssemblyScript به عنوان پروژهای جدید شناخته میشود که بهطور عمده توسط Wirtzتوسعه داده شده است و ممکن است تغییراتی در مراحل مختلف آمادهسازی این پروژه ایجاد گردد. البته طبق برنامهی ارتقاء این پروژه اعلام شده است که علاوه بر پشتیبانی بیشتر از TypeScript، قابلیتهای جانبی Garbage Collection (بازیافت حافظه) و Exception Handling را نیز به WebAssembly اضافه خواهند نمود. هدف نهایی از این اقدامات توانمندسازی فرآیند کامپایل نمودن AssemblyScript Compiler به WebAssembly در یک مرورگر و بدون استفاده از راهکارهای هوشمندانه دیگر میباشد.
بنا به گفتهی ویرتز، فرمت باینری WebAssembly کاملا رضایتبخش بوده اما ایجاد این فرمت برای Developerهای برنامه، چالش بزرگی خواهد بود زیرا پشتیبانی برنامهریزیشده برای چندین زبان نیازمند تخصص و همچنین محیطهای توسعه برای زبان های مختلف میباشد. برنامههای AssemblyScript از نظر TypeScript دستوری (Syntax) معتبر بوده ولی از نظر معناشناسی (Semantics) لزوما معتبر نیستند.
AssemblyScript نیازمند برخی الزامات خاص میباشد، به عنوان مثال بهمنظور جلوگیری از تبدیلات ضمنیِ ناخواسته، Typeها باید نوشته شوند. همچنین پارامترهای توابع انتخابی نیازمند مقداردهی اولیه نیستند و علاوه بر آن Union Typeها توسط این طراحی پشتیبانی نمیشوند، البته ClassType | Null, Any و Undefined استثنا هستند.
AssemblyScript به عنوان پروژهای جدید شناخته میشود که بهطور عمده توسط Wirtzتوسعه داده شده است و ممکن است تغییراتی در مراحل مختلف آمادهسازی این پروژه ایجاد گردد. البته طبق برنامهی ارتقاء این پروژه اعلام شده است که علاوه بر پشتیبانی بیشتر از TypeScript، قابلیتهای جانبی Garbage Collection (بازیافت حافظه) و Exception Handling را نیز به WebAssembly اضافه خواهند نمود. هدف نهایی از این اقدامات توانمندسازی فرآیند کامپایل نمودن AssemblyScript Compiler به WebAssembly در یک مرورگر و بدون استفاده از راهکارهای هوشمندانه دیگر میباشد.
بنا به گفتهی ویرتز، فرمت باینری WebAssembly کاملا رضایتبخش بوده اما ایجاد این فرمت برای Developerهای برنامه، چالش بزرگی خواهد بود زیرا پشتیبانی برنامهریزیشده برای چندین زبان نیازمند تخصص و همچنین محیطهای توسعه برای زبان های مختلف میباشد.