Programmez! #240 est en kiosque

En raison de la situation de redressement judiciaire de Presstalis qui s'est superposée à la crise sanitaire covid-19, la sortie dans les kiosques de  Programmez! #240 a été profondément perturbée.

Mais ça y est, il arrive ! Vous le trouverez chez votre marchand de journaux ce mercredi 27 mai !

Il est malgré tout possible qu'il ait encore quelque jours de retard dans quelques régions.

Facebook réécrit une partie de son framework React Native

Par:
fredericmazue

ven, 22/06/2018 - 14:43

Le framework React Native a été créé en 2013. Il a largement été adopté pour de nombreux projets. Non seulement pour des projets internes à Facebook, mais aussi pour des projets conduits par des entreprises phares : Baidu, Tesla, Uber... Mais au cours de ces 5 ans de bons et loyaux services React Native a aussi montré ses défauts.

Facebook expliqueLorsque nous avons lancé le projet React Native, nous l'avons conçu avec un seul pont (bridge) entre JavaScript et le natif. Cette passerelle est asynchrone, et sérialisable. Nous avons conçu l'ensemble du système pour ne jamais compter sur l'obtention d'une réponse synchrone. Nous l'avons fait pour la flexibilité que cela nous donnait.

Au cours des 5 dernières années, nous avons constaté que ces principes initiaux ont rendu plus difficile la construction de certaines fonctionnalités. Un pont asynchrone signifie que vous ne pouvez pas intégrer directement la logique JavaScript à de nombreuses API natives qui attendent des réponses synchrones. Un pont mettant en file d'attente les appels natifs signifie qu'il est plus difficile de faire appel à des applications React Native dans des fonctions implémentées de manière native.

Pour remédier à ces inconvénients, Facebook modifie l'architecture de React Native, et lui apporte trois changements internes majeurs :

  • Le modèle de thread est modifié. Alors que chaque mise à jour de l'interface utilisateur avait besoin de travailler sur trois threads différents, il sera possible de faire une mise à jour synchrone en JavaScript sur n'importe quel thread pour les mises à jour prioritaires, tout en conservant une priorité basse du thread principal, afin de garder la réactivité. 
  • Le rendu asynchrone sera intégré dans React Native pour permettre plusieurs priorités de rendu et pour simplifier la gestion des données asynchrones. 
  • Le pont sera plus rapide et plus léger. Les appels directs entre natif et JavaScript sont plus efficaces et faciliteront la création d'outils de débogage tels que les traces de piles multilangages.