14 горячих языковых проектов на WebAssembly

автор vadim


Современные веб-приложения далеко не так быстры и отзывчивы, как родные настольные приложения, но что, если бы они могли быть такими? Это обещание WebAssembly.

WebAssembly — это низкоуровневый язык, похожий на ассемблер, с компактным двоичным форматом, который работает в веб-браузерах почти с родной производительностью. В то же время WebAssembly предоставляет переносимую цель компиляции для C/C++, C#, Rust, Go, Kotlin, Swift и других языков программирования.

Провозглашенный как способ повысить производительность веб-приложений и разрешить использование языков, отличных от JavaScript, при разработке браузерных приложений, WebAssembly поддерживается Google, Mozilla, Apple и Microsoft, каждая из которых поддерживает эту технологию в своих браузерных движках.

WebAssembly привел к развитию целого ряда новых технологий, включая совершенно новые языки программирования, использующие его возможности. Ниже приведены 14 языковых проектов, которые сделали большие ставки на WebAssembly.

Бинариен

Binaryen — это библиотека инфраструктуры компилятора для WebAssembly. Написанный на C++, Binaryen призван сделать компиляцию в WebAssembly простой, эффективной и быстрой. У него есть C API в одном заголовке, и его можно использовать из JavaScript. Ввод принимается в форме, подобной WebAssembly, но общий контрольный граф также принимается компиляторами, которые предпочитают его.

Внутреннее IR (промежуточное представление) Binaryen использует компактные структуры данных и задействует все ядра ЦП для параллельного создания кода и оптимизации. IR также легко компилируется в WebAssembly, потому что по сути является подмножеством WebAssembly. Специфичные для WebAssembly оптимизации улучшают как размер кода, так и скорость, что делает Binaryen полезным в качестве серверной части компилятора.

Вы можете скачать Binaryen с GitHub.

Blazor WebAssembly

Blazor WebAssembly — это платформа для создания интерактивных клиентских одностраничных веб-приложений с использованием .NET и размещения этих приложений в современных браузерах (включая мобильные браузеры) в среде выполнения .NET на основе WebAssembly. Никаких плагинов или перекомпиляции кода на другие языки не требуется. Среда выполнения позволяет коду .NET получать доступ к функциям браузера через API JavaScript WebAssembly.

Когда приложение Blazor WebAssembly запускается в браузере, файлы кода C# и файлы Razor компилируются в сборки .NET, которые загружаются в браузер вместе со средой выполнения .NET. А поскольку код .NET выполняется на WebAssembly в изолированной программной среде JavaScript браузера, он защищен от вредоносных действий на клиентском компьютере. Приложения Blazor WebAssembly можно развертывать автономно или с поддержкой на стороне сервера.

Инструкции по началу работы с Blazor можно найти на сайте dotnet.microsoft.com.

Подбодрить

Cheerp от Leaning Technologies позиционируется как корпоративный компилятор C/C++ для Интернета, компилирующий C и C++, вплоть до C++ 17, в WebAssembly, JavaScript или их комбинацию. Cheerp интегрирован в инфраструктуру LLVM/Clang с пользовательскими оптимизациями, предназначенными для повышения производительности и минимизации размера скомпилированного вывода. В основном используемый для переноса существующих библиотек и приложений C/C++ на HTML5, Cheerp также может использоваться для написания веб-приложений и компонентов WebAssembly. Cheerp предлагается под лицензией с открытым исходным кодом и коммерческой лицензией.

Вы можете скачать Cheerp с сайта leaningtech.com.

CheerpJ

Объявленный как «компилятор Java для Интернета», этот компилятор на основе LLVM преобразует любое клиентское приложение Java в WebAssembly, JavaScript и HTML, позволяя клиентским приложениям Java работать в современных браузерах. CheerpJ использует три компонента: компилятор AOT (с опережением времени), среду выполнения в WebAssembly и JavaScript и API-интерфейсы взаимодействия DOM JavaScript для доступа к DOM из Java. С помощью CheerpJ архивы JAR можно компилировать с помощью компилятора AOT. CheerpJ не требует какой-либо поддержки на стороне сервера.

Как и Cheerp, CheerpJ создан компанией Leaning Technologies. Вы можете скачать его с сайта leaningtech.com.

Эмскриптен

Эта цепочка инструментов компилятора с открытым исходным кодом компилирует C и C++ или любой другой язык, использующий технологию компиляции LLVM, в WebAssembly для развертывания в Интернете, Node.js или среду выполнения Wasm, такую ​​как Wasmer. (Компилятор Emscripten, emcc, также выдает JavaScript, обеспечивающий поддержку 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 включают в себя простоту совместной работы, максимально безболезненное тестирование и согласие по структуре и семантике при согласии не соглашаться с синтаксисом. Johnstone стремится сделать Forest достаточно быстрым для создания сложных игр, чтобы обычные веб-приложения были «молниеносно быстрыми».

Вы можете скачать Forest с GitHub.

Зерно

Язык Grain переносит функции академических и функциональных языков в 21 век, говорится на сайте проекта. Компилируя в WebAssembly с помощью набора инструментов Binaryen и инфраструктуры компилятора, Grain может работать в браузере, на сервере и потенциально где угодно. Нет ошибок типа во время выполнения и нет необходимости в аннотациях типов. Набор инструментов Grain включает интерфейс командной строки, компилятор, среду выполнения и стандартную библиотеку, которые поставляются в виде единого двоичного файла. Разработчикам потребуются Node.js и Yarn для сборки Grain из исходного кода, а бинарные файлы доступны для Linux, MacOS и Windows.

Инструкции по началу работы с Grain можно найти на сайте grin-lang.org.

JWebAssembly

JWebAssembly от I-Net Software — это компилятор байт-кода Java в WebAssembly, который принимает файлы классов Java в качестве входных данных и генерирует двоичный формат WebAssembly (файл .wasm) или текстовый формат (файл .wat) в качестве вывода. Цель состоит в том, чтобы работать в браузере с помощью WebAssembly. Теоретически JWebAssembly может компилировать любой язык, который компилируется в байт-код Java, например Clojure, Groovy, JRuby, Kotlin и Scala, в ожидании тестирования.

JWebAssembly скоро должен быть готов к работе. Все вехи, необходимые для выпуска JWebAssembly 1.0, реализованы, и кандидат в выпуск опубликован. Дорожная карта версии 1.0 требует таких возможностей, как анализатор байт-кода Java, тестовая среда и подключаемый модуль Gradle.

Вы можете скачать JWebAssembly с GitHub.

пиодид

Проект Pyodide, который недавно перешел из Mozilla в независимый проект, компилирует Python и научный стек Python в WebAssembly, добавляя в браузер среду выполнения Python 3.8, NumPy, SciPy, Matplotlib, Scikit-learn и десятки других пакетов. Pyodide обеспечивает прозрачное преобразование объектов между JavaScript и Python и предоставляет Python доступ к веб-API. Pyodide был запущен в 2018 году как часть проекта 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, опережающий компилятор для байт-кода Java, выдает WebAssembly и JavaScript для запуска в браузере. Однако обратите внимание, что поддержка WebAssembly в настоящее время является экспериментальной. Подобно близкому родственнику GWT (Google Web Toolkit), TeaVM позволяет разработчикам писать приложения на Java и развертывать их как JavaScript. В отличие от GWT, TeaVM работает с скомпилированными файлами классов, а не с исходным кодом. Кроме того, TeaVM опирается на существующие компиляторы, такие как javac, kotlinc и scalac, поэтому может компилировать код Kotlin и Scala, а также Java. TeaVM — это прежде всего инструмент веб-разработки; он не предназначен для использования больших кодовых баз на Java или Kotlin и создания JavaScript. Подпроект TeaVM, Flavour, служит основой для написания одностраничных веб-приложений.

Инструкции по загрузке и использованию TeaVM можно найти на GitHub.

Платформа Уно

Альтернатива платформе мобильных приложений Xamarin, Uno Platform — это платформа пользовательского интерфейса для команд .NET, позволяющая создавать приложения с единой кодовой базой для WebAssembly, Интернета, Windows, MacOS, Linux, iOS и Android с использованием C# и XAML. Uno использует среду выполнения Mono-WASM в .NET 5 для запуска кода C# во всех основных веб-браузерах и служит мостом для приложений WinUI и UWP (универсальная платформа Windows) для собственного запуска на WebAssembly. Для создания веб-приложений с помощью Uno разработчики могут использовать Visual Studio или Visual Studio Code.

Инструкции по началу работы можно найти на веб-сайте платформы Uno.

Васмклауд

Wasmcloud от Cosmonic — это среда выполнения приложений, использующая WebAssembly для разработки компонуемых переносимых приложений, которые подключаются к многооблачным, периферийным и браузерным средам. Эта технология позиционируется как обеспечивающая производительность, близкую к естественной, с безопасностью, обеспечиваемой через песочницу WebAssembly и акторную модель, отделяющую бизнес-логику от конкретных базовых возможностей. Разработчики могут один раз написать микросервисы на выбранном ими языке и развернуть их везде. Текущие поддерживаемые языки включают Rust, TinyGo и AssemblyScript. Wasmcloud был принят в качестве проекта песочницы Cloud Native Computing Foundation (CNCF).

Инструкции по установке wasmCloud можно найти на сайте wasmcloud.dev.

Related Posts

Оставить комментарий