Как стать автором
Обновить
9.48

WebAssembly *

Низкоуровневый байт-код для исполнения в браузере

Сначала показывать
Порог рейтинга
Уровень сложности

Пишем простой калькулятор используя фреймворк eframe (egui)

Уровень сложности Средний
Время на прочтение 34 мин
Количество просмотров 42
GitHub *Rust *WebAssembly *Программирование *
Из песочницы

Всем здравствуйте. Ниже будет приведен пример написания PWA приложения готового для использования как в браузере, так и на компьютере с ОС Windows. Используется язык программирования Rust и фреймворк eframe (egui). В результате получим исполняемый файл для ОС Windows, и файл Webassembly. В процессе работы будет использоваться GitHub Action для отслеживания корректности написания нашего кода и сборки исполняемых файлов программы, а также для развертывания (версию программы с использованием Webassembly) как страницы в интернете (GitHub Pages).

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 0

Новости

Создание модуля WebAssembly с помощью Emscripten, AssemblyScript и Rust

Уровень сложности Средний
Время на прочтение 57 мин
Количество просмотров 3K
Python *C++ *Rust *WebAssembly *
Туториал
Из песочницы

В этой небольшой заметке предлагается рассмотреть несколько способов компиляции модуля для WebAssembly, используя три разных подхода. Мы реализуем решение одной и той же задачки на трёх языках и скомпилируем полученный код в модуль WebAssembly. Будем использовать:

Emscripten для компиляции кода, написанного на С++

AssemblyScript для компиляции кода, написанного на, собственно, AssemblyScript

wasm-pack для компиляции кода, написанного на Rust

План такой:

Во введении мы обсудим постановку задачи и немножко поговорим о технологии WebAssembly

В программной части мы реализуем функциональность модуля на трёх языках: c++, AssemblyScript и Rust. Поговорим о том, какие при этом возникают сложности и как их можно обойти

Подведём небольшой итог. Станет видно, какая технология хорошая, а какая не очень

В конце планируется два бонуса. Первый бонус - это пример простого web-приложения, использующего один из скомпилированных нами модулей. Второй бонус - демонстрация того, как этот модуль можно использовать в программе на Python.

Читать далее
Всего голосов 36: ↑36 и ↓0 +36
Комментарии 10

В Ruby появилась поддержка WebAssemblу: что это значит?

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 1.7K
Блог компании SkillFactory Ruby *JavaScript *Программирование *WebAssembly *
Обзор
Перевод


С выпуском версии 3.2 Ruby пополнил список языков программирования, поддерживающих WebAssembly. Небольшое на первый взгляд обновление может стать самым значительным изменением языка со времён Rails, так как теперь разработчики смогут работать не только с бэкендом. После портирования кода на WebAssembly его можно будет запускать где и как угодно — на фронтенде, встроенных устройствах, как бессерверные функции, вместо контейнеров или в граничных вычислениях. WebAssembly может превратить Ruby в универсальный язык программирования. Подробности под катом, а практика в вебе — на нашем курсе по Fullstack-разработке на Python.

Читать дальше →
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 8

Состояние WebAssembly в 2022-23 годах

Время на прочтение 8 мин
Количество просмотров 3.7K
Браузеры WebAssembly *
Ретроспектива
Перевод

Автор статьи Жерар Галлан известен как автор книги “WebAssembly in Action”, выпущенной Manning в 2018 году. Существует перевод его книги на русский — “WebAssembly в действии” (Питер, 2022). Предыдущий обзор The State of WebAssembly – 2021 and 2022 опубликован автором в январе 2022 года. — Прим. переводчика.

В этой статье я рассмотрю текущее состояние дел с WebAssembly (wasm). Начну с обзора событий 2022 года, чтобы посмотреть, сбылись ли какие-либо из моих прогнозов и не было ли каких-то сюрпризов. Затем я попытаюсь предсказать, куда, как мне кажется, всё пойдёт в 2023 году.

Читать далее
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 16

Истории

Once upon a time in Wasmwood или Как я реверсил игру на WASM

Время на прочтение 7 мин
Количество просмотров 2.7K
Реверс-инжиниринг *WebAssembly *
Из песочницы

Прошел уже месяц с того момента, как я попытал счастья в решении челленджа по реверсу WASM игры на платформе root-me.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 5

Компилируем C++ приложение для запуска в браузере

Время на прочтение 4 мин
Количество просмотров 520
C++ *Разработка под Android *WebAssembly *

У фреймворка Android есть небольшой инструмент под названием validatekeymaps.
Это утилита для проверки синтаксиса конфигурационных файлов устройств
ввода (*.kl, *.kcm, *.idc или virtualkeys.*). В документации
предлагается собрать её самостоятельно: скачать исходники Android,
установить необходимую систему сборки и т.д. И это в почти 2023. Неужели
нельзя сделать это в вэбе, чтоб без заморочек и удобно для
пользователя? Спойлер: можно. Этим и займёмся.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Python на сервере и в браузере. Путь к Web Assembly

Время на прочтение 4 мин
Количество просмотров 7.7K
Блог компании OTUS Python *WebAssembly *

Python как технология разработки приложений преимущественно используется для создания сценариев автоматизации, создания бэкэнда и веб-приложений, а также для анализа данных и использования методов статистики и машинного обучения. Также есть некоторые подходы к созданию мобильных приложений на Python (например, движок Kivy над OpenGL для Android). Но остается незаполненной ниша использования Python-приложений в веб-браузере, что могло бы позволить перенести часть обработки данных непосредственно на клиентское устройство и создавать полноценные fullstack-приложения на одной технологии. Решением этой задачи может стать кросскомпиляция Python в код WebAssembly, который может выполняться как в браузере, так и на сервере с использованием nodejs или движка V8, либо SSVM (Second State Virtual Machine). В статье мы рассмотрим несколько подходов к запуску Python-приложений внутри браузера и сервера с использованием WebAssembly.

Читать далее
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 7

Фронтенд на Go с использованием библиотеки RUI

Время на прочтение 4 мин
Количество просмотров 4.3K
Разработка веб-сайтов *Go *WebAssembly *

Изначально библиотека RUI разработана для создания клиент-серверных веб приложений на языке go, где вся обработка осуществляется на сервере, а браузер используется только как тонкий клиент.

Однако в последней версии библиотеки (0.10.0) была добавлена поддержка технологии WebAssembly. Теперь стало возможным объединить серверную и клиентскую часть в единый модуль исполняемый в браузере. При этом требуются минимальные изменения в уже существующем проекте использующем библиотеку RUI

В этой статье я покажу как переделать уже существующий проект чтобы его можно было скомпилировать в wasm модуль и запустить его в браузере

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 0

Build godot from source on linux with c# support and web export template

Время на прочтение 6 мин
Количество просмотров 2K
C# *WebAssembly *Godot *
Из песочницы

Проблема: чтобы собрать UE из сурсов, достаточно команд; чтобы собрать UE докер-образ, достаточно 1 команды. А чтобы собрать godot из сурсов с поддержкой c# на линукс и с возможностью экспортировать проект в web, надо прочитать 5+ статей и потратить кучу времени на понимание оных. Чтобы вы могли не тратить своё время, я собрал всю необходимую информацию в одной статье. Здесь приведены краткие инструкции по сборке godot движка из сурсов на debain 11 (64bit).

Собрать godot
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 3

Postgres WASM от Snaplet и Supabase

Время на прочтение 8 мин
Количество просмотров 4.1K
Блог компании SkillFactory Python *PostgreSQL *WebAssembly *
Перевод


Сегодня мы с нашими друзьями из Snaplet открываем исходники postgres-wasm — запускаемый в браузере сервер PostgreSQL с полным набором функционала, включая сохранение состояния в браузере, восстановление из pg_dump и логическую репликацию из удалённой базы данных.


Впервые Postgres в браузере запустили в Crunchy Data, их потрясающая версия выложена на HN месяц назад. Вместе со Snaplet мы решили сделать версию с открытым кодом. Посмотрим, как она разрабатывается и какой функционал мы добавили. Подробности — к старту нашего флагманского курса по Data Science.


Что такое Snaplet?

Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 7

Flutter Web и WebAssembly — ключ к тайной комнате

Время на прочтение 8 мин
Количество просмотров 2.4K
Блог компании OTUS Разработка мобильных приложений *Dart *WebAssembly *Flutter *

Web для Flutter-платформы с одной стороны является очень хорошо изученной платформой (поскольку Dart создавался как альтернатива JavaScript и изначально хорошо компилировался в JS и предусматривал возможности взаимодействия с JS-объектами и функциями, а также с DOM браузера), но в действительности и сейчас это Terra Incognita из-за большого потенциала интеграции с веб-платформой (как на уровне API HTML5, так и с использованием технологий WebAssembly). В этой статье мы обсудим некоторые аспекты взаимодействия Dart-кода с WebAssembly-модулями, поговорим о компиляции Flutter-приложений в WASM и о том, как можно компилировать C-библиотеку для использования во Flutter-приложениях.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

Как я делал serverless поиск для мейлинг листов OpenJDK

Время на прочтение 5 мин
Количество просмотров 743
Ненормальное программирование *Java *SQLite *WebAssembly *Serverless *
Совсем недавно мне захотелось поискать какую-то информацию в amber-dev мейлинг листе. Оказывается, что никакого встроенного поиска тут нет. Нужно либо пользоваться гуглом и использовать site: оператор, либо использовать поиск почтового клиента. В целом, оба варианта — рабочие, но мне захотелось сделать еще одну опцию, попутно немного поиграв с WebAssembly.

Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Как мы помогли Альфа-Банку выйти из трудного положения с помощью WASM

Время на прочтение 4 мин
Количество просмотров 8.2K
Блог компании Smart Engines Разработка веб-сайтов *Машинное обучение *Искусственный интеллект WebAssembly *

Привет, Хабр! Раньше мы уже рассказывали о распознавании документов прямо в браузере и технологии WebAssembly (или WASM), которая позволяет это делать. Теперь давайте разберем, как и где это работает в реальной жизни.

Читать далее
Всего голосов 21: ↑15 и ↓6 +9
Комментарии 6

Python WebAssembly PyScript и хостинг вебсайта на Azure Static с помощью visual studio code

Время на прочтение 2 мин
Количество просмотров 2.3K
Python *WebAssembly *
Из песочницы

Привет

Сегодня мы создадим небольшое приложение .py и загрузим его в Azure.

Требования: учетная запись Azure + желание узнавать новое и экспериментировать. Также нужен VSCode (бесплатная IDE).

Когда мы закончим, мы получим...

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 0

Запускаем DOS игру в браузере

Время на прочтение 4 мин
Количество просмотров 7.9K
Разработка веб-сайтов *WebAssembly *
Туториал

В 2022 году мало кого можно удивить DOS игрой в браузере. Благодаря dosbox они доступны на многих платформах. А поддержка браузера появилась с развитием компилятора emscripten. js-dos один из самых заметных проектов портирования dosbox в браузер. Последняя версия js-dos уже имеет достаточную производительность для комфортной игры в такие игры как Duke, Doom, C&C, Red Alert, WarCraft и многие другие.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 6

WebAssembly объединит их всех

Время на прочтение 10 мин
Количество просмотров 5.7K
C++ *Go *WebAssembly *

Задумался о том что бы прикрутить к своему пет проекту систему плагинов на WebAssembly. Это потенциально позволит переиспользовать существующий код на Go, C++, Rust, если конечно же он есть. А так же избавится от so/dll, что удобно при распространении плагинов, когда проект представляет собой десктопное приложение и собирается под Windows, OSX, GNU/Linux. Поэтому пошел смотреть как это сделано в Envoy.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 7

Используем клиентский процессор по максимуму. Часть 2: SIMD + мультипоточность

Время на прочтение 25 мин
Количество просмотров 7.2K
Блог компании RUVDS.com Высокая производительность *Программирование *Rust *WebAssembly *
Туториал

Снова поговорим об ускорении работы клиентской стороны веб-приложения и о том, как для этого задействовать все вычислительные ресурсы процессора.

В предыдущей части мы нарисовали фрактал Ньютона с помощью WebAssembly на Rust. В этой части мы задействуем SIMD команды и параллельные вычисления, чтобы добиться ещё большей производительности.

Вживую увидеть прирост скорости можно на онлайн-демо. На моём компьютере она составляет ~900% по сравнению с обычной реализацией на wasm.
Читать дальше →
Всего голосов 70: ↑70 и ↓0 +70
Комментарии 11

Go в браузер. Создание веб-приложений с использованием Web Assembly на Go

Время на прочтение 6 мин
Количество просмотров 9.8K
Блог компании OTUS Разработка веб-сайтов *Go *WebAssembly *

Технология WebAssembly появилась относительно недавно (в 2015 году) и позиционировалась как альтернатива JavaScript для выполнения в среде браузера с максимально достижимой производительностью. Приложение на WebAssembly может использовать все возможности, доступные в "песочнице" браузера для JS (доступ к Document Object Model, дополнительным классам HTML5), но при этом может быть изначально написано на других технологиях разработки и скомпилировано в формат байт-кода WASM, предоставляя свои интерфейсы сценариям на JavaScript.

Наиболее известным набором инструментов для компиляции в wasm32 является emscripten, с его помощью можно скомпилировать приложение, написанное на C/C++ или на любом языке, имеющим frontend-компилятор для LLVM. При этом компилятор подменяет вызовы OpenGL и POSIX на соответствующие аналоги в браузере, что например используется при компиляции библиотеки skia для браузера (canvaskit) из исходного кода на C++, а также портирование существующих библиотек (например, ffmpeg или opencv). Но некоторые языки программирования поддерживают wasm32 как одну из целевых платформ, среди которых можно выделить Kotlin (Native) и Go. В этой статье мы обсудим общие вопросы о запуске приложений Go в среде браузера и использование библиотеки Vecty для создания веб-приложений на основе переиспользуемых компонентов.

Читать далее
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 10

Почему я ушла из команды Google WebAssembly

Время на прочтение 6 мин
Количество просмотров 14K
Управление разработкой *Управление проектами *Карьера в IT-индустрии WebAssembly *
Перевод

Я пришла в Google в начале 2015 года, чтобы работать в команде V8, и была одним из первых авторов спецификации WebAssembly. В этой статье я частично расскажу историю того, что не так было с этим процессом и как он нанёс мне непоправимый урон. Надеюсь, эта история поможет людям распознавать токсическую культуру на рабочем месте, или позволит новым сотрудникам построить более удачную карьеру в Google. Любая история WebAssembly была бы подвержена искажениям из-за сложной судьбы проекта, и моя — не исключение.

На момент присоединения к команде V8 я уже несколько лет занималась поддержкой транспилятора, преобразующего приложения .NET в эффективный JavaScript. Проект начался в одно время с Emscripten — приложением, превратившимся в стандарт и ставшим источником вдохновения для создания WebAssembly. В то время мне удалось поработать с создателем asm.js Алоном Закаем и я многому у него научилась. Благодаря этому опыту я стала подходящим кандидатом для команды WebAssembly.
Читать дальше →
Всего голосов 27: ↑24 и ↓3 +21
Комментарии 10

Используем клиентский процессор по максимуму. Часть 1: Rust + WebAssembly

Время на прочтение 19 мин
Количество просмотров 9K
Блог компании RUVDS.com Высокая производительность *Программирование *Rust *WebAssembly *
Туториал

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

В этой части мы поговорим о том, как, используя Rust в связке с WebAssembly, можно ускорить тяжёлые вычисления на примере программы для рендеринга фрактала Ньютона. В следующей части будет подробно рассказано о векторных командах и мультипоточных вычислениях в браузере.

Прирост производительности при использовании всех техник оптимизации по сравнению с реализацией на чистом JS может составлять ~1000%: от 8–9 до 100–110 фпс. Это можно проверить на интерактивном онлайн-демо, позволяющем также поиграться с числом потоков, способом вычислений и формой фрактала.
Читать дальше →
Всего голосов 64: ↑64 и ↓0 +64
Комментарии 9

Вклад авторов