План паляпшэння падтрымкі Wayland у Firefox

Марцін Странскі (Martin Stransky), мэйнтэйнер пакетаў з Firefox у Fedora і RHEL, які займаецца партаваннем Firefox для Wayland, апублікаваў справаздачу з аглядам апошніх дасягненняў у вобласці працы Firefox у асяроддзі на базе пратаколу Wayland.

У найблізкіх выпусках Firefox плануецца вырашыць назіраныя ў зборках для Wayland праблемы з буферам абмену і апрацоўкай усплываючых вокнаў (popup). Паказаныя магчымасці не атрымоўвалася адразу ўвасобіць з-за адрозненняў у падыходзе да іх рэалізацыі ў X11 і Wayland. У першым выпадку цяжкасці ўзніклі з-за працы буфера абмену Wayland у асінхронным рэжыме, што запатрабавала стварэння асобнай праслойкі для абстрагавання доступу да буфера абмену Wayland. Паказаная праслойка будзе дададзена ў склад Firefox 93 і ўключана па змаўчанні ў Firefox 94.

Што да ўсплываючых дыялогаў, то асноўная цяжкасць была ў тым, што Wayland патрабуе захавання строгай іерархіі усплываючых вокнаў, г.зн. бацькоўскае акно можа стварыць даччынае акно з popup-ым, але ініцыяваны з гэтага акна наступны popup павінен прывязацца да зыходнага даччынага акна, утворачы ланцужок. У Firefox кожнае акно магло спараджаць некалькі popup-ов, якія не ўтвараюць іерархію. Праблема складалася ў тым, што пры выкарыстанні Wayland зачыненне аднаго з popup-ов патрабуе перастраенні ўсяго ланцужка вокнаў з іншымі popup-амі, пры тым што наяўнасць некалькіх адчыненых popup-ов не з'яўляецца рэдкасцю, бо ў выглядзе popup-ов рэалізаваны меню, усплывальныя падказкі, дыялогі дапаўненняў, запыты паўнамоцтваў і да т.п. Сітуацыю таксама ўскладнялі недапрацоўкі ў Wayland і GTK, з-за якіх унясенне невялікіх змен магло прывесці да з'яўлення розных рэгрэсій. Тым не менш, код для апрацоўкі усплываючых вокнаў для Wayland быў адладжаны і яго плануецца ўключыць у склад Firefox 94.

З іншых мелых стаўленне да Wayland паляпшэнняў згадваецца даданне ў Firefox 93 змен, злучаных з маштабаваннем на экранах з розным DPI, якія дазволілі пазбавіцца ад мігацення пры перасоўванні акна да боку экрана ў шматманіторных канфігурацыях. У Firefox 95 плануецца разабрацца з праблемамі, якія ўзнікаюць пры выкарыстанні інтэрфейсу drag&drop, напрыклад, пры капіяванні файлаў з вонкавых крыніц у лакальныя ФС і пры перасоўванні ўкладак.

У выпуску Firefox 96 порт Firefox для Wayland плануюць давесці да агульнага парытэту ў функцыянальнасці са зборкай для X11, прынамсі пры працы ў GNOME-асяроддзі Fedora. Пасля гэтага ўвага распрацоўнікаў будзе пераключана на адточванне працы ў асяроддзі Wayland працэсу GPU, у які вынесены код для ўзаемадзеяння з графічнымі адаптарамі і які абараняе асноўны працэс браўзэра ад краху ў выпадку збояў у драйверах. У працэс GPU таксама плануецца вынесці код для дэкадавання відэа пры дапамозе VAAPI, які ў наш час запускаецца ў працэсах апрацоўкі кантэнту.

Дадаткова можна адзначыць уключэнне для невялікага адсотка карыстачоў стабільных галінак Firefox рэжыму строгай ізаляцыі сайтаў, які развіваўся ў рамках праекту Fission. У адрозненне ад ужывальнага да цяперашняга часу адвольнага размеркавання апрацоўкі ўкладак па даступным пуле працэсаў (па змаўчанні 8), рэжым радком ізаляцыі выносіць апрацоўку кожнага сайта ў свой асобны працэс з падзелам не па ўкладках, а па даменах (Public Suffix), што дазваляе дадаткова ізаляваць змесціва вонкавых скрыптоў і iframe-блокаў. Кіраванне ўключэннем рэжыму Fission ажыццяўляецца праз зменную "fission.autostart=true" у about:config ці на старонцы about:preferences#experimental.

Рэжым строгай ізаляцыі дазваляе абараніцца ад нападаў па іншых каналах, напрыклад, злучанымі з уразлівасцямі класа Spectre, а таксама змяншае фрагментацыю памяці, больш эфектыўна вяртае памяць аперацыйнай сістэме, мінімізуе ўплыў зборкі смецця і інтэнсіўных вылічэнняў на старонкі ў іншых працэсах, павялічвае эфектыўнасць размеркавання нагрузкі на розныя ядра CPU і павялічвае стабільнасць (крах працэсу, які апрацоўвае iframe, не пацягне за сабой асноўны сайт і іншыя ўкладкі).

Сярод вядомых праблем, якія ўзнікаюць пры выкарыстанні рэжыму строгай ізаляцыі, адзначаецца прыкметнае павелічэнне спажывання памяці і файлавых дэскрыптараў пры адкрыцці вялікай колькасці ўкладак, а таксама парушэнне працы некаторых дадаткаў, знікненне змесціва iframe пры друку і выкліку функцыі запісу скрыншота, зніжэнне эфектыўнасці кэшавання дакументаў з iframe, страта змесціва запоўненых, але не адпраўленых формаў пры аднаўленні сеансу пасля краху.

З іншых змен у Firefox адзначаецца завяршэнне міграцыі на сістэму лакалізацыі Fluent, паляпшэнне высокакантраснага рэжыму (High Contrast Mode), даданне ў about:processes магчымасці запісу профіляў прадукцыйнасці працэсу ў адзін клік і выдаленне налады для вяртання старога стылю афармлення старонкі адкрыцця новай укладкі, які выкарыстоўваўся да Firefox 89.

Крыніца: opennet.ru

Дадаць каментар