Мартин Странски (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-а не е рядкост, тъй като в вид на popup-и са реализирани менюта, изскачащи подсказки, диалози на добавки, искания за права и т.н. Ситуацията става по-сложна и заради недообработки в Wayland и GTK, поради които малки промени могат да доведат до появата на различни регресии. Въпреки това, кодът за обработка на изскачащите прозорци за Wayland беше отстранен и планирано е да бъде включен в Firefox 94.
От други подобрения, свързани с Wayland, се споменава добавянето в Firefox 93 на промени, свързани с мащабирането на екрани с различен DPI, които позволяват избягването на мигане при преместяване на прозорец към ръба на екрана в многомониторни конфигурации. В Firefox 95 се планира решаване на проблемите, възникващи при използването на интерфейса drag&drop, например, при копиране на файлове от външни източници в локални FS и при премества на табове.
В изданието Firefox 96 планират да доведат порта на Firefox за Wayland до общо ниво на функционалност с версията за X11, поне когато работи в 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, подобряване на режима с висок контраст (High Contrast Mode), добавяне в about:processes на възможност за записване на профили за производителността на процеса с едно кликване и премахване на настройката за възстановяване на стария стил на оформление на страницата за отваряне на нов таб, който беше използван преди Firefox 89.
Източник: opennet.ru
