Все, что делаешь, надо делать хорошо, даже если совершаешь безумство.

- В гибели "Титаника" виноваты евреи! ...

Для ядра Linux предложен новый пакетный фильтр bpfilter
Wed, 21 Feb 2018 20:55:01 +0600

Для FreeBSD и QEMU/KVM реализованы механизмы блокировки атак Spectre и Meltdown
Tue, 20 Feb 2018 10:30:06 +0600

Фонд Pineapple пожертвовал 200 тысяч долларов проекту KDE
Mon, 19 Feb 2018 20:34:13 +0600

Facebook сменил лицензию на React Native и Yoga
Sat, 17 Feb 2018 23:54:48 +0600

Проект Wine Staging прекращает подготовку релизов
Sat, 17 Feb 2018 22:51:50 +0600

Компания Intel представила программу выплаты вознаграждений за поиск уязвимостей
Fri, 16 Feb 2018 23:47:09 +0600

За две недели загружено около миллиона копий LibreOffice 6.0
Fri, 16 Feb 2018 08:27:40 +0600

В Ubuntu 18.04 ожидается отправка сведений о системе и режим минимальной установки
Thu, 15 Feb 2018 10:07:33 +0600

Oracle перелицензировал код DTrace под GPLv2
Wed, 14 Feb 2018 23:40:58 +0600

Let's Encrypt преодолел рубеж в 50 млн активных сертификатов
Wed, 14 Feb 2018 23:13:00 +0600

Рейтинг дистрибутивов Linux по версии журнала Linux Journal
Wed, 14 Feb 2018 23:04:37 +0600

Истёк срок действия патентов на MPEG-2
Wed, 14 Feb 2018 21:42:03 +0600

Сформирован список организаций, участвующих в Summer of Code 2018
Wed, 14 Feb 2018 18:15:36 +0600

Значительное снижение производительности MyISAM при включении защиты от Meltdown
Tue, 13 Feb 2018 23:54:07 +0600

Google анонсировал активацию блокировщика рекламы в Chrome
Tue, 13 Feb 2018 21:44:31 +0600

Новости 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%), а кэширование итогового машинного кода будет реализовано в одном из дальнейших выпусков.

56.5201 69.8928 0.5278 8.9033

НОВОСТИ: В RubyGems устранено 7 уязвимостей Sat, 17 Feb 2018 23:39:26 +0600

В Rubygems, системе управления пакетами для приложений на языке Ruby, устранено семь уязвимостей. Проблемы исправлены в выпуске RubyGems 2.7.6 . Всем пользователям рекомендуется обновить RubyGems (gem update --system) или установить патчи.

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