Научная статья на тему 'Некоторые вопросы использования технологии WebAssembly в современных браузерах'

Некоторые вопросы использования технологии WebAssembly в современных браузерах Текст научной статьи по специальности «СМИ (медиа) и массовые коммуникации»

CC BY
279
53
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
WEBASSEMBLY / БРАУЗЕРЫ / КРОССПЛАТФОРМЕННОСТЬ / БЕЗОПАСНОСТЬ / БАЙТКОД / НЕЙРОННЫЕ СЕТИ

Аннотация научной статьи по СМИ (медиа) и массовым коммуникациям, автор научной работы — Григоренко Александр Вадимович

В статье рассматривается технология Web Assembly, принцип ее работы, области применения и возможности, которые открываются с ее интеграцией в современные браузеры. Плюсы и минусы использования данной технологии.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Некоторые вопросы использования технологии WebAssembly в современных браузерах»

НЕКОТОРЫЕ ВОПРОСЫ ИСПОЛЬЗОВАНИЯ ТЕХНОЛОГИИ WEBASSEMBLY В СОВРЕМЕННЫХ БРАУЗЕРАХ Григоренко А.В.

Григоренко Александр Вадимович - студент, Институт цифровой экономики и информационных технологий, Российский экономический университет им. Г.В. Плеханова, г. Москва

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

УДК 004.42

С появлением интернета веб-технологии находятся в постоянном развитии. Сначала была изобретена гипертекстовая разметка и статичный контент сайта, позже он сменился динамическим, появились новые инструменты для генерации html и css, специальные фреймворки, предназначенные для разделения веб-сайта на модули, рендеринг страниц на стороне сервера. Позже стали популярными SPA [1], создали разнообразные инструменты сборки-бандлирования javascript кода и стилей. Мир фронтэнда очень расширился, но одна из основных проблем веба осталась - невозможность написать на javascript в браузере полноценные приложения, которые могли бы работать как нативные.

Однако появилась технология, которая позволяет запускать готовые приложения прямо в браузере - WebAssembly. Под термином WebAssembly будем подразумевать бинарный формат инструкций для стековой виртуальной машины [2]. WebAssembfy представляет собой переносимое абстрактное синтаксическое дерево, то есть конечное помеченное ориентированное дерево, в котором внутренние вершины сопоставлены (помечены) с операторами языка программирования, а листья — с соответствующими операндами [3], обеспечивающее как более быстрый парсинг, так и более быстрое выполнение кода, чем просто сам JavaScript. За счет этого данная технология приносит новые возможности и большой прирост производительности. Сами разработчики не пишут инструкции на webassembly коде, они компилируют низкоуровневые языки, такие как C, C++, Rust, а также все интерпретируемые языки.

По сути, WebAssembly позволяет запускать приложения, написанные на нескольких языках, в вебе на скорости, близкой к скорости обычных веб-сайтов. Нужно сразу обратить внимание на то, что код, скомпилированный при помощи WebAssembly, не может работать быстрее, чем javascript. С одной стороны это минус, но с другой стороны современные движки браузеров делают очень качественные оптимизации, которые позволяют достичь около «С++-ных» скоростей. Замеры скоростей javascript и C++ с применением пяти фильтров на изображении представлены на Рисунке 1.

Рис. 1. Сравнение производительности C++ с Javascript в WebAssembly

Еще одним плюсом является то, что можно вообще не знать, как писать код для WebAssembly, так как ее модули можно импортировать в веб-приложение, предоставив ей функции для использования, написанные на javascript.

Вслед за автором [4] выделим следующие основные цели WebAssembly:

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

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

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

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

Отвечая на возникающий вопрос «Как WebAssembly вписывается в веб-браузер?», можно сказать, что браузер можно рассматривать, как:

1) Виртуальная машина (VM), которая запускает код веб-приложения, например. код JavaScript, который активирует веб-приложения, написанный разработчиками.

2) Набор веб-API, который веб-приложение может вызывать для управления функциональностью веб-браузера и позволяет использовать различные инструменты (DOM, CSSOM, WebGL, IndexedDB, Web Audio API и т. Д.).

Исторически сложилось, что VM могла загружать только JavaScript. И это устраивало разработчиков, так как JavaScript достаточно мощный, чтобы решить большинство проблем, которые люди сегодня испытывают в Интернете. Однако мы столкнулись с проблемами производительности при попытке использовать JavaScript для более интенсивных приложений, таких как 3D-игры, Virtual и Augmented Reality, компьютерное зрение, редактирование изображений и видео и ряд других доменов, требующих собственной производительности.

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

Для компиляции используется и создания WASM кода используется сборщик wasm Emscripten. Инструмент Emscripten способен взять практически любой исходный код C / C ++ и скомпилировать его в модуль .wasm, а также необходимый код «склеивания» JavaScript для загрузки и запуска модуля и HTML-документ для отображения результатов кода (Рисунок 2).

Рис. 2. Принцип работы с Emscripten

Процесс рыботы Emscripten можно описать так:

1) Emscripten сначала передает C / C ++ в clang + LLVM - зрелую программную цепочку компилятора с открытым исходным кодом C / C ++, например, поставляемую как часть XCode на OSX.

2) Emscripten преобразует скомпилированный результат clang + LLVM в двоичный файл .wasm.

3) Сам по себе WebAssembly не может напрямую обращаться к DOM; он может вызывать только JavaScript, передавая примитивные типы данных с целыми числами и с плавающей точкой. Таким образом, для доступа к любому веб-API WebAssembly необходимо вызвать JavaScript, который затем совершает вызов Web API.

Таким образом WebAssembly обеспечивает браузер следующими возможностями [5]:

• Редактирование изображения / видео.

• Игры, которые должны иметь быстрый старт.

• AAA-игры с тяжелыми ресурсами.

• Игровые порталы.

• Музыкальные приложения (потоковая передача, кеширование).

• Распознавание изображений.

• Увеличение видео в реальном времени (например, установка шляп на головы людей).

• VR и дополненная реальность.

• Научная визуализация и моделирование.

• Интерактивное образовательное программное обеспечение и новостные статьи.

• Моделирование / эмуляция платформы (ARC, DOSBox, QEMU, MAME, ...).

• Устные переводчики и виртуальные машины.

• POSIX, позволяя портировать существующие приложения POSIX.

• Инструмент разработчика (редакторы, компиляторы, отладчики, ...).

• Удаленный рабочий стол.

• VPN.

• Шифрование.

• Локальный веб-сервер.

• Общие пользователи NPAPI, в рамках модели безопасности Интернета и API.

• Жирный клиент для корпоративных приложений (например, баз данных).

WebAssembly открывает новый мир в области веб-приложений. Становятся доступными

ранее невозможные типы программ и виды взаимодействия с пользователем. Сообщество из ведущих компаний, такие как Google, Mozilla, Apple, Microsoft вместе создают и развивают данную технологию. Все большую популярность приобретают нейронные сети, дополненная реальность и другие интересные технологии, которые вскоре мы сможем использовать прямо на клиентской стороне - в нашем браузере.

Список литературы

1. Michael Mikowski. Single Page Web Applications: JavaScript end-to-end 1st Edition -Manning Publications Co. 2014. 5 c.

2. Mike Rourke. Learn WebAssembly - Packt Publishing. 2018. 7 c.

3. Википедия. Абстрактное синтаксическое дерево. [Электронный ресурс]. URL: https://m.wikipedia.0rg/wiki/A6cTpaKTH0e_CTHraKcmecK0e^epeB0 (дата обращения: 26.11.2018).

4. MDN Документация. Mozilla: Что такое WebAssembly? [Электронный ресурс]. URL: https://developer.mozilla.org/en-US/docs/WebAssembly/Concepts (дата обращения: 26.11.2018).

5. Официальный сайт WebAssembly. WebAssembly Community Group: Документация WebAssembly. [Электронный ресурс]. URL: https://webassembly.org/docs/use-cases/ (дата обращения: 26.11.2018).

ПЕРСПЕКТИВЫ ОСВОЕНИЯ БАЖЕНОВСКОЙ СВИТЫ НА ТЕРРИТОРИИ ЗАПАДНОЙ СИБИРИ Колос В.Ю.

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

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

Баженовской свиты (БС) имеет некоторые особенности: листоватая структура; достаточно не высокие фильтрационно-емкостные свойства коллекторов; аномально высокие пластовые давления в залежах; наличие трещин разной ориентации; хрупкость пород [2]. Поиском способов работы с такими породами занимались следующие нефтегазодобывающие компании: ПАО «Газпром нефть», АО «РИТЭК», АО «Русснефть» и ПАО «Сургутнефтегаз», ПАО «Лукойл», «Роснефть».

Первая эксплуатация опытных участков баженовской свиты проводилась при естественном режиме (Салымское, Ем-Еговское, Правдинское и Маслиховское месторождения). При этом использовалась внутренняя энергия пласта, характеризующаяся аномально высоким пластовым давлением. Вследствие чего добычу нефти получали за счет фонтанирования скважин. Дебит таких скважин достигал 300,0-350,0 т/сут., а иногда доходил до порядка 700,0 т/сут. [5]. При таком способе разработки залежей БС нефтеотдача составляет 3—5%, поэтому наиболее перспективными являются инновационные способы разработки, которые включают: внутрипластовое горение, низкотемпературное окисление, гидроразрывы, термические воздействия и др. [3, с. 46].

Наибольшее распространение получила американская технология: бурение горизонтальных скважин с многостадийным гидроразрывом пласта. Эта технология давно применяется при разработке месторождений с традиционными запасами в пластах имеющих низкую проницаемость, а также находит применение для добычи нефти из БС на Красноленинском месторождении в рамках национального проекта «Газпром нефти» — «Бажен» [7].

i Надоели баннеры? Вы всегда можете отключить рекламу.