wydanie przeglądarki internetowej , a także Firefox 68.7 na platformę Android. Dodatkowo, przygotowano aktualizację z długoterminowym wsparciem . Wkrótce przejdzie do etapu przejdzie gałąź Firefox 76, którego wydanie planowane jest na 5 maja (projekt na cykl rozwoju 4-5 tygodniowy ).
:
- Dla Linuxa rozpoczęło się formowanie w formacie Flatpak.
- Zaktualizowano wygląd paska adresu. Po kliknięciu na pasek adresu, bez potrzeby zaczynania wpisywania, natychmiast wyświetla się rozwijana lista najczęściej używanych linków. Podpowiedź z wynikami wyszukiwania została zoptymalizowana dla lepszej pracy na małych ekranach. W obszarze rekomendacji kontekstowych wprowadzono wyświetlanie podpowiedzi dotyczących rozwiązania typowych problemów pojawiających się podczas korzystania z przeglądarki.
Zaprzestano wyświetlania protokołu https:// i subdomeny „www.” w rozwijanym bloku linków, wyświetlanym podczas wpisywania w pasku adresu (np. różniące się treścią https://opennet.ru i https://www.opennet.ru staną się nieodróżnialne). Protokół http:// jest wyświetlany w wynikach wyszukiwania bez zmian.
- Dla Linuxa zmieniono zachowanie przy kliknięciu w pasku adresu (zrobiono to jak w Windows i macOS) — pojedyncze kliknięcie zaznacza całą zawartość bez umieszczania w schowku, podwójne kliknięcie zaznacza jedno słowo, potrójne kliknięcie zaznacza całą zawartość i umieszcza w schowku.
- Zrealizowano nie ładować obrazów znajdujących się poza widocznym obszarem, dopóki użytkownik nie przewinie zawartości strony do miejsca bezpośrednio poprzedzającego obraz. Aby zarządzać opóźnionym ładowaniem obrazów, do tagu „img” dodano atrybut „«, który może przyjmować wartość „lazy”. Zakłada się, że opóźnione ładowanie pozwoli na zmniejszenie zużycia pamięci, zmniejszenie transferu danych i zwiększenie prędkości początkowego ładowania stron. Aby zarządzać opóźnionym ładowaniem, w about:config dodano parametr „dom.image-lazy-loading.enabled”.
- pełne wsparcie WebGL w środowiskach korzystających z protokołu Wayland. Dotychczas poziom wydajności WebGL w linuksowych kompilacjach Firefox pozostawiał wiele do życzenia z powodu braku wsparcia dla sprzętowego przyspieszenia, spowodowanego problemami z grafiką dla X11 i zastosowaniem różnych standardów. Przy użyciu Wayland sytuacja się zmieniła dzięki pojawieniu się nowego , który wykorzystuje mechanizm . Oprócz sprzętowego przyspieszenia WebGL, backend również wsparcie dla przyspieszenia dekodowania wideo H.264 za pomocą VA-API (Video Acceleration API) i FFmpegDataDecoder (wsparcie dla VP9 i innych formatów kodowania wideo w Firefox 76). Aby zarządzać włączeniem przyspieszenia, w about:config dostępne są opcje „widget.wayland-dmabuf-webgl.enabled” i „widget.wayland-dmabuf-vaapi.enabled”.
- Dla użytkowników z Wielkiej Brytanii włączono wyświetlanie płatnych sponsorowanych bloków na stronie startowej w sekcji treści rekomendowanej przez Pocket. Bloki są wyraźnie oznaczone jako reklama i mogą być wyłączane w ustawieniach. Wcześniej reklama tylko użytkownikom z USA.
- tryb czyszczenia starych ciasteczek i danych witryn przy odwiedzaniu witryn z kodem śledzenia, z którymi użytkownik nie interagował bezpośrednio. Tryb ma na celu walkę ze śledzeniem poprzez przekierowania.
- wdrożenie dialogów modalnych, związanych z poszczególnymi kartami i nie blokujących całego interfejsu.
- możliwość instalacji i otwierania witryn w formie aplikacji (Apps), które pozwalają na pracę z witryną jak z zwykłym programem desktopowym. Aby włączyć tę funkcję w about:config, należy dodać ustawienie „browser.ssb.enabled=true”, po czym w kontekstowym menu działań z stroną (trzy kropki w pasku adresu) pojawi się opcja „Zainstaluj stronę jako aplikację”, która umożliwia umieszczenie na pulpicie lub w menu aplikacji skrótu do odrębnego otwarcia bieżącej witryny. Rozwój rozwój koncepcji „” (SSB), zakładającej otwieranie witryny w osobnym oknie bez menu, paska adresu i innych elementów interfejsu przeglądarki. W bieżącym oknie otwierane są tylko linki do stron aktywnej witryny, a przejście do linków zewnętrznych prowadzi do utworzenia oddzielnego okna z zwykłą przeglądarką.

- wdrożenie trybu „«Aktywowanym przez nagłówek HTTP „X-Content-Type-Options”, który teraz wyłącza logikę automatycznego określania typów MIME dla dokumentów HTML, a nie tylko dla JavaScript i CSS. Tryb ten pomaga chronić przed atakami związanymi z manipulacją typami MIME. Przeglądarka domyślnie analizuje typ przetwarzanego kontentu i obsługuje go w zależności od określonego typu. Na przykład, jeśli w pliku „.jpg” zapisany jest kod HTML, to podczas otwierania plik ten zostanie przetworzony jako HTML, a nie jako obrazek. Atakujący może użyć formularza przesyłania obrazów do pliku jpg, zawierającego HTML z kodem JavaScript, po czym opublikować link do tego pliku, którego bezpośrednie otwarcie spowoduje wykonanie kodu JavaScript w kontekście witryny, na którą został przesłany (można uzyskać dostęp do cookie i innych powiązanych z witryną danych użytkownika, który otworzył link).
- Zapewnione lokalne buforowanie wszystkich zaufanych certyfikatów PKI z centrów certyfikacji znanych przez Mozilla, co pozwoliło na poprawę kompatybilności z niewłaściwie skonfigurowanymi serwerami webowymi.
- Na stronach otwartych przez HTTP bez szyfrowania zabronione jest użycie API Web Crypto.
- Dla Windows wdrożono tryb bezpośredniego kompozytowania (Direct Composition), pozwalający zwiększyć wydajność i przyspieszyć wdrożenie systemu kompozytowania , napisanego w języku Rust, który przenosi operacje renderowania zawartości strony na GPU.
- Dla macOS wprowadzono eksperymentalną możliwość korzystania z certyfikatów klienckich z wspólnego skarbca certyfikatów systemu operacyjnego (aby włączyć w about:config należy aktywować opcję security.osclientcerts.autoload). Od Firefox 72 podana możliwość była dostępna tylko dla Windows.
- Po Linuksie w wersjach dla macOS zastosowano mechanizm izolacji , mający na celu blokowanie wykorzystania luk w zabezpieczeniach w zewnętrznych bibliotekach funkcji. Obecnie izolacja włączona jest tylko dla biblioteki , odpowiedzialnej za renderowanie czcionek. RLBox wykonuje kompilację kodu C/C++ z izolowanej biblioteki do niskopoziomowego kodu pośredniego WebAssembly, który następnie jest przedstawiany jako moduł WebAssembly, a jego uprawnienia są przypisywane wyłącznie do tego modułu. Zbudowany moduł działa w osobnej przestrzeni pamięci i nie ma dostępu do pozostałej przestrzeni adresowej. W przypadku wykorzystania luki w zabezpieczeniach w bibliotece, atakujący będzie ograniczony i nie będzie mógł uzyskać dostępu do obszarów pamięci głównego procesu ani przekazać kontroli poza izolowane środowisko.
- Atrybut „type” w elemencie teraz może przyjmować tylko wartość „text/css”.
- W CSS wprowadzono funkcje , i .
- Dla właściwości CSS wprowadzono wsparcie dla wartości „all”, która wymaga obowiązkowego przerwania linii podkreślenia i przekreślenia przy styku z glyphami tekstowymi (wcześniej stosowana wartość „auto” adaptacyjnie formułowała przerwania i nie wykluczała styków, przy wartości all styki z glyphami są całkowicie zabronione).
- W JavaScript włączono wsparcie dla dla instancji klas JavaScript, które pozwalają na określenie wstępnie zdefiniowanych właściwości, inicjowanych poza konstruktorem.
class ClassWithStaticField {
static staticField = 'static field'
} - Dodano wsparcie dla klasy , oferującego metody do analizy i przetwarzania parametrów językowych, regionalnych i stylizacyjnych, a także do odczytywania i zapisywania znaczników rozszerzeń Unicode oraz zachowywania użytkowniczych ustawień lokalizacji w zserializowanym formacie;
- Implementacja właściwości Function.caller została dostosowana do najnowszej wersji draftu nowej specyfikacji ECMAScript (zamiast TypeError teraz zwracane jest null, jeśli wywołanie miało miejsce z funkcji mającej atrybut strict, async lub generator).
- W HTMLFormElement dodano metodę , która inicjuje programowe przesyłanie danych formularza w podobny sposób jak kliknięcie przycisku przesyłania danych. Funkcja ta może być stosowana przy projektowaniu własnych przycisków przesyłania formularza, dla których wywołanie form.submit() jest niewystarczające, ponieważ nie prowadzi do interaktywnej walidacji parametrów, generowania zdarzenia 'submit' i przesyłania danych przypisanych do przycisku przesyłania.
- Zdarzenie submit jest teraz realizowane przez obiekt z typem SubmitEvent, a nie Event. SubmitEvent zawiera nowe właściwości, które pozwalają określić element, którego wywołanie doprowadziło do przesłania formularza. Na przykład, SubmitEvent umożliwia korzystanie z jednego handlera, wspólnego dla różnych przycisków i linków, które prowadzą do przesłania formularza.
- Zrealizowano poprawne przekazywanie zdarzenia kliknięcia przy wywołaniu metody click() dla odłączonych elementów (niebędących częścią drzewa DOM).
- W API dodano możliwość powiązania animacji z kluczowym klatą początkowym lub końcowym, a przeglądarka sama obliczy końcowy lub początkowy stan (wystarczy wskazać tylko pierwszy lub ostatni kluczowy klat). Domyślnie włączono Animation.timeline getter, Document.timeline, DocumentTimeline, AnimationTimeline, Document.getAnimations() oraz Element.getAnimations().
- Dodano możliwość aktywacji interfejsu profilowania stron bez instalacji oddzielnego dodatku, poprzez naciśnięcie przycisku 'Włącz przycisk menu profilera' na stronie . Dodano tryb analizy wydajności tylko aktywnej zakładki.
- W konsoli webowej pojawił się tryb natychmiastowego obliczania wyrażeń, który umożliwia programistom szybsze identyfikowanie i naprawianie błędów podczas wprowadzania skomplikowanych wyrażeń dzięki wyświetlaniu wstępnego wyniku w miarę pisania.
- W do mierzenia obszarów strony (Measuring Tool) dodano możliwość zmiany rozmiaru prostokątnej ramki (wcześniej, po zwolnieniu przycisku myszy, ramkę było niemożna zmienić, a w przypadku niedokładnego wskazania trzeba było mierzyć od nowa).
- Interfejs inspekcji stron zyskał wsparcie dla wyszukiwania elementów za pomocą wyrażeń XPath, obok wcześniej dostępnego wyszukiwania za pomocą selektorów CSS.
- Dodano możliwość filtrowania wiadomości WebSocket za pomocą wyrażeń regularnych (wcześniej wspierane były tylko maski tekstowe).
- W debuggerze JavaScript dodano wsparcie dla przypinania punktów przerwania do obsługi zdarzeń WebSocket.
- Oczyszczono interfejs analizy aktywności sieciowej. Zoptymalizowano rysowanie tabel w warunkach jednoczesnej obsługi dużej liczby połączeń. Uczyniono bardziej kontrastowymi separatorów kolumn i przycisków do stosowania filtrów. W panelu blokowania zapytań sieciowych wprowadzono możliwość użycia symbolu „*” w maskach URL (umożliwia to ocenę zachowania strony w warunkach awarii ładowania zasobów).
Oprócz nowości i poprawek błędów w Firefox 75 usunięto , z których kilka oznaczono jako krytyczne, co może prowadzić do wykonania kodu przez atakującego przy otwieraniu specjalnie przygotowanych stron. W tej chwili informacje ze szczegółami o naprawionych problemach bezpieczeństwa są niedostępne, oczekuje się, że lista luk zostanie opublikowana w ciągu kilku godzin.
Źródło: opennet.ru

