# Le react.dev nouveau est arrivé !

par Mathieu Petit

Le site officiel de React fait peau neuve avec une nouvelle adresse https://react.dev au lieu de reactjs.org. Mais ce n’est clairement pas le plus important : le plus important c’est une toute nouvelle documentation pour React avec des jolis schémas, un tutoriel Tic-Tac-Toe mis à jour avec les hooks et le meilleur pour la fin : un thème sombre.

En bref, c’est de toute beauté.

# Java 20, le non-événement 

par Thomas Broyer

J’ai pris pour habitude de commenter chaque nouvelle version de Java, celle-ci ne fera donc pas exception. Pour autant, on pourrait presque qualifier cette version 20 de non-événement tant elle apporte peu de changements par rapport à la précédente (ce qui peut être vu comme une bonne chose : stabilisation en vue de la version 21 de septembre qui sera une LTS pour beaucoup de vendors dont Oracle). Attention, ne me faîtes pas dire ce que je n’ai pas dit : elle n’est pas vide de substance pour autant !

Au menu donc, pour les choses les plus remarquables :

  • toutes les anciennes previews et incubations sont reparties pour un tour ; la plus attendue (par moi en tous cas) est probablement la paire sur le pattern matching, qui progresse avec notamment de l’inférence de types.
  • des méthodes de la classe Thread qui avaient été préalablement dépréciées se retrouvent supprimées (les méthodes existent toujours, mais lèvent désormais une exception)
  • il n’est plus possible de cross-compiler vers Java 7 (les arguments -source, -target et –release n’acceptent plus la valeur 7)
  • on note plusieurs améliorations concernant la sécurité : améliorations de performance, et désactivations de protocole (DTLS 1.0) et cipher suites (ECDH) par défaut.
  • les données Unicode, CLDR et timezones ont été mises à jour (avec quelques changements de comportements concernant les clusters de graphèmes Unicode)

# Comment Discord stocke des billions de messages

par Alexandre Gille 

Les ingénieurs de Discord ont publié un nouveau blogpost sur leurs pérégrinations entre MongoDB, Cassandra et ScyllaDB pour stocker plusieurs billions (trillions en = billions fr, 10¹²) de messages.

Ils nous en apprennent un peu plus sur l’architecture mise en place, certaines techniques utilisées pour mitiger l’impact de milliers d’utilisateurs concurrents sur les mêmes requêtes, et la transition entre les différents clusters.

L’article vaut le coup d’œil, même si on est peu nombreux à avoir à mettre en place un service gérant 600 To de données avec plusieurs millions d’utilisateurs concurrents 😉

# Rust – Vous connaissez ? Vous voulez l’essayer ? 

par Xavier Calland

Depuis quelque temps, Rust est un langage qui gagne en popularité notamment à travers la réécriture d’un certain nombre d’outils de l’écosystème de développement web en Rust, de quoi aiguiser la curiosité de beaucoup de développeurs.

Cependant il faut reconnaître que les premiers pas avec Rust ne sont pas aisés et certains concepts ne sont pas évidents à assimiler.

Pour vous mettre le pied à l’étrier, le Developers Group Dijon vous propose deux supports didactiques pour créer vos premier projet en Rust.

Au programme :

# Safari 16.4 : la plus importante release depuis 2008 ? 

par Thomas Broyer 

Ce lundi 27 mars est à marquer d’une pierre blanche : Safari 16.4 est arrivé et est considéré comme peut-être la plus importante release depuis 2008 et la sortie de l’iPhone.

La liste des nouveautés est longue, avec des fonctionnalités qui remettent Safari au premier plan après quelques années à être considéré comme le nouvel IE :

  • Web Push est enfin possible sur iOS et iPadOS ; limité cependant aux sites ajoutés à l’écran d’accueil, c’est tout de même un premier pas. Bien entendu, Web Push est accompagné de la Notifications API (totalement intégré à l’OS et au centre de notifications) et la Badging API pour ajouter un badge à l’icône de l’application sur l’écran d’accueil.
  • Pour les PWAs, les navigateurs tiers (toujours restreints à WebKit) peuvent désormais ajouter des sites à l’écran d’accueil, et Safari supporte également les Offscreen Canvas, la Screen Wake Lock API, la Screen Orientation API, la User Activation API, la Compression Streams API, et la Web Codecs API pour les vidéos (pas pour l’audio ni les images)
  • Du côté des web components, Safari intègre le support du Declarative Shadow DOM, de l’Imperative Slot API, des Constructible StyleSheets, et de l’API ElementInternals permettant d’améliorer l’accessibilité des composants et de les intégrer dans les formulaires.
  • CSS est comme toujours amélioré sur un grand nombre de points ; on pourra regretter que CSS Nesting, pourtant disponible dans la Technology Preview ne soit pas inclus dans la version stable.
  • Côté JavaScript, les lookbehind dans les expressions rationnelles, les import maps et l’addition de import.meta.resolve() comblent le retard de Safari sur ses concurrents, et on pourra noter l’ajout également du formatage de durées (Intl.DurationFormat), et des blocs d’initialisation statique dans les classes.

# Pourquoi est-il si difficile de créer un framework UI en Rust ?

par Alexandre Gille 

L’équipe derrière Warp, un terminal écrit en rust 🦀 (macOS uniquement pour l’instant malheureusement) revient sur les difficultés liées à la création d’un framework UI en rust.

Les manières les plus récurrentes de construire un framework UI se basent sur des patterns orientés objets qui ne sont pas applicables en Rust : il n’y a pas d’héritage et le concept d’ownership impose certaines contraintes.

Il faut donc revoir son approche et passer du côté fonctionnel de la force. L’article revient sur l’architecture Elm (qui en a inspiré plus d’un !) et ECS (Entity-Component-System), et le choix qu’ils ont fait.

TL;DR: Le rewrite it in rust impose bien souvent un changement de paradigme qu’il est nécessaire de prendre en compte.