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

WebAssembly *

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

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

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

Время на прочтение6 мин
Количество просмотров2.8K

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

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

Postgres WASM от Snaplet и Supabase

Время на прочтение8 мин
Количество просмотров4.9K


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


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


Что такое Snaplet?

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

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

Время на прочтение8 мин
Количество просмотров3.9K

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 мин
Количество просмотров915
Совсем недавно мне захотелось поискать какую-то информацию в amber-dev мейлинг листе. Оказывается, что никакого встроенного поиска тут нет. Нужно либо пользоваться гуглом и использовать site: оператор, либо использовать поиск почтового клиента. В целом, оба варианта — рабочие, но мне захотелось сделать еще одну опцию, попутно немного поиграв с WebAssembly.

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

Истории

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

Время на прочтение4 мин
Количество просмотров9.1K

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

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

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

Время на прочтение2 мин
Количество просмотров2.8K

Привет

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

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

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

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

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

Время на прочтение4 мин
Количество просмотров9.7K

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

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

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

Время на прочтение10 мин
Количество просмотров6.8K

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

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

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

Время на прочтение25 мин
Количество просмотров8.9K

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

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

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

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

Время на прочтение6 мин
Количество просмотров15K

Технология 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

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

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

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

Время на прочтение19 мин
Количество просмотров11K

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

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

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

Сложение векторов со скоростью 154 Гб/с на WebAssembly

Время на прочтение10 мин
Количество просмотров4.9K

Автор ускорил сложение векторов до ~12 000 000 сложений 1024-мерных векторов в секунду. Делимся подробностями и представляем генератор WASM из С++ от автора статьи к старту курса по Fullstack-разработке на Python.

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

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

Распознавание документов в браузере вашего устройства

Время на прочтение6 мин
Количество просмотров2.9K

Привет Хабр! Те из вас, кто следит за нашими публикациями про мобильное распознавание документов, знает, что мы придерживаемся принципа распознавания документов только на самом устройстве. Модуль, который отвечает за распознавание и ввод данных, не должен быть уязвимее того, что он в моменте заменяет (а именно, клавиатуру). Наши технологии легко встраиваются в мобильные приложения, но что делать, когда необходимо реализовать веб-приложение с возможностями ИИ? Уступать принципам не приходится - на помощь приходит WebAssembly. Под катом мы расскажем, как мы портировали наши решения по распознаванию документов, банковских карт, баркодов, и всего остального, для использования в Wasm. Уверены, что вам будет интересно.

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

TypeScript: разрабатываем WebAssembly-компилятор

Время на прочтение13 мин
Количество просмотров5.1K



Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи, в которой автор рассказывает о том, как разработать компилятор для WebAssembly на TypeScript.


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


Если вам это интересно, прошу под кат.

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

Оптическое распознавание символов с помощью Rust и WebAssembly

Время на прочтение6 мин
Количество просмотров5.8K

После переписывания Cyberscore я захотел отправить на сайт какие-нибудь результаты. Последнее, во что я играл, это Pokémon Legends: Arceus, по которой на Cyberscore есть около 3000 таблиц результатов. Я не собирался отправлять столько рекордов вручную, поэтому начал придумывать инструмент для автоматизации этого процесса.

Эта статья посвящена двум вещам: процессу извлечения результатов из JPG с помощью Rust и встраиванию этого функционала во фронтенд Cyberscore.
Читать дальше →
Всего голосов 47: ↑45 и ↓2+43
Комментарии0

Как устроен современный веб-синтезатор

Время на прочтение13 мин
Количество просмотров5.2K

За годы развития браузеры обзавелись множеством API и функциональных возможностей, благодаря которым превратились в невероятно мощные платформы приложений. Яркий пример — это современный веб-синтезатор, подробностями об устройстве которого делимся к старту курса по Fullstack-разработке на Python.

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

Вангеры 3D: пример использования Emscripten в Rust

Время на прочтение5 мин
Количество просмотров9.6K

Вангеры в 2022 году продолжают удивлять, прежде всего людьми которые когда-то полюбили эту игру, но сегодня не забывают и вкладывают много сил, делая её лучше, современнее. Оригинальная игра получила обновление с поддержкой полноценного 3D, да не абы какого, а кросс платформенного - работающего на всех системах и даже в браузере. Статья о том, как нетипичная связка технологий помогла запустить обновление в браузере.

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

JavaScript редактор SVG диаграмм который весит в 6,5 раз меньше bootstrap (библиотека с открытым исходным кодом)

Время на прочтение4 мин
Количество просмотров14K

Demo | GitHub

Эксперименты с созданием редактора диаграмм на Blazor Webassembly (Blazor WebAssembly: Drag and Drop в SVG, Blazor WebAssembly: соединительные линии в SVG) показали что технология не годится для интенсивных манипуляций с DOM.

То что будут проседания было известно заранее: WebAssembly не имеет доступа к DOM, любые изменения только через вызовы JavaScript. Задержки оказались такими большими, что перетаскивание на мобильном тормозило уже после добавления третьей фигуры.

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

Использование Golang для разработки Node.js приложений (Node.js: In Go We Trust)

Время на прочтение7 мин
Количество просмотров9.1K

Меня зовут Алексей Новохацкий, я – Software Engineer. Сейчас работаю над архитектурой высоконагруженных систем, провожу технические собеседования, воплощаю в жизнь собственные проекты.

Как известно, Node.js хорошо справляется с I/O intensive задачами. А вот для решения CPU bound мы имеем несколько вариантов – child processes/cluster, worker threads. Также есть возможность использовать другой язык программирования (C, C++, Rust, Golang) в качестве отдельного сервиса/микросервиса или через WebAssembly скрипты.

В данной обзорной статье будут описаны подходы к использованию Golang в разработке Node.js приложений для запуска некоторых CPU intensive задач (простой суммы чисел, последовательности Фибоначчи, а также для таких хеш-функций как md5 и sha256).

Какие у нас есть варианты?

1. Попытаться решить CPU bound задачи только с помощью Node.js

2. Создать отдельный сервис, написанный на Golang и "общаться" с нашим приложением с помощью запросов/брокера сообщений и т.д. (в данной статье будут использованы обычные http запросы)

3. Использовать Golang для создания wasm файла, что позволит использовать дополнительные методы в Node.js

Читать далее
Всего голосов 5: ↑2 и ↓3-1
Комментарии18