Как стать автором
Обновить
6.03
Рейтинг

WebAssembly *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Blazor WebAssembly: динамическое создание компонентов по JSON описанию

.NET *ASP *C# *WebAssembly *
Tutorial

В заметке описан способ динамического добавления на страницу компонентов по JSON-описанию с помощью DynamicComponent из ASP.NET Core 6.0 (в настоящее время в статусе Preview).

Динамическое создание компонентов пригодится например при реализации конструктора форм:

• Форма описывается JSON-ом;

• Элементы (или контролы) формы не ограничены предустановленным набором. Контролы можно добавлять, в том числе подгружать из других dll-библиотек.

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

Что это за зверь — WebAssembly?

Блог компании RUVDS.com Разработка веб-сайтов *WebAssembly *
Перевод


По мнению многих специалистов WebAssembly представляет будущее эффективных и безопасных вычислений. В чем же конкретно выражаются его достоинства, и почему стоит отнестись к этому языку более внимательно?
Читать дальше →
Всего голосов 49: ↑44 и ↓5 +39
Просмотры 9.2K
Комментарии 30

Как запустить Jupyter Notebook в браузере без бэкенда

Блог компании SkillFactory Разработка веб-сайтов *Python *Программирование *WebAssembly *
Перевод

К старту нашего флагманского курса по Data Science представляем перевод обзора JupyterLite прямо из блога его разработчиков. JupyterLite — это перезагрузка множества попыток создать полный статический выполняемый в браузере дистрибутив Jupyter, чтобы не было необходимости запускать сервер Jupyter.

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

Читать далее
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 5.2K
Комментарии 2

Использование потоков WebAssembly из C, C++ и Rust

Блог компании RUVDS.com C++ *C *Rust *WebAssembly *
Перевод


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

В этой статье вы узнаете, как использовать потоки WebAssembly для переноса многопоточных приложений, написанных на языках C, C++ и Rust, в веб-среду.
Читать дальше →
Всего голосов 38: ↑38 и ↓0 +38
Просмотры 6.2K
Комментарии 20

Приключения в портировании большой C++ кодовой базы на WASI WebAssembly

C++ *WebAssembly *

Привет хакеры, сегодня мы с вами отправимся в путешествие в мир индустриального C++ и Webassembly. Недавно мне довелось поучаствовать в портировании такой сложной и большой кодовой базы на C/C++ как SpiderMonkey на WASI платформу и я хочу поделиться с вами этим опытом.

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

Пишем frontend на golang

Разработка веб-сайтов *Go *WebAssembly *

Вас задрало, что node_modules соревнуются по количеству используемого места с вашей коллекцией музыки?

Вы перечитали инструкцию к Redux  в шестидесятый раз и поняли две вещи: "До меня кажется доходит..." и "Думаю, мне стоит перечитать это ещё раз!"

Вы в очередной раз узнали, что 1 + "1" == "11", а  [] - {} == NaN?

Билд скрипт в webpack занимает больше места чем ваша библиотека на javascript?

Тогда заходите под кат, я покажу вам, как можно перевести ваш фронтэнд на го. 

ничеgoшеньки...
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 6.6K
Комментарии 17

Хостим WASM-приложения на github pages в два клика

.NET *C# *WebAssembly *
Перевод

Приветствую. Хочу донести гениальную и простейшую идею о том, как можно бесплатно хостить несложные бессерверные веб-приложения на Blazor WASM на github pages.

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

Прошу под кат!

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

У AssemblyScript новый конкурент: язык Grain, созданный для WebAssembly, громко заявил о себе

Блог компании Маклауд Изучение языков WebAssembly *
Перевод

Оскар Спенсер — один из создателей языка Grain

Grain — язык программирования высокого уровня со строгой типизацией. Это гибридный язык, сочетающий в себе некоторые возможности функционального  (например, вывод типов, сопоставление с образцом, замыкания) и императивного программирования (например, мутабельные переменные).

Оскар Спенсер, один из создателей языка, презентовал Grain на WebAssembly Summit 2021. Спенсер рассказал о его наиболее интересных и важных особенностях, а также подчеркнул, что Grain создан и оптимизирован специально для WebAssembly. Скомпилировать его можно только в байт-код Wasm. По крайней мере, это так на сегодняшний день.

Вот как разработчики сформулировали миссию языка Grain:

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

WebAssembly Summit — это ежегодная конференция, посвящённая всем аспектам использования и взаимодействия с Wasm. Саммит, о котором идёт речь в статье, прошёл в апреле 2021 года.
Всего голосов 23: ↑19 и ↓4 +15
Просмотры 4.2K
Комментарии 5

Что вошло в релиз движка V8 версии 9.0

JavaScript *Google Chrome WebAssembly *
Перевод

17 марта 2021 был опубликован релиз девятой версии движка V8. Этот пост - краткое описание того что вошло в список изменений релиза.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 5.5K
Комментарии 1

Оптимизируем производительность: JavaScript (V8) vs AssemblyScript (WebAssembly)

Блог компании Маклауд JavaScript *C *Rust *WebAssembly *
Перевод


Чтобы повысить производительность web-приложений, используйте WebAssembly в связке с AssemblyScript, чтобы переписать критически важные для производительности компоненты web-приложения, написанные на JavaScript. «И это действительно поможет?», — спросите вы.

К сожалению, на этот вопрос нет чёткого ответа. Всё зависит от того, как вы будете их использовать. Вариантов много: в одних случаях ответ будет отрицательный, в других — положительный. В одной ситуации лучше выбрать JavaScript вместо AssemblyScript, а в другой — наоборот. На это влияет множество различных условий.

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

Кто я такой и почему занимаюсь этой темой? 


(Данный раздел можете пропустить, это несущественно для понимания дальнейшего материала).

Мне по-настоящему нравится язык AssemblyScript. Я даже в какой-то момент начал помогать разработчикам финансово. У них небольшая команда, в которой каждый серьёзно увлечён этим проектом. AssemblyScript — очень молодой язык, похожий на TypeScript и способный компилироваться в WebAssembly (Wasm). Именно в этом и заключается одно из его преимуществ. Раньше, чтобы использовать Wasm, web-разработчик должен был учить чуждые ему языки типа С, C++, C#, Go или Rust, так как в WebAssembly изначально могли компилироваться именно такие высокоуровневые языки со статической типизацией. 

Хотя AssemblyScript (ASC) и похож на TypeScript (TS), он не связан с этим языком и не  компилируется в JS. Схожесть в синтаксисе и семантике нужна, чтобы облегчить процесс «портирования» с TS на ASC. Такое портирование в основном сводится к добавлению аннотаций типов.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Просмотры 4.4K
Комментарии 0

Ahead-of-Time компиляция и Blazor

Разработка веб-сайтов *.NET *Компиляторы *C# *WebAssembly *

В .NET 6 запланирована поддержка AOT компиляции для Blazor WebAssembly приложений. Давайте попробуем запустить в Preview 2 версии.

Анонса и инструкций пока что нету. Поэтому и решено написать этот пост.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 3.1K
Комментарии 3

Есть ли жизнь без WebGL 2.0?

Разработка под iOS *WebGL *WebAssembly *

WebGL 2.0 вышел в далёком 2017ом году, принёс графический стек OpenGL ES 3.0 (2012го года), и, казалось бы, все современные браузеры давно должны были его поддерживать. Однако, среди лидеров затесались отстающие, и пользователи Safari до сих пор (начало 2021го) вынуждены ограничиваться возможностями WebGL 1.0, опубликованным в 2011ом году на основе OpenGL ES 2.0.

PBR освещение достаточно требовательно к вычислительным ресурсам графического процессора и обычно реализуется средствами WebGL 2.0. Возможно ли адаптировать PBR рендерер графического движка для работы в условиях ограничений WebGL 1.0 на iPad? В этой статье описывается опыт такой адаптации для графического движка открытого C++ фреймворка Open CASCADE Technology.

Читать далее
Всего голосов 20: ↑19 и ↓1 +18
Просмотры 4.5K
Комментарии 17

Разгоняем JS-парсер с помощью WebAssembly (часть 3: SIMD)

Блог компании Тензор Высокая производительность *Программирование *Алгоритмы *WebAssembly *
Tutorial

В предыдущей статье мы остановились на варианте, который с помощью SWAR-хинта превращает 8 последовательных цифр в одно числовое 32bit-значение. Но что если мы предположим, что все значения у нас, в основном, невелики - до 3 цифр? Тогда нам вполне достаточно использовать всего лишь 32bit-инструкции, а SWAR будет выполнен за 2 операции вместо 3 - сплошной выигрыш!

Давайте перепишем наш код так, чтобы первый блок из 4 символов обрабатывался 32bit-инструкциями, а второй блок из 8 символов, если понадобится - уже 64bit-инструкциями.

И... вместо 29ms получаем 31ms! Значит, наше предположение относительно длины чисел не оправдалось, и в первом блоке выгоднее обрабатывать сразу побольше символов.

То есть больше размерность регистра - лучше? И такие регистры есть - это 128-битные SSE-регистры XMM - в WebAssembly они доступны нам как переменные с типом v128 и суперскалярные операции над ними.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 1.8K
Комментарии 0

Разгоняем JS-парсер с помощью WebAssembly (часть 2: алгоритм и его оптимизации)

Блог компании Тензор Высокая производительность *JavaScript *Программирование *WebAssembly *
Tutorial

В первой части статьи мы исследовали скорость различных вариантов обмена информацией между JavaScript и WASM-кодом. В этом продолжении - наконец-то займемся написанием прикладного кода нашего парсера.

Мы ведь теперь пишем "прямо на ассемблере" - значит, все будет супербыстро! Правда ведь?

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

Blazor: Server и WebAssembly одновременно в одном приложении

.NET *C# *WebAssembly *


ASP.NET Core Blazor — это разработанная Microsoft веб-платформа, предназначенная для запуска на стороне клиента в браузере на основе WebAssembly (Blazor WebAssembly) или на стороне сервера в ASP.NET Core (Blazor Server), но две эти модели нельзя использовать одновременно. Подробнее о моделях размещения написано в документации.


В статье я расскажу о том, как


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

TL;DR:


Gif с демонстрацией полученного результата


Пример доступен на github.

Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 6.1K
Комментарии 8

Разгоняем JS-парсер с помощью WebAssembly (часть 1: базовые возможности)

Блог компании Тензор Высокая производительность *JavaScript *Программирование *WebAssembly *
Tutorial

В прошлой статье, посвященной выяснению победителя в состязании JS-парсеров строки buffers-атрибута узла плана PostgreSQL, мы дошли до факта, что самый эффективный вариант - реализовать примитивный конечный автомат и никогда не трогать регулярные выражения и любые операции над строками сложнее .charCodeAt.

Такой код на тестовом нормализованном наборе показывает время порядка 48ms на 6.3MB или около 130MB/s, что примерно в 11 раз быстрее наивного варианта со .split.

Но всегда остается вопрос: "А еще быстрее - можно?"

Чтобы приблизиться к возможностям "железа", но по-прежнему остаться в инфраструктуре JavaScript, сегодня мы научимся решать эту задачу с использованием WebAssembly и SIMD-инструкций, постаравшись по пути споткнуться обо все подводные камни.

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 3.6K
Комментарии 13

Запускаем AssemblyScript в Go

Блог компании Ozon Tech Программирование *Go *WebAssembly *

Пока одни обсуждают что не так с WebAssembly, я думаю как его можно использовать вне браузера. Например написание wasm фильтров для Envoy. AssemblyScript был взят потому, что это не C++ и не Rust, т.е. ожидается более низкий порог вхождения. Под катом будет дико примитивный код и пару бенчмарков. Картинка взята из бенчмарка.


Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 2.2K
Комментарии 3

Что не так с WebAssembly?

Блог компании RUVDS.com Разработка веб-сайтов *WebAssembly *
Перевод
Современные браузеры могут намного больше, чем рендеринг веб-страниц. Это стало одной из причин появления WebAssembly. Эта технология создана в попытке вывести скорость решения сложных задач на новый уровень, построить мост между JavaScript и машинным кодом.

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



У WASM был огромный потенциал и невероятные перспективы. Что же пошло не так? Почему WASM, через 3 года после релиза, ещё не используется в каждом веб-проекте? Есть ли у WASM будущее в веб-разработке? Поищем ответы на эти вопросы.
Читать дальше →
Всего голосов 55: ↑38 и ↓17 +21
Просмотры 21K
Комментарии 163

Большой отчёт об изменениях в веб-доступности

Блог компании Mail.ru Group Блог компании Delivery Club Tech Usability *Accessibility *WebAssembly *
Перевод


В 2020 году, как никогда раньше, стала очевидна необходимость сделать цифровое пространство инклюзивным и доступным для всех. Из-за продолжающейся пандемии, которая осложнила личный доступ к услугам и перевела целые отрасли в онлайн, особенно сильно страдают люди с ограниченными возможностями. К тому же их количество с растет из-за долгосрочных последствий пандемии.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 3K
Комментарии 1

Ржавеем дальше. Как появился Rust и можно ли на нём WEB?

Системное программирование *Rust *WebAssembly *

Моя предыдущая статья про rust вызвала положительную реакцию и большое количество обсуждений о том что да как с rust. Мне исключительно приятно видеть что вам понравился этот материал.

В комментариях я встретил много вопросов типа «А можно ли использовать rust для WEB?» Лаконичный ответ таков: «Можно». Можно и brainfuck использовать, если хочется. Нужно ли? Скажем так, brainfuck для WEB использовать категорически не стоит. А вот rust – тут надо понимать что именно делает rust и каковы его цели. Для того чтобы это понять мы должны погрузиться в компилятор и разобраться в устройстве процессоров. Под катом вы найдёте глубокий заныр в историю того как появился rust и поймёте что это такое и когда его нужно использовать а когда можно и на «ноде запилить».

Ржавеем дальше и глубже...
Всего голосов 39: ↑34 и ↓5 +29
Просмотры 12K
Комментарии 88

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