WebAssembly в действии
Book information
Description
Создавайте высокопроизводительные браузерные приложения, не полагаясь на один только JavaScript! Компилируясь в бинарный формат WebAssembly, ваш код на C, C++ или Rust будет работать в браузере с оптимальной скоростью. WebAssembly обеспечивает большую скорость, возможности повторного использования существующего кода и доступ к новым и более быстрым библиотекам. Кроме того, при необходимости вы можете настроить взаимодействие с JavaScript. Предисловие Благодарности О книге Для кого эта книга Структура книги О коде Другие онлайн-ресурсы Об авторе Об иллюстрации на обложке От издательства Часть IПервые шаги Глава 1. Знакомство с WebAssembly 1.1. Что такое WebAssembly 1.1.1. Asm.js, предшественник WebAssembly 1.1.2. От asm.js к MVP 1.2. Какие проблемы решает WebAssembly 1.2.1. Улучшение производительности 1.2.2. Более короткое время запуска в сравнении с JavaScript 1.2.3. Возможность использовать в браузере другие языки помимо JavaScript 1.2.4. Возможность повторного использования кода 1.3. Как работает WebAssembly 1.3.1. Обзор работы компиляторов 1.3.2. Загрузка, компиляция и создание модуля 1.4. Структура модуля WebAssembly 1.4.1. Преамбула 1.4.2. Известные разделы 1.4.3. Пользовательские разделы 1.5. Текстовый формат WebAssembly 1.6. Как обеспечивается безопасность WebAssembly 1.7. Какие языки можно использовать для создания модуля WebAssembly 1.8. Где можно использовать модуль Резюме Глава 2. Модули WebAssembly изнутри 2.1. Известные разделы 2.2. Пользовательские разделы Резюме Глава 3. Создание вашего первого модуля WebAssembly 3.1. Набор инструментальных средств Emscripten 3.2. Модули WebAssembly 3.2.1. Когда не стоит использовать модуль WebAssembly 3.3. Параметры вывода Emscripten 3.4. Компиляция C или C++ с помощью Emscripten и шаблона HTML 3.5. Emscripten генерирует связующий код на JavaScript 3.5.1. Компиляция кода на C или C++ вместе с JavaScript, созданного Emscripten 3.5.2. Создание базовой HTML-страницы для использования в браузерах 3.6. Emscripten генерирует только файл WebAssembly 3.6.1. Компиляция C или C++ в виде вспомогательного модуля с помощью Emscripten 3.6.2. Загрузка и создание экземпляра модуля в браузере 3.7. Проверка поддержки: как проверить, доступен ли WebAssembly Сценарии использования в реальном мире Упражнения Резюме Часть IIРабота с модулями Глава 4. Повторное использование существующей кодовой базы на C++ 4.1. Использование C или C++ для создания модуля со связующим кодом Emscripten 4.1.1. Внесение изменений в код на C++ 4.1.2. Компиляция кода в модуль WebAssembly 4.1.3. Создание веб-страницы 4.1.4. Написание кода на JavaScript, взаимодействующего с модулем 4.1.5. Просмотр результатов 4.2. Использование C или C++ для создания модуля без Emscripten 4.2.1. Внесение изменений в C++ 4.2.2. Компиляция кода в модуль WebAssembly 4.2.3. Создание файла JavaScript, взаимодействующего с модулем 4.2.4. Просмотр результатов Сценарии использования в реальном мире Упражнения Резюме Глава 5. Создание модуля WebAssembly, вызывающего JavaScript 5.1. Использование C или C++ для создания модуля со связующим кодом Emscripten 5.1.1. Внесение изменений в код на C++ 5.1.2. Создание кода на JavaScript и добавление его в сгенерированный Emscripten JavaScript-файл 5.1.3. Компиляция кода в модуль WebAssembly 5.1.4. Изменение JavaScript-кода веб-страницы 5.1.5. Просмотр результатов 5.2. Использование C или C++ для создания модуля без связующих файлов Emscripten 5.2.1. Внесение изменений в код на C++ 5.2.2. Компиляция кода в модуль WebAssembly 5.2.3. Изменение кода на JavaScript для взаимодействия с модулем 5.2.4. Просмотр результатов Сценарии использования в реальном мире Упражнения Резюме Глава 6. Создание модуля WebAssembly, вызывающего JavaScript, с использованием указателей на функции 6.1. Использование C или C++ для создания модуля со связующими файлами Emscripten 6.1.1. Использование указателя на функцию, передаваемого модулю через JavaScript 6.1.2. Изменение кода на C++ 6.1.3. Компиляция кода в модуль WebAssembly 6.1.4. Изменение JavaScript-кода веб-страницы 6.1.5. Просмотр результатов 6.2. Использование C или C++ для создания модуля без связующего файла Emscripten 6.2.1. Использование указателей на функции, передаваемых в модуль через JavaScript 6.2.2. Изменение кода на C++ 6.2.3. Компиляция кода в модуль WebAssembly 6.2.4. Изменение JavaScript-кода, который будет взаимодействовать с модулем 6.2.5. Просмотр результатов Сценарии использования в реальном мире Упражнения Резюме Часть IIIПродвинутые темы Глава 7. Динамическое связывание: основы 7.1. Динамическое связывание: за и против 7.2. Варианты реализации динамического связывания 7.2.1. Вспомогательные и основные модули 7.2.2. Динамическое связывание: dlopen 7.2.3. Динамическое связывание: dynamicLibraries 7.2.4. Динамическое связывание: JavaScript API в WebAssembly 7.3. Обзор динамического связывания Сценарии использования в реальном мире Упражнения Резюме Глава 8. Динамическое связывание: реализация 8.1. Создание модулей WebAssembly 8.1.1. Разделение логики в validate.cpp на два файла 8.1.2. Создание нового файла С++ для логики формы Place Order (Разместить заказ) 8.1.3. Использование Emscripten для генерации вспомогательных модулей WebAssembly 8.1.4. Определение JavaScript-функции для обработки ошибок при валидации 8.1.5. Использование Emscripten для генерации основного модуля WebAssembly 8.2. Настройка веб-страницы 8.2.1. Изменение кода JavaScript веб-страницы 8.2.2. Просмотр результатов Сценарии использования в реальном мире Упражнения Резюме Глава 9. Потоки: веб-воркеры и pthread 9.1. Преимущества веб-воркеров 9.2. Рекомендации по использованию веб-воркеров 9.3. Предварительная загрузка модуля WebAssembly с помощью веб-воркера 9.3.1. Изменение логики calculate_primes 9.3.2. Использование Emscripten для генерации файлов WebAssembly 9.3.3. Копирование в правильное место 9.3.4. Создание HTML-файла для веб-страницы 9.3.5. Создание файла JavaScript для веб-страницы 9.3.6. Создание файла JavaScript для веб-воркера 9.3.7. Просмотр результатов 9.4. Использование pthread 9.4.1. Изменение логики calculate_primes для создания и использования четырех pthread 9.4.2. Использование Emscripten для генерации файлов WebAssembly 9.4.3. Просмотр результатов Сценарии использования в реальном мире Упражнения Резюме Глава 10. Модули WebAssembly в Node.js 10.1. Вспоминая пройденное 10.2. Валидация на стороне сервера 10.3. Работа с модулями, созданными Emscripten 10.3.1. Загрузка модуля WebAssembly 10.3.2. Вызов функций в модуле WebAssembly 10.3.3. Вызов JavaScript-функций 10.3.4. Вызов указателей на функции JavaScript 10.4. Использование JavaScript API в WebAssembly 10.4.1. Загрузка и создание экземпляра модуля WebAssembly 10.4.2. Вызов функций в модуле WebAssembly 10.4.3. Вызов JavaScript из модуля WebAssembly 10.4.4. Вызов указателей на функции JavaScript из модуля WebAssembly Сценарии использования в реальном мире Упражнения Резюме Часть IVОтладка и тестирование Глава 11. Текстовый формат WebAssembly 11.1. Создание основной логики игры с помощью текстового формата WebAssembly 11.1.1. Разделы модуля 11.1.2. Комментарии 11.1.3. Сигнатуры функций 11.1.4. Узел module 11.1.5. Узлы import 11.1.6. Узлы global 11.1.7. Узлы export 11.1.8. Узел start 11.1.9. Узлы code 11.1.10. Узлы type 11.1.11. Узел data 11.2. Создание модуля WebAssembly из текстового формата 11.3. Модуль, созданный Emscripten 11.3.1. Создание файла на C++ 11.3.2. Создание модуля WebAssembly 11.4. Создание файлов HTML и JavaScript 11.4.1. Изменение файла HTML 11.4.2. Создание файла JavaScript 11.5. Просмотр результатов Сценарии использования в реальном мире Упражнения Резюме Глава 12. Отладка 12.1. Расширение игры 12.2. Изменение HTML 12.3. Отображение количества попыток 12.3.1. Функция generateCards в JavaScript 12.3.2. Изменения в коде текстового формата 12.3.3. Создание файла Wasm 12.3.4. Тестирование изменений 12.4. Увеличение количества попыток 12.4.1. Функция updateTriesTotal в JavaScript 12.4.2. Изменение текстового формата 12.4.3. Создание файла Wasm 12.4.4. Тестирование изменений 12.5. Обновление экрана итогов 12.5.1. Функция levelComplete в JavaScript 12.5.2. Изменение текстового формата 12.5.3. Создание файла Wasm 12.5.4. Тестирование изменений Упражнения Резюме Глава 13. Тестирование и все, что с ним связано 13.1. Установка среды тестирования JavaScript 13.1.1. Файл package.json 13.1.2. Установка Mocha и Chai 13.2. Создание и запуск тестов 13.2.1. Написание тестов 13.2.2. Запуск тестов из командной строки 13.2.3. HTML-страница, загружающая тесты 13.2.4. Запуск тестов из браузера 13.2.5. Исправление тестов 13.3. Что дальше Упражнения Резюме Приложения Приложение А. Установка и настройка инструментов A.1. Python A.1.1. Запуск локального веб-сервера A.1.2. Тип носителя WebAssembly A.2. Emscripten A.2.1. Загрузка Emscripten SDK A.2.2. Если вы используете Windows A.2.3. Если вы используете Mac или Linux A.2.4. Решение проблем при установке A.3. Node.js A.4. WebAssembly Binary Toolkit A.5. Bootstrap Приложение Б. Функции ccall, cwrap и вызовы функций напрямую Б.1. Функция ccall Б.1.1. Создание простого модуля WebAssembly Б.1.2. Создание веб-страницы, которая будет взаимодействовать с модулем WebAssembly Б.2. Функция cwrap Б.2.1. Изменение кода JavaScript для использования cwrap Б.3. Вызовы функций напрямую Б.4. Передача массива в модуль Приложение В. Макросы в Emscripten В.1. Макросы emscripten_run_script В.2. Макросы EM_JS В.2.1. Без параметров В.2.2. Передача значений параметров В.2.3. Передача указателей в качестве параметров В.2.4. Возвращение указателя на строку В.3. Макросы EM_ASM В.3.1. EM_ASM В.3.2. EM_ASM_ В.3.3. Передача указателей в качестве параметров В.3.4. EM_ASM_INT и EM_ASM_DOUBLE В.3.5. Возврат указателя на строку Приложение Г. Ответы к упражнениям Г.1. Глава 3 Г.2. Глава 4 Г.3. Глава 5 Г.4. Глава 6 Г.5. Глава 7 Г.6. Глава 8 Г.7. Глава 9 Г.8. Глава 10 Г.9. Глава 11 Г.10. Глава 12 Г.11. Глава 13 Приложение Д. Дополнительные возможности текстового формата Д.1. Операторы потока управления Д.1.1. Операторы if Д.1.2. Циклы Д.2. Указатели на функции Д.2.1. Тестирование кода
Similar books
WebAssembly в действии
2021 · PDF
Методология научных исследований и прикладной аналитики: Учебник. Изд. 5-е, дополн. и перераб. В 2 т. Т.2: Научные исследования: Мастерство и искусство научного мышления и научной работы / Methodology of Scientific Research and Practical Analytics: A Textbook: Fifth Edition. In two volumes. Vol.2: Scientific research: Art of scientific thinking and scientific work / Méthodologie de la recherche scientifique et de l’analytique appliquée: Manuel: Cinquième édition. En 2 tomes. T.2: Recherches scientifiques: Art de la pensée scientifique et du travail scientifique
2025 · PDF
Методы и понятия философии искусства: практикум : уровень подготовки кадров высшей квалификации: ассиснтурв-стажировка : специальности: 54.09.03 "Искусство дизайна (по видам)", 54.09.02 "Мастерство декоративно-прикладного искусства и народных промыслов (по видам)" : укрупненная группа специальностей: 54.00.00 "Изобразительное и прикладные виды искусств" : квалификация выпускника: "Преподаватель творческих дисциплин в высшей школе. Дизайнер", "Преподаватель творческих дисциплин в высшей школе. Художник декоративно-прикладного искусства" : форма обучения: очная
2022 · PDF
Разработка графического интерфейса пользователя информационной системы с использованием библиотеки QT: учебное пособие для студентов 1 курса направлений подготовки 09.04.02 "Информационные системы и технологии", 27.04.03 "Системный анализ и управление" очной формы обучения, 2 курса направления подготовки 10.05.03 "Информационная безопасность автоматизированных систем" очной формы обучения и 3 курса направления подготовки 09.03.02 "Информационные системы и технологии" очной и заочной форм обучения : учебное электронное издание
2021 · PDF
Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.) =: Archaeological Cultures of Siberia in the context of Cross-cultural contacts in Eurasia: dedicated to the 300th anniversary of the first scientific archaeological excavations in Siberia (1722) : материалы Международной археологической конференции молодых исследователей "Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.)" (Новосибирск, 21-25 ноября 2022 г.)
2022 · PDF
Трешниковские чтения - 2023. Современная географическая картина мира и технологии географического образования =: Treshnikov readings - 2023. Modern geographical global picture and technology of geographic education : материалы Всероссийской научно-практической конференции с международным участием, посвящённой памяти знаменитого российского океанолога, исследователя Арктики и Антарктики, академика Алексея Фёдоровича Трёшникова и 60-летию Ульяновского областного отделения Всероссийской общественной организации "Русское гаографическое общество" (13 апреля 2023)
2023 · PDF
Управление объектами интеллектуальной собственности. Искусство изобретать: учебник для обучающихся по направлениям подготовки 23.00.00 , направлениям подготовки 23.03.01 "Технология транспортных процессов", уровень образования-"бакалавриат", 23.03.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования-"бакалавриат", 23.04.01 "Технология транспортных процессов", уровень образования- "магистратура", 23.04.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования- "магистратура"
2022 · PDF
Философия. Учебно-методический комплекс дисциплины по направлениям подготовки: 51.03.03 (071800.62) «Социально-культурная деятельность», профили подготовки: «Социально-культурные технологии в индустрии досуга», «Менеджмент социально-культурной деятельности», «Менеджмент детско-юношеского досуга», «Постановка и продюсирование культурно-досуговых программ», «Социально-культурная анимация и рекреация»; 38.03.02 (080200.62) «Менеджмент», профили подготовки: «Управление человеческими ресурсами», «Управление малым бизнесом», квалификации (степень) выпускника – «бакалавр»
2014 · PDF