Постулат Хорнера

Опыт растет прямо пропорционально выведенному из строя оборудованию.

Гаишник останавливает даму за рулем дорогой машины ...

Разработчики из Google предложили разработать свою libc для LLVM
Wed, 26 Jun 2019 12:36:50 +0300

Совет директоров Apache Software Foundation покинули три видных участника
Tue, 25 Jun 2019 21:08:22 +0300

Доступна бета-версия Linux-редакции игрового движка OpenXRay
Tue, 25 Jun 2019 17:35:02 +0300

Утечка BGP-маршрутов привела к массовому нарушению связности в интернете
Tue, 25 Jun 2019 09:41:14 +0300

Представлена плата Raspberry Pi 4
Mon, 24 Jun 2019 23:24:16 +0300

Представлен people.kernel.org, сервис блогов для разработчиков ядра Linux
Mon, 24 Jun 2019 21:58:05 +0300

Canonical пересмотрела планы по прекращению поддержки архитектуры i386 в Ubuntu
Mon, 24 Jun 2019 21:07:39 +0300

Поддержка 32-разрядных библиотек в Ubuntu 19.10+ будет заимствована из Ubuntu 18.04
Sun, 23 Jun 2019 22:07:09 +0300

Инициатива для защиты Linux от патентных претензий преодолела отметку в 3000 участников
Sun, 23 Jun 2019 08:01:16 +0300

Valve отказывается от официальной поддержки Steam в Ubuntu 19.10+
Sat, 22 Jun 2019 17:35:07 +0300

Взлом внутренней сети NASA через плату Raspberry Pi
Sat, 22 Jun 2019 10:24:07 +0300

Проект VKHR развивает систему рендеринга волос в режиме реального времени
Fri, 21 Jun 2019 20:13:25 +0300

Для Firefox развивается режим блокировки виджетов социальных сетей и Firefox Proxy
Fri, 21 Jun 2019 11:50:12 +0300

Началась работа по переводу GNOME Mutter на многопоточную отрисовку
Fri, 21 Jun 2019 11:09:18 +0300

Прекращение поддержки i386 в Ubuntu приведёт к проблемам с поставкой Wine
Fri, 21 Jun 2019 09:02:12 +0300

Новости OPENNET
Новости

Инженеры из компаний Cloudflare, Mozilla, Facebook и Bloomberg предложили новый формат BinaryAST для ускорения доставки и обработки JavaScript-кода при открытии сайтов в браузере. BinaryAST выносит фазу синтаксического разбора на сторону сервера и поставляет уже сформированное абстрактное синтаксическое дерево (AST). При получении BinaryAST браузер сразу может перейти на стадию компиляции, минуя парсинг исходного кода JavaScript.

Для тестирования подготовлена эталонная реализация, поставляемая под лицензий MIT. Для парсинга используются компоненты Node.js, а код для оптимизации и формирования AST написан на языке Rust. На стороне браузера поддержка BinaryAST уже доступна в ночных сборках Firefox. Кодировщик в BinaryAST может применяться как на уровне инструментария конечного сайта, так и для упаковки скриптов внешних сайтов на стороне прокси или сети доставки контента. В настоящее время уже начался процесс стандартизации BinaryAST рабочей группой ECMA TC39, после завершения которого формат сможет сосуществовать с существующими методами сжатия отдаваемого контента, такими как gzip и brotli.

Значительное время при обработке JavaScript занимает фаза загрузки и синтаксического разбора кода. С учётом того, что объём загружаемого JavaScript на многих популярных сайтах приближается к 10 Мб (например для LinkedIn - 7.2 Мб, Facebook - 7.1 Мб), первичная обработка JavaScript вносит существенную задержку. Стадия парсинга на стороне браузера также замедляется из-за невозможности полноценного построения AST на лету по мере загрузки кода (браузеру приходится ожидать завершения загрузки блоков, например конца функций, для получения недостающей для разбора текущих элементов информации).

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

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

BinaryAST позволяет вписаться в текущую модель разработки и доставки кода без создания нового формата байткода и без изменения языка JavaScript. Размер данных в формате BinaryAST сопоставим со сжатым минифицированным JavaScript-кодом, а скорость обработки за счёт исключения фазы парсинга исходных текстов заметно увеличивается. Также формат BinaryAST позволяет выполнять компиляцию в байткод по мере загрузки, не ожидая завершения получения всех данных. Более того, парсинг на стороне сервера позволяет исключить из отдаваемого представления BinaryAST неиспользуемые функции и лишний код, на который при парсинге на стороне браузера тратится время, как на разбор, так и на передачу лишнего трафика.

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

Тесты кода facebook.com показали, что на разбор JavaScript тратится 10-15% ресурсов CPU и на парсинг уходит больше времени, чем на генерацию байткода и начальное формирование кода для JIT. В движке SpiderMonkey время полного построения AST занимает 500-800 мс и применение BinaryAST позволило сократить этот показатель на 70-90%.

В целом, для большинства web-фреймворков при применении BinaryAST время парсинга JavaScript сокращается на 3-10% в режиме без оптимизации и на 90-97% при включении режима игнорирования неиспользуемых функций. При выполнении тестового JavaScript-набора, размером 1.2 Мб, применение BinaryAST позволило ускорить время начала запуска с 338 до 314 мс на настольной системе (Intel i7) и с 2019 до 1455 мс на мобильном устройстве (HTC One M8).

9.1216 71.3816 0.5846 62.8083

НОВОСТИ: Поддержка 32-разрядных библиотек в Ubuntu 19.10+ будет заимствов ... Sun, 23 Jun 2019 22:07:09 +0300

Стив Лангашек (Steve Langasek) из компании Canonical рассказал о намерении предоставить пользователям будущих выпусков Ubuntu возможность использования библиотек для 32-разрядной архитектуры x86 через заимствование данных библиотек из Ubuntu 18.04. Отмечается, что поддержка библиотек i386 будет продолжена, но будет заморожена на состоянии Ubuntu 18.04.

???????@Mail.ru Opera Firefox INFOBOX - хостинг Google Chrome