13 مورد از پروژه های جذاب زبان های مبتنی بر WebAssembly
چهارشنبه 31 فروردین 1401امروزه اپلیکیشن های تحت وب به اندازه اپلیکیشن های مخصوص دسکتاپ سریع و پاسخگو نیستند. چه میشد اگر این برنامه ها سرعت بالایی داشتند؟
این وعده ای است که WebAssembly می دهد. پروژه های جذاب زبان های مبتنی بر WebAssembly پروژه هایی هستند که این وعده را تکمیل می کنند و در این راستا در حال حرکت هستند. WebAssembly یک زبان سطح پایین و مانند زبان اسمبلی با فرمت باینری فشرده است که با عملکرد تقریبا بومی که به شما ارائه می دهد می تواند به راحتی در مرورگرها اجرا شود. به صورت همزمان WebAssembly یک هدف کامپایل قابل حمل برای سوئیفت، کاتلین، زبان Go، Rust، سی شارپ، سی و سی پلاس پلاس نیز به شمار می آید.
نکاتی مهم درباره WebAssembly
پیش از آن که بخواهیم درباره پروژه های جذاب زبان های مبتنی بر WebAssembly صحبت کنیم اجازه دهید تا کمی بیشتر با WebAssembly آشنا شویم. WebAssembly امروزه به عنوان راهی برای بهبود عملکرد برنامه های تحت وب شناخته می شود که امکان استفاده از زبان های برنامه نویسی دیگر غیر از جاوا اسکریپت را در توسعه اپلیکیشن های مخصوص مرورگر برای توسعه دهندگان فراهم می کند. این ابزار در حال حاضر توسط شرکت های بزرگی مانند گوگل، موزیلا، اپل و مایکروسافت حمایت می شود و همگی این شرکت ها از WebAssembly در موتورهای مرورگر خود استفاده می کنند.
WebAssembly منجر به توسعه طیف وسیعی از فناوری های جدید، از جمله زبان های برنامه نویسی کاملا جدید شده است که از قدرت این ابزار نهایت استفاده را می برند. در ادامه قصد داریم به بررسی 13 مورد از پروژه های جذاب زبان های مبتنی بر WebAssembly بپردازیم و اطلاعاتی را درباره هر یک از این پروژه ها nv زبان های مبتنی بر WebAssembly در اختیار شما قرار دهیم.
Binaryen از محبوب ترین پروژه های جذاب زبان های مبتنی بر WebAssembly
WebAssembly در واقع یک کتابخانه مربوط به زیرساخت های زنجیره ای است که برای WebAssembly استفاده می شود. در حال حاضر این پروژه را می توان از بهترین پروژه های جذاب زبان های مبتنی بر WebAssembly به شمار آورد که به زبان سی پلاس پلاس نوشته شده است. این ابزار طراحی شده تا کامپایل در WebAssembly را برای شما ساده تر کند و با سرعت بیشتری این کار را انجام دهد. این ابزار دارای یک API مبتنی بر C است که در داخل یک header خاص قرار گرفته است و می توان از طریق جاوا اسکریپت به آن دسترسی پیدا کرد. ورودی هایی که مانند WebAssembly هستند به راحتی در این ابزار قابل پذیرش هستند ولی شما می توانید یک گراف کلی کنترل را نیز اضافه کنید و این گراف نیز در Binaryen پذیرفته می شود.
نکاتی مهم درباره پروژه Binaryen
IR داخلی این ابزار از ساختار داده های جمع و جور استفاده می کند و از این طریق هسته های پردازنده مرکزی شما را موازی سازی کرده و باعث بهینه سازی عملکرد آن نیز می شود. نکته جالب درباره IR داخلی این است که به راحتی به WebAssembly کامپایل می شود چرا که اساسا به عنوان زیر مجموعه این ابزار شناخته می شود. بهینه سازی های خاصی که روی WebAssembly صورت گرفته است علاوه بر این که می تواند روی اندازه اپلیکیشن ها تاثیرگذار باشد بلکه سرعت آنها را نیز بهبود می دهد. تمام این ویژگی ها در کنار یکدیگر باعث می شوند تا این ابزار به تنهایی به عنوان یک کامپایلر شناخته شود. تمام این ویژگی ها این ابزار را در لیست بهترین پروژه های زبان های مبتنی بر WebAssembly قرار داده است.
Blazor WebAssembly از پروژه های جذاب زبان های مبتنی بر WebAssembly
Blazor WebAssembly فریم ورکی برای ساخت اپلیکیشن های تعاملی تحت وب که سمت کلاینت و سمت سرور هستند می باشد. این برنامه ها در بیشتر مواقع به صورت تک صفحه ای طراحی و ساخته می شوند که برای ساخت آنها از دات نت استفاده شده و در داخل مرورگرهای مدرن نیز میزبانی می شوند (از جمله این مرورگرها می توان به مرورگرهای مخصوص گوشی های هوشمند اشاره کرد). دقت داشته باشید که در زمان اجرا دات نت مبتنی بر WebAssembly خواهد بود. به همین علت امروزه به عنوان یکی از پروژه های جذاب زبان های مبتنی بر WebAssembly شناخته می شود. در این ابزار شما هیچ نیازی به کامپایل مجدد کدها به زبان دیگری نخواهید داشت. ران تایم این ابزار دات نت را قادر می سازد تا از طریق API های زبان برنامه نویسی جاوا اسکریپت موجود در WebAssembly به عملکرد مرورگر دسترسی پیدا کند.پس اگر به دنبال پروژه های نوشته شده در زبان های مبتنی بر WebAssembly هستید حتما باید این پروژه را نیز امتحان کنید.
چند نکته مهم درباره پروژه Blazor WebAssembly
برای این که با ویژگی های این مورد از پروژه های جذاب زبان های مبتنی بر WebAssembly آشنا شوید اجازه دهید تا نکات مهمی را درباره این پروژه در اختیار شما قرار دهیم. زمانی که شما یک اپلیکیشن Blazor WebAssembly را روی مرورگر خود اجرا می کنید فایل های کد سی شارپ و همینطور فایل های Razor به اسمبلی های دات نت کامپایل می شوند که با استفاده از ران تایم دات نت در مرورگر دانلود می شوند. از آنجایی که کد دات نت به راحتی در WebAssembly اجرا می شود (این کار از طریق sandbox جاوا اسکریپت موجود در مرورگر صورت می گیرد) می تواند از آن در برابر اقدامات مخرب که در دستگاه کلاینت رخ می دهند محافظت کند. اپلیکیشن های Blazor WebAssembly را می توان به صورت مستقل یا با پشتیبانی سمت سرور مستقر کرد و طیف گسترده ای از زبان های مبتنی بر WebAssembly را روی آنها پیاده سازی کرد.
Cheerp از دیگر پروژه های زبان های مبتنی بر WebAssembly
پروژه Cheerp که متعلق به شرکت Leaning Technologies است به عنوان کامپایلر سی و سی پلاس پلاس در حوزه سازمانی شناخته می شود که برای وب مورد استفاده قرار می گیرد. این ابزار می تواند تا سی پلاس پلاس 17 را پشتیبانی کند و کدهای آن را به WebAssembly، جاوا اسکریپت یا ترکیبی از این دو کامپایل کند. نکته ای که باید درباره این پروژه بدانید این است که در زیرساخت LLVM/Clang ادغام شده است و دارای بهینه سازی های شخصی سازی شده ای است که باعث بهبود عملکرد و مینیمم کردن خروجی فایل کامپایل می شود. این پروژه در ابتدا برای انتقال کتابخانه ها و اپلیکیشن هایی که در زبان های سی و سی پلاس پلاس نوشته شده بودند به HTML5 استفاده میشد. با این حال امروزه از آن برای ساخت اپلیکیشن های تحت وب و کامپوننت های WebAssembly نیز استفاده می شود. فراموش نکنید که این پروژه از جمله پروژه های زبان های مبتنی بر WebAssembly است که به صورت متن باز در دسترس شما قرار دارد و دارای یک نسخه تجاری نیز می باشد.
CheerpJ از دیگر پروژه های زبان های مبتنی بر WebAssembly
این پروژه زبان های مبتنی بر WebAssembly در واقع یک کامپایلر مبتنی بر LLVM است که با عنوان یک کامپایلر زبان جاوا برای وب شناخته می شود. این پروژه می تواند به شما کمک کند تا هر اپلیکیشن کلاینت نوشته شده به زبان جاوا را به WebAssembly، جاوا اسکریپت و HTML تبدیل کنید. علاوه بر این اپلیکیشن های جاوا را قادر می سازد تا روی مرورگرهای مدرن اجرا شوند. CheerpJ می تواند سه کامپوننت مهم را توسعه دهد:
- یک کامپایلر AOT
- یک ران تایم در WebAssembly و جاوا اسکریپت
- API های DOM interoperability در جاوا اسکریپت برای دسترسی به DOM از طریق زبان برنامه نویسی جاوا
با استفاده از این پروژه ابزارهای مبتنی بر WebAssembly آرشیوهای JAR می توانند با استفاده از کامپایلر AOT کامپایل شوند. نکته جالب درباره این پروژه این است که نیاز به هیچ گونه پشتیبانی سمت سروری ندارد.
آشنایی با پروژه Emscripten در زبان های مبتنی بر WebAssembly
Emscripten در واقع یک مجموعه ابزار مخصوص کامپایل به صورت متن باز است که می تواند کدهای سی و سی پلاس پلاس یا هر زبان برنامه نویسی دیگری که از تکنولوژی کامپایلر LLVM استفاده می کند را به WebAssembly برای توسعه در وب تبدیل کند. بستر وب شما در این کار می تواند شامل Node.js یا یک ران تایم Wasm مانند Wasmer باشد. نکته مهمی که باید درباره این پروژه زبان های مبتنی بر WebAssembly بدانید این است که کامپایلر Emscripten می تواند جاوا اسکریپت را نیز منتشر کند که از APIهای مخصوص برای پشتیبانی و حمایت از کدهای کامپایل شده نیز پشتیبانی می کند.
نکاتی مهم درباره پروژه Emscripten
امروزه از پروژه Emscripten که به عنوان یکی از بهترین پروژه های زبان های مبتنی بر WebAssembly شناخته می شود می توان برای تبدیل فهرستی از پایگاه کدهای واقعی به WebAssembly اشاره کرد. از جمله این پایگاه کدهای واقعی نیز می توان به مواردی مانند پایگاه کدهای تجاری مانند موتور بازی سازی Unreal Engine 4، و پلتفرم Unity 3D اشاره کرد. این پروژه می تواند از کتابخانه های استاندارد زبان های سی و سی پلاس پلاس نیز پشتیبانی کند. علاوه بر این پشتیبانی از exceptionهای سی پلاس پلاس و دستورات گرافیکی OpenGL/WebGL را نیز برای شما فراهم می کند. Emscripten SDK برای نصب کردن مجموعه ابزارهای Emscripten nv زبان های مبتنی بر WebAssembly مورد استفاده قرار می گیرد که شما می توانید به راحتی آن را در ویندوز، لینوکس و MacOS نصب و اجرا کنید.
Forest از محبوب ترین پروژه های زبان های مبتنی بر WebAssembly
یکی دیگر از پروژه های جذاب زبان های مبتنی بر WebAssembly پروژه Forest است. این پروژه در واقع یک زبان برنامه نویسی فانکشنال است که در WebAssembly کامپایل می شود. هدف از طراحی و ساخت این زبان برنامه نویسی در واقع ارائه زبانی است که ایجاد برنامه های تحت وب پیچیده و تعاملی را ساده تر کند بدون این که نیازی به پرداخت هزینه سنتی انجام این کار وجود داشته باشد.
این پروژه در حال حاضر به عنوان نرم افزار تحقیقاتی pre-alpha، تجربی و مفهومی شناخته می شود. از جمله ویژگی های آن می توان به دارا بودن نوع داده استاتیک، قابلیت تطبیق الگو، ساختار داده های غیرقابل تغییر، سینتکس های متعدد و ... اشاره کرد. اولین سینتکس مربوط به این زبان برنامه نویسی از Elm و Haskell الهام گرفته شده است.
اصول طراحی این زبان برنامه نویسی شامل سهولت در همکاری، تست کردن و آزمایش بی دردسر کدها و توافق بر سر معناشناسی و ساختار است. به همین علت است که می توان از آن برای طراحی و ساخت برنامه های تحت وب پیشرفته نیز استفاده کرد و جز بهترین پروژه های زبان های مبتنی بر WebAssembly نیز قرار می گیرد.
پروژه Grain و ویژگی های آن
زبان Grain جز پروژه های جذاب زبان های مبتنی بر WebAssembly است که ویژگی های زبان های آکادمیک را به زبان های عملیاتی می آورد تا در قرن 21 بتوانید به راحتی از آنها برای ساخت پروژه های تحت وب استفاده کنید. کامپایل کردن به WebAssembly از طریق مجموعه ابزارهای Binaryen و زیرساخت های کامپایلر به این ابزار اجازه می دهد تا به راحتی هرچه تمام در مرورگر اجرا شود و شما بتوانید آن را روی سرور نیز اجرا کنید. این ویژگی به شما اجازه می دهد تا تقریبا در هر محیطی بتوانید آن را اجرا کنید. نکته ای که وجود دارد این است که با استفاده از این ابزار تقریبا هیچ ارور ران تایمی را دریافت نمی کنید و نیازی به استفاده از قابلیت type annotations نیز نخواهید داشت. مجموعه ابزارهای Grain شامل یک CLI، کامپایلر، ران تایم و کتابخانه استاندارد است که به صورت یک باینری منفرد ارسال می شود. دقت داشته باشید که توسعه دهندگان برای ساخت Grain از طریق سورس کد نیازمند Node.js و Yarn نیاز دارند و البته باینری های آن نیز در لینوکس، ویندوز و MacOS قابل دسترس هستند.
JWebAssembly از ابزارهای جذاب زبان های مبتنی بر WebAssembly
JWebAssembly که توسط نرم افزار I-Net طراحی و ساخته شده است یک بایت کد جاوا است که برای کامپایلر WebAssembly است که فایل های کلاس جاوا را به عنوان ورودی دریافت نمی کند و فرمت باینری WebAssembly را با پسوند .wasm به وجود می آورد. البته این فرمت ممکن است فرمت متنی نیز باشد که با پسوند .wat تولید می شود. در واقع هدف از این ابزار این است که به صورت بومی برنامه ها را در مرورگر با استفاده از WebAssembly اجرا کنیم. اگر بخواهیم به صورت تئوری به این موضوع نگاه کنیم JWebAssembly می تواند هر زبانی را که کدهای خود را به بایت کد جاوا تبدیل می کند کامپایل کند. از جمله این زبان ها می توان به کاتلین، Clojure، Groovy، JRuby، Scala و ... اشاره کرد.
JWebAssembly باید به زودی آماده تولید شود. تمام تست های لازم برای انتشار نسخه اولیه این ابزار انجام شده است نسخه اولیه این ابزار احتمالا شامل قابلیت هایی مانند تجزیه کننده بایت کد جاوا، فریم ورک های آموزشی و افزونه های Gradle می باشد. این ابزار را نیز امروزه می توان در لیست پروژه های جذاب زبان های مبتنی بر WebAssembly به شمار آورد که دارای محبوبیت بالایی است.
ابزار Pyodide و ویژگی های آن
اگر به دنبال آشنایی با ابزارها و پروژه های زبان های مبتنی بر WebAssembly هستید باید بدانید که Pyodide یکی از بهترین این پروژه ها است. پروژه Pyodide که اخیرا از موزیلا منتقل شده و به یک پروژه کاملا مستقل تبدیل شده است می تواند زبان پایتون و scientific stack پایتون را به WebAssembly کامپایل کند، ران تایم 3.8 پایتون را به شما ارائه دهد و پشتیبانی از ابزارهایی مانند NumPy، SciPy، Matplotlib، Scikit-learn و هزاران پکیج دیگر را به شما ارائه دهد.
آشنایی با ابزار Pyodide
در واقع عاملی که باعث شده تا Pyodide جز بهترین پروژه های جذاب زبان های مبتنی بر WebAssembly قرار بگیرد این است که تبدیل شفاف اشیا را بین جاوا اسکریپت و پایتون برای شما فراهم می کند و امکان دسترسی به API های تحت وب در پایتون را نیز در اختیار شما قرار می دهد. این پروژه در سال 2018 به عنوان بخشی از پروژه Iodide برای انجام فعالیت های مرتبط با علم داده در مرورگر شروع به کار کرد. نکته پایانی که باید درباره این ابزار بدانید این است که Pyodide را می توان از طریق یک REPL در مرورگر امتحان کرد.
Spin از جذاب ترین پروژه های زبان های مبتنی بر WebAssembly
Spin یکی از پروژه های زبان های مبتنی بر WebAssembly است که توسط شرکت ارائه دهنده محاسبات مبتنی بر کلود یعنی شرکت Fermyon Technologies ارائه می شود. این ابزار در واقع یک فریم ورک برای زبان های مبتنی بر WebAssembly برای میکروسرویس ها است که در اپلیکیشن های تحت وب و سایر اپلیکیشن های مبتنی بر سرور می توان از آن استفاده کرد. توسعه دهندگان می توانند از Spin برای نوشتن در WebAssembly در محیط های ابری استفاده کنند. اینترفیس هایی توسط این ابزار برای شما فراهم می شوند تا بتوانید ماژول های WebAssembly را برای نوشتن توابعی مانند پاسخ دادن به درخواست های HTTP بنویسید. با استفاده از Spin توسعه دهندگان می توانند از زبان هایی مانند Rust، Go، پایتون، Ruby، AssemblyScript، Grain، سی و سی پلاس پلاس استفاده کنند. Spin پشتیبانی از ماژول های WAGI(WebAssembly Gateway Interface) و همینطور پکیج سیستم Bindle را نیز برای شما فراهم می کند. این پروژه در حال حاضر در فاز پیش نمایش قرار دارد و به عنوان کد آزمایشی در نظر گرفته شده است. انتظار می رود که قبل از انتشار اولین نسخه پایدار برخی از ویژگی های آن تغییر کنند.
TeaVM از پروژه های زبان های مبتنی بر WebAssembly
این پروژه یکی از پروژه های زبان های مبتنی بر WebAssembly است که در واقع یک کامپایلر پیشرفته برای بایت کدهای جاوا است. این ابزار WebAssembly و جاوا اسکریپت را برای اجرا شدن در مرورگر منتشر می کند. WebAssembly که در این ابزار استفاده می شود در نسخه آزمایشی قرار دارد. این ابزار شباهت زیادی با GWT دارد. TeaVM به توسعه دهندگان اجازه می دهد تا اپلیکیشن های خود را به زبان جاوا بنویسند و آنها را به عنوان کدهای جاوا اسکریپت مستقر کنند. برخلاف GWT ابزار TeaVM با فایل های کلاس های کامپایل شده کار می کند و برای کامپایل کردن از سورس کدها بهره ای نمی برد. علاوه بر این TeaVM روی کامپایلرهای موجود نیز وجود دارد که از جمله این کامپایلرها می توان به javac، kotlinc و scalac اشاره کرد. بنابراین شما می توانید کدهای کاتلین و Scala را نیز مانند کدهای جاوا کامپایل کنید و از زبان های مبتنی بر WebAssembly استفاده کنید.
آشنایی با پلتفرم Uno
اگر بخواهیم لیست پروژه های جذاب زبان های مبتنی بر WebAssembly را معرفی کنیم بدون شک باید به معرفی پلتفرم Uno نیز بپردازیم. این پلتفرم در واقع جایگزینی برای پلتفرم طراحی اپلیکیشن های موبایل زامارین است که یک پلتفرم طراحی UI برای دات نت است. با استفاده از پلتفرم Uno شما می توانید اپلیکیشن هایی با یک پایگاه کد را برای WebAssembly طراحی کنید و آنها را در وب، ویندوز، MacOS، لینوکس، IOS و حتی اندروید اجرا کنید. این پلتفرم موفق شده است تا ران تایم Mono-WASM در دات نت 5 را توسعه دهد تا بتواند کدهای سی شارپ را در تمام مرورگرهای مدرن و بزرگ اجرا کند. امروزه می توان این پروژه را به عنوان پلی میان اپلیکیشن های WinUI و UWP دانست و به همین علت است که ما آن را در لیست پروژه های زبان های مبتنی بر WebAssembly قرار داده ایم. با استفاده از این ابزار شما می توانید WebAssembly را به صورت کاملا محلی و بومی اجرا کنید. برای ساخت اپلیکیشن هایی مبتنی بر Uno شما می توانید ویژوال استودیو یا ویژوال استودیو کد استفاده کنید.
Wasmcloud از محبوب ترین ابزارهای زبان های مبتنی بر WebAssembly
این ابزار توسط Cosmonic ساخته شده است که در واقع یک ران تایم اپلیکیشن می باشد که از WebAssembly برای توسعه اپلیکیشن های قابل حمل و ترکیبی استفاده می کند. در ادامه این ابزار می تواند اپلیکیشن های شما را به محیط های ابری و همینطور مرورگرها متصل کند. این فناوری تقریبا عملکردی بومی و محلی را به توسعه دهندگان ارائه می دهد و امنیت بالایی نیز دارد که باعث می شود تا در لیست بهترین پروژه های زبان های مبتنی بر WebAssembly قرار گیرد. در این ابزار توسعه دهندگان می توانند میکروسرویس ها را یک بار به زبان دلخواه خود بنویسند و بعدها از آن در موقعیت های مختلف استفاده کنند.
- برنامه نویسان
- 2k بازدید
- 3 تشکر