Wydanie Chrome 74

Firma Google przedstawiła wydanie przeglądarki internetowej Chrome 74. Jednocześnie dostępne stabilne wydanie projektu open source Chromium, będącego podstawą Chrome. Przeglądarka Chrome wyróżnia się z wykorzystaniem logo Google, możliwością pobrania modułu Flash na żądanie, systemem wysyłania powiadomień w przypadku awarii, modułami do odtwarzania chronionych treści wideo, automatycznym systemem aktualizacji i odpowiedzią podczas wyszukiwania parametrów RLZ. Następna wersja Chrome 75 zaplanowana jest na 4 czerwca.

Podstawowe zmiany do Chrome 74:

  • W momencie wystąpienia zdarzenia onUnload, wywoływanego podczas zamykania strony, teraz jest zabronione wyświetlanie okienek (blokowane jest wywołanie window.open()), co pozwoli chronić użytkowników przed wymuszeniem otwierania stron reklamowych po zamknięciu wątpliwych witryn;
  • W silniku JavaScript zrealizowano pojawił się nowy tryb JIT-less (flaga „—jitless”), umożliwiająca wykonanie JavaScript bez zastosowania JIT (wykorzystywany jest tylko interpreter) i bez przydzielania pamięci wykonywalnej podczas wykonywania kodu. Wyłączenie JIT może być korzystne dla zwiększenia bezpieczeństwa podczas pracy z potencjalnie niebezpiecznymi aplikacjami webowymi, a także dla zapewnienia kompilacji na platformach, które zabraniają użycia JIT (na przykład w iOS, na niektórych Smart TV i konsolach gier). Przy wyłączeniu JIT wydajność wykonania JavaScript spada o 40% w teście Speedometer 2.0 i o 80% w teście Web Tooling Benchmark, ale przy symulacji pracy z YouTube odnotowano spadek wydajności jedynie o 6%. Zużycie pamięci zmniejsza się przy tym nieznacznie, tylko o 1.7%;
  • W V8 wprowadzono również wiele nowych optymalizacji. Na przykład, przyspieszono wykonywanie wywołań funkcji, w których liczba faktycznie przekazanych parametrów nie odpowiada podanej przy definiowaniu funkcji liczbie argumentów o 60%. Przyspieszono dostęp do właściwości DOM za pomocą funkcji get, co pozytywnie wpłynęło na wydajność frameworka Angular. Zoptymalizowano parsowanie JavaScript: optymalizacja dekodera UTF-8 pozwoliła zwiększyć wydajność parsera w trybie streaming o 8%, a eliminacja zbędnych operacji deduplikacji dała wzrost o jeszcze 10.5%;
  • Pracowano nad zmniejszeniem zużycia pamięci silnika JavaScript.
    Dodano kod do czyszczenia pamięci podręcznej bajtkodów, który zajmuje około 15% całej wielkości sterty. Do zbieracza śmieci dodano etap wymiany rzadko kompilowanych bajtkodów dla używanych funkcji lub funkcji wywoływanych tylko podczas inicjalizacji. Decyzja o czyszczeniu podejmowana jest na podstawie nowych liczników, które uwzględniają ostatni czas dostępu do bajtkodów. Wskazana zmiana pozwoliła zmniejszyć zużycie pamięci o 5–15% bez negatywnego wpływu na wydajność. Dodatkowo, w kompilatorze bajtkodów wykluczono generację wyraźnie nieużywanego kodu, na przykład, który występuje po zwrocie lub przerwie (jeśli nie ma na niego przejścia Jump);

    Wydanie Chrome 74
  • Dla WebAssembly zrealizowano wsparcie dla wątków i operacji atomowych (API WebAssembly Threads oraz WebAssembly Atomics);
  • Dla krótko dostarczonych skryptów dodano wsparcie dla nagłówka „#!”, który definiuje interpreter do uruchomienia. Na przykład, analogicznie do innych języków skryptowych, plik JavaScript może wyglądać mniej więcej tak:

    #!/usr/bin/env node
    console.log(42);

  • W CSS dodano nowe zapytanie media „prefers-reduced-motion„, które pozwala stronie internetowej określić stan ustawień w systemie operacyjnym związanych z wyłączeniem efektów animowanych. Dzięki temu zapytaniu właściciel strony może może dowiedzieć się, że użytkownik wyłączył efekty animacji i wstrzymać różne możliwości animacyjne na stronie, na przykład usunąć efekt drgania przycisków, używanych do przyciągania uwagi;
  • Oprócz możliwości określania publicznych pól w Chrome 72 wprowadzono wsparcie oznaczania pól jako prywatnych, po czym dostęp do ich wartości będzie dostępny tylko w obrębie klasy. Aby oznaczyć pole jako prywatne, należy przed nazwą pola wprowadzić znak „#”. Podobnie jak w przypadku pól publicznych, prywatne właściwości nie wymagają wyraźnego użycia konstruktora.
  • Nagłówek HTTP Feature-Policy, który pozwala zarządzać zachowaniem API i włączeniem określonych możliwości (na przykład można włączyć tryb synchroniczny dla XMLHttpRequest lub wyłączyć Geolocation API), został uzupełniony API JavaScript do kontrolowania aktywności określonych możliwości. Dla programistów zaproponowano dwie nowe metody document.featurePolicy oraz frame.featurePolicy, które oferują trzy funkcje:
    allowedFeatures() do uzyskania listy dozwolonych funkcji dla bieżącej domeny, allowsFeature() do szczegółowego sprawdzania włączenia konkretnych możliwości oraz getAllowlistForFeature() do wyświetlania listy domen, dla których na bieżącej stronie dozwolono wskazaną funkcję;
  • Dodano eksperymentalne wsparcie dla trybu ("chrome://flags#enable-text-fragment-anchor") Scroll-To-Text, pozwalającego na tworzenie linków do poszczególnych słów lub fraz bez wyraźnego wskazywania w dokumencie etykiet za pomocą tagu „a name” lub właściwości „id”. Do przesyłania linku proponowany jest specjalny parametr „#targetText=”, w którym można podać tekst do przekierowania. Dopuszcza się podanie maski, zawierającej frazy, wskazujące na początek i koniec fragmentu z użyciem przecinka jako separatora (np. „example.com#targetText=startwords, endwords”);
  • Do konstruktora AudioContext dodano opcję sampleRate, umożliwiającą ustawienie częstotliwości próbkowania dla operacji dźwiękowych za pośrednictwem Web Audio API;
  • Dodano wsparcie dla klasy Intl.Locale, dostarczającą metod do analizy i przetwarzania parametrów lokalnych języka, regionu i pisma, a także do odczytu i zapisu znaczników rozszerzeń Unicode i przechowywania użytkowników ustawień lokalnych w zserializowanym formacie;
  • Mechanizm Signed HTTP Exchanges (SXG) rozszerzono o środki dla informowania dystrybutorów treści dotyczących błędów ładowania podpisanej treści, takich jak problemy z weryfikacją certyfikatów. Obsługa błędów realizowana jest przez rozszerzenia API Network Error Logging. Przypomnijmy, że SXG przekazywanie pozwala właścicielowi jednej witryny, przy użyciu cyfrowego podpisu, autoryzować umieszczanie określonych stron na innej witrynie, po czym, w przypadku odwiedzenia tych stron na drugiej witrynie, przeglądarka wyświetli użytkownikowi URL oryginalnej witryny, mimo że strona została załadowana z innego hosta;
  • W klasie TextEncoder dodano metodę encodeInto(), pozwalającą na zapisanie zakodowanego ciągu bezpośrednio do uprzednio zarezerwowanego bufora. Metoda encodeInto() jest wysokowydajną alternatywą dla metody encode(), która wymaga przeprowadzenia operacji rezerwacji bufora przy każdym wywołaniu.
  • W Service worker zapewniona buforowanie wywołania client.postMessage() do momentu gotowości dokumentu. Wiadomości wysyłane przez client.postMessage() będą wstrzymywane do etapu generowania zdarzenia DOMContentLoaded, ustawienia onmessage lub wywołania startMessages();
  • Zgodnie z wymaganiami specyfikacji CSS Transitions dodano wydarzenia transitionrun, transitioncancel, transitionstart i transitionend, generowane, gdy CSS-transition jest w kolejce, jest odrzucane, rozpoczyna się lub kończy.
  • Przy ustawieniu przez overrideMimeType() lub nieprawidłowym typie MIME dla żądania XMLHttpRequest, obecnie następuje powrót do UTF-8 zamiast Latin-1;
  • Właściwość „allow-downloads-without-user-activation” została uznana za przestarzałą i zostanie usunięta w jednej z kolejnych wersji, umożliwiającą automatyczne pobieranie plików podczas przetwarzania iframe. W przyszłości inicjowanie pobierania plików bez wyraźnej akcji użytkownika będzie zabronione, ponieważ było to wykorzystywane do działań nadużywających, wymuszania pobrań i wprowadzania złośliwego oprogramowania na komputer użytkownika. Aby rozpocząć pobieranie, będzie konieczny klik użytkownika na tej samej stronie. Początkowo planowano usunięcie tego elementu w Chrome 74, ale usunięcie miało miejsce odroczone przeniesione do Chrome 76.
  • Dla platformy Windows wprowadzono opcjonalny ciemny motyw interfejsu (w poprzedniej wersji ciemny motyw był przygotowany dla macOS). Ponieważ ciemny motyw jest prawie identyczny z wyglądem w trybie incognito, dodano specjalny wskaźnik, aby wyróżnić tryb prywatnej pracy zamiast ikony profilu użytkownika;
  • Dla użytkowników korporacyjnych dodano możliwość Zarządzania przeglądarką Chrome Cloud Management w celu zarządzania ustawieniami przeglądarek użytkowników za pośrednictwem konsoli Google Admin;

    Wydanie Chrome 74

Oprócz wprowadzenia nowości i poprawy błędów w nowej wersji usunięto 39 podatności. Wiele luk zostało wykrytych w wyniku automatycznego testowania narzędziami AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer i AFL. Nie zidentyfikowano krytycznych problemów, które pozwalają na obejście wszystkich poziomów zabezpieczeń przeglądarki i wykonanie kodu w systemie poza środowiskiem sandbox. W ramach programu nagród za wykrywanie podatności w obecnej wersji firma Google przyznała 19 nagród na łączną kwotę 26837 dolarów amerykańskich (cztery nagrody po 3000 dolarów, cztery nagrody po 2000 dolarów, jedna nagroda 1337 dolarów, cztery nagrody po 1000 dolarów, trzy nagrody po 500 dolarów). Wartość 4 nagród nie została jeszcze ustalona.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster