Pale Moon 35.0.2 вышел 6 октября 2026 года как обновление производительности, стабильности и безопасности. Разработчики отключили CSS-селектор :has() по умолчанию после повторных проблем с нагрузкой, исправили сбои и BigInt, обновили код декодера VP8 и закрыли пять CVE.

CSS :has() снова отключён по умолчанию из-за серьёзной нагрузки
Самая заметная перемена в Pale Moon 35.0.2 связана с CSS-псевдоклассом :has(). Он позволяет стилям выбирать элемент в зависимости от содержимого или вложенных элементов и считается одной из наиболее заметных современных возможностей CSS.
Поддержка :has() появилась в Pale Moon 35.0.0, выпущенном 17 сентября. Уже в версии 35.0.1 от 22 сентября разработчики исправляли крупную проблему с производительностью этой реализации. В 35.0.2 команда пошла дальше и отключила функцию по умолчанию: в release notes говорится о дополнительных серьёзных просадках производительности на сайтах.
Получилась показательная цепочка:
| Версия | Состояние CSS :has() |
| Pale Moon 35.0.0 | Реализация добавлена и включена |
| Pale Moon 35.0.1 | Исправлена крупная проблема производительности |
| Pale Moon 35.0.2 | Реализация отключена по умолчанию из-за сохраняющейся нагрузки |
Разработчики ожидают вернуть :has() после выяснения причины падения производительности. Возможность при этом остаётся в браузере: параметр layout.css.has-pseudo.enabled позволяет включить её вручную. Цена такого режима прямо обозначена в документации — более широкая совместимость сайтов сопровождается дополнительной нагрузкой на обработку страниц.
Для веб-сайтов, где CSS :has() используется как часть интерфейса, это может проявляться в отличиях оформления или поведения отдельных элементов. Сам Pale Moon описывает решение как компромисс между совместимостью и скоростью работы браузера.
Pale Moon 35.0.2 добавляет переключатель для строгой обработки HTML-форм
В ветке 35 разработчики ужесточили обработку HTML-форм, особенно форм, которые размещены в таблицах с нарушением требований стандарта. Изменение связано с безопасностью и более строгим следованием спецификации HTML.
В 35.0.2 для этого поведения появился отдельный параметр html5.forms.standards_compliant.
По умолчанию он установлен в true, то есть браузер использует строгий режим. Значение false возвращает более мягкий разбор HTML, близкий к поведению Pale Moon до версии 35; после изменения параметра требуется перезагрузка страницы.
Такой переключатель нужен прежде всего для старых сайтов и внутренних веб-систем, где HTML-разметка форм создавалась под более терпимое поведение браузеров. Для разработчиков это ещё один сигнал о том, что ошибки структуры документа способны влиять на реальное отображение и работу формы.
Пять CVE вошли в пакет исправлений безопасности
Pale Moon 35.0.2 закрывает пять проблем, которым присвоены идентификаторы CVE:
CVE-2026-100822;CVE-2026-100783;CVE-2026-100773;CVE-2026-96869;CVE-2026-100791.
Две из них — CVE-2026-100773 и CVE-2026-96869 — отмечены разработчиками Pale Moon как Defense-in-Depth, или DiD. В терминологии проекта это защитные изменения, которые сами по себе не относятся к потенциально активно эксплуатируемой уязвимости в Pale Moon, но уменьшают риск появления уязвимого сценария при будущих изменениях кода.
Среди перечисленных проблем есть уязвимости, ранее раскрытые в компонентах Mozilla. CVE-2026-100791 относится к use-after-free в DOM Core & HTML, CVE-2026-100773 — к use-after-free в IndexedDB, CVE-2026-100783 — к использованию неинициализированной памяти в аудио- и видеокомпоненте. CVE-2026-100822 описывает проблему подмены представления информации в HTTP-компоненте, а CVE-2026-96869 связана с раскрытием информации в сетевом компоненте.
При переносе исправлений в Pale Moon разработчики отдельно указывают собственную применимость этих проблем к коду браузера, поэтому статус DiD в release notes имеет значение именно для этой кодовой базы.
Потенциально эксплуатируемая утечка памяти исправлена отдельно
Помимо пяти CVE, в Pale Moon 35.0.2 устранена потенциально эксплуатируемая утечка памяти. В официальных примечаниях к выпуску она указана отдельным пунктом без дополнительного технического описания.
Обновление затрагивает и стабильность: разработчики сообщают об исправлении нескольких падений приложения. Для JavaScript устранена ошибка BigInt, из-за которой отдельные вызовы завершались сбоем или работали неправильно.
BigInt используется в JavaScript для целых чисел, выходящих за пределы безопасного диапазона обычного типа Number. Ошибка в этой части движка могла проявляться только в определённых вызовах, поэтому для большинства сайтов она оставалась незаметной, а для приложений с большими целыми значениями давала вполне конкретный функциональный сбой.
В декодер VP8 перенесено исправление из libvpx
Ещё одна техническая правка касается мультимедиа. Pale Moon 35.0.2 получил backport исправления из upstream-проекта libvpx для декодера VP8.
libvpx — библиотека для работы с видеокодеками VP8 и VP9. Pale Moon использует её внутри браузера, поэтому изменения upstream-кода могут напрямую влиять на воспроизведение видео, устойчивость декодера и безопасность обработки медиаданных.
В release notes конкретный дефект VP8 подробно не раскрывается, поэтому точный пользовательский сценарий для этого исправления разработчики не описывают.
Pale Moon 35.0.2 показывает цену ускоренной веб-совместимости
Версия 35.0.0 заметно расширила совместимость Pale Moon с современными веб-технологиями: появились :has(), adoptedStyleSheets, CSSStyleSheet.replaceSync, новые compatibility shims и другие изменения. Уже два последующих выпуска сосредоточились на последствиях этой модернизации — производительности, стабильности и корректности.
История с :has() особенно хорошо показывает сложность такого перехода. Селектор нужен современным сайтам, но текущая реализация оказалась слишком тяжёлой для включения по умолчанию. Команда сохранила код функции и одновременно вернула браузеру более предсказуемую производительность.
Pale Moon 35.0.2 в итоге выглядит как точечная корректировка ветки 35: одна новая веб-возможность временно отступила из настроек по умолчанию, HTML-формы получили дополнительный режим совместимости, а пакет безопасности закрыл пять CVE и отдельную утечку памяти. Срок возвращения :has() в стандартную конфигурацию разработчики пока не назвали.