از برنامههای وب پرسرعت گرفته تا علم داده پایتون در مرورگر، این پروژههای زبان برنامهنویسی و کامپایلر تغییرات متفاوتی را در وعده WebAssembly ارائه میدهند.
برنامههای وب امروزی به اندازه برنامههای دسکتاپ بومی سریع و پاسخگو نیستند، اما اگر میتوانستند چه میشدند؟ این وعده WebAssembly است.
WebAssembly یک زبان سطح پایین و اسمبلی مانند با فرمت باینری فشرده است که با عملکرد تقریباً بومی در مرورگرهای وب اجرا می شود. در همان زمان، WebAssembly یک هدف کامپایل قابل حمل برای C/C++، C#، Rust، Go، Kotlin، Swift و سایر زبان های برنامه نویسی فراهم می کند.
WebAssembly که به عنوان راهی برای بهبود عملکرد برنامه های وب و امکان استفاده از زبان های دیگر به غیر از جاوا اسکریپت در توسعه برنامه های مرورگر مورد ستایش قرار می گیرد، توسط گوگل، موزیلا، اپل و مایکروسافت حمایت می شود که همه از این فناوری در خود پشتیبانی می کنند. موتورهای مرورگر.
WebAssembly منجر به توسعه طیف وسیعی از فناوریهای جدید، از جمله زبانهای برنامهنویسی جدید شده است که از قدرت آن استفاده میکنند. در زیر ۱۴ پروژه زبانی وجود دارد که روی WebAssembly شرط بندی کرده اند.
Binaryen
Binaryen یک کتابخانه زیرساخت زنجیره ابزار کامپایلر برای WebAssembly است. باینرین که به زبان C++ نوشته شده است، در نظر گرفته شده است تا کامپایل در WebAssembly را آسان، مؤثر و سریع کند. دارای یک C API در یک هدر است و می توان از جاوا اسکریپت استفاده کرد. ورودی به شکل WebAssembly مانند پذیرفته می شود، اما یک نمودار کنترل کلی نیز برای کامپایلرهایی که آن را ترجیح می دهند پذیرفته می شود.
IR داخلی (نمایش متوسط) Binaryen از ساختارهای داده فشرده استفاده می کند و از تمام هسته های CPU برای کدژن موازی و بهینه سازی استفاده می کند. IR همچنین به راحتی به WebAssembly کامپایل می شود زیرا اساساً زیرمجموعه WebAssembly است. بهینهسازیهای خاص WebAssembly هم اندازه و هم سرعت کد را بهبود میبخشد و Binaryen را به تنهایی به عنوان یک کامپایلر مفید میسازد.
میتوانید Binaryen را از GitHub دانلود کنید.
Blazor WebAssembly
Blazor WebAssembly چارچوبی برای ساخت برنامههای وب تعاملی، سمت مشتری، تک صفحهای با استفاده از NET و میزبانی آن برنامهها در مرورگرهای مدرن (از جمله مرورگرهای تلفن همراه) در زمان اجرا NET مبتنی بر WebAssembly است. هیچ پلاگین یا کامپایل مجدد کد به زبان های دیگر مورد نیاز نیست. زمان اجرا کد NET را قادر می سازد تا از طریق APIهای جاوا اسکریپت WebAssembly به عملکرد مرورگر دسترسی پیدا کند.
وقتی یک برنامه Blazor WebAssembly در مرورگر اجرا می شود، فایل های کد سی شارپ و فایل های Razor در مجموعه های NET کامپایل می شوند که همراه با زمان اجرا دات نت در مرورگر دانلود می شوند. و از آنجایی که کد دات نت بر روی WebAssembly در جعبه ایمنی جاوا اسکریپت مرورگر اجرا می شود، در برابر اعمال مخرب روی ماشین کلاینت محافظت می شود. برنامه های Blazor WebAssembly را می توان به صورت مستقل یا با پشتیبانی سمت سرور مستقر کرد.
دستورالعملهای شروع کار با Blazor را میتوانید در dotnet.microsoft.com پیدا کنید. /a>.
خوشحال
Cheerp Leaning Technologies به عنوان یک کامپایلر C/C++ درجه سازمانی برای وب قرار می گیرد که C و C++ را تا C++ 17 در WebAssembly، JavaScript یا ترکیبی از این دو کامپایل می کند. . Cheerp با بهینهسازیهای سفارشی برای بهبود عملکرد و به حداقل رساندن اندازه خروجی کامپایلشده در زیرساخت LLVM/Clang ادغام شده است. Cheerp که عمدتاً برای انتقال کتابخانه ها و برنامه های کاربردی C/C++ موجود به HTML5 استفاده می شود، همچنین می تواند برای نوشتن برنامه های کاربردی وب و مؤلفه های WebAssembly استفاده شود. Cheerp تحت مجوزهای منبع باز و تجاری ارائه می شود.
میتوانید Cheerp را از leaningtech.com دانلود کنید.
CheerpJ
این کامپایلر مبتنی بر LLVM که به عنوان “کامپایلر جاوا برای وب” صورتبندی میشود، هر برنامه کلاینت جاوا را به WebAssembly، جاوا اسکریپت و HTML تبدیل میکند و برنامههای کلاینت جاوا را قادر میسازد در مرورگرهای مدرن اجرا شوند. CheerpJ از سه مولفه استفاده می کند: یک کامپایلر AOT (پیش از زمان)، یک زمان اجرا در WebAssembly و جاوا اسکریپت، و APIهای قابلیت همکاری DOM جاوا اسکریپت، برای دسترسی به DOM از جاوا. با CheerpJ، آرشیوهای JAR را می توان با استفاده از کامپایلر AOT کامپایل کرد. CheerpJ به هیچ پشتیبانی سمت سرور نیاز ندارد.
CheerpJ نیز مانند Cheerp از Leaning Technologies می آید. میتوانید آن را از leaningtech.com دانلود کنید.
Emscripten
این زنجیره ابزار کامپایلر منبع باز C و C++ یا هر زبان دیگری را با استفاده از فناوری کامپایلر LLVM در WebAssembly برای استقرار در وب، Node.js یا زمان اجرای Wasm مانند Wasmer کامپایل می کند. (کامپایلر Emscripten، emcc، جاوا اسکریپت را نیز منتشر می کند که پشتیبانی API را برای کدهای کامپایل شده فراهم می کند. Emscripten برای تبدیل لیستی از پایگاه های کد دنیای واقعی به WebAssembly، از جمله پایگاه های کد تجاری مانند موتور بازی Unreal Engine 4 و پلت فرم Unity 3D استفاده شده است. Emscripten از کتابخانه های استاندارد C و C++، استثناهای C++ و دستورات گرافیکی OpenGL/WebGL پشتیبانی می کند. Emscripten SDK مورد استفاده برای نصب زنجیره ابزار Emscripten (emcc، LLVM، و غیره) را می توان در Linux، MacOS و Windows استفاده کرد.
میتوانید Emscripten را از emscripten.org دانلود کنید.
استان گرایی
هنوز در مراحل اولیه توسعه، Extism یک سیستم افزونه برای اجرای برنامههای افزودنی WebAssembly در یک برنامه است، با این هدف که تمامی نرم افزارها قابل برنامه ریزی باشند. موارد استفاده رایج برای Extism شامل افزودن قابلیت به ابزارهای خط فرمان، ایجاد توابع تعریف شده توسط کاربر در پایگاه داده، ایجاد پسوندهای برنامه بدون کد و ایجاد برنامه های افزودنی برای سیستم های مدیریت محتوا است. با Extism، توسعه دهندگان می توانند از SDK های میزبان اصطلاحی برای زبان هایی از جمله Go، Ruby، Python، Rust و C++ استفاده کنند. توسعه دهندگان Extism می گویند که اکنون قابل استفاده است اما هنوز هم لبه های ناهمواری دارد.
دستورالعملهای نصب Extism را میتوانید در extism.org پیدا کنید.
جنگل
Forest یک زبان برنامه نویسی کاربردی است که در WebAssembly کامپایل می شود. نیک جانستون، توسعهدهنده گفت، هدف پشت Forest ارائه زبانی است که ایجاد برنامههای وب پیچیده، تعاملی و کاربردی را آسانتر میکند، اما بدون هزینههای سنتی آن رویکرد.
درحالحاضر بهعنوان «نرمافزار تحقیقاتی پیشآلفا، تجربی، مفهومی» توصیف میشود، Forest دارای تایپ استاتیک، تطبیق الگو، ساختارهای دادهای تغییرناپذیر، نحوهای چندگانه و قالببندی کد خودکار است. اولین نحو در حال توسعه از Elm و Haskell الهام گرفته شده است.
اصول طراحی زبان Forest شامل سهولت همکاری، آزمایش بدون دردسر در حد امکان، و توافق بر سر ساختار و معناشناسی است، در حالی که موافقت با مخالفت در نحو. جانستون تلاش میکند تا Forest را برای ساخت بازیهای پیچیده به اندازه کافی سریع کند تا برنامههای وب معمولی «سریع درخشان» شوند.
میتوانید Forest را از GitHub دانلود کنید.
دانه
وب سایت پروژه بیان می کند که زبان Grain ویژگی هایی را از زبان های آکادمیک و کاربردی به قرن بیست و یکم می آورد. با کامپایل کردن به WebAssembly از طریق زنجیره ابزار Binaryen و زیرساخت کامپایلر، Grain می تواند در مرورگر، روی سرور و به طور بالقوه در هر جایی هیچ خطای نوع زمان اجرا وجود ندارد و نیازی به حاشیه نویسی نوع وجود ندارد. زنجیره ابزار Grain دارای یک CLI، کامپایلر، زمان اجرا و کتابخانه استاندارد است که به صورت یک باینری منفرد ارسال می شود. توسعه دهندگان برای ساخت Grain از منبع به Node.js و Yarn نیاز دارند و باینری ها برای Linux، MacOS و Windows در دسترس هستند.
میتوانید دستورالعملهای شروع کار با Grain را در grain-lang.org پیدا کنید. p>
JWebAssembly
JWebAssembly، از نرم افزار I-Net، یک بایت کد جاوا به کامپایلر WebAssembly است که فایل های کلاس جاوا را به عنوان ورودی می گیرد و فرمت باینری WebAssembly (فایل wasm.) یا قالب متن (فایل wat.) را به عنوان خروجی تولید می کند. هدف این است که به صورت بومی در مرورگر با WebAssembly اجرا شود. در تئوری، JWebAssembly میتواند هر زبانی را که در بایت کد جاوا کامپایل میکند، مانند Clojure، Groovy، JRuby، Kotlin و Scala، در انتظار آزمایش، کامپایل کند.
JWebAssembly باید به زودی آماده تولید شود. تمام نقاط عطف لازم برای انتشار JWebAssembly 1.0 اجرا شده است و نامزد انتشار منتشر شده است. نقشه راه نسخه ۱.۰ به قابلیت هایی مانند تجزیه کننده بایت کد جاوا، چارچوب آزمایشی و پلاگین Gradle نیاز دارد.
میتوانید JWebAssembly را از GitHub دانلود کنید.
پیودید
پروژه Pyodide، که اخیراً از Mozilla به یک پروژه مستقل تبدیل شده است، پایتون و پشته علمی پایتون را در WebAssembly کامپایل میکند و زمان اجرای Python 3.8، NumPy، SciPy، Matplotlib، Scikit-learn را به ارمغان میآورد. ، و ده ها بسته دیگر به مرورگر. Pyodide تبدیل شفاف اشیا را بین جاوا اسکریپت و پایتون فراهم می کند و به پایتون دسترسی به API های وب را می دهد. Pyodide در سال ۲۰۱۸ به عنوان بخشی از پروژه Iodide برای انجام علم داده در یک مرورگر آغاز شد. Pyodide را می توان از REPL در مرورگر امتحان کرد.
میتوانید دستورالعملهای دانلود و استفاده از Pyodide را در pyodide.org پیدا کنید.
چرخش
Spin، از ارائهدهنده نرمافزار محاسبات ابری Fermyon Technologies، یک چارچوب WebAssembly برای میکروسرویسها، برنامههای وب و سایر برنامه های کاربردی مبتنی بر سرور توسعه دهندگان می توانند از Spin برای نوشتن WebAssembly برای ابر استفاده کنند. رابط هایی برای نوشتن ماژول های WebAssembly برای عملکردهایی مانند پاسخ دادن به درخواست های HTTP ارائه شده است. با Spin، توسعهدهندگان میتوانند از زبانهایی مانند Rust، Go، Python، Ruby، AssemblyScript، Grain، C/C++ و غیره استفاده کنند. Spin از ماژول های WAGI (WebAssembly Gateway Interface) و سیستم بسته بندی Bindle پشتیبانی می کند. اکنون در مرحله پیشنمایش اولیه، Spin به عنوان کد آزمایشی در نظر گرفته میشود، با تغییراتی که پیش از اولین نسخه پایدار انتظار میرود.
Spin در GitHub میزبانی میشود.
TeaVM
یک کامپایلر پیش از موعد برای بایت کد جاوا، TeaVM WebAssembly و JavaScript را برای اجرا در مرورگر منتشر می کند. با این حال، توجه داشته باشید که پشتیبانی WebAssembly در حال حاضر آزمایشی است. TeaVM مانند پسر عموی نزدیک GWT (Google Web Toolkit)، به توسعه دهندگان اجازه می دهد تا برنامه ها را در جاوا بنویسند و آنها را به عنوان جاوا اسکریپت استقرار دهند. برخلاف GWT، TeaVM با فایل های کلاس کامپایل شده کار می کند، نه کد منبع. علاوه بر این، TeaVM به کامپایلرهای موجود مانند javac، kotlinc و scalac متکی است، بنابراین می تواند کدهای Kotlin و Scala و همچنین جاوا را کامپایل کند. TeaVM در درجه اول یک ابزار توسعه وب است. برای گرفتن پایگاه های کد بزرگ در جاوا یا کاتلین و تولید جاوا اسکریپت طراحی نشده است. یک زیر پروژه TeaVM، Flavour، به عنوان چارچوبی برای نوشتن برنامه های وب تک صفحه ای عمل می کند.
میتوانید دستورالعملهای دانلود و استفاده از TeaVM را در GitHub بیابید.
Uno Platform
جایگزینی برای پلتفرم برنامه تلفن همراه Xamarin، Uno Platform یک پلتفرم رابط کاربری برای تیمهای دات نت است تا برنامههای مبتنی بر تک کد برای WebAssembly، وب، ویندوز، MacOS، Linux، iOS و اندروید، با استفاده از سی شارپ و XAML. Uno از زمان اجرا Mono-WASM در .NET 5 استفاده می کند تا کد C# را در همه مرورگرهای وب اصلی اجرا کند و به عنوان پلی برای برنامه های WinUI و UWP (پلتفورم ویندوز جهانی) برای اجرای بومی WebAssembly عمل می کند. . برای ساخت برنامه های وب با Uno، توسعه دهندگان می توانند از Visual Studio یا Visual Studio Code استفاده کنند.
دستورالعملهای شروع کار را میتوانید در وبسایت Uno Platform پیدا کنید. a>.
Wasmcloud
از Cosmonic، Wasmcloud یک برنامه زمان اجرا است که از WebAssembly در توسعه برنامه های کاربردی قابل حمل و ترکیبی که به چند وصل می شوند، استفاده می کند. محیط های ابری، لبه و مرورگر. این فناوری به عنوان ارائه عملکرد تقریباً بومی، با امنیت ارائه شده از طریق جعبه شنی WebAssembly و مدل بازیگری که منطق تجاری را از قابلیتهای زیربنایی خاص جدا میکند، ارائه میشود. توسعه دهندگان می توانند میکروسرویس ها را یک بار به زبان دلخواه خود بنویسند و آنها را در همه جا مستقر کنند. زبان های فعلی پشتیبانی شده عبارتند از Rust، TinyGo، و AssemblyScript. Wasmcloud به عنوان یک پروژه Sandbox بنیاد محاسبات بومی ابری (CNCF) پذیرفته شده است.
دستورالعملهای نصب wasmCloud را میتوانید در wasmcloud.dev پیدا کنید.
پست های مرتبط
۱۴ پروژه زبان داغ سوار بر WebAssembly
۱۴ پروژه زبان داغ سوار بر WebAssembly
۱۴ پروژه زبان داغ سوار بر WebAssembly