LINUX.ORG.RU

Firefox 72

 ,


2

1

Доступен Firefox 72. Это первый выпуск, время подготовки которого сокращено с 6 до 4 недель.

  • Режим «картинка-в-картинке» включён на платформах Linux и macOS.
  • В сборках под OpenBSD задействована изоляция файловой системы с помощью unveil().
  • Защита от отслеживания начала по умолчанию блокировать запросы к ресурсам, уличённым в сборе цифровых отпечатков (fingerprinting).
  • Сайты больше не могут запрашивать у пользователей разрешения (на использование геолокации, камеры, уведомлений) до тех пор, пока пользователь не начал взаимодействовать со страницей (щелчок мышью, нажатие клавиши клавиатуры, тап). Телеметрия показывает следующее:
    • крайне непопулярны запросы на показ уведомлений (лишь 1% одобряется, 48% отклоняются, в остальных случаях запрос игнорируется). В течение месяца пользователи получили полтора миллиарда запросов, из которых были одобрены лишь 23,5 миллиона.
    • повторный запрос разрешения не повышает вероятность того, что пользователь согласится. 85% одобрений были получены именно с первой попытки.
    • веб-мастера, в основном, не дожидаются, пока пользователь начнёт взаимодействие со страницей, а вываливают запросы сразу же.
    • запросы, которые дожидаются взаимодействия пользователя со страницей, одобряются вдвое чаще.
    Начиная с этого выпуска, если запрос был создан не дожидаясь действий пользователя, он будет представлен лишь пиктограммой в адресной строке.
  • Цвет полос прокрутки автоматически подстраивается под цвет фона страницы.
  • В HTTP-заголовок Accept добавлена поддержка image/webp. Несмотря на то, что такое поведение идёт вразрез со спецификацией, оно применяется в Chromium, поэтому многие сайты смотрят на этот заголовок, чтобы определить, поддерживает ли браузер формат WebP.
  • Firefox научился использовать политики, размещённые в /run/user/$UID/firefox/policies.json
  • Появилась возможность использовать клиентские сертификаты из хранилища Windows (security.osclientcerts.autoload).
  • При отключении отправки телеметрии все соответствующие данные будут удалены с серверов Mozilla в течение 30 дней, как того требует Калифорнийский закон о защите прав потребителей.
  • Число недавних папок в диалоге добавления закладки увеличено с 5 до 7. Для тех, кому требуется ещё больше, добавлена настройка browser.bookmarks.editDialog.maxRecentFolders.
  • Полностью переработан механизм синхронизации закладок. Это позволило решить множество проблем: дублирование, потерю и перемешивание закладок, перемешивание папок, проблемы с синхронизацией новых или перемещённых закладок.
  • Удалена встроенная возможность блокировать загрузку изображений с конкретных доменов (она была глубоко запрятана и не пользовалась популярностью). С этой задачей гораздо лучше справляются дополнения типа uMatrix.
  • Прекращена поддержка HTTP Public Key Pinning. Веб-сайт мог проинформировать браузер о том, что используемый SSL-сертификат должен рассматриваться как действительный только в том случае, если выдан определённым удостоверяющим центром. К сожалению, HPKP не только не обрёл популярность, но и открыл простор для вымогательства. Злоумышленник, получив доступ к настройкам веб-сервера, развёртывал HPKP и заставлял клиентов закэшировать эти сведения на пару лет вперёд. Когда владелец восстанавливал контроль и удалял сертификат злоумышленника, клиенты теряли возможность соединиться с сервером. К тому же, технология оказалась лёгким способом «выстрелить себе в ногу», заблокировав по ошибке доступ к собственному сайту. Год назад поддержка HTTP Public Key Pinning была прекращена в Chrome, а в IE, Edge и Safari она так и не была реализована.
  • Открыт код прокси-сервера Pocket, который позволяет получать спонсорский контент в новых вкладках, не создавая угроз приватности пользователей.
  • CSS:
    • Включена поддержка Shadow Parts (атрибута part и псевдоэлемента ::part, которые позволяют выборочно отображать элементы Shadow DOM).
    • Включена поддержка Motion Path.
    • Реализованы свойства scale, rotate и translate.
  • JavaScript: добавлена поддержка оператора объединения с NULL.
  • API: включена поддержка FormDataEvent.
  • Сервисные воркеры: добавлена поддержка свойства WindowOrWorkerGlobalScope.crossOriginIsolated.
  • Инструменты разработчика:
    • Отладчик обрёл поддержку условных точек останова (срабатывающих при чтении или изменении свойств объекта).
    • Сетевой монитор научился показывать сведения о времени запроса, начале и конце загрузки каждого ресурса.
    • Режим отзывчивого дизайна стал поддерживать симуляцию различных значений meta viewport.
    • Инспектор позволяет симулировать различные значения prefers-color-scheme.
    • Инспектор вебсокетов отныне показывает объём полученных и переданных данных, а также формат ASP.NET Core SignalR.
    • Удалён «Простой редактор JavaScript», поскольку его с успехом заменяет многострочный режим ввода консоли.

>>> Примечания к выпуску для разработчиков

>>> Все закрытые в этом выпуске баги

>>> Подробности

Ответ на: комментарий от intelfx

Композитор в конечном итоге хочет от тебя текстуру в видеопамяти. Почему бы не заблитить последним шагом в уже готовую текстуру страницы кусок отдельно декодированного в видеопамяти кадра — решительно непонятно.

Не DRM-ли реальная причина?

Censo ()
Ответ на: комментарий от Polugnom

Потому что в винде есть единый вм с композитингом изкоробки, плюс есть единый DXVA, интегрированный с этим вм по самые помидоры. А в линуксе композитные вм-ы, некомпозитные вм-ы, vdpau, vaapi, разные тулкиты, иксы, созданные по заветам дидов-основателей, которые едва ли могли представить себе, что когда-то понадобится ускорять видео посредством gpu да еще и как часть рендеринга веб-страницы.

Это всё, конечно, красиво, но нерелевантно. На некомпозирующие WM можно просто положить. На VDPAU тоже. Зоопарк тулкитов нерелевантен, лиса пользуется одним конкретным. Иксы, конечно, дерьмо, но если ты один раз продрался через GLX, то какие потом проблемы? Взял OpenGL-контекст и делай с ним что хочешь.

intelfx ★★★★★ ()
Ответ на: комментарий от Ostegard

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

Напомни, когда последний раз несовместимо менялись любые API, имеющие отношение к вопросу?

intelfx ★★★★★ ()
Ответ на: комментарий от i-rinat

Ты глянь в баг, где декодирование под Windows делали. Там в самом начале от разработчика вопрос «а как тут вообще, с какой стороны подходить?», потом тишина, потом через примерно месяц — реализация.

Ну так я о том и говорю. Под оффтопик решить задачу и написать код почему-то никаких проблем нет.

Скорее, занятость другими задачами.

https://xkcd.com/619/

Эту отмазку форсируют в комментариях. Я тоже, гы-гы. Правда, я её писал в ответ на «вот в mpv же сделали, значит, это просто».

А на вопрос, заданный мной дальше по тексту комментария, ты знаешь ответ? Почему нельзя сделать не наивно?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Напомни, когда последний раз несовместимо менялись любые API, имеющие отношение к вопросу?

Тут вопрос не в теории, а в практике.

Постоянно что-то ломается. А я раз в год стабильно пересматриваю интерфейсы вывода в mpv — то одно deprecated, то так, то сяк.

Всё переделывают постоянно 🤷‍♂️ Это и ещё в гораздо проще задаче (воспроизведение в плеере).

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от fornlr

Тут вопрос не в теории, а в практике.

Вот именно, что не в теории, а в практике. В теории в линуксе, может быть, и постоянно что-то ломают, а на практике — что конкретно и когда последний раз ломали?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Да у тебя все вокруг виноваты, а есть вот золотой те… линукс

Вот куда не ткни

https://github.com/saiarcot895/chromium-ubuntu-build/issues/20

Тут анимешник, благодаря которому в Fedora появился Chromium с GPU декодированием, не доволен, что в AMD чего-то не хватает.

ЗЫ: вот я таких как ты, отправлял бы на галеры разрабатывать десктопный софт под линуксы. Может бы исправился от глупого фанатизма. И десктопный линукс лучше бы стал, хотя если такой детский максимализм, то ещё неизвестно…

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 2)
Ответ на: комментарий от intelfx

Вот ещё

https://github.com/intel/intel-vaapi-driver/issues/456

Тот же анимешник AMDшник пишет «у меня на AMD работает, это проблемы с драйверами на Intel».

Ну и начинается весь этот волейбол 🏐 «нет ты!».

Вот а надо этот разработчикам браузеров? — они дали ответ.

fornlr ★★★★★ ()
Ответ на: комментарий от intelfx

Напомни, когда последний раз несовместимо менялись любые API, имеющие отношение к вопросу?

Прямо сейчас. На части инстялляций X11, на части Wayland. А приложениям этот зоопарк поддерживать.

Причём никто не может гарантировать, что в Red Hat завтра не решат, что у Wayland есть фатальный недостаток и не начнут разрабатывать что-то ещё более революционное.

Ostegard ()
Ответ на: комментарий от intelfx

Вот ещё.

Регрессия в гномоном WM ставит раком и mpv и Firefox с WebRender

https://gitlab.gnome.org/GNOME/mutter/issues/457

ЗЫ: это я специально не искал, по другому вопросу сегодня наткнулся

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от fornlr

Понь, ты вообще смотришь, на что отвечаешь?

Напомни, когда последний раз несовместимо менялись любые API, имеющие отношение к вопросу?

Ты бы ещё всю багзиллу гнома сюда скопипастил — ненуачё, «ломают» же!

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от commagray

Они греховны по своей сути. Они есть квинтэссенция безделья, гнева, алчности, зависти, высокомерия и похоти. Все грехи человеческие, сплетенные в одном продукте. А самое паршивое в том, что они затягивают, заставляют в больших объемах потреблять бесполезный говноконтент, формируя то, что Курпатов называет «информационная псевдодебильность».

spoonbob ()
Ответ на: комментарий от intelfx

ты вообще смотришь, на что отвечаешь?

А оно про это и есть. Это практика, а не теория. Двое ещё по треду тебе тоже самое пишут. Не катят твои глупости «всё хорошо прекрасная маркиза» на практике. Не работает оно так.

Просто есть два подхода: фанатика и практика.

Ты используешь первый - «линукс золото, все дураки».

Я использую второй - «если бы меня поставили отвечать за реализацию этого, я бы в окно выпрыгнул и побежал с большой скоростью. Потому что это очень сложная задача, которая зависит от большого зоопарка».

дурак

Сам такой.

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 3)
Ответ на: комментарий от intelfx

в каждом релизе жырнобраузеров мильон фич как в этой новости.
теперь вот картинка в шмартинке - браузер теперь не только ОС но и еще и set-top-box.

но вот как это влияет на их предрасположенность таки запилить аппаратное декодирование?? ведь «на Линуксах оно не работает» (с)
(у меня лет 10 работает, да и то я не early adopter. Причем vdpau как на невидии (с блобом) так и на АТИ сейчас с мезой. Жаль что невидиус его закопал - самый штабильный быстрый и качественный API)

ну и опять же его всё равно не запилить в DRMнутый декодер. он и на венде вроде не ускорен (?)

Adsky_Burunduk ()
Ответ на: комментарий от spoonbob

Прочитал статью. Бред какой-то. И такое ощущение, что самое важное можно было сформулировать в 2-3 предложениях. А передать вообще всё содержимое - в 10. Но его там нет.

anonymous ()
Ответ на: комментарий от intelfx

Под оффтопик решить задачу и написать код почему-то никаких проблем нет.

Опять какие-то «почему-то». Всё же просто: поставили задачу, выделили время разработчика, он сделал. Задача про декодированием под Linux тоже есть: https://bugzilla.mozilla.org/show_bug.cgi?id=1210727. Приоритет у неё выставлен в P3, которая описана так: «This isn’t a bad idea, and maybe we’ll want to implement it at some point in the future, but it’s not near-term roadmap material. Some core Bugzilla developer may work on it.»

В багзилле у них 653 бага с приоритетами P1 или P2. Так что вероятность, что вот прямо завтра займутся декодированием под Linux, не такая уж и большая.

А отмазки… У меня сильное ощущение, что отмазки придумывают люди, которые непосредственно реализацией не занимаются. Помогает объяснить реальность, как мифы.

Почему нельзя сделать не наивно?

Так ведь уже сделано — в поддержке Flash. Композитор использует XRender, чтобы вставить Drawable от плагина в страницу. Если использовать OpenGL для финального рисования, Drawable можно связать с текстурой, через GLX_EXT_texture_from_pixmap.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Задача про декодированием под Linux тоже есть: https://bugzilla.mozilla.org/show_bug.cgi?id=1210727. Приоритет у неё выставлен в P3

Видно, ты разбираешься. Расскажи, что нужно выставить для отключения DPMS в полноэкранном (и включение DPMS при переходе в оконный) под X11. Не может быть, чтобы не было ничего. Там же всего пара строчек!

anonymous ()
Ответ на: комментарий от anonymous

Не знаю, что за статью ты читал, но важное и правда можно сформулировать в пару предложений. Рекомендуется поменьше потреблять контента и побольше думать головой. Например 15% читать доку, остальное время думать. Или спать. Современный человек променял процесс размышления на потребление мемосиков и видосиков. Что и делает его тупицей

spoonbob ()
Ответ на: комментарий от anonymous

Не может быть, чтобы не было ничего. Там же всего пара строчек!

Ну, во-первых, не пара строчек, а больше.

diff --git a/widget/gtk/WakeLockListener.cpp b/widget/gtk/WakeLockListener.cpp
index d93ca51718..bb588aeb0e 100644
--- a/widget/gtk/WakeLockListener.cpp
+++ b/widget/gtk/WakeLockListener.cpp
@@ -14,6 +14,7 @@
 
 #  if defined(MOZ_X11)
 #    include "prlink.h"
+#    include <X11/extensions/dpms.h>
 #  endif
 
 #  define FREEDESKTOP_SCREENSAVER_TARGET "org.freedesktop.ScreenSaver"
@@ -49,7 +50,11 @@ class WakeLockTopic {
         mDesktopEnvironment(FreeDesktop),
         mInhibitRequest(0),
         mShouldInhibit(false),
-        mWaitingForReply(false) {}
+        mWaitingForReply(false) {
+#  if defined(MOZ_X11)
+    CheckXext();
+#  endif
+  }
 
   nsresult InhibitScreensaver(void);
   nsresult UninhibitScreensaver(void);
@@ -65,6 +70,7 @@ class WakeLockTopic {
 #  if defined(MOZ_X11)
   static bool CheckXScreenSaverSupport();
   static bool InhibitXScreenSaver(bool inhibit);
+  static void CheckXext();
 #  endif
 
   static void ReceiveInhibitReply(DBusPendingCall* aPending, void* aUserData);
@@ -142,11 +148,26 @@ typedef Bool (*_XScreenSaverQueryExtension_fn)(Display* dpy, int* event_base,
 typedef Bool (*_XScreenSaverQueryVersion_fn)(Display* dpy, int* major,
                                              int* minor);
 typedef void (*_XScreenSaverSuspend_fn)(Display* dpy, Bool suspend);
+typedef Status (*_DPMSEnable_fn)(Display* dpy);
+typedef Status (*_DPMSDisable_fn)(Display* dpy);
 
 static PRLibrary* sXssLib = nullptr;
+static PRLibrary* sXextLib = nullptr;
 static _XScreenSaverQueryExtension_fn _XSSQueryExtension = nullptr;
 static _XScreenSaverQueryVersion_fn _XSSQueryVersion = nullptr;
 static _XScreenSaverSuspend_fn _XSSSuspend = nullptr;
+static _DPMSEnable_fn _DPMSEnable = nullptr;
+static _DPMSDisable_fn _DPMSDisable = nullptr;
+
+void WakeLockTopic::CheckXext() {
+  if (sXextLib)
+    return;
+  sXextLib = PR_LoadLibrary("libXext.so.6");
+  if (!sXextLib)
+    return;
+  _DPMSEnable = (_DPMSEnable_fn)PR_FindFunctionSymbol(sXextLib, "DPMSEnable");
+  _DPMSDisable = (_DPMSEnable_fn)PR_FindFunctionSymbol(sXextLib, "DPMSDisable");
+}
 
 /* static */
 bool WakeLockTopic::CheckXScreenSaverSupport() {
@@ -200,6 +221,14 @@ bool WakeLockTopic::InhibitXScreenSaver(bool inhibit) {
 bool WakeLockTopic::SendInhibit() {
   bool sendOk = false;
 
+  if (_DPMSDisable) {
+    GdkDisplay* gDisplay = gdk_display_get_default();
+    if (GDK_IS_X11_DISPLAY(gDisplay)) {
+      Display* display = GDK_DISPLAY_XDISPLAY(gDisplay);
+      _DPMSDisable(display);
+    }
+  }
+
   switch (mDesktopEnvironment) {
     case FreeDesktop:
       sendOk = SendFreeDesktopInhibitMessage();
@@ -225,6 +254,14 @@ bool WakeLockTopic::SendInhibit() {
 bool WakeLockTopic::SendUninhibit() {
   RefPtr<DBusMessage> message;
 
+  if (_DPMSEnable) {
+    GdkDisplay* gDisplay = gdk_display_get_default();
+    if (GDK_IS_X11_DISPLAY(gDisplay)) {
+      Display* display = GDK_DISPLAY_XDISPLAY(gDisplay);
+      _DPMSEnable(display);
+    }
+  }
+
   if (mDesktopEnvironment == FreeDesktop) {
     message = already_AddRefed<DBusMessage>(dbus_message_new_method_call(
         FREEDESKTOP_SCREENSAVER_TARGET, FREEDESKTOP_SCREENSAVER_OBJECT,

А во-вторых, Firefox пытается общаться со скринсейвером по шине org.freedesktop.ScreenSaver. По стандарту freedesktop, там должен кто-то слушать. Вот этот кто-то и должен разбираться, как выключать DPMS. В браузер это тащить не стоит.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Ну, что тут можно сказать — красавчик. Я же говорю, действительно разбираешься.

А во-вторых, Firefox пытается общаться со скринсейвером по шине org.freedesktop.ScreenSaver. По стандарту freedesktop, там должен кто-то слушать. Вот этот кто-то и должен разбираться, как выключать DPMS. В браузер это тащить не стоит.

mpv и mplayer поступают не по стандартам? Хм.

Большое тебе спасибо.! Завтра проверю.

anonymous ()
Ответ на: комментарий от i-rinat

Всё же просто: поставили задачу, выделили время разработчика, он сделал.

Ага. Монетку бросают - так и приоритет задачам назначается :D

Приоритет задачи = профит / сложность

Под Windows это проще сделать (единый API и нет зоопарка) и прибыльнее (аудитория больше). Комбо.

PS: и ни при чём тут «отмазки», «мифы», «выдумки»

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 2)

Цвет полос прокрутки автоматически подстраивается под цвет фона страницы.

Одобрям-с! Достала уже рассогласованная по цвету прокрутка.

rmu ★★ ()
Ответ на: комментарий от Dmitry_Sokolowsky

В таком случае нужно установить OpenVPN, положить конфиг в /etc/openvpn/openvpn.conf и запустить каким-то из способов:

root #/etc/init.d/openvpn start
root #systemctl start openvpn

Если используется Network Manager, то можно поставить плагин, добавляющий ему поддержку OpenVPN (сам OpenVPN тоже нужно поставить, конечно) и срисовать настройки из убунты.

MozillaFirefox ★★★★ ()
Последнее исправление: MozillaFirefox (всего исправлений: 2)

Firefox, конечно, рулит своей настраиваемостью, однако...

Я тут таки понял, что наблюдаемые мной глюки при запущенном Firefox'е, по ходу, связаны с несовместимостью его webrender'а и моей AMD R7 240 (Oland Pro). По ходу, ему нужна более новая видеокарта. Отключил webrender, и вообще пишу сейчас из Chromium'а, который задействует аппаратное ускорение на AMD R7 240 без глюков (пока что не видел, продолжаю наблюдение).

saahriktu ★★★★★ ()

Это обновление сломало автоскрытие боковой панели, когда она расположена слева. Справа мне неудобно, но выбора теперь нет :(

rmu ★★ ()
Ответ на: комментарий от i-rinat

О, да. Сумел вставить два вызова — «разбирается». К сожалению, это так не работает.

Это работает именно так. Что лично меня удивило — полагал, там будет попроще. Эти два вызова ты оформил в конкретное рабочее решение. Разве что, добавить отключение скринсейвера нужно, чтобы совсем было похоже на xset -dpms s off. Лично для меня больше ничего не нужно. Угу, dbus тут тоже не нужен. Еще раз, спасибо тебе.

Намек для нытиков за аппаратное ускорение. Есть человек, который знает и может.

anonymous ()