Turbopack, le successeur de Webpack bas� sur Rust, con�u pour faciliter le d�veloppement d'applications web modernes,
peut prendre 1,8 seconde pour d�marrer, tandis que Vite prend 11,4 secondes
Dirig� par le cr�ateur de Webpack, Tobias Koppers, Turbopack, le successeur de Webpack bas� sur Rust ne regroupe que le minimum de ressources n�cessaires au d�veloppement, le temps de d�marrage est donc extr�mement rapide. Sur une application comportant 3 000 modules, le d�marrage de Turbopack prend 1,8 seconde. Vite prend 11,4 secondes et Webpack 16,5 secondes. Turbopack prend en charge d�s le d�marrage les composants de serveur, TypeScript, JSX, CSS, etc. De nombreuses fonctionnalit�s ne sont pas encore prises en charge.
L'architecture de Turbopack tire les le�ons d'outils comme Turborepo et Bazel de Google, qui se concentrent tous deux sur l'utilisation de caches pour ne jamais faire deux fois le m�me travail. Turbopack est construit sur Turbo : un framework open source de m�morisation incr�mental pour Rust. Turbo peut mettre en cache le r�sultat de n'importe quelle fonction du programme. Lorsque le programme est ex�cut� � nouveau, les fonctions ne seront ex�cut�es que si leurs entr�es ont chang�. Cette architecture granulaire permet � votre programme de sauter de grandes quantit�s de travail, au niveau de la fonction.
Pour un debut, Turbopack sera utilis� pour le serveur de d�veloppement Next.js 13. Il alimentera HMR � la vitesse de l'�clair et prendra en charge les composants de serveur React de mani�re native, ainsi que TypeScript, JSX, CSS, etc. � terme, Turbopack alimentera �galement les constructions de Next.js � la fois localement et dans le cloud. Il sera possible de partager le cache de Turbo avec toute votre �quipe, gr�ce � Vercel Remote Caching. Les utilisateurs de Webpack peuvent �galement s'attendre � une migration incr�mentale vers le futur bas� sur Rust avec Turbopack.
Turbopack est si rapide parce qu'il est construit sur une biblioth�que r�utilisable pour Rust qui permet le calcul incr�mental connu sous le nom de moteur Turbo. Voici comment cela fonctionne :
Mise en cache au niveau des fonctions
Dans un programme �quip� d'un moteur Turbo, il est possible de marquer certaines fonctions comme �tant � � m�moriser �. Lorsque ces fonctions sont appel�es, le moteur Turbo se souviendra de l'objet avec lequel elles ont �t� appel�es et de ce qu'elles ont retourn�. Il les enregistrera ensuite dans un cache en m�moire. Voici un exemple simplifi� de ce � quoi cela peut ressembler dans un bundler :
Nous commen�ons par appeler readFile sur deux fichiers, api.ts et sdk.ts. Nous regroupons ensuite ces fichiers, les concat�nons ensemble et obtenons le fullBundle � la fin. Les r�sultats de tous ces appels de fonction sont enregistr�s dans le cache pour plus tard. Imaginons que nous soyons sur un serveur de d�veloppement. Vous enregistrez le fichier sdk.ts sur votre machine. Turbopack re�oit l'�v�nement du syst�me de fichiers, et sait qu'il doit recalculer readFile("sdk.ts") :
Puisque le r�sultat de sdk.ts a chang�, nous devons le regrouper � nouveau, qui doit ensuite �tre concat�n� � nouveau. Il est important de noter que le fichier api.ts n'a pas chang�. Nous lisons son r�sultat dans le cache et le passons � concat � la place. Du temps est gagn� en �vitant de le lire et de le regrouper � nouveau. Imaginez maintenant cette situation dans un vrai bundler, avec des milliers de fichiers � lire et de transformations � ex�cuter. Le mod�le mental est le m�me. Vous pouvez �conomiser d'�normes quantit�s de travail en vous souvenant du r�sultat des appels de fonction et en �vitant de refaire le travail qui a d�j� �t� fait.
Le cache
Le moteur Turbo stocke actuellement son cache en m�moire. Cela signifie que le cache durera aussi longtemps que le processus qui l'ex�cute - ce qui fonctionne bien pour un serveur de d�veloppement. Lorsque vous ex�cutez next dev --turbo dans Next v13, vous d�marrez un cache avec le moteur Turbo. Lorsque vous annulez votre serveur de d�veloppement, le cache est effac�.
Dans le futur, l��quipe en charge pr�voit de faire persister ce cache - soit dans le syst�me de fichiers, soit dans un cache distant comme celui de Turborepo. Cela signifierait que Turbopack pourrait se souvenir du travail effectu� � travers les runs et les machines. Cette approche rend Turbopack extr�mement rapide pour calculer les mises � jour incr�mentales des applications. Cela optimise Turbopack pour la gestion des mises � jour dans le d�veloppement, ce qui signifie que votre serveur de d�veloppement r�pondra toujours rapidement aux changements.
� l'avenir, un cache persistant ouvrira la porte � des constructions de production beaucoup plus rapides. En se souvenant du travail effectu� au cours des cycles, les nouvelles constructions de production ne pourront reconstruire que les fichiers modifi�s, ce qui pourrait entra�ner un gain de temps consid�rable.
Source : Vercel
Et vous ?
:fleche: Quel est votre avis sur le sujet ?
Voir aussi :
:fleche: Next.js 13 est disponible, elle apporte Turbopack, le nouveau successeur de Webpack bas� sur Rust, sur une application comportant 3 000 modules, le d�marrage de Turbopack prend 1,8 seconde
:fleche: La version 12 de Next.js, l'outil de d�veloppement open source construit autour de Node.js, est disponible, avec un compilateur Rust 17x plus rapide que Babel et une priorit� aux modules ES
:fleche: Next.js 11 est disponible, elle am�liore le temps de d�marrage de 24 % et r�duit de 40 % le temps de traitement des modifications