Firefox 58 — регулирование вкладок, веб-сборка, окончательное обещание и прогрессивные веб-приложения


Firefox 58 только что был выпущен для конечных пользователей, но в нем есть некоторые интересные изменения для программистов. Mozilla действительно, похоже, переносит Firefox в 21-й век, оставляя его устаревшую архитектуру, XUL и XCOM далеко позади, при этом полностью модернизируя браузер. .

Одна из проблем, с которыми мы сталкиваемся с производителями браузеров, заключается в том, что они заняли место производителей операционных систем. Когда-то то, что наши программы могли делать, а что нет, контролировалось могущественными богами Microsoft или Linux, но теперь имеет значение браузер.

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

Firefox становится быстрее и использует меньше ресурсов, и это хорошо. Наибольшее улучшение, вероятно, связано с использованием дополнительных потоков во время рендеринга. Новое средство визуализации все чаще использует аппаратное ускорение, но в Firefox 58 процесс рисования вынесен в отдельный поток. Это освобождает основной поток для выполнения вашего кода, что должно быть хорошо. Самое приятное то, что повышение скорости не зависит от графического оборудования — это одно из преимуществ, которое мы все можем иметь.

Могут возникнуть странные эффекты при использовании потока для растеризации, но регулирование вкладок в фоновом режиме определенно вызовет некоторые проблемы.

«Чтобы снизить загрузку ЦП в целом, Firefox 58 начнет регулировать таймеры (в частности, setTimeout / setInterval) на фоновых вкладках. Эти таймеры будут по-прежнему срабатывать, но с меньшей частотой. Существуют исключения для соединений WebRTC / WebSocket, а также для воспроизведения звука».

Это заставляет задуматься, кому принадлежит функция setTimeout! Честно говоря, setTimeout и setInterval обещают только периоды времени, по крайней мере, столько, сколько указано, и Chrome делает это в течение некоторого времени.

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

Один из обновленных стандартов — это добавление метода.finally к объекту Promise для выполнения любого кода, который необходимо запустить, несмотря ни на что. Если вы хотите писать современный код, вам, скорее всего, следует использовать async и await, а не необработанные Priomises.

Наконец, неумолимое шествие Progressive Web App продолжается. Если вы теперь просматриваете веб-сайт, обслуживаемый по HTTPS, с действующим манифестом, пользователь может щелкнуть «добавить на главный экран». Вам не нужно регистрировать ServiceWorker для Firefox, в отличие от Chrome. По причинам, которые не на 100% ясны, это работает только в Firefox для Android — пользователям настольных компьютеров явно не нужны веб-приложения.

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


Добавить комментарий