Симптом Фостера

Когда клиент начинает говорить "интересы наших акционеров", это не к добру.

- Мужики, яица не поколите! ...

В Pwn2Own 2019 убраны номинации за взлом Linux, но добавлены за взлом Tesla
Tue, 15 Jan 2019 21:10:37 +0300

Проект LLVM ввёл в строй официальное Git-зеркало в ходе миграции с SVN
Tue, 15 Jan 2019 10:18:08 +0300

Разработчики GTK+ 3 тестируют обновлённую тему оформления
Mon, 14 Jan 2019 23:15:44 +0300

Проект Fedora проведёт чистку пакетов, оставшихся без сопровождения
Mon, 14 Jan 2019 23:06:52 +0300

Firefox 67 начнёт использовать отдельные профили для разных установок
Mon, 14 Jan 2019 10:15:10 +0300

В Firefox 69 планируется по умолчанию отключить поддержку Flash
Sun, 13 Jan 2019 13:19:47 +0300

Около 4.3% имеющихся монет Monero получены в результате майнинга вредоносным ПО
Sat, 12 Jan 2019 12:17:05 +0300

Проект Fedora предложил оценить новые варианты логотипа
Fri, 11 Jan 2019 11:28:49 +0300

Медиаплеер VLC преодолел рубеж в три миллиарда загрузок. Выпуск VLC 3.0.6
Fri, 11 Jan 2019 09:15:46 +0300

Google наметил на 9 июля начало массовой блокировки в Chrome неприемлемой рекламы
Thu, 10 Jan 2019 12:48:52 +0300

В DNF предлагают встроить UUID для идентификации установок Fedora
Wed, 09 Jan 2019 12:19:43 +0300

Debian тестирует поддержку UEFI Secure Boot
Tue, 08 Jan 2019 07:46:54 +0300

GitHub частично перевёл приватные репозитории в разряд бесплатной опции
Mon, 07 Jan 2019 23:21:50 +0300

NVIDIA объявила о поддержке открытого стандарта FreeSync/VESA Adaptive-Sync
Mon, 07 Jan 2019 13:15:57 +0300

Европейская комиссия учредила вознаграждение за поиск ошибок и уязвимостей в СПО
Mon, 07 Jan 2019 10:45:47 +0300

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

Разработчики Mozilla сообщили о включении в состав Firefox 58, релиз которого ожидается на следующей неделе, нового компилятора, который обеспечивает компиляцию промежуточного кода WebAssembly в 10-15 раз быстрее, чем используемый до этого оптимизирующий компилятор.

На типовой рабочей станции скорость компиляции кода WebAssembly достигает 30-60 Мб в секунду, а на мобильном устройстве 8 Мб в секунду, что быстрее, чем пропускная способность большинства сетей. Особенностью нового компилятора является возможность компиляции кода по мере его загрузки. В сочетании с высокой скоростью компиляции данная особенность позволяет получать готовый код почти сразу после окончания загрузки, так как большая часть кода успевает скомпилироваться во время загрузки кода.

Потребность в компиляции по мере загрузки возникла при появлении WebAssembly, так как для обычного JavaScript операции парсинга требуют заметных ресурсов, а псевдокод WebAssembly значительно проще для декодирования и компактнее (требует передачи меньшего объёма по сети для реализации аналогичной функциональности). Ранее параллельно с загрузкой JavaScript осуществлялся парсинг, который выполнялся в параллельном потоке и формировал готовый для компиляции код к моменту окончания загрузки JavaScript, но компиляция производилась после завершения разбора.

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

Суть двухуровневого компилятора заключается в наличии двух фаз: baseline, в которой приоритет отдаётся скорости компиляции в ущерб качеству оптимизации, и оптимизирующей фазы, которая выполняется достаточно медленно, но выдаёт хорошо оптимизированный код. В частности, baseline-компиляция выполняется в 10-15 раз быстрее, но генерирует код, работающий примерно в два раза медленнее.

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

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

Компиляция на второй стадии выполняется в отдельном потоке, параллельно с работой кода web-приложения. Для ускорения данной стадии в новом движке Firefox осуществляется распараллеливание на уровне компиляции отдельных функций, которое позволяет разнести компиляцию на несколько потоков и задействовать все простаивающие ядра CPU. Для ещё большего ускорения работы компилятора планируется добавить систему кэширования, которая при повторном выполнении wasm-файлов позволит сразу использовать уже ранее скомпилированный и сохранённый в кэше машинный код. В Firefox 58 функциональность будет ограничена поддержкой кэширования байткода для JavaScript (ускоряет загрузку Facebook на 12%, Twitter на 5.4%, сайтов Google на 4.9%), а кэширование итогового машинного кода будет реализовано в одном из дальнейших выпусков.

67.0820 76.9498 0.6174 9.9329

НОВОСТИ: Mozilla разрабатывает новый мобильный браузер Fenix Sat, 12 Jan 2019 09:01:01 +0300

Компания Mozilla в рамках проекта Fenix начала разработку нового браузера для мобильных устройств. Разработка пока находится на начальном этапе - реализовано только около 5% от запланированной на выпуск 1.0 функциональности. Тем не менее, уже опубликованы макеты интерфейса, по которым можно судить об особенностях нового браузера и направлении развития продукта.

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