Мартин Странски (Martin Stransky), поддръжник на пакетите с Firefox в Fedora и RHEL, който работи върху портироването на Firefox за Wayland, публикува доклад с преглед на последните постижения в работата на Firefox в среди, базирани на протокола Wayland.
В следващите версии на Firefox е планирано решаване на наблюдаваните проблеми с буфера за обмен и обработката на изскачащи прозорци (popup) в сборките за Wayland. Споменатата функционалност не успя да бъде внедрена веднага поради различия в подхода за нейното реализиране в X11 и Wayland. В първия случай затрудненията възникнаха заради работата на буфера за обмен в Wayland в асинхронен режим, което наложи създаването на отделен слой за абстрахиране на достъпа до буфера за обмен на Wayland. Този слой ще бъде добавен в състава на Firefox 93 и включен по подразбиране в Firefox 94.
Що се отнася до изскачащите диалози, основната трудност беше, че Wayland изисква стриктно спазване на йерархията на изскачащите прозорци, т.е. родителският прозорец може да създаде дъщерен прозорец с popup, но следващият popup, иницииран от този прозорец, трябва да бъде свързан с оригиналния дъщерен прозорец, образувайки верига. В Firefox всеки прозорец можеше да произведе няколко popup-а, които не образуваха йерархия. Проблемът беше, че при използването на Wayland затварянето на един от popup-ите изисква преустрояване на цялата верига с прозорци, в които има и други popup-и, като наличието на няколко отворени popup-а не е рядкост, тъй като в тях са реализирани менюта, изскачащи подсказки, диалози за добавки, запитвания за права и т.н. Ситуацията беше усложнена и от недостатъци в Wayland и GTK, при които дори малки изменения можеха да доведат до различни регресии. Въпреки това, кодът за обработка на изскачащи прозорци за Wayland беше отстранен и планирано е да бъде включен в Firefox 94.
От другите подобрения, свързани с Wayland, се споменава добавянето в Firefox 93 на промени, свързани със скалирането на екрани с различно DPI, които позволиха да се избегне трептенето при преместване на прозореца до края на екрана в многоекранни конфигурации. В Firefox 95 е планирано да се разгледат проблемите, възникващи при използването на интерфейса drag&drop, например при копиране на файлове от външни източници в локални файлови системи и при премести нане на табове.
В изданието Firefox 96 планират портът на Firefox за Wayland да достигне пълна функционалност, поне по отношение на работата в GNOME среда на Fedora. След това вниманието на разработчиците ще бъде насочено към подобряване на работата на GPU процеса в средите на Wayland, в който е изнесен кодът за взаимодействие с графичните адаптери и който предпазва основния процес на браузъра от срив при проблеми с драйверите. В GPU процеса също така е планирано да се изнесе код за декодиране на видео с помощта на VAAPI, който в момента се стартира в процесите за обработка на съдържание.
Освен това е важно да се отбележи, че за малък процент от потребителите на стабилните версии на Firefox е включен режим за стриктна изолация на сайтовете, който е разработен в рамките на проекта Fission. В отличие от досегашната произволна разпределеност на обработката на табовете в наличния пул от процеси (по подразбиране 8), режимът на стриктна изолация изнася обработката на всеки сайт в свой отделен процес, разделяйки не по табове, а по домейни (Public Suffix), което позволява допълнителна изолация на съдържанието на външни скриптове и iframe блокове. Управлението на включването на режима Fission се осъществява чрез променливата „fission.autostart=true“ в about:config или на страницата about:preferences#experimental.
Режимът на стриктна изолация позволява защита от атаки по странични канали, например, свързани с уязвимости от клас Spectre, както и намалява фрагментацията на паметта, по-ефективно връща памет на операционната система, минимизира влиянието на събиране на отпадъци и интензивни изчисления върху страниците в други процеси, увеличава ефективността на разпределението на натоварването върху различни ядра на CPU и повишава стабилността (срив на процеса, обработващ iframe, няма да доведе до срив на основния сайт и други табове).
Сред известните проблеми, които възникват при използването на режима на стриктна изолация, е наблюдаваното увеличение на потреблението на памет и файлови дескриптори при отваряне на голям брой табове, както и проблеми с работата на някои добавки, загуба на съдържание на iframe при печат и извикване на функцията за запис на екран, намаляване на ефективността на кеширането на документи с iframe и загуба на съдържание на попълнени, но не изпратени форми при възстановяване на сесия след срив.
Сред другите промени във Firefox се отбелязва завършването на миграцията към системата за локализация Fluent, подобряването на режима с висока контрастност, добавянето на възможността за запис на профили на производителността на процеса с едно кликване в about:processes и премахването на настройката за връщане към стария стил на оформление на страницата при отваряне на нова таб, използван до Firefox 89.
Източник: opennet.ru
