Das Unternehmen Google Release des Web-Browsers . Gleichzeitig stabile Ausgabe des Open-Source-Projekts , das die Grundlage von Chrome bildet. Der Browser Chrome der Verwendung von Google-Logos, der Möglichkeit, das Flash-Modul auf Anfrage hochzuladen, der Verfügbarkeit eines Benachrichtigungssystems im Falle eines Absturzes, Modulen zur Wiedergabe von geschützten Video-Inhalten, einem System zur automatischen Installation von Updates und der Übertragung bei der Suche . Die nächste Version von Chrome 75 ist für den 4. Juni geplant.
:
- Bei Eintritt des onUnload-Ereignisses, das beim Schließen der Seite ausgelöst wird, werden Pop-ups angezeigt (der Aufruf von window.open() wird blockiert), was den Benutzern helfen wird, sich vor dem erzwungenen Öffnen von Werbeseiten nach dem Schließen verdächtiger Websites zu schützen;
- Im JavaScript-Engine gibt es jetzt einen neuen Modus (Flagge „—jitless“), der es ermöglicht, JavaScript ohne Verwendung von JIT (nur Interpreter wird verwendet) und ohne Zuweisung von ausführbarem Speicher während der Ausführung des Codes auszuführen. Das Deaktivieren von JIT kann für eine erhöhte Sicherheit bei der Arbeit mit potenziell gefährlichen Webanwendungen nützlich sein sowie für die Bereitstellung auf Plattformen, die die Verwendung von JIT verbieten (zum Beispiel in iOS, auf einigen Smart TVs und Spielkonsolen). Bei der Deaktivierung von JIT sinkt die Leistung der Ausführung von JavaScript um 40 % im Speedometer 2.0-Test und um 80 % im Web Tooling Benchmark-Test, aber bei der Simulation der Arbeit mit YouTube wurde ein Rückgang der Leistung von nur 6 % festgestellt. Der Speicherverbrauch wird dabei nur geringfügig um 1.7 % reduziert;
- In V8 wurden auch viele neue Optimierungen vorgeschlagen. Zum Beispiel wurde die Ausführung von Funktionsaufrufen, bei denen die Anzahl der tatsächlich übergebenen Parameter von der beim Definieren der Funktion angegebenen Anzahl der Argumente abweicht, um 60 % beschleunigt. Der Zugriff auf DOM-Eigenschaften wurde durch die Funktion get beschleunigt, was sich positiv auf die Leistung des Angular-Frameworks ausgewirkt hat. Die Verarbeitung von JavaScript-Parsing wurde beschleunigt: Die Optimierung des UTF-8-Decoders hat die Leistung des Parsers im Streaming-Modus (Parsing während des Ladens) um 8 % gesteigert, während die Beseitigung überflüssiger Deduplication-Operationen einen weiteren Zuwachs von 10.5 % gebracht hat;
- Es wurden Maßnahmen zur Senkung des Speicherverbrauchs der JavaScript-Engine ergriffen.
Es wurde ein Code zur Bereinigung des Bytecode-Cache hinzugefügt, der ungefähr 15 % der gesamten Heap-Größe ausmacht. Dem Garbage Collector wurde eine Phase hinzugefügt, um selten kompilierte Bytecodes aus dem Cache für verwendete Funktionen oder Funktionen, die nur bei der Initialisierung aufgerufen werden, auszudrängen. Die Entscheidung zur Bereinigung erfolgt basierend auf neuen Zählern, die die letzte Zugriffszeit auf den Bytecode berücksichtigen. Diese Änderung hat es ermöglicht, den Speicherverbrauch um 5–15 % zu reduzieren, ohne die Leistung negativ zu beeinflussen. Darüber hinaus wurde im Bytecode-Compiler die Generierung von absichtlich ungenutztem Code ausgeschlossen, z. B. Code, der nach return oder break folgt (wenn es keinen Jump-Übergang gibt).
- Für WebAssembly Unterstützung für Threads und atomare Operationen (API WebAssembly Threads und WebAssembly Atomics);
- Für die isolierte Bereitstellung von Skripten wurde die Unterstützung für den Header „#!“ hinzugefügt, der den Interpreter für die Ausführung bestimmt. Zum Beispiel könnte eine JavaScript-Datei ähnlich wie folgt aussehen:
#!/usr/bin/env node
console.log(42); - In CSS wurde eine neue Media-Abfrage „„ hinzugefügt, die es der Website ermöglicht, den Zustand der Einstellungen im Betriebssystem im Hinblick auf die Deaktivierung von Animationseffekten zu bestimmen. Mit dieser Abfrage kann der Website-Besitzer erfahren, dass der Benutzer Animationseffekte deaktiviert hat und auch verschiedene Animationsmöglichkeiten auf der Website deaktivieren, z. B. die Wackel-Animation von Schaltflächen, die zur Aufmerksamkeitserregung verwendet werden;
- Zusätzlich zur in Chrome 72 erschienenen Möglichkeit zur Definition von öffentlichen Feldern die Kennzeichnung von Feldern als privat implementiert, wodurch der Zugriff auf ihre Werte nur innerhalb der Klasse möglich ist. Um ein Feld als privat zu kennzeichnen, sollte vor dem Feldnamen das Zeichen „#“ angegeben werden. Wie bei öffentlichen Feldern erfordern private Eigenschaften keine explizite Verwendung des Konstruktors.
- Der HTTP-Header Feature-Policy, der das Verhalten von APIs und die Aktivierung bestimmter Funktionen steuert (z. B. kann der synchroner Modus von XMLHttpRequest aktiviert oder das Geolocation-API deaktiviert werden), wurde um zur Kontrolle der Aktivität einzelner Funktionen erweitert. Für Entwickler wurden zwei neue Methoden document.featurePolicy und frame.featurePolicy vorgeschlagen, die drei Funktionen bieten:
allowedFeatures() zur Abfrage der für die aktuelle Domain zulässigen Funktionen, allowsFeature() zur selektiven Überprüfung der Aktivierung bestimmter Funktionen und getAllowlistForFeature() zur Anzeige einer Liste von Domains, für die die angegebene Funktion auf der aktuellen Seite aktiviert ist; - Experimentelle Unterstützung für den „chrome://flags#enable-text-fragment-anchor“-Modus hinzugefügt, , das es ermöglicht, Links zu einzelnen Wörtern oder Phrasen zu erstellen, ohne explizit im Dokument Tags mit dem Tag „a name“ oder der Eigenschaft „id“ anzugeben. Zum Übertragen des Links wird ein spezieller Parameter „#targetText=“ vorgeschlagen, in dem der Text für die Weiterleitung angegeben werden kann. Es ist zulässig, eine Maske anzugeben, die Phrasen enthält, die den Beginn und das Ende des Fragmentes unter Verwendung von Kommas als Trennzeichen angibt (z. B. „example.com#targetText=startwords, endwords“);
- Eine Option wurde zum AudioContext-Konstruktor hinzugefügt, , die es ermöglicht, die verwendete Abtastrate für Audiooperationen über die Web Audio API festzulegen;
- Unterstützung der Klasse hinzugefügt , das Methoden zur Analyse und Verarbeitung von lokalisierten Spracheinstellungen, Regionen und Schriftarten bereitstellt, sowie zum Lesen und Schreiben von Unicode-Erweiterungstags und zum Speichern benutzerdefinierter Lokalisierungseinstellungen im serialisierten Format;
- Mechanismus (SXG) wurde um Funktionen zur Fehlerbehandlung von Inhaltsanbietern beim Laden von signierten Inhalten, wie z.B. Probleme mit der Zertifikatsverifikation, erweitert. Die Fehlerbehandlung erfolgt über die API-Erweiterungen . Erinnern wir uns daran, dass SXG es dem Inhaber einer Webseite ermöglicht, durch digitale Signaturen die Veröffentlichung bestimmter Seiten auf einer anderen Webseite zu autorisieren, sodass beim Zugriff auf diese Seiten auf der zweiten Webseite der Browser dem Benutzer die URL der ursprünglichen Webseite anzeigt, obwohl die Seite von einem anderen Host geladen wurde;
- In die Klasse TextEncoder wurde die Methode , die es ermöglicht, einen kodierten String direkt in einen zuvor reservierten Buffer zu schreiben, eingefügt. Die Methode encodeInto() ist eine leistungsstarke Alternative zu der Methode encode(), die bei jedem Zugriff eine Buffer-Zuweisung erfordert.
- Im Service Worker wird der Aufruf von client.postMessage() bis zur Bereitschaft des Dokuments gepuffert. Nachrichten, die über client.postMessage() gesendet werden, werden bis zur Phase der Ereignisgenerierung DOMContentLoaded, der Festlegung von onmessage oder dem Aufruf von startMessages(); zurückgehalten.
- Gemäß den Anforderungen der CSS-Transitions-Spezifikation werden die Ereignisse transitionrun, transitioncancel, transitionstart und transitionend generiert, wenn die CSS-Transition in die Warteschlange gestellt, abgebrochen, gestartet oder beendet wird.
- Beim Angeben eines falschen MIME-Typs oder einer falschen Zeichencodierung für die XMLHttpRequest mit overrideMimeType() wird jetzt auf UTF-8 anstelle von Latin-1 zurückgegriffen;
- Die Eigenschaft „allow-downloads-without-user-activation“ wurde für veraltet erklärt und wird in einer der nächsten Versionen entfernt. Damit war es möglich, Dateien automatisch herunterzuladen, während ein iframe verarbeitet wird. In Zukunft wird es erforderlich sein, dass ein Benutzer auf derselben Seite klickt, um den Download zu starten, da dies häufig für Missbrauch, erzwungene Downloads und die Einfügung schadhafter Software auf dem Computer des Benutzers verwendet wurde. Ursprünglich war geplant, diese Eigenschaft in Chrome 74 zu entfernen, aber die Entfernung wurde bis Chrome 76 verschoben.
- Für die Windows-Plattform wurde ein optionales dunkles Design des Benutzerinterfaces angeboten (im letzten Release wurde ein dunkles Design für macOS vorbereitet). Da das dunkle Design fast identisch mit dem Aussehen im Inkognito-Modus ist, wurde zur Hervorhebung des privaten Arbeitsmodus ein spezieller Indikator anstelle des Profilbilds hinzugefügt;
- Für Unternehmensbenutzer wurde die Möglichkeit hinzugefügt, um die Browsereinstellungen der Benutzer über die Google Admin-Konsole zu verwalten;
Neben Neuerungen und Fehlerbehebungen wurden in der neuen Version . Viele dieser Schwachstellen wurden durch automatisiertes Testen mit Werkzeugen festgestellt, , , , und . Kritische Probleme, die es ermöglichen, alle Sicherheitsebenen des Browsers zu umgehen und Code außerhalb der Sandboxing-Umgebung im System auszuführen, wurden nicht entdeckt. Im Rahmen des Programms zur Auszahlung von Prämien für die Entdeckung von Sicherheitsanfälligkeiten hat Google für die aktuelle Version insgesamt 19 Prämien in Höhe von 26.837 US-Dollar ausgeschüttet (vier Prämien in Höhe von 3.000 Dollar, vier Prämien in Höhe von 2.000 Dollar, eine Prämie in Höhe von 1.337 Dollar, vier Prämien in Höhe von 1.000 Dollar, drei Prämien in Höhe von 500 Dollar). Die Höhe von 4 Prämien ist noch nicht festgelegt.
Quelle: opennet.ru

