Обновить
16K+

WebAssembly *

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

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

Сначала бизнес, потом юзеры: продуктовый подход к внутренним инструментам на примере PWA-конструктора

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели2.9K

Привет! Я Софа, ведущий b2e дизайнер в Perfomance Lab, и я считаю, что внутренние продукты недооценены, а процесс их создания в корне отличается от b2c/b2b.

Сегодня речь пойдёт про последнее упомянутое решение — PWA-конструктор, который помогает нашим медиабаерам проверять свои гипотезы быстрее и создавать более 20 приложений каждый день. Я расскажу, зачем мы начали его делать и с какими сложностями столкнулись.

Читать далее

Новости

Империя наносит ответный удар: kad.arbitr.ru снова поддается парсингу (часть 1)

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9K

В статьях2021 года можно встретить довольно пессимистичный вывод: «ресурс окончательно уничтожил возможность сбора информации с помощью Selenium». Но, как оказалось, это не совсем так.

Сайт kad.arbitr.ru — предоставляет информацию о гражданских делах, в первую очередь данная информация интересна юристам. Также там можно найти информацию о начале\конце банкротства и много другой информации связанной с юридической составляющей нашей жизни как граждан данной страны. На практике часто возникает задача мониторинга состояния дел по заданному списку — допустим по ИНН или же по ФИО. Именно такая задача была поставлена предо мной, найти дело по ИНН (если оно существует) и открыть его карточку чтобы собрать информацию.

При первом знакомстве сайт выглядит довольно устаревшим — как и многие государственные сайты, тем не менее, первое впечатление бывает обманчиво, ведь тут достаточно неплохая защита от тех кто хочет собрать много информации автоматически. Далее разбор будет строиться по следующей схеме: простой способ сбора информации → анализ, почему он работает или нет и так далее.

Первое, что приходит в голову при решении задачи парсинга по конкретному полю — это использование API.

Возможны три варианта.

Читать далее

WebAssembly: обзор технологии, эксперименты с числами и мечты о браузере без JS

Время на прочтение13 мин
Охват и читатели6.9K

WebAssembly находится в разработке уже более 8 лет. Технология прошла долгий путь развития и недавно разработчики из Bytecode Alliance выкатили версию 3.0.

О WebAssembly уже много материалов, но сегодня нам важна сама суть. У нас есть возможность, воспользовавшись любым из доступных языков программирования, написать модуль с необходимой нам логикой и запустить в исполняемой среде браузера. Разработчики обещают: модули будут быстрее и безопаснее, чем JavaScript, а также созданные ранее технологии, наподобие asm.js.

На связи Борис Мещеряков, frontend-разработчик в ПСБ и чаще всего мне приходится работать с javascript-фреймворками - React, Angular и прочими. Узнав о WebAssembly, я какое-то время наблюдал за его развитием. Мне стало интересно, может ли новая технология помочь мне уже сейчас? Какие ее возможности существуют на данный момент и какие реальны в будущем?

Разберёмся вместе?

Читать далее

Лицензии уходят, музыка остаётся: как я превратил тему для музыкального клиента в runtime-аддон с блекджеком и WASM

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.6K

Около года назад моё желание кастомизировать десктопный клиент популярного музыкального сервиса привело меня в некое сообщество. Всё началось с попытки восстановить заброшенную тему «Blurity» после очередного обновления Electron-хоста, которое сломало все селекторы. Но проект быстро перерос рамки обычных правок CSS.

В этой статье я расскажу, как ChromaSync эволюционировал из простого визуального патча в полноценную инженерную систему — runtime-аддон со сложной архитектурой. Мы разберем «анатомию» плеера, создание декларативной системы из 70+ настроек и перенос тяжелой математики аудиореактивных эффектов в изолированное ядро на WASM. Это история о том, как 700 строк JavaScript превратились в 10 000, а обычная «разукрашка» — в оптимизированную экосистему, умеющую балансировать между визуальной насыщенностью и производительностью системы.

Читать далее

Как я перенес консольное приложение в Rust + WASM и выложил на GitLab Pages

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели7K

Перенес консольного приложения в формат, удобный к показу по ссылке:

переписал логику на Rust,

собрал в WebAssembly и завернул в статичную страницу с терминальным интерфейсом на чистом HTML/CSS/JS.

В статье разбираю практический пайплайн: экспорт функции из Rust в WASM (wasm_bindgen), инициализацию модуля в браузере через JS, вывод результата в DOM и публикацию через GitLab Pages. Отдельно показываю, как встроил .wasm в base64, чтобы страница работала даже без отдельной загрузки бинарного файла.

Это кейс про то, как быстро превратить небольшую CLI-логику без системных API в наглядное web-демо, которое открывается с любого устройства без установки.

Репозиторий: gitlab.com/Evgene-Kopylov/iching_wasm
Демо: i-ching-wasm-c50914.gitlab.io

Читать статью с картинками

Мы переписали наш парсер WASM с Rust на TypeScript — и он ускорился в три раза

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели16K

Мы создали парсер openui‑lang на Rust и скомпилировали его в WASM. Логика была здравой: Rust быстрый, WASM в браузере даёт скорость, близкую к нативной, а наш парсер — разумно сложный, многоэтапный конвейер. Почему бы не захотеть его на Rust?

Но оказалось, мы оптимизировали не то, что нужно.

Читать далее

«Ну вроде едет». Мой самописный мессенджер готов к публичной порке. Начнём?

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели18K

В какой-то момент я понял неприятную вещь: если твой канал связи живет по чужому настроению, политической погоде, сбою в чужом облаке или очередной внезапной любви регулятора к кнопке «запретить» — это не твой канал связи. Это аренда с правом внезапного выселения.

Мне эта модель быстро наскучила.

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

Читать далее

3d в MonoGame, python в c# или всё таки KNI в браузере? трёхслойная постирония о том, как я игру делал

Уровень сложностиСложный
Время на прочтение22 мин
Охват и читатели8K

Всем привет. В ходе этого материала вы узнаете:

1. Как сделать простой рендер на c# в MonoGame

2. Что использовать, чтобы вызвать python из c#

3. Почему пункт 2 - это плохая идея

4. Как MonoGame игру сбилдить в web/html с помощью его форка KNI

Пристёгивайтесь, будет весело!

ПРИСТЕГНУТЬСЯ!

Flutter в феврале: релизы Flutter и Dart, Roadmap 2026, Toyota Fluorite и главное из экосистемы

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели6.3K

Привет, Flutter-разработчики! 👋

Февраль — это тот месяц, когда экосистема не просто жила, а перестраивалась. Два ключевых релиза, публичный вектор развития на 2026, неожиданный 3D-движок от Toyota и тонна полезных материалов!

Читать далее

Развлекаюсь, вжимая игру на WebAssembly в одно сообщение мессенджера

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.1K

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

Это, в свою очередь, подтолкнуло меня покодить на Си (чего я не делал сто лет) всякое, ориентируясь на WASM.

А это уже натолкнуло меня на мысль: а не подойдёт ли связка JS+WebAssembly как инструмент для создания минифицированных проектов в духе демосцены?

Короче, хоть я к демосцене никаким боком, но что мешает мне написать игрульку в сайз-факторе 4K? Исключительно for fun.

Посмотреть что получилось

Git в браузере. Расширяем возможности с помощью LFS

Уровень сложностиСложный
Время на прочтение17 мин
Охват и читатели7K

Привет, Хабр! Я Паша, разработчик Gramax — Open Source платформы для управления документацией в подходе Docs as Code.

В прошлой статье я рассказывал о том, как мы переводили наше приложение с Isomorphic Git на libgit2, как засунули его в веб-версию приложения при помощи Emscripten и с какими трудностями столкнулись в процессе.

На этот раз — как мы оптимизировали хранение файлов ресурсов каталога (в большинстве случаев, изображений) при помощи Git LFS, тем самым ускорив его клонирование и синхронизацию.

Читать далее

Как обстоят дела с WebAssembly?

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели22K

Когда заходит разговор про WebAssembly, где-нибудь в начале дискуссии обычно появляется комментарий в духе «А что, собственно, произошло?»

Этот язык преподносили как нечто поворотное. Неужели это просто был яркий маркетинг? А может, очередной случай с обречённым на провал апплетом JVM?

И я хочу подойти к этой теме немного со стороны, так как подобные вопросы содержат ошибочные предположения, которые следует прояснить.

Читать далее

FlutterPulse: Январский дайджест 2026 — новости, переводы и обновления месяца

Время на прочтение2 мин
Охват и читатели5.1K

Привет, Flutter-разработчики! 👋
Январь выдался по-настоящему снежным и спокойным - идеальное время, чтобы подтянуть знания, разобрать отложенные статьи и обновить стек перед новым рабочим сезоном.

И этот месяц для нас особенный!

Читать далее

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

Как оптимизировать код WebAssembly при помощи встраивания функций и деоптимизации

Время на прочтение17 мин
Охват и читатели7.8K

В этом посте будут объяснены две стратегии оптимизации WebAssembly, которые не так давно были реализованы в движке V8 и вошли в версию браузера Google Chrome M137. Речь пойдёт о спекулятивном встраивании call_indirect inlining и о поддержке деоптимизации в WebAssembly. В сочетании два этих приёма помогают генерировать более качественный машинный код, так как основаны на допущениях, которые строятся, исходя из обратной связи, поступающей от среды исполнения. Благодаря этому, WebAssembly выполняется быстрее, особенно это касается программ WasmGC. Например, проверив эти приёмы на наборе микробенчмарков, написанных на Dart, видим, что комбинация двух оптимизаций даёт ускорение в среднем более чем на 50%. В более крупных и реалистичных приложениях и на тех бенчмарках, которые рассмотрены ниже, достигается ускорение между 1% и 8%. Деоптимизации — также очень важная составляющая для дальнейшей оптимизации в будущем.

Читать далее

Запускаем C++ SQL-движок в браузере: как парсить Excel, CSV и Parquet через WebAssembly (без сервера)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9.5K

Современный фронтенд давно перестал быть просто "лицом" приложения. Мы переносим в браузер нейросети, обработку видео и криптографию. Но когда дело доходит до банальной аналитики файлов — например, локального парсинга тяжелого Excel или Parquet-файла и выполнения SQL-запросов по ним — мы часто упираемся в ограничения JS-библиотек или вынуждены гонять данные на сервер.

Команда r7-consult решила задачу радикально: мы взяли наш C++17 движок excel_loader, скомпилировали его в WebAssembly и получили возможность выполнять полноценный SQL по локальным файлам прямо в браузере.

В этой статье разберем архитектуру решения wasm-sqlite-database, посмотрим, как C++ код дружит с JS, и покажем, как превратить браузер в локальный ETL-инструмент.

Читать далее

Rust вместо React: как я написал Telegram WebApp SDK на Rust

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели12K

Фронтенд на Rust — звучит странно? Я написал Telegram WebApp SDK на Rust, совместимый с официальным API, и уже использую его в реальных проектах. В статье — зачем я это сделал, с какими проблемами столкнулся и чем это лучше привычного React.

Проявить заинтересованность

Запускаем WebAssembly модули с Python хоста

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели8K

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

В статье посмотрим как WASM-модули взаимодействуют с Python хостом. (Спойлер - не все так просто как хотелось, поддержка WASM в Python экосистеме пока слабая)

Читать далее

Как мы засунули Git в браузер (и чего нам это стоило)

Уровень сложностиСложный
Время на прочтение13 мин
Охват и читатели12K

Привет, Хабр! Меня зовут Паша, я разработчик Gramax — open source-платформы для управления технической документацией в подходе Docs as Code.

В этой статья я расскажу, как и для чего мы интегрировали Git в браузер, какие технологии использовали и какие технические решения приняли. А если подробнее: почему отказались от IsomorphicGit в пользу libgit2, каким образом мы собрали его под WebAssembly, как он работает с файлами и зачем вообще все это было нужно.

Читать далее

Telegram Web съел 30% моего 16-ядерного процессора. Расследование странного поведения, или Призрак майнера в браузере

Время на прочтение9 мин
Охват и читатели43K

Всем привет! Сегодня я хочу поделиться историей одного странного и затянувшегося расследования, главным героем которого стал мой компьютер, а антагонистом — веб-версия Telegram. Эта история не только о поиске прожорливого процесса, но и о глубоких аномалиях в поведении современных веб-приложений, которые вызывают серьезные вопросы.

О, нука че там

WASM — магическая шляпа или как не обрести безумие

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели8.6K

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

Так как я человек любопытный для меня это звучит как вызов - а действительно такое нельзя провернуть в браузере? Как все мы знаем данный функционал просто так не реализуем в браузере, вот и первый спойлер .

Давайте начнем разбираться, если способов с рендерингом много, то вот с подписью  их совсем мало. Поэтому сегодня будем говорить про универсальный способ - WASM.

WebAssembly (WASM) — это современная низкоуровневая технология, позволяющая выполнять код с высокой производительностью в веб-браузерах. Она не заменяет JavaScript, а дополняет его, предоставляя возможности для запуска предварительно скомпилированных программ на различных языках (C, C++, Rust и др.) прямо в браузере.

Читать далее
1
23 ...