Tobias Koppers - TurboPack, Webpack

Durée: 48m9s

Date de sortie: 03/02/2023

This week we're joined by Tobias Koppers, the creator of Webpack, and now TurboPack. We talk about the origin of Webpack, maintaining Webpack, and what's next for JavaScript bundling. TurboPack is a new bundler from Vercel, and it's built on a completely new architecture with a familiar API. Join as as we dive deep into the future of bundling.

Join our patreon for the full episode.

Tooltips

Want to hear use talk about our tooltips? Join our patreon!

Andrew

Justin

Tobias

C'est notre principal objectif pour faire des updates incrementaux, des updates incrementaux,
indépendants de l'absence.
Il faut toujours être constant dans la performance.
Et ça ne importa pas comment une grande application se fait.
Réveil, le tout épisode est seulement disponible à nos membres Patreon.
Hello, welcome to the DevTools FM podcast. This is a podcast about developer tools and the people
who make them. I'm Andrew and this is my co-host, Jess.
Hey everyone, our guest today is the one and only Tobias Kopias. Tobias is the creator of webpack,
now TurboPack. Tobias, we're really, really excited to have you on to chat about what you've been
up to of yourself. But before that, would you like to tell our listeners a little bit more about yourself?
Yeah, hi, my name is Tobias and I'm from Germany, from Bavaria and a little town.
And yeah, I'm working on maintaining webpack like since 10 years, for 10 years now.
And like today, three years ago, I joined Russell and started working on Tobopack.
Yeah, so just bundling stuff.
Just Bundles is playing it down a little bit.
Webpack has been such a huge tool in our industry for the past decade.
But I think some of our viewers might be surprised how it came about.
So could you fill us in on how you started webpack?
Yeah, it's a funny story actually.
So when I did my master thesis, I did a web application as a master thesis.
And for that, I was looking for JavaScript tooling.
I wasn't into JavaScript at all at the time.
So I just looking around, just looking for bundling, basically a tool to optimize my application.
I was a little bit into over optimizing stuff, maybe because it's a master thesis.
And you just do that.
And yeah, so I found a bundle, which was called Modules Webmake.
And I basically proposed this feature called splitting.
Basically, before doing the studying, I worked with GWT, which is Google Web 2kit,
which is a Java to JavaScript compiler.
And yeah, you probably expected from my Java to JavaScript compiler,
the bundles end up to be really large.
And it has this great feature about like splitting your application into like some code
being loaded on demand.
And I was missing this kind of feature in the JavaScript tooling I was working with.
So I proposed it, made an issue on this bundle I found, like Modules Webmake,
and basically proposed that.
And yeah, there was, yes, I'm interested.
But in the end, I ended up implementing a prototype by re-implementing the whole bundle.
And this prototype was renamed into Modules Webpack.
And then Webpack and badly developed as it on tool now.
I think the issue is still open.
So yeah, it's funny.
Yeah, and the story continued a little bit.
It was really small tool.
I had a few people writing issues using it a little bit.
But this larger success was when Pete Hunt from Instagram.com
met this, I think on OSCon 2014 or so.
He made this talk about how Instagram works and basically promoted Webpack
as tool they're using.
And I think they are the success of Webpack started and more people getting adoption.
I think I was a little bit lucky with that.
Also, I hit the right thing at the time because I was over-optimizing
this kind of bundle and a little bit code splitting.
At that time, you probably don't need that feature
because applications were like thousands, maybe hundreds of modules.
So nobody needed that.
But this was really cool.
But the web development in general
grow and applications become larger.
And so code splitting ended up to be really useful for that kind of development trend
in web development.
And I think that was like the major success point of Webpack.
Maybe another thing was like that we focused on extensibility,
flexibility, which was also useful in the grow of web applications in general
because we experimented a lot with different technologies,
whatever typescape flow, all this kind of stuff that we had developed at this time.
And I think the flexibility of Webpack was a really huge point at that time.
And I think it still is.
Yeah, absolutely.
Yeah, it's cool how it came out of such a small use case.
Like you started as an issue and was just trying to solve this one tiny little thing.
And now Webpack is like, it's so all-encompassing of all different ways
you build your application now.
So you touched on extensibility for a little bit.
What was your guys' initial approach to extensibility?
Parce que de mon point de vue, ce que Webpack a aujourd'hui,
c'est que même si c'est une surface de plage très très grande,
c'est tellement flexible et permet de faire beaucoup de créativité.
La pensée de la flexibilité était que
ma idée sur la utilisation de la compagnie,
c'est que les compagnie de la compagnie ont des cas super spéciales.
Je pense que chaque compagnie a cette façon.
Je suis spéciale en ce cas,
ou je sais que c'est une code de la législation qui doit être intégrée.
Et c'était la motivation de ma flexibilité de Webpack.
Je voulais que tous ces cas que les gens ont dans leur application de compagnie
et tout ce genre de stuff de législation.
Je voulais leur donner l'opportunité de utiliser Webpack
par en garantissant les outils pour construire quelque chose
pour intégrer les trucs qu'ils veulent avoir dans les bundes et les outils.
C'était la idée.
C'est vraiment intéressant.
Je pense que beaucoup de temps depuis que les gens sont approchés de projets,
c'est que tous ces cas de législation sont comme,
c'est tout à l'escope.
On ne veut pas penser à ça, c'est vraiment un cas de législation.
Mais c'est expliqué,
je ne veux pas que ce soit flexible enough
pour que tu puisses faire un tour de l'escope.
C'est un cas vraiment compétent.
Et je pense que,
spécialement, ce Webpack a été développé pendant des années,
c'est été un exemple grand,
de construire une bonne architecture de plugin, pour exemple, pour sûr.
Je sais que Andrew a utilisé
une architecture similaire de plugin que Webpack utilise.
Oui, j'adore Tappool.
J'ai utilisé trois ou quatre projets différents.
Oui, c'est vraiment cool.
Oui, peut-être que Webpack API surface est trop large.
En quelque cas,
c'est...
Oui, c'est un problème.
Parce que tu as un plan de plugin large,
et les plugins peuvent faire tout.
Mais ça veut dire que
tout est part de l'escope.
Tout est part de l'escope,
comme l'API et part de l'escope,
la version semantique de l'API surface.
Si tu veux faire des changements de effectuations,
dans ce genre de choses que les plugins peuvent accesser,
les plugins tendent à être un changement de break.
C'est vraiment difficile.
En beaucoup de cas,
ça peut faire du plus difficile
de l'intervier sur les changements de large,
sur les changements de large.
Surtout si tu veux éviter des changements de break.
Oui, c'est ça.
Le use de l'escope de l'escope
est un sort double-edged.
C'est comme, oh, on peut
donner tous ces features à les développeurs,
mais le côté de la back-side est,
oh, je dois supporter ce hook
qui n'est pas le plus bien pensé
pour toujours,
ce qui est beaucoup pour le poursuer.
Oui.
Oui.
Mais oui.
Je pense que c'est un trait de la flexibilité,
la sensibilité et
peut-être
une histoire de migration
et de break-change
et de plus de versions.
Oui.
En partie, ça a été dit
que souvent les versions de Webpack
étaient vraiment plus hardes
ou plus difficile
que les usuales
de migrations,
surtout quand les plugins
sont un peu plus upgradées.

Donc, on contrôle
la configuration un peu,
mais les plugins,
c'est toujours,
il faut souvent
avoir l'attention
des maintenance
des plugins
qui ne peuvent pas être
là-bas anymore.
Et ça peut être difficile.
Oui.
Quand votre histoire de migration
devient un effort de communauté,
ça définitement
augmente la complexité.
Je me suis dit que l'interview
que Richard Hipp
a donné,
Richard Hipp est le créateur
de SQLite.
Et il a dit
que SQLite
était comme un problème
accidentel.
Il a dit que il avait
décidé de faire quelque chose
pour le client.
Il a dit que je devais
avoir un database sur le disque
et il a créé ça.
Et il a dit
que c'était beaucoup plus
difficile que j'ai pensé
que ce serait pas mal.
Je pensais que ce serait pas mal.
Et je suis curieux
que
l'enquête de Webpack
se soit faite
plus difficile
que l'enquête de l'interview
que vous avez anticipée
quand vous avez commencé
de la migration
et comment ça a changé
en temps?
Je pense que c'était...
initialement,
quand j'ai fait le prototype,
c'était plus facile
que j'ai imaginé.
C'était vraiment
facile
de faire un simple bundle
qui peut
délivrer
une feature.
Je pense que
c'est plus difficile
en temps
et vous ajoutez
plus de features
et plus de features
et tout ce genre
et vous avez
beaucoup de test cases.
Et vous voulez changer
une chose
et ça ne se débrouille
d'autre chose.
Et vous vous en avez probablement
compris.
Je pense que
ce petit bundle initial
était vraiment facile
mais
la direction
de beaucoup de features
devient un problème.
Surtout
parce que
de la flexibilité
les gens
ont utilisé
cette configuration
cette configuration
et puis
dans ce genre
de combination
cela se débrouille
et je pense que
ceci est vraiment
difficile
de changer
une feature
en gardant
tous les autres features
intactes
et
techniques
que les gens
n'ont pas
d'une façon
inutile.
Oui,
donc
toucher sur le succès
un peu
a-t-il été
difficile
ou il y avait
des choses
que vous voulez faire
avec Webpack
que parce que
le succès
et le procès
ne l'a pas été
accompli ?
Une bonne question.
Je ne pense pas
que

je n'ai pas
vraiment pas
je ne dirais pas
non
ce n'est pas
ce succès
qui m'a hinder
en faisant quelque chose
spécial
quelque chose
que je voulais faire
c'est
je pense que
la plupart des temps
en travaillant en Webpack
je n'étais pas
vraiment
profondé par mon
utilisation
parce que mon utilisation
a dépassé
après un peu de temps
mais je me suis
plus
motivé
ou
profondé par
des feedbacks

travaillé avec
beaucoup de gens
à la fin
en regardant
ce qu'ils ont
et les cas d'oeil
je voulais juste
faire ce projet
pour le fun
je n'avais pas
n'ai pas
aucun
objectif
c'était
je voulais
faire quelque chose
cool
et faire les gens
heureux
que je faisais
ce projet
c'était
une motivation
et je pense
que
cette motivation
mon objectif
c'est de faire la communauté
heureuse
donc
le succès
je pense que c'est
un bon facteur
dans ce cas
et pas
un bloc
mais
on parle
un peu
plus
forward-looking
donc
Verso
annonce
un turbo pack
qui est
pour mon understanding
la
prochaine génération
de Webpack
pouvez-vous nous dire
un peu plus
sur le turbo pack
et ce que c'est
et
les causes
dans l'écosystème?
oui
je peux commencer
avec la motivation
de turbo pack
Webpack
est 10 ans
et
je vous dis
que c'est
difficile
d'interpréter
sur les
plus grands
et les choses
et un problème
de Webpack
peut-être
pas un problème
mais c'est un problème
de Webpack
c'est
c'est
le performance
c'est un peu
problématique
en quelques cas
et spécialement
si vous vous créez
une application
très grande
donc
ça marche bien
mais
si vous avez
plusieurs milliers
de modules
vous ne pouvez pas
finir
ces deux secondes
d'incréditation
qui
est
techniquement
assez rapide
mais
les utilisateurs
sont
des secondes
de
des updates
et des choses comme ça
et
oui
une motivation
était le aspect de performance
qui est
problématique
en Webpack
et nous
voulions changer ça
nous voulions fixer ça
et nous avons fixé
beaucoup de performances
donc nous avons fait
plus vite
mais nous avons
fait un point
où nous ne pouvons pas
optimiser
plus
sans effectuer
les architectures
donc
les architectures
étaient un problème
mais nous ne pouvons pas
changer ça
sans
qu'on ne quitte
tous les plugins
et tous les utilisateurs
et que
ce n'est pas
quelque chose qu'on veut faire
et
je pense que
en ce cas
créer un nouveau nom
et un nouveau produit
qui est
comme
base
sur ces mêmes idées
de Webpack
mais avec
une autre architecture
et différents plugins
et
c'est mieux
que de
faire un Webpack
6, 7
ou 10
ou tout
que
tous les utilisateurs
ont fait
une réimplementation
de tout
et
c'est
plus

que
c'est
plus
expected
que vous avez
de migrer
à quelque chose
plus
que
une version major
ou quelque chose
et
une autre motivation
c'était
il y avait
3 motivations
une performance
et
dans les

on utilise
Webpack
mais pas
seulement
l'on utilise
4
ou 5 compilers
de Webpack
juste pour
faire
une compilation client
une compilation server
une compilation de service advoit
une compilation de components
une compilation de components

on a

de beaucoup de compilers
pour
les établir
et
mettre
des communications
ensemble
c'est
une
évo
c'est assez
difficile de
se remplir
il faut
mettre
des conditions
et des choses
on
a
de


pour
les
modules
entre
les
modules
entre

modules
de
des
modules
dans
une
et d'autres ont une nouvelle opportunité pour l'optimisation,
entre l'environnement et l'optimisation.
Si on utilise seulement des propriétés de la petite partie,
dans les autres, on peut optimiser quelque chose.
Et il y a plus de cela.
Mais c'était l'une des idées.
Nous avons commencé ce projet en train de créer un nouveau architecteur
qui était un peu plus de plus,

et nous avons décédé un objectif d'inclamation incrementale.
Nous avons fait tout pour créer un objectif d'inclamation incrementale
comme vite possible,
pour ne pas seulement pour accomplir le objectif de la grande application,
mais nous devons penser que WebDev.C est 10 ans de l'EU,
mais nous avons aussi décédé un nouveau objectif,
nous voulons aimer être en vie,
à moins de 10 ans,
et si nous pensons que le prochain 10 ans de WebDev.C,
c'est la grande application qui va être probablement très grande.
Nous voulons avoir quelque chose qui pourrait travailler
dans les 10 ans, je ne sais pas ce qui s'agit de l'aide.
Nous avons vraiment décédé un objectif d'inclamation incrementale
et notre main-gole du architecteur,
c'est de créer des updates d'inclamation incrementale,
des updates d'inclamation incrementale,
d'un certain nombre d'applications.
Il devrait être constant dans la performance,
et ça ne devrait pas être important de la grande application.
Si vous avez 100 modules, 1000 modules,
ou 10 000 modules,
la vitesse de l'update devrait être constant
et seulement affectée par le nombre d'applications
qui sont les cas de WebDev.C,
il y a ce type d'enclamation pour avoir des modules
de la grande application,
qui sont les cas de l'application.
C'est un nouveau architecteur de TuppePAC.
Pour aller plus vite,
est-ce que vous vous en avez plus sur les modules ES ?
Un grand outil est VIT,
et beaucoup de la vitesse de la course VIT
vient de l'aide des modules ES.
Oui, oui.
Je peux expliquer pourquoi.
C'est parce que,
VIT est un bundle,
mais VIT est un bundle non bundle.
C'est un espace similaire,
mais ce n'est pas un bundle,
car ce n'est pas un bundle,
mais un bundle non bundle.
C'est un bundle non bundle pour l'application,
où il ne se met pas en code
dans les files de large,
et il ne s'y appartient pas.
Il ne s'y appartient pas,
mais il ne s'y appartient pas,












C'est vraiment très rapide pour des updates incrementaux,
car un bundle a usually
de rebundler l'application,
puis de réunir le bundle,
ou de réunir l'application.
Et c'est un bundle de bundles,
et tout ce qui s'est passé
avec un module graphite,
un size de la barbicule scale,
et un graphite de barbicule scale,
n'a pas de modules,
mais de modules,
et seulement les modules
sont réunis dans un graphite modulier.
Dans les cas de updates,
il n'y a que de procéder
un module et le mettre en place.
Ça fait que c'est vraiment efficace
pour les modules,




et c'est vraiment très rapide,
car il n'y a pas de procéder
de la barbicule scale.
Et si on fait ça,
et en fait, on ne fait pas ça,
donc le bundle est un bundle,
ce n'est pas un bundle non-bundle,
c'est le même type de chose
que le webpack,
mais on implemente
dans un moyen
que le numérique est le plus rapide
que le bundle non-bundle
par des trucs incondipétants
et incondipétants.
Et on ne bundle pas
si on fait un update,
on fait un update
et on sent
que le module change
d'une fois que c'est effectué
par le tente via le websocket
et ça fait que les updates sont aussi rapides
que le bundle non-bundle,
même si on est bundle et totale.
Mais pourquoi?
C'est une bonne question.
Donc, un problème
de non-bundle est
que c'est le start-up initial
que vous devez envoyer
si vous avez 10 000 modules
dans votre application, vous devez envoyer
10 000 requests
sur le server
juste pour obtenir
les 10 000 modules.
Et par ne pas bundler,
vous devez obtenir
ce genre de request.
Et c'est
pourquoi nous bundle pour production
et que la question soit de réduire le nombre de requests
pour envoyer des modules
dans un moyen plus efficace
et ça fait du sens
par ce que c'est pas un peu difficile
pour faire le même genre de choses
dans le développement
pour envoyer un plus efficace
pour le browser.
Et surtout si vous scalez plus grand
que ces 10 000 modules
les requests peuvent devenir
vraiment problématiques.
Surtout si vous avez des défis,
il y a des défis qui sont très fortes
et qui sont vraiment pas vraiment efficaces
en déclinant beaucoup de lines
dans le TAP.
Et il y a aussi
des autres raisons
qui sont différentes
pourquoi nous avons choisi un bundle
et un autre raison
c'est que
dans un non-bundle
les browsers appartiennent
du module,
donc vous ne pouvez pas
le réconnecter.
Et ce que l'IJMR fait
c'est que
il sent le nouveau module
et réplique le module
dans le module.
Et dans un non-bundle
quand le browser appartient du module
vous ne pouvez pas repler le module
c'est immutable dans le module.
Il y a des hautes
des travailleurs
pour obtenir un nouveau module
comme dans le timestamp
mais vous devez le reconnecter
et ce n'est pas
le mode native HMR
de
repler le module
dans le graph de l'application
donc c'est un autre raison
pourquoi nous avons choisi
de faire un bundle.
Et la troisième raison
c'est
que
le BZVT fonctionne bien pour le développement
mais dans la production
vous devez toujours bundler
quelque chose.
Et maintenant vous avez un monde
où vous avez l'acmascape
dans le développement
et la production
avec un autre outil
dans la production
et nous ne voulons pas
avoir la production
et le développement
comme possible pour régler
les problèmes de production
et les problèmes de production
comme des environnements
qui développent le développement
ce n'est pas un problème
en quelque cas.
Et c'est pourquoi
nous essayons de
faire un bundle.
Et nous avons aussi voulu
d'improver la vitesse de la production
et un non-bundler
ou un outil de l'acmascape
ne nous aide pas pour ça.
Nous voulons avoir les billes plus vite
et la mode de la mort plus vite
et c'est
la raison
pour laquelle nous avons choisi un bundle.
Si nous devons choisir un non-bundler
nous devrions mettre un non-bundler
pour le développement
et une nouvelle production.
C'est un mot du mot doctric.
Si nous pouvons faire un bundle
plus vite comme un non-bundler
nous serons heureux.
Vous avez
appris beaucoup
de travailler sur Webpack
et d'autres.
Est-ce que vous pouvez
faire maintenant
pour imposer
comment le bundle et le travail
de la mort
que Webpack ne nous aide pas
précédemment ?
Oui,
je dirais
que c'est une assumption, mais
il y avait des choses qui n'existent pas
à l'époque de Webpack, comme les modules agmasques
ou les typescripts
ou
les types de optimization.
Et je pense
que avec le knowledge que j'ai maintenant
que ces choses existent
nous avons réellement étendu
les modules agmasques
et nous avons étendu
les typescripts.
Je pense que
les spaces technologiques
sont généralement étendus
sur quelques technologies
qui sont vraiment mainstream
et
quelques choses qui disparaissent
comme la compétition de café
ou d'autres choses.
Je pense qu'il y a plus de cléarité
dans le développement de Webpack
et nous pouvons faire
beaucoup plus d'assumptions sur
les autres tools que vous avez probablement
ou que vous voulez utiliser
les typescripts.
Donc les typescripts sont de la base
de la base.
Donc c'est une assumption qu'on peut faire
que
vous voulez utiliser les typescripts
ou les JavaScripts et peut-être qu'il y a
quelque chose de futur, mais au moins on peut dire
que les typescripts sont quelque chose que vous probablement
voulez utiliser.
Et dans Webpack, je pense que les typescripts
n'existent pas au début de Webpack
mais aussi Webpack
était un sens de très bas niveau
donc il ne s'est pas élevé de beaucoup de défauts
surtout parce
que les typescripts ne existent pas
et il y avait aussi de l'eau
et la communauté n'a pas
choisi
d'un de ces typescripts
et c'est pareil avec beaucoup de ces technologies
et
donc c'était
des choses qu'on peut faire
mieux maintenant.
Et avec les modules ectmascripts

il y avait seulement les commandes en empty
qui étaient vraiment des technologies dynamiques
donc ça n'a pas
la définition claire de ce type
d'explorer et c'est comment vous utilisez
c'était plus comme
vous avez un objet et puis
vous avez des propodies de ce type
et c'est comme vous pouvez faire des types dynamiques
et
avec les modules ectmascripts
il y a cette définition claire
et c'est plus statiquement analyzable
comparé à les commandes
et avec cette connaissance
et
en tout cas, le module est vraiment statiquement analyzable
vous pouvez construire
quelque chose, vous pouvez construire sur le top de ça
et faire plus d'optimisation
comme
le module ectmascript
où les modules ectmascripts
et leurs modèles
sont ététiquement analyzables
pour faire plus de
assumptions pour
faire plus d'optimisation
donc ce n'était pas
pour ça
parce que ce n'était pas
pour ça
qu'il y avait quelque chose ététiquement analyzable
dans le futur
et nous avons toujours impliqué
quelque chose qui
sort dans cette direction
comme nous sommes en train de le faire
mais je pense qu'il y a
plus d'optimisation
pour optimiser plus tard
et nous avons des plans pour le top de ça
pour avoir
un format de module ectmascript
et
optimiser plus tard
ce n'était pas
pour Wepec
parce que c'était juste pour le compliquer
mais ce n'était pas
pour Wepec parce que
c'est vraiment
un temps intensif
pour impliquer
les idées de base
pour qu'on soit
maintenant, nous avons des modules pour les modèles
pour faire plus de l'optimisation
nous pouvons les faire, nous pouvons
peut-être faire des exportations
mais en top de la production
nous planions
faire des déclarations
à la niveau de la base
pour optimiser, donc, en plus de
un module graph, nous avons
un graph de module fragments
où chaque groupe
d'optimisation connectée
est un module fragment
dans le graph, donc
le module graph s'étend
par le facteur 10 ou 20
parce que c'est un
espace de petits morceaux
et ces morceaux
permettent de
optimiser plus clavagé
pour mettre
une partie de module dans un chanc
et mettre une autre partie
dans un autre chanc
et le part shared
dans un troisième chanc, quelque chose comme ça
c'est plus grand de la ligne, c'est plus grand de l'optimisation
et
avec la performance
de Wepec, je pense que nous ne pourrions
pas pouvoir faire ça
par, je pense, on ne pouvait pas faire ça
par le facteur 10 ou 20
je pense que, oui, on peut
faire ça vraiment
donc
ça veut dire que les technologies
plus importants sont re-billées
en partie de ça, parce que
une chose que j'ai trouvé
pendant faire des bundles de bundle
c'est que Wepec
n'est pas en train
de faire des déco-élimination de la code
et que la possibilité de la construction
se dévouille de la terce
est-ce que vous avez juste dévoilé
le besoin pour la terce
ou vous allez développer
une alternative pour la terce
ou quoi que ce soit là ?
oui, c'est
le chanc de la code
c'est généralement un de mes au-delà
mais le chanc de la code
c'est une combination de
de removing des exploits
et de la code de l'élimination
donc par exemple de removing les exploits
et les autres choses sont non plus référentes
et que la code de la code est éliminée
et c'est vrai que
la plupart des déco-élimination sont en terce
et Wepec
ne fait que
de removing les exploits
c'est pas vraiment de removing les exploits
c'est de remover
le keyword qui fait
de la technologie liable
qui est non utilisé et la code de la code
va être en train de faire
on est toujours en train de
de relier
donc en fait c'est plus le futur
parce que nous n'avons pas
de production mais le plan
est que nous encore
on reste en train de
de relier le minimiser
mais le topopec est plus
intégré avec le minimiser
donc nous utilisons
pas un tercer parce que le terroir
nous utilisons un SWC
qui est
qui a travaillé
sur les dernières années
pour faire
comme compatible
pour minimiser
et
donc en fait
nous en relions
le topopec est aussi vraiment
plus
intégré
dans le topopec
nous utilisons
toutes les transformations ST
et les choses qui sont en train
et nous implementons les transformations
pour le SWC et
nous utilisons le SWC pour la code de la animation
donc nous utilisons vraiment
l'ASWC et
je t'attendais aussi que nous
plus en plus intégrés avec la
minimisation de la code de la code
de la SWC
parce que maintenant
c'est
comme la porte de web, comme
les exploits en remontant et
la minimisation de la code de la code
qui fonctionne
finitiquement en tout cas mais en quelques cas de la haine
où vous avez
une code morte qui se transse
par plusieurs modules
peut-être
que ça ne peut pas réunir ça parce que
ça ne ressemble
pas à la fonction
qui peut avoir des codes, comme un module
et que le SWC ne peut pas
voir les connections entre modules
qui sont impliquées
par les quotas, statements
et choses comme ça
donc nous admettons
des possibilités pour optimiser
et avec
l'approche de la code de la SWC
nous espérons que nous pouvons
avoir
une manière de se dégraver
avec la code de la code de la code
de la code de la code
de la code de la code
de la SWC
pour la code de la code de la code
de la SWC
ça ressemble super cool
oui, c'est drôle
donc
une grande partie de
la Power Webpack est l'obligation
de contrôler ce qui se passe
avec des loader et des plugins
va-t-on
avoir un plan similaire ?
oui, c'est notre plan
le plan est dans le russ
vous pouvez l'exprimer
que nous ne sommes pas les plus élevés
mais nous n'avons pas choisi
donc nous voulons offerter
JavaScript et Rust plugins
parce que nous pensons
que la production
de Rust pour les plugins
ne ferait pas de l'adaptation
de les plugins
et je pense que les plus
les plugins autos sont probablement

ou les applications de la web
ou les applications
qui sont probablement familiales
avec les JavaScript et les WC
et
ils ne peuvent pas
apprendre Rust pour les plugins
ils veulent produire
des cases de la page
ou des cases spéciales
et leur compagnie
et leur faire les plugins
et je pense que les gens
qui ont l'opportunité de faire
les plugins de JavaScript
ou les plugins de Rust
sont beaucoup plus
plus élevés pour les gens
d'apprendre les plugins
même si le traitement est
que les plugins de Rust
peuvent être plus élevés
mais je pense que
en plein cas
95 % des plugins
ne matteraient pas
parce que les plugins sont seulement élevés
5 fois
et ça ne matterait pas
ou en plein cas
les gens ne veulent pas
les faire
même si le traitement
t'en prend 10 secondes
c'est un traitement
tu peux
faire les plugins plus vite
mais peut-être que tu perds des performances
mais je pense que c'est un traitement

et si tu
la discovers plus tard
parce que tu l'as réveillé
et que tu peux
le faire pour Rust
ou payer quelqu'un
pour les plugins
et que tu peux
les faire
je pense que
c'est important
d'offrir les plugins de JavaScript
ou les plugins de JavaScript
ou les plugins de Rust
et
ça c'est cool de l'entendre
parce que
j'aime l'idée de
des plugins vastes
mais je n'aime pas l'idée de me faire apprendre Rust
chaque fois que je veux faire un truc de 1 off
qui te donne un petit truc
pour mes vies
Rust c'est vraiment
difficile de faire
je pense que c'est
une bonne idée de faire
les plugins en 1er
parce que tu peux le faire vite
et développer
et peut-être que tu as
un truc de plus vite
que le code de Rust
même si tu as déjà fait un truc de plus vite
c'est un bon idea
Rust c'est beaucoup plus vite que le code de Rust

et l'intervier
c'est plus sauvage
et plus vite
mais il y a des idées
mais comme tu l'as dit
tu ne vas pas faire quelque chose
qui s'execute pour chaque file
c'est comme
tu n'es pas en train de faire un truc de plus vite
mais tout autre est comme
tu n'es pas en train de faire un truc de plus vite
oui
en plus c'est bien
il y aura plus de travail
pour les plugins API
pour les javascript et Rust
ou est-ce que tu peux faire ça automatiquement?
pas surement
parce que nous n'avons pas fait ça
mais nous avons
cette interface
nous avons besoin d'interface
pour exemple dans les cas de current
nous voulons avoir un config de nextJS
mais le config de nextJS
n'est pas juste un JSON file
c'est comme
un module NodeJS
on doit le faire
donc nous avons besoin de la même infrastructure
pour
ici il y a un module Node
on veut exécuter un code de ça
et on veut traiter toutes les dépendances
et tout ça
nous avons envoyé l'infrastructure
et nous avons déjà envoyé
parce que sur le site rendering
c'est la même technologie
on veut exécuter un code de NodeJS
et regarder
toutes les dépendances
donc nous avons besoin de ça
et nous pouvons utiliser
les plugins de wide
et je pense que nous avons trouvé ça
donc c'est probablement
un extra cost mais
nous voulons prendre ça
c'est génial, le Rust bridge
sera intéressant
j'ai été
en train de faire un lot de Rust
et de jouer beaucoup avec Dino
et
je ne sais pas, les bindings de native
sont toujours
une intéressante route
oui
donc nous
voulons juste exprimer un processus NodeJS
et communiquer avec ça
je ne sais pas si c'est le cas
mais c'est un moyen de binding native
de la façon dont nous avons besoin
il y a un overhead
de la réalisation entre Rust et JavaScript
et nous avons trouvé
que
on a hâte de faire ça
par intégrer l'SWC
et
en fait, les services sont super fast
et les passagers sont très vite
mais si vous voulez
réaliser un ST pour JavaScript
c'est vraiment un très bon cost
et c'est
comme ça, en ce cas
ce n'est pas
même plus
que le Rust pour la version de JavaScript
que pour la version de JavaScript
oui
donc
nous allons
regarder ça
et nous avons aussi
tous nos goals de performance
nous avons aussi un couple de tools
pour profiter plus de informations
pour pouvoir avoir un peu d'insight
pour pouvoir
visualiser
ce overhead
de la vocation de JavaScript
pour tous les utilisateurs
parce que si vous vous l'avez fait
et vous devez savoir
si c'est vite ou lent
et vous devez savoir
si vous devez donner l'insight
pour savoir quelle part de la construction
et qui devrait être portée à nous
ou bien, ou bien, ou bien, ou bien
pour les choses de la construction
oui, la question de serialisation
est un problème assez commun
j'ai toujours demandé
et c'est un peu off-topic
mais j'ai toujours demandé si
si c'est un MD
peut-être
il y a un moyen de utiliser ça créativement
pour réduire le problème de serialisation
mais peut-être
c'est un problème pour une autre fois
oui, je pense qu'il y a
Jason Parthes avec
USED
oui, oui
je pense que tout le monde
aime
Jason Parthes avec
et c'est assez vite
je pense
oui
donc
on a parlé de ce que le TurboPack est
mais le schéma de la naming
m'intervient un peu
donc, Versel a aussi un projet
qui s'appelle TurboRebo
est-ce que le TurboPack
est-ce que le TurboRebo est en tout cas
d'une façon ou d'autre que le nom
un peu plus, oui
donc, au moins
il s'agit de les principes
de TurboRebo
qui ont cette idée
de haut niveau
où vous avez un grapho
d'études, de tasks
et puis si quelque chose s'évalue
il y a un grapho de l'évaluation
et
le projet
derrière le TurboPack
le TurboEngine
utilise ce même principle
d'avoir un grapho
de tasks et puis de suivre le grapho
pour faire des évaluations
d'une certaine manière
mais sur un schéma de grandur
le TurboRebo
chaque task est une execution
d'exécution
dans le TurboPack
une task est
une fonction en raste
qui est vraiment
très vite
comme un micro-sacrètes
et
si vous voulez
se sentir à la scale, pour un module
dans le TurboPack vous avez
200 tasks dans le task graph
d'un composant d'incompréhension
donc c'est vraiment
beaucoup plus grand
et
maintenant
c'est
qu'ils se sont évalué
d'un coup, mais aussi les idées
mais ils ne sont pas évalués de codes
mais
la vision est
d'avoir
le TurboRebo utilisé
d'utiliser le grandur
d'exécution d'incompréhension
pour leur propre execution
et la vision est
que si vous utilisez le TurboRebo
sur le MonoRebo
et que vous avez

et que vous avez un task
d'encompréhension
pour les séparations
vous avez
une grave
d'exécution
pour le MonoRebo
mais aussi pour la fonction
en TurboPack
donc vous avez
une grave, je ne veux pas
tout, mais
j'ai l'idée
que vous pouvez faire vraiment vite
les inconnus de la production
et de la cachette de la mode
de TurboPack
mais aussi de la grave
et de la grave
j'espère que ça va faire le faster
probablement
c'est une vision cool
j'espère que vous vous trouverez
oui, je pense que nous le faisons
oui
c'est aussi
il y a des choses
qu'on veut partager
le TurboGear qui a un team de mode de cache
où vous pouvez
éclater
la cache, choisir le cloud
et éclater avec vos co-workers
et on veut d'abord
avoir le même pour le TurboPack
si vous avez un task
ou des éclats de granola
c'est le cache
et nous voulons aussi éclater
le cloud et avoir les mêmes bénéfices
où vous...
ce module a déjà été construit par vos co-workers
et vous pouvez juste le downloader
et vous n'avez pas de compilations
et c'est très probable que vous vous vous partez
de nombreux modules avec votre co-worker
parce que vous vous appuyez en même co-base
et puis vous pouvez avoir
beaucoup de bénéfices pour la mode de cache
et
vous voulez plus d'autres
des choses de computation cloud
où vous avez ce genre de co-worker
avec
des
publics de cache
vous pouvez l'assurer
et puis vous avez seulement de la compilations
ou tout ce
pour les modules
que vous partez avec le whole internet
comme les modules NPM
qui est la seule personne qui a
compilé le module NPM
et ça serait cool
et ça
ça va prendre un temps pour y aller
et nous devons impliquer
un peu de features
avant de commencer avec ça
mais c'est la solution
donc
le pack de Turbo
est vraiment incroyable
c'est cool de voir
toutes les nouvelles improvements qui peuvent arriver
mais ça sort de la question
de quel est le futur de Webpack
et de sa maintenance
c'est le bon point
que Webpack 5 est vraiment stabil
et il ne faut pas
beaucoup de
développement en s'enfinant
donc c'est vraiment
il a beaucoup de temps pour être stabil
et donc
il ne faut pas trop de maintenance
si vous ne voulez pas
mettre beaucoup de nouvelles features
et je pense
que ça va rester
pour à peu près 5 ans
parce que c'est utile pour
peut-être
plus que 5 ans
ou plus
donc ça va être de maintenance
mais je pense que
ce n'est pas super grand
de développement de features
à moins de mon côté
et je vais être concentré sur
les Webpack
en même temps
et notre plan
Webpack est déjà annoncé
on plane de faire un pack de Turbo
et un successor de Webpack
donc on plane de faire
et la migration est vraiment
facile pour Webpack
on plane de soutenir
probablement toutes les features Webpack
on plane aussi de soutenir
juste de gagner des dollars Webpack
dans TurboPack
il y aura beaucoup de compétitions
entre eux
si
en 2 ans ou 1 an
on a
une bonne story de migration
on peut
facilement
se changer entre eux
et j'espère que ça
fonctionne pour vous
et même si pas
Webpack sera maintenu pour
à moins 5 ans
et je suis assez sûr que ça va être
utile pour les 5 ans
parce que les compagnies sont
très soudées et adaptées
à la nouvelle technologie
mais on essaie de le faire
avec plus de temps
c'est tout pour cette semaine
c'est la fin de l'épisode
pour nos membres de Patreon
merci d'être venus
c'était une belle conversation
j'ai été un grand fan
depuis avoir été en train de
avoir une source d'open source
donc merci pour votre
c'est un bon moment
merci
je vais vous dire
que vous êtes un impact
de cette situation
c'est
une de mes
ce qui est vraiment
un source d'open source
n'est pas encore
une webpack
et j'ai commencé à
faire un plug-in
et j'ai parlé
de ça et ça me
a propelé la trajectoire
donc oui, vous avez
un impact très important
sur le système de l'économie
et oui, merci
c'était un plaisir
merci

Episode suivant:


Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

devtools.fm:DeveloperTools,OpenSource,SoftwareDevelopment

A podcast about developer tools and the people who make them. Join us as we embark on a journey to explore modern developer tooling and interview the people who make it possible. We love talking to the creators front-end frameworks (React, Solid, Svelte, Vue, Angular, etc), JavaScript and TypeScript runtimes (Node, Deno, Bun), Languages (Unison, Elixor, Rust, Zig), web tech (WASM, Web Containers, WebGPU, WebGL), database providers (Turso, Planetscale, Supabase, EdgeDB), and platforms (SST, AWS, Vercel, Netlify, Fly.io).
Tags
Card title

Lien du podcast

[{'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]

Go somewhere