Искусство WebAssembly

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

В книге подробно рассматриваются принципы работы WebAssembly – компактной межплатформенной технологии, которая оптимизирует производительность ресурсоемких веб-приложений и программ. Вы узнаете, как оптимизировать, компилировать и отлаживать низкоуровневый код, сравнивать его производительность с JavaScript, а также представлять код в удобном для прочтения текстовом формате WebAssembly Text (WAT). Затем сможете создать программу обнаружения столкновений на базе браузера, поработать с технологиями рендеринга в браузере для создания графики и анимации и выяснить, как WebAssembly взаимодействует с другими языками программирования. Книга адресована веб-разработчикам, желающим понять, как создавать и развертывать приложения на основе WebAssembly, а также пользователям, которые хотят изучить и применять эту технологию.

Author(s): Рик Баттальини
Edition: 1
Publisher: ДМК Пресс
Year: 2021

Language: Russian
Commentary: Vector PDF
Pages: 310
City: М.
Tags: Web Applications; WebAssembly

От издательства
О техническом рецензенте
Об авторе
Предисловие
Благодарности
Введение
Глава 1. Введение в WebAssembly
Что такое Web­As­semb­ly?
Причины использовать Web­As­semb­ly
Интеграция существующих библиотек
Повышение производительности
Портируемость на другие платформы и безопасность
Противники Java­Script
Связь Web­As­semb­ly с Java­Script
Зачем учить WAT?
Стили кодирования WAT
Среда встраивания
WASI
Браузер
Visual Studio Code
Node.js
Наше первое приложение Web­As­semb­ly с по­мощью Node.js
Вызов модуля Web­As­semb­ly из Node.js
Синтаксис .then
Удачное время
Глава 2. Основы работы с WebAssembly Text
Hello World в WebAssembly
Создание WAT-модуля
Создание файла Java­Script
Написание простейшего модуля
Переменные WAT
Глобальные переменные и преобразование типов
Локальные переменные
Распаковка S-выражений
Переменные с индексами
Преобразование между типами
Условные операторы if/else
Операторы цикла и блока
Оператор блока (block)
Оператор цикла (loop)
Совместное использование операторов блока и цикла
Переход с по­мощью br_table
Заключение
Глава 3. Функции и таблицы
Когда следует вызывать функции из WAT
Разработка функции is_prime
Передача параметров
Создание внутренних функций
Функция is_prime
Код на стороне Java­Script
Объявление импортированной функции
Объекты в WAT
Передача типов данных
Числа Java­Script
Влияние вызовов внешних функций на производительность
Таблицы функций
Создание таблицы функций в WAT
Заключение
Глава 4. Низкоуровневые битовые операции
Системы счисления: двоичная, десятичная и шестнадцатеричная
Арифметические операции над целыми числами и числами с плавающей запятой
Целые числа
Числа с плавающей запятой
Биты старшего и младшего разрядов
Битовые операции
Сдвиг и вращение битов
Маскирование битов с по­мощью AND и OR
Инверсия битов с по­мощью XOR
Обратный vs. прямой порядок байтов
Заключение
Глава 5. Строки в WebAssembly
ASCII и Unicode
Строки в линейной памяти
Передача длины строки в Java­Script
Строки с завершающим нулем
Строки с префиксом длины
Копирование строк
Создание числовых строк
Создание шестнадцатеричной строки
Создание двоичной строки
Заключение
Глава 6. Линейная память
Линейная память в Web­As­semb­ly
Страницы
Указатели
Объект памяти Java­Script
Создание объекта памяти Web­As­semb­ly
Запись в консоль в цвете
Создание Java­Script в store_data.js
Обнаружение столкновений
Начальный адрес, шаг и сдвиг
Загрузка структур данных из Java­Script
Отображение результатов
Функция обнаружения столкновений
Заключение
Глава 7. Веб-приложения
DOM
Создание и настройка простого сервера Node
Первое веб-приложение Web­As­semb­ly
Java­Script
Определение HTML-заголовка 
HTML-тег
Готовое веб-приложение
Шестнадцатеричные и двоичные строки
HTML
WAT
Компиляция и запуск
Заключение
Глава 8. Работа с Canvas
Рендеринг HTML-страницы на холсте
Определение холста в HTML
Определение констант Java­Script в HTML
Создание случайных объектов
Данные растрового изображения
Функция requestAnimationFrame
Модуль WAT
Импортируемые значения
Очистка холста
Функция вычисления абсолютного значения
Установка цвета пикселя
Рисуем объект
Установка и получение атрибутов объекта
Функция $main
Компиляция и запуск приложения
Заключение
Глава 9. Оптимизация производительности
Использование профилировщика
Профилировщик Chrome
Профилировщик Firefox
wasm-opt
Запуск wasm-opt
Установка Binaryen
Взглянем на оптимизированный код WAT
Приемы повышения производительности
Встраивание функций
Умножение и деление vs. сдвиг
DCE
Сравнение приложения обнаружения столкновений с Java­Script
Оптимизация WAT вручную
Запись производительности в лог
Более сложное тестирование с помощью benchmark.js
Сравнение WebAssembly и Java­Script с флагом --print-bytecode
Заключение
Глава 10. Отладка WebAssembly
Отладка из консоли
Запись сообщений в консоль
Предупреждения об ошибках
Трассировка стека
Отладчик Firefox
Отладчик Chrome
Заключение
Глава 11. AssemblyScript
Интерфейс командной строки в AssemblyScript
Приложение Hello World на AssemblyScript
Код Java­Script для приложения Hello World
Приложение Hello World в загрузчике AssemblyScript
Объединение строк AssemblyScript
Объектно-ориентированное программирование на AssemblyScript
Приватные атрибуты
Среда встраивания Java­Script
Загрузчик AssemblyScript
Расширение классов в AssemblyScript
Сравнение производительности загрузчика и прямых вызовов WebAssembly
Заключение
Послесловие
Предметный указатель
О техническом рецензенте
Об авторе
Предисловие
Благодарности
Введение
Глава 1. Введение в WebAssembly
Что такое Web­As­semb­ly?
Причины использовать Web­As­semb­ly
Интеграция существующих библиотек
Повышение производительности
Портируемость на другие платформы и безопасность
Противники Java­Script
Связь Web­As­semb­ly с Java­Script
Зачем учить WAT?
Стили кодирования WAT
Среда встраивания
WASI
Браузер
Visual Studio Code
Node.js
Наше первое приложение Web­As­semb­ly с по­мощью Node.js
Вызов модуля Web­As­semb­ly из Node.js
Синтаксис .then
Удачное время