La société Google a présenté la version 95 de son navigateur web Chrome. En même temps, une version stable du projet libre Chromium, qui sert de base à Chrome, est également disponible. Le navigateur Chrome se distingue par l'utilisation des logos de Google, par la présence d'un système de notification en cas de plantage, de modules pour la lecture de contenu vidéo protégé (DRM), d'un système de mise à jour automatique et de la transmission de paramètres RLZ lors des recherches. Conformément au nouveau cycle de développement de 4 semaines, la prochaine version, Chrome 96, est prévue pour le 16 novembre. Pour ceux qui ont besoin de plus de temps pour les mises à jour, une branche Extended Stable est également maintenue, avec un accompagnement de 8 semaines, dans laquelle une mise à jour pour la version précédente, Chrome 94, est fournie.
Les principales modifications dans Chrome 95 :
- Pour les utilisateurs de Linux, Windows, macOS et ChromeOS, une nouvelle barre latérale a été proposée, affichée à droite du contenu et activée par un clic sur une icône spéciale dans la barre d'adresse. La barre affiche un aperçu des favoris et une liste de lecture. Ce changement n'est pas activé pour tous les utilisateurs, pour l'activer, vous pouvez utiliser le paramètre « chrome://flags/#side-panel ».

- Une demande explicite d'autorisation a été mise en place pour sauvegarder les adresses saisies dans les formulaires web, pour une utilisation ultérieure dans le système de saisie automatique des formulaires. Lorsque des adresses sont détectées dans les formulaires, un dialogue s'affiche maintenant, permettant à l'utilisateur de sauvegarder l'adresse, de l'éditer, de mettre à jour une adresse précédemment sauvegardée ou de refuser la sauvegarde.
- Le code pour le support du protocole FTP a été supprimé. Dans Chrome 88, le support FTP a été désactivé par défaut, mais un drapeau a été laissé pour le rétablir.
- Le support des URL avec des noms d'hôtes se terminant par un chiffre, mais ne correspondant pas aux adresses IPv4, a été arrêté. Par exemple, les URL « http://127.1/ », « http://foo.127.1/ » et « http://127.0.0.0.1 » sont désormais considérées comme incorrectes.
- Pour WebAssembly, il est désormais possible de créer des gestionnaires d'exceptions qui peuvent intercepter l'exécution en cas d'exception lors de l'exécution d'un certain code. Cela inclut l'interception d'exceptions connues au sein du module WebAssembly ainsi que d'exceptions lors de l'appel de fonctions importées. Pour intercepter les exceptions, le module WebAssembly doit être compilé par un compilateur prenant en charge les exceptions, tel qu'Emscripten.
Il est noté que le traitement des exceptions au niveau de WebAssembly permet de réduire considérablement la taille du code généré, par rapport au traitement des exceptions avec JavaScript. Par exemple, la compilation de l'optimiseur Binaryen avec le traitement des exceptions via JavaScript entraîne une augmentation du code de 43 %, tandis qu'avec WebAssembly, cela n'atteint que 9 %. De plus, en utilisant le mode d'optimisation « -O3 », le code avec le traitement des exceptions via WebAssembly présente des performances quasiment identiques à celles du code sans gestionnaires d'exceptions, tandis que le traitement des exceptions par JavaScript entraîne un ralentissement de 30 % de l'exécution.
- Le partage de modules WebAssembly entre différents domaines (cross-origin) est interdit lors du traitement d'un même site.
- En mode Origin Trials (fonctionnalités expérimentales nécessitant une activation distincte), plusieurs nouvelles API ont été ajoutées. L'Origin Trial permet aux applications chargées depuis localhost ou 127.0.0.1 d'accéder à l'API spécifiée, ou d'accéder à l'API après enregistrement et obtention d'un jeton spécial, valable pour une durée limitée pour un site spécifique.
- La réduction des informations dans l'en-tête HTTP User-Agent et les paramètres JavaScript navigator.userAgent, navigator.appVersion et navigator.platform est activée. L'en-tête ne contient que des informations sur le nom du navigateur, la version majeure, la plateforme et le type d'appareil (smartphone, PC, tablette). Pour obtenir des données supplémentaires, telles que la version exacte et des données avancées sur la plateforme, il est nécessaire d'utiliser l'API User Agent Client Hints. La réduction du User-Agent sur les systèmes des utilisateurs ordinaires est prévue pour la sortie de Chrome 102, qui sera publiée dans six mois.
- La possibilité de créer des descripteurs d'accès (Access Handles) pour l'API File System Access est proposée, permettant aux applications web de lire et d'écrire des données directement dans des fichiers et des répertoires sur l'appareil de l'utilisateur. Pour réduire les méthodes d'accès des applications web au système de fichiers, Google prévoit de fusionner l'API File System Access et la Storage Foundation. Comme étape préparatoire à cette fusion, le support des descripteurs d'accès a été suggéré, complétant les méthodes basées sur les descripteurs de fichiers avec des fonctionnalités avancées, telles que la gestion de blocages d'écriture par d'autres processus et la création de flux distincts pour l'écriture et la lecture, y compris le support de la lecture et de l'écriture à partir des worker dans un mode synchrone.
- L'API de Confirmation de Paiement Sécurisé a été stabilisé et proposé par défaut, avec la mise en œuvre d'une nouvelle extension 'payment', offrant une confirmation supplémentaire de la transaction de paiement effectuée. L'entité vérificatrice, comme une banque, a la possibilité de générer une clé publique PublicKeyCredential, qui peut être demandée par le vendeur pour une confirmation de paiement sécurisée supplémentaire via l'API Payment Request, en utilisant la méthode de paiement 'secure-payment-confirmation'.
- Les callbacks établis via le constructeur PerformanceObserver ont été enrichis d'une propriété droppedEntriesCount, permettant de comprendre combien de métriques de performance du site ont été rejetées en raison de leur incapacité à tenir dans le tampon fourni.
- L'API EyeDropper a été ajoutée, permettant d'invoquer l'interface fournie par le navigateur pour déterminer la couleur de pixels arbitraires sur l'écran, ce qui peut être utilisé, par exemple, dans des éditeurs graphiques sous forme d'applications web. const eyeDropper = new EyeDropper(); const result = await eyeDropper.open(); // result = {sRGBHex: '#160731'}
- La fonction self.reportError() a été ajoutée, permettant aux scripts d'afficher des erreurs dans la console, en émules une exception non interceptée.
- L'API URLPattern a été ajoutée pour vérifier la correspondance d'une URL avec un modèle prédéfini, ce qui peut être appliqué, par exemple, à l'analyse de liens et au redirectionnement de demandes vers des gestionnaires dans un service worker. const p = new URLPattern({ protocol: 'https', hostname: 'example.com', pathname: '/:folder/*/:fileName.jpg', });
- L'API Intl.DisplayNames a été élargie, permettant d'obtenir des noms localisés pour les langues, les pays, les devises, les éléments de date, etc. Dans cette nouvelle version, de nouveaux types de noms 'calendar' et 'dateTimeField' ont été ajoutés, permettant d'obtenir les noms localisés pour les calendriers et les champs de date et d'heure (par exemple, le nom des mois). Pour le type 'language', la prise en charge des dialectes de langues a été ajoutée.
- L'API Intl.DateTimeFormat a ajouté le support de nouvelles valeurs pour le paramètre timeZoneName : 'shortGeneric' pour l'affichage d'un identifiant court de fuseau horaire (par exemple, 'PT', 'ET'), 'longGeneric' pour un identifiant long ('Pacific Time', 'Mountain Time'), 'shortOffset' pour un décalage court par rapport à GMT ('GMT+5') et 'longOffset' pour un décalage long par rapport à GMT ('GMT+0500').
- L'API U2F (Cryptotoken) a été déclaré obsolète, et il est recommandé d'utiliser l'API Web Authentication à la place. L'API U2F sera désactivée par défaut dans la version 98 de Chrome et complètement supprimée dans Chrome 104.
- Des améliorations ont été apportées aux outils pour les développeurs web. Le panneau Styles facilite l'ajustement des propriétés CSS liées à la taille (hauteur, padding, etc.). L'onglet Issues permet de masquer certains problèmes. La console web et les panneaux Sources et Properties affichent mieux les propriétés (les propriétés propres sont désormais mises en gras et affichées en haut de la liste).

Outre les nouvelles fonctionnalités et les corrections de bogues, la nouvelle version corrige 19 vulnérabilités. Beaucoup de ces vulnérabilités ont été identifiées grâce à des tests automatisés utilisant des outils tels qu'AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer et AFL. Aucune problématique critique permettant de contourner tous les niveaux de sécurité du navigateur pour exécuter du code sur le système en dehors de l'environnement sandbox n'a été détectée. Dans le cadre du programme de récompense pour la découverte de vulnérabilités, Google a versé 16 primes pour cette version, totalisant 74 000 dollars (une prime de 20 000 $, deux primes de 10 000 $, une prime de 7 500 $, une prime de 6 000 $, trois primes de 5 000 $ et une prime de 3 000 $, 2 000 $ et 1 000 $). Le montant de 5 primes n'est pas encore déterminé.
Source : opennet.ru


