Blog Zenika

#CodeTheWorld

Web

La petite chronique du web #2

Le web a toujours été un média en constante évolution. Avec des navigateurs qui se mettent à jour toutes les six semaines et des standards qui évoluent en permanence, il faut rester à l’affût pour savoir quelles sont les nouveautés qui arrivent. Tous les trimestres, on se fait un petit tour d’horizon pour rester à jour. Alors, que s’est-il passé au deuxième trimestre 2019 ?

Edge

On attend toujours Edge 19 qui sera sur une base Chromium, mais si vous êtes curieux vous pouvez vous tenir au courant via le site Microsoft Edge Insider et commencer à tester les versions de développement pour Windows 10.

Chrome

De son côté Chrome a sorti deux versions : Chrome 74, le 23 avril et Chrome 75, le 4 juin. Assez légères, elles se focalisent sur l’implémentation test de futurs standards. Les points clés de ces mises à jour sont les suivants :

Au-delà de ça, le mois de mai c’est aussi le mois de Google I/O et si, cette année, le gros des annonces s’est fait autour d’Android Q et du Machine Learning, quelques informations ont été données à propos du futur de Chrome. Le cœur du sujet, comme toujours, c’est la question des performances et deux technologies ont été mises en avant :
Les Portals, sorte d’iframes sous stéroïdes qui permettent de passer de manière douce entre deux contenus différents. Au niveau spécification, c’est loin d’être fini, mais c’est le bon moment pour aller discuter cas d’usage et besoins au sein du Web Incubator Community Group (WICG).
Les Web Packages (dont fait partie le Signed HTTP Exchange dont on parlait déjà dans la dernière chronique) qui est un sujet assez controversé, mais très intéressant. L’idée étant de pouvoir détacher les sources d’un site/application web du domaine qui lui est associé pour pouvoir le distribuer depuis plusieurs endroits différents (on sent bien la stratégie qui vise à pouvoir distribuer des SPA depuis le Play Store).

Firefox

Firefox n’a sorti qu’une seule version au deuxième trimestre : Firefox 67, le 21 mai (Firefox 68 est prévu pour le 1er juillet donc on en parlera au prochain trimestre, mais il est déjà bon de noter qu’il s’agit de la nouvelle ESR pour les entreprises). On en retiendra les points suivants :

  • Ajout du support de la Media Query prefers-color-scheme (Safari également, voir ci-après)
  • Firefox 67 signe le début de l’activation du moteur de rendu WebRender écrit en Rust. Pour l’instant, il ne sera activé que pour les utilisateurs de Windows 10 disposant de certains types de matériel (en gros, les cartes Nvidia modernes), mais les performances de Firefox vont encore s’améliorer. Notez que si vous voulez expérimenter WebRender sur votre machine même si elle n’est pas encore officiellement supportée, vous pouvez activer les préférences gfx.webrender.enabled et gfx.webrender.all sur la page about:config (attention ça accentue sensiblement la capacité de Firefox à planter si votre matériel n’est pas adapté).
  • Si vous n’avez pas encore jeté un coup d’œil aux outils de développement de Firefox, c’est le moment ou jamais ! Un tout nouveau debugger JavaScript débarque et il est exceptionnel. Si je devais choisir une fonctionnalité qui m’a bien tapé dans l’œil, je dirais : les inline breakpoints (la capacité de poser plusieurs breakpoints à l’intérieur d’une même ligne). Ça aurait pu être une killer feature, mais Chrome 75 (à peine trois semaines après !) vient également de les mettre en place.
  • Enfin on notera que le codec AV1 (qui avait été activé avec Firefox 65 pour Windows) est désormais disponible sur toutes les plateformes.

Safari

Safari étant mis à jour avec macOS et iOS, pas de nouvelle version majeure de Safari à commenter. Cependant, la version mineure 12.1 est sortie, et pour les testeurs nous avons eu droit à un train de Safari Technology Preview : 79 le 3 avril, 80 le 17 avril, 81 le 1er mai, 82 le 15 mai, 83 le 29 mai, 84 le 5 juin, 85 le 12 juin. Quelques points d’attention sont à noter :

On y reviendra lors de la prochaine sortie majeure de Safari, vraisemblablement au mois de septembre prochain. À noter que la Safari Technology Preview 84 est une beta formelle du futur Safari 13.

Standards et spécifications

Au-delà des implémentations spécifiques, des avancées plus globales sont faites sur le front des standards eux-mêmes.
Le W3C a officiellement délégué le développement de HTML au WHATWG, cette décision formalise un état de fait qui avait cours depuis environ cinq ans, mais maintenant, c’est clairement encadré. C’est bon à savoir, mais ça ne devrait rien changer de fondamental.
Quelques autres news à noter côté W3C :

Si comme moi vous êtes des fans de SVG (ou pas), sachez que le SVG Community Group (SVGCG) vient de voir le jour pour discuter des évolutions du langage vectoriel du web. Si vous aussi vous trouvez que SVG « c’est tout naze » (ou pas), ce Community Group est le lieu idéal pour venir discuter de ce que vous attendez d’un langage vectoriel pour le web. Petit aparté qui n’a rien à voir, mais si vous êtes de gros énervés de C++ ou Rust et que les maths matricielles ne vous font pas peur, les projets open source Chromium, Firefox et Servo cherchent des contributeurs pour tout ce qui touche à SVG qui est actuellement en manque significatif d’amour coté implémentation.
Comme tous les ans maintenant, la nouvelle version de ECMAScript est publiée au mois de juin. Rien de fou-fou dans ECMAScript 2019, mais on y trouve quand même les nouvelles capacités suivantes :

  • Object.fromEntries
    Cette méthode permet de transformer automatiquement une liste de clés/valeurs en un objet (l’inverse de ce que fait Object.entries).
    Support: Babel 7, Firefox 65, Chrome 73, Safari 12.1

    const obj = Object.fromEntries([['a', 0], ['b', 1]]); // { a: 0, b: 1 }
  • String.prototype.{trimStart, trimEnd, trimLeft, trimRight}
    Ces méthodes permettent de choisir de quel coté d’une chaîne on souhaite retirer les caractères invisibles.
    Support: Babel 6, Firefox 65, Chrome 66, Safari 12, Node 10

  • Array.prototype.{flat, flatMap}
    Quelques utilitaires bien pratiques pour manipuler des tableaux de tableaux.
    Support: Babel 7, Firefox 62, Chrome 69, Safari 12, Node 11

  • Symbol.prototype.description
    Permet d’accéder à la description définie lors de la création d’un Symbol (attention, c’est de la lecture seule, on ne peut pas modifier la description d’un Symbol).
    Support: Babel 7, Firefox 63, Chrome 70, Node 11

  • La clause catch peut être utilisée sans déclarer de contexte pour récupérer l’erreur.
    Support: Babel 7, Firefox 59, Chrome 66, Safari 11.1, Node 10

    try {
      throw new Error(‘foo’)
      console.log(‘bar’)
    } catch { // Désormais, cette syntaxe sans parenthèses est valide
      console.log(‘baz’)
    }
  • Mise à jour de Function.prototype.toString pour rendre son retour plus normalisé.
  • Amélioration du support JSON pour régler quelques problèmes de compatibilité marginaux avec la spécification. En pratique ça veut dire que JSON.parse accepte désormais les caractères non échappés U+2028 LINE SEPARATOR et U+2029 PARAGRAPH SEPARATOR et JSON.stringify produira toujours une chaîne bien formée, y compris pour les caractères unicodes qui ne peuvent être représentés que via UTF-16 (ces caractères seront échappés pour produire de l’UTF-8 valide)
  • Array.prototype.sort() est désormais garantie stable (si deux éléments sont comparés de manière à être équivalents, leur ordre dans le tableau ne changera pas).

C’est tout pour ce trimestre, on se retrouve dans 3 mois pour la suite des aventures avec sans doute pas mal de trucs à dire sur Safari si tout se passe comme prévu.
En attendant, vous pouvez aussi (re)lire la petite chronique du web du premier trimestre 🙂

Auteur/Autrice

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.