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

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

[ Also on InfoWorld: Microsoft gets serious about WebAssembly ]

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

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

Binaryen

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 ‘ Cheerp позиционируется как компилятор 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.

[ Also on InfoWorld: What is LLVM? The power behind Swift, Rust, Clang, and more ]

Emscripten

Эта инструментальная цепочка компилятора с открытым исходным кодом компилирует 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.

лес

Forest – это функциональный язык программирования, который компилируется в WebAssembly. По словам разработчика Ника Джонстона, цель Forest – предоставить язык, упрощающий создание сложных, интерактивных и функциональных веб-приложений, но без традиционных накладных расходов, связанных с этим подходом.

В настоящее время описываемое как «программное обеспечение для предварительных альфа-экспериментов и концептуальных исследований», Forest предлагает статическую типизацию, сопоставление с образцом, неизменяемые структуры данных, несколько синтаксисов и автоматическое форматирование кода. Первый синтаксис в разработке вдохновлен Elm и Haskell.

Принципы проектирования языка Forest включают в себя простоту совместной работы, максимально безболезненное тестирование и согласие по структуре и семантике, а также согласие не соглашаться по синтаксису. Джонстон стремится сделать Forest достаточно быстрым для создания сложных игр, чтобы обычные веб-приложения работали «быстро».

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

Зерно

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

Вы можете найти инструкции по началу работы с Grain по адресу Grain-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. I-Net Software планирует выпустить JWebAssembly 1.0 в этом году.

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

Пиодид

Проект Pyodide, который недавно переехал из Mozilla станет независимым проектом, компилирует Python и научный стек Python в WebAssembly, обеспечивая браузеру среду выполнения Python 3.8, NumPy, SciPy, Matplotlib, Scikit-learn и десятки других пакетов. Pyodide обеспечивает прозрачное преобразование объектов между JavaScript и Python и предоставляет Python доступ к веб-API. Pyodide начал свою деятельность в 2018 году как часть проекта Iodide по анализу данных в браузере. Пиодид можно попробовать REPL в браузере.

Вы можете найти инструкции по загрузке и использованию Pyodide по адресу pyodide.org.

TeaVM

Опережающий компилятор для байт-кода Java, TeaVM генерирует WebAssembly и JavaScript для запуска в браузере. Однако обратите внимание, что поддержка WebAssembly в настоящее время является экспериментальной. Подобно близкому родственнику GWT (Google Web Toolkit), TeaVM позволяет разработчикам писать приложения на Java и развертывать их как JavaScript. В отличие от GWT, TeaVM работает со скомпилированными файлами классов, а не с исходным кодом. Кроме того, TeaVM полагается на существующие компиляторы, такие как javac, kotlinc и scalac, поэтому может компилировать код Kotlin и Scala, а также Java. TeaVM – это, прежде всего, инструмент веб-разработки; он не предназначен для использования больших кодовых баз на Java или Kotlin и создания JavaScript. Подпроект TeaVM, Flavor, служит основой для написания одностраничных веб-приложений.

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

Авторские права © 2021 IDG Communications, Inc.


#популярных #языковых #проектов #использующих #WebAssembly

Source link