Издаден е уеб браузърът Firefox 94. Освен това, е създадено обновление на клоновете с дългосрочна поддръжка — 91.3.0. Клонът Firefox 95 е преведен в етапа на бета тестване, чийто релиз е насрочен за 7 декември.
Основни нововъведения:
- Реализирана е нова служебна страница „about:unloads“, на която потребителят може да принудително освободи паметта от най-ресурсоемките табове, без да ги затваря (съдържанието ще бъде перезаредено при преминаване към таба). На страницата „about:unloads“ наличните табове са изброени по ред на приоритет при изчерпване на оперативната памет. Приоритетът в списъка се избира в зависимост от времето на достъп до таба, а не на основата на използваните ресурси. При натискане на бутона Unload, първият таб в списъка ще бъде освободен от паметта, при следващото натискане — вторият и т.н. Все още не може да се освободи таб по избор.

- При първото стартиране след инсталиране на обновлението се активира нов интерфейс за избор на шест сезонни цветови теми, като за тях са предложени три нива на приложение на тъмен оттенък, влияещи на показването на тъмните тонове на съдържанието, панелите и реда на превключване на табовете.

- Предложен е режим на строга изолация на сайтовете, развиван в рамките на проекта Fission. В отличие от досега прилаганото произволно разпределение на обработката на табовете по наличния пул от процеси (по подразбиране 8), режимът на строга изолация извежда обработката на всеки сайт в свой собствен процес с разделяне не по табове, а по домейни (Public Suffix). Режимът е активиран не за всички потребители, за деактивиране или активиране може да се използва страницата „about:preferences#experimental“ или настройката „fission.autostart“ в about:config.
Новият режим осигурява по-надеждна защита от атаки от клас Spectre, намалява фрагментацията на паметта, позволява допълнителна изолация на съдържанието на външни скриптове и iframe блокове. По-ефективно връща паметта на операционната система, минимизира влиянието на събиране на боклуци и интензивни изчисления върху страниците в други процеси, увеличава ефективността на разпределение на натоварването върху различни ядра на CPU и повишава стабилността (падане на процеса, обработващ iframe, не носи със себе си основния сайт и други табове). Цената е общо увеличение на потреблението на памет в случай на голям брой отворени сайтове.
- На потребителите е предложено допълнението Multi-Account Containers с реализация на концепцията за контекстуални контейнери, които могат да се използват за гъвкава изолация на произволни сайтове. Контейнерите предлагат възможност за изолиране на различни типове съдържание без създаване на отделни профили, което позволява отделяне на информацията от отделни групи страници. Например, може да се създадат отделни, изолирани един от друг, области за лична комуникация, работа, пазаруване и банкови операции или да се организира едновременно използване на различни потребителски акаунти на един и същи сайт. Във всеки контейнер се използват отделни хранилища за Cookies, Local Storage API, indexedDB, кеш и съдържание OriginAttributes. Освен това, при използване на Mozilla VPN за всеки контейнер може да се използва различен VPN сървър.

- Премахнато е изискването за потвърждение на операция при излизане от браузъра или затваряне на прозореца през менюто и бутоните за затваряне. Т.е. грешно натискане на бутона „[x]“ в заглавието на прозореца сега води до затваряне на всички табове, включително и с отворени формуляри за редактиране, без предварително предупреждение. След възстановяване на сесията данните в уеб формуляри не се губят. При натискане на Ctrl+Q продължава да се извежда предупреждение. В настройките това поведение може да се промени (панел General/ секция Tabs/ параметър „Потвърдете преди затваряне на множество табове“).

- В сборките за Linux за графични среди, които използват протокола X11, по подразбиране е включен нов бекенд за рендериране, който се отличава с използването на EGL за изход на графиката вместо GLX. Бекендът поддържа работа с отворени OpenGL драйвери Mesa 21.x и с проприетарни драйвери NVIDIA 470.x. Проприетарните OpenGL драйвери на AMD все още не се поддържат. Използването на EGL решава проблеми с gfx драйверите и позволява разширяване на спектъра от устройства, за които е налично ускорение на видео и WebGL. Новият бекенд е подготвен чрез разделяне на DMABUF бекенда, първоначално създаден за Wayland и позволяващ директно извеждане на кадри в паметта на GPU, която може да се отрази във фреймбуфера EGL и да се рендерира като текстура при комбиниране на елементи от уеб страницата.
- В сборките за Linux по подразбиране е включен слой, който решава проблемите на буфера за обмен в среди на базата на протокол Wayland. Включени са и промени, свързани с обработката на изскачащи прозорци (popup) в среди на базата на протокол Wayland. Wayland изисква спазване на строга йерархия на изскачащите прозорци, т.е. родителският прозорец може да създаде дочерен прозорец с popup, но иницираният от този прозорец следващ popup трябва да се свърже с оригиналния дочерен прозорец, образувайки верига. В Firefox обаче всеки прозорец може да ражда няколко popup-а, които не образуват йерархия. Проблемът беше, че при използване на Wayland затварянето на един от popup-овете изисква реконструиране на цялата верига от прозорци с други popup-и, което не е рядкост, тъй като изскачащите менюта, подсказки, диалози на добавки, искания за разрешения и др. са реализирани като popup.
- Намалени са разходите при използване на API performance.mark() и performance.measure() с голям брой анализирани метрики.
- Поведенческите характеристики при рендериране по време на зареждане на страниците са променени, за да се повиши производителността на „топлото“ зареждане на предишно отворени страници в режим на строга изолация.
- За ускоряване на зареждането на страниците е увеличен приоритетът на зареждането и показването на изображения.
- В JavaScript двигателя е намалено малко потреблението на памет и е повишена производителността при обход на свойства.
- Подобрени са операциите за планиране на извикването на събирача на боклук, което е позволило да се съкрати времето за зареждане на страниците в някои тестове.
- Намалена натовареност на CPU при обработка на HTTPS връзки и poll-инг на сокети.
- Ускорена инициализация на хранилището и намалено време за първоначално стартиране чрез редуциране на входно/изходните операции в основния поток.
- При затваряне на инструментите за разработчици е освободена по-голяма от преди памет.
- В CSS правилото @import е добавена поддръжка на функцията layer(), която извежда определенията на каскадния слой, зададени с правилото @layer.
- В функцията structuredClone() е реализирана поддръжка за копиране на сложни JavaScript обекти.
- За формуляри е внедрен атрибутът „enterkeyhint“, който определя поведението при натискане на клавиша Enter на виртуалната клавиатура.
- Добавен е методът HTMLScriptElement.supports(), с помощта на който може да се провери наличието на поддръжка в браузъра за определени типове скриптове, като JavaScript модули или класически скриптове.
- Добавено е свойство ShadowRoot.delegatesFocus за проверка на настройката на свойството delegatesFocus в отделния Shadow DOM.
- На платформата Windows, вместо разсейващи потребителя известия за инсталиране на обновления, браузърът сега се актуализира на фона при затваряне. В средата на Windows 11 е внедрена поддръжка на новата система за менюта (Snap Layouts).
- В компилациите за macOS за видео в цял екран е активиран режим с низко енергийно потребление.
- В версията за платформата Android:
- Оптимизирано е връщането към предишно преглеждано и затворено съдържание — на новата основна домашна страница е предоставена възможност за преглед на наскоро затворени табове, добавени закладки, запитвания и препоръки от Pocket.
- Предоставена е възможност за персонализиране на съдържанието, което се показва на домашната страница. Например, може да се конфигурира показването на списъци с най-често посещавани сайтове, наскоро отворени табове, наскоро запазени закладки, запитвания и препоръки от Pocket.
- Добавена е поддръжка за преместване на неактивни табове в отделна секция Inactive Tabs, за да не се задръства основната лента с табове. В Inactive Tabs се поставят табове, които не са били отваряни повече от 2 седмици. Тази функция може да бъде деактивирана в настройките „Settings->Tabs->Move old Tabs to inactive.“
- Разширена е хевристиката при извеждане на препоръки по време на въвеждане в адресната лента.

Освен нововъведенията и отстраняването на грешки, Firefox 94 е поправил 16 уязвимости, от които 10 са маркирани като опасни. 5 уязвимости са причинени от проблеми с паметта, като преживявания на буфери и достъп до вече освободени области на паметта. Потенциално тези проблеми могат да доведат до изпълнение на код от злонамерени лица при отваряне на специално форматирани страници.
Източник: opennet.ru





