Firma Google opublikowała wersję przeglądarki internetowej Chrome 126. Jednocześnie dostępna jest stabilna wersja wolnego projektu Chromium, będącego podstawą Chrome. Przeglądarka Chrome różni się od Chromium wykorzystaniem logo Google, systemem wysyłania powiadomień w przypadku awarii, modułami do odtwarzania chronionych materiałów wideo (DRM), systemem automatycznego instalowania aktualizacji, stałym włączeniem izolacji Sandbox, dostarczaniem kluczy do Google API oraz przesyłaniem parametrów RLZ przy wyszukiwaniu. Dla tych, którzy potrzebują więcej czasu na aktualizację, osobno wspierana jest gałąź Extended Stable, która jest kontynuowana przez 8 tygodni. Następne wydanie Chrome 127 zaplanowane jest na 23 lipca.
Główne zmiany w Chrome 126:
- Wbudowany podgląd PDF zintegrował możliwość ekstrakcji tekstu z dokumentu, którą można wywołać za pomocą opcji „Ekstrahuj tekst z PDF” w menu kontekstowym. Do ekstrakcji tekstu z zeskanowanych dokumentów, w których tekst jest wstawiony jako obraz, wykorzystuje się mechanizm optycznego rozpoznawania znaków (OCR) oparty na systemie uczenia maszynowego. Spodziewamy się, że nowa funkcja uprości pracę z dokumentami PDF osobom z problemami ze wzrokiem korzystającym z czytników ekranowych. W przyszłości planowane jest wdrożenie rozpoznawania tekstu na obrazach wyświetlanych na stronach oraz na zrzutach ekranu. Silnik OCR jest domyślnie włączony u 50% użytkowników, podczas gdy pozostali mogą go aktywować przez ustawienie „chrome://flags/#pdf-ocr”.

- Na stronę konfiguratora z parametrami wydajności
(„Wydajność / Oszczędność pamięci” w sekcji chrome://settings/performance) dodano możliwość dostosowania poziomu agresywności stosowania trybu oszczędzania pamięci (Memory Saver), który obniża zużycie pamięci RAM poprzez zwalnianie pamięci zajmowanej przez nieaktywne karty. Na przykład przy umiarkowanym poziomie przeglądarka załadowuje z pamięci mniej kart niż przy ustawieniu maksymalnym. Ustawienie, które domyślnie jest dostępne jedynie dla części użytkowników, można aktywować przez parametr „chrome://flags/#memory-saver-aggressiveness”.
- Dla niektórych użytkowników w przeglądarce PDF domyślnie zastosowano nową architekturę OOPIF (out-of-process iframe), w której zawartość dokumentu jest przetwarzana w oddzielnym procesie. Nowa architektura jest wolna od złożoności związanych z implementacją opartą na mechanizmie GuestView i ułatwia dodawanie nowych możliwości do przeglądarki PDF. Aby włączyć nową architekturę, można użyć ustawienia „chrome://flags/#pdf-oopif”.
- Dodano tryb reaktywnego wstępnego ładowania (Reactive prefetch), który ładuje powiązane z stroną zasoby podczas nawigacji, nie czekając na ich faktyczne żądanie, co pozwala przyspieszyć otwieranie nowych stron. Do przewidywania zasobów, które mogą być potrzebne w przyszłości, wykorzystywana jest zewnętrzna usługa Google, która zwraca listę rekomendacji po wysłaniu do niej adresów URL stron, po których odbywa się nawigacja.
- Dodano możliwość wyszukiwania w usłudze Google Lens dowolnych obrazów i tekstu widocznych na ekranie. Możliwość ta jest włączana przez menu kontekstowe, wskaźnik w pasku adresu lub menu „⋮”, po czym użytkownik może wyróżnić interesujący go obiekt na ekranie i uzyskać informacje o nim z Google Lens. Podczas wykonywania operacji na serwer Google odbywa się wysyłanie
zrzutu ekranu. Możliwość ta jest domyślnie aktywowana dla 1% użytkowników. Aby włączyć lub wyłączyć obsługę Google Lens, można użyć parametru „chrome://flags/#enable-lens-region-search-static-page.” - Podsumowano optymalizacje przyspieszające przejście testu Speedometer 3 — w ciągu dwóch lat wydajność Chrome w tym teście wzrosła o 72%. Na przykład przyspieszono działanie funkcji SpaceSplitString, używanej do analizy wyrażeń typu „class=’foo bar'”, zoptymalizowano funkcje zarządzania pamięcią, usunięto zbędne operacje przy pracy z elementami formularzy webowych oraz przyspieszono najczęściej używane działania, zoptymalizowano użycie innerHTML oraz przyspieszono renderowanie czcionek. Udało się również osiągnąć przyspieszenie dzięki optymalizacji zbieracza śmieci w silniku V8, którego efektywność wzrosła dzięki aktywacji zbierania śmieci podczas okresu bezczynności procesu renderowania, aby nie konkurować z aplikacją o zasoby CPU.

- Znacząco zwiększono efektywność pracy z ciasteczkami, co pozwoliło obniżyć opóźnienia podczas korzystania ze stron internetowych. Wcześniej przy każdym odwołaniu do ciasteczek, z procesu zajmującego się przetwarzaniem strony wysyłano synchroniczne zapytanie IPC do procesu, który zapewniał interakcję sieciową. Ponieważ w aplikacjach internetowych aktywnie wykorzystuje się wartości z ciasteczek, podobne zapytania między procesami spowalniały działanie, przy czym 87% zapytań do innego procesu było zbędnych.
Aby rozwiązać problem, zastosowano nową architekturę, w której każdy proces zawiera swoją kopię danych ciasteczek i uzyskuje do nich bezpośredni dostęp, a zmiany w ciasteczkach, które mogą wystąpić podczas pracy z tymi samymi ciasteczkami w innej karcie, są śledzone przez mechanizm wersjonowania. Sedno tego mechanizmu polega na tym, że do każdej wartości
document.cookie dołączany jest licznik z numerem wersji, który jest przechowywany w pamięci dzielonej, zwiększa się przy zmianie wartości i jest porównywany z istniejącym egzemplarzem przy odczycie.
- Dodano możliwość korzystania z API View Transitions do tworzenia przejściowych efektów animacji przejścia z jednej strony na drugą w obrębie jednej witryny (same-origin). Wcześniej API to mogło być stosowane tylko do efektów między różnymi stanami DOM na jednej stronie (na przykład płynne przejście z jednego obrazu do drugiego). Aby zastosować efekty przejścia między różnymi dokumentami, należy użyć właściwości „navigation: auto” w regule „view-transition”.
- Włączono API CloseWatcher, które pozwala śledzić w aplikacjach internetowych zapytania Close i reagować na ich przybycie (na przykład można stworzyć obsługę przycisku „wstecz” na smartfonie z systemem Android).
Zapytania Close są generowane podczas próby zamknięcia modalnych (<dialog>) i wyskakujących dialogów (popover=„”) poprzez naciśnięcie klawisza Esc, użycie przycisku „Wstecz” lub gestu ekranu na smartfonach. - W API Gamepad, które pozwala śledzić i obsługiwać zdarzenia z kontrolerów gier i gamepadów, dodano wsparcie dla mechanizmów zapewniania sprzężenia zwrotnego (trigger-rumble), na przykład wibracji.
- Do interfejsów GeolocationCoordinates i GeolocationPosition dodano metodę .toJSON() do serializacji obiektów z współrzędnymi w formacie JSON.
- W wersji dla ChromeOS dodano wsparcie dla trybu wyświetlania zakładek (właściwość CSS „display: tabbed”), umożliwiając korzystanie z zakładek w jednej aplikacji webowej, na przykład do organizacji edytowania wielu dokumentów.
- Dodano eksperymentalną możliwość (origin trial) podglądu treści pozyskiwanej z kamery lub mikrofonu.
- W API WebGPU znacznie przyspieszono kompilację shaderów. W backendzie dla graficznego API Vulkan zoptymalizowano ładowanie danych do GPU (zapewniono bezpośredni zapis do bufora GPU bez pośredniego kopiowania).
- Wprowadzono ulepszenia w narzędziach dla twórców stron internetowych. W sekcji 'Aplikacja > Pamięć' dodano możliwość inspekcji danych zapisanych za pomocą API Storage Buckets, umożliwiającego organizowanie przechowywania danych z podziałem na poszczególne segmenty, powiązane z API IndexedDB i CacheStorage. W panelu oceny wydajności dodano możliwość przenoszenia i ukrywania ścieżek, a także wykluczania informacji o wykonaniu skryptów z wykresu wydajności i włączenia trybu sztucznego spowolnienia wydajności systemu o 20 razy.

W panelu śledzenia aktywności sieciowej dodano wsparcie dla podstawiania w otrzymanym odpowiedzi pełnej linii z nagłówkiem HTTP w formacie „nazwa: wartość”. W panelu monitorowania wykorzystania pamięci dodano filtry do identyfikacji nieefektywnego zarządzania pamięcią, na przykład obecności duplikatów ciągów lub pozostawiania obiektów związanych z odłączonymi węzłami DOM.

Oprócz nowych funkcji i poprawek błędów w nowej wersji naprawiono 21 podatności. Wiele z tych zagrożeń zostało zidentyfikowanych w wyniku automatyzowanego testowania narzędziami AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer i AFL. 9 problemom przypisano wysoki poziom zagrożenia. Nie zidentyfikowano krytycznych problemów, które pozwalałyby na obejście wszystkich poziomów ochrony przeglądarki i wykonanie kodu w systemie poza środowiskiem sandbox. W ramach programu za wynagrodzenie za wykrywanie podatności w obecnej wersji firma Google wypłaciła 11 nagród na łączną kwotę ponad 168 tysięcy dolarów amerykańskich.
Za podatność CVE-2024-5839, związaną z problemem w implementacji mechanizmu przydzielania pamięci, przyznano rekordową nagrodę w wysokości 100115 dolarów. Ta podatność ma przypisany średni poziom zagrożenia, ponieważ potencjalnie może prowadzić do uszkodzenia pamięci w stercie podczas przetwarzania specjalnie przygotowanej treści HTML. Ponadto przyznano nagrody w wysokości 25000, 7000, 3000, 2000, 1000 i 500 dolarów, a także dwie nagrody w wysokości 10000 i 5000 dolarów. Wysokość 7 nagród nie została jeszcze określona.
Źródło: opennet.ru






