Charlie Marsh - Ruff

Durée: 61m16s

Date de sortie: 28/04/2023

This week we talk to Charlie Marsh, the creator of Ruff, a fast python linter written in Rust. We talk about his journey from working on the Khan Academy mobile apps to building developer tools for the Python ecosystem. We also talk about the challenges of building a linter, fostering a community, and the future of Ruff and his new company Astral.

Become a paid subscriber our patreon, spotify, or apple podcasts for the full episode.

https://www.patreon.com/devtoolsfm

https://podcasters.spotify.com/pod/show/devtoolsfm/subscribe

https://podcasts.apple.com/us/podcast/devtools-fm/id1566647758

Je me suis rendu compte de la tournage,
car je trouve ça à être la plus gratifiante chose que j'ai travaillé sur.
J'ai fait un travail très très bien,
je n'avais pas vraiment envie de penser à ça de cette manière,
mais c'était de construire des tools de développement.
Je faisais des tools pour enlever des gens à faire de grands travail.
Ce qui me fait comme la chose le plus réel.
Je vous parle de Charlie's Habit,
de la code d'opérance de la source de la reading,
de l'inspiration,
de la communauté de linter,
et, bien sûr,
tous nos outils pour la semaine.
Et avec ça, on va commencer l'épisode.
Bonjour, bienvenue à la podcast de DevTools FM.
C'est un podcast pour les outils de développement
et les gens qui font les outils.
Je suis Andrew et je suis ma co-host Justin.
Salut tout le monde.
Aujourd'hui, on a Charlie Marsh sur nous.
Je suis vraiment heureux de vous avoir sur Charlie.
Charlie est le créateur de Ruff,
qui est un très rapide Python linter.
Et nous sommes vraiment heureux de vous en parler.
Je ne sais pas,
je fais des russes tous les jours.
Je suis vraiment heureux de vous parler d'un autre qui est en train de travailler
sur un projet d'enseur.
Merci beaucoup pour me donner le temps.
Je l'ai déjà dit,
mais je suis un grand fan du podcast.
Le podcast me fait un grand honneur.
Je l'aime aussi de vous parler de ce genre de choses.
Je suis très heureux de vous en parler.
C'est vraiment raffin.
C'est un peu comme ça.
Et je vais peut-être aussi parler de la vie
de la vie de la vie ici.
C'est un projet de vie qui a été très fun.
Je ne sais pas, six mois.
Et beaucoup de choses ont été faites.
Je pense que j'ai appris beaucoup.
J'espère que nous pouvons en parler.
C'est génial.
Avant de nous parler de la vie,
Would you like to tell our audience
a little bit more about yourself?
Oui, sure.
Je suis un ingénieur de software.
J'ai été un IC
pour mon whole career.
J'ai commencé ma career
at a company called Khan Academy,
education technology company.
Et
j'ai vraiment kind of jumped around
and worked on a lot of different
technology stacks.
So, at Khan Academy,
I did a year of Android
on some of our first Android apps.
I worked on our first iOS apps.
And then I did a lot of web front end,
web back end.
And then,
maybe like five years ago,
I moved to a company called Spring Discovery,
which is an early stage
computational biotech company,
which is a totally new thing for me.
I had no bio background.
And I also didn't really have
the technical background
for what I ended up doing.
I was building,
it was all Python,
and I was building a data
and machine learning framework.
So, my users were like
8 to 10 data scientists
and machine learning researchers.
And I was building the infrastructure
that they used to actually run experiments
and ask questions about data.
And
sort of simultaneously, I was building
actual software for our scientists.
So, people who would use
our front end applications to actually look at the data
and try to ask and answer questions
about it that way.
So, I spent
several years basically
jumping between TensorFlow
and then I would be doing React
and just sort of jumping
all around the stack.
A lot of my opinions about tooling
and
technology come from
those influences of having worked
in web, having done a bunch of Python now.
We also started doing
a good amount of Rust.
Like in my last job, we started moving
towards a Rust Python hybrid
monorepo.
I try to find the things I like
about all those different ecosystems
and pull them together in different ways.
And now I'm working on
a rough full time.
So, I'm building out
high performance developer tools
for the Python ecosystem.
That's awesome.
So, while you were working on
those Python things, like
did you feel a need
that the tools were slow,
that the tools did need improvement?
And was any of that influenced
by what you were seeing
going on in the JavaScript ecosystem?
Yes.
Massively.
A couple things happened
during my time at Spring,
which was the company I was at most recently
that kind of led me to Rust.
When I built Rust, I was kind of trying
to build the thing that I wanted
from my own work.

like I said, a couple things sort of happened at once.
So, one was
we had this fairly large Python project
and
I was responsible for
all the tooling and infrastructure.
So, I was getting
we had a pretty large
like, pretty high
product slash infrastructure
service area to maintainer ratio.
So, they were kind of like
two of us who were really responsible for all the infrastructure.
And so,
we relied really heavily on
tooling.
Like, we had a lot of
like, especially given Python,
we had a lot of static tooling.
And our codebase was like very, very heavily typed.
You know, a lot of linters,
a lot of auto formatting tools.
And
I
felt this pain
point of like the tooling being slow a lot.
And it was super,
it was super useful and like there's no way
that we could have maintained that codebase
without all that tooling.
But I felt it slowing me down
like all the time.
And then I'd be going over to web
and I'd be seeing
all this tooling that to me felt
really like
aspirational. I mean, people have a lot of like
a lot of people criticize like web tooling
you know, and it has its flaws.
But
there's just like
there's so much like really powerful amazing stuff
and there's just a lot of like energy
like in that ecosystem of like
people
building. It just has this like gravitational pull.
It sucked in all these like
I don't know, in my opinion, like really smart people
and they all want to like build tooling.
And I was like, wow, okay, there's kind of all this
amazing stuff going on there. And like one of the threads
that they're pulling on is
writing tools and not JavaScript.
Right, so like we had ES build
we had SWC
and then I was seeing, you know, I was seeing
bun
and
I was kind of thinking, you know, could you
take those same ideas and apply them to Python
and then maybe like
the last thing that happened was we started
using Rust and so we started
moving some of our like performance critical
systems into Rust and that both
gave me some exposure
to Rust. Although I was like
absolutely terrible at it.
I was not the person that introduced it
and I was always trying to get like in and out as quick
as possible.
But it did sort of expose me to Rust
and
it also exposed me
to this idea of
like Rust Python
interoperability and like the ways that you could
use Rust
like from Python. So like, you know, the fact that
we could call out to Rust modules
from Python and like
the people who were writing Python didn't even have to think about that.
To me, I was like, whoa, like that's crazy.
We can like do all this cool stuff.
So all those ideas kind of came together
and I left
Spring and
I was sort of trying to figure out
what to work on.
I think I could have ended up working on a lot
of different things but I just kept getting sucked
back into tools and
rough for me was like
I have these ideas
about how Python tooling
could be faster. So let's try to like
leverage Rust.
I was also influenced
by Rome
and Rome's vision of unified tooling
not just Rust but unified tooling.
So I was looking at all this Python tooling
and I was like, can we unify it?
Can we use Rust?
I mean, you could pick a different language but could we use
a lower level language?
And could we just try to build something that's like really, really fast?
And I'd never built anything like
that before.
By the way, I had no background
in building that kind of thing. I'd like
worked very minimally with ASTs
et
pour moi, je voulais
un linter, ça a l'air attractable
plus de...
il y a beaucoup
mais je voulais un linter, ça a l'air
un bon élément.
Je pense que je peux construire
un concept de proof.
Et c'est ce que j'ai fait.
J'ai travaillé
pour quelques semaines
et je me suis dit
que je devais
arrêter de travailler sur ça.
C'est un grand distraction.
Et mon ami m'a dit
que je devais continuer de travailler sur ça
et que je devais suivre mes instincts
pour que ça soit un truc intéressant.
Et donc
j'ai vraiment focussé
à
d'être en train de
relier ça.
Comme rapidement possible.
Donc
quand nous avons réglé
ça,
nous avons supporté
je ne sais pas si nous avons supporté 20 règles
nous avons supporté un très petit nombre
de règles. Et je voulais
prouver que
je pense que le tooling pourrait être plus rapide.
Et donc,
quels sont les choses qu'on doit faire
pour prouver ça ?
On doit pouvoir faire
faire le source code par Python.
On doit pouvoir traverser le source code.
On doit pouvoir faire des bindings
et faire des analyses semi-intensives
pour que nous puissions détecter des imports.
Donc, je suis vraiment
en train de
prouver cette idea core.
C'est vraiment ce que je suis en train de faire.
Et je n'ai pas été en train de faire
tous les règles ou tout autre.
Et c'est
ce que
c'était le premier élevé de rough.
C'était comme, je pense que le tooling peut être plus rapide.
Je suis influencé par
ces idées
par un
plus performant langage.
On peut utiliser rust.
Il peut être installé en pips.
Personne ne l'installera
et doit avoir rust installé.
Il peut se sentir comme une dépendance Python.
Il peut se sentir comme Python
comme l'idée de la seule.
Il peut être écrit en une langue plus rapide.
Et je me bundle tout ça
pour essayer de prouver
ce point.
Et plus important, je pense,
voir si quelqu'un a voulu
prouver.
Je ne savais pas si quelqu'un
a voulu prouver sur le faster linter.
Et
je ne sais pas si j'aurais demandé
à la fois avant de construire rough.
Si j'aurais demandé,
si j'aurais dit, je veux faire le faster linter,
je pense que beaucoup de gens m'ont dit non.
Je pense que beaucoup de gens n'auraient pas
dit, oui, c'est la chose la plus importante
dans mon train de tour.
Pas que le rough est la plus importante
dans leur train de tour.
Mais
pour moi, c'était pour
prouver le point et voir si quelqu'un a voulu
et de taper dans ces différentes idées
ce qui m'a sorti.
La performance est une des choses
que...
un peu de temps, votre pensée est
que je veux un tour performant.
C'est comme, oh, le tour slow
est vraiment délicieux
avec mon workflow.
C'est un point grand.
C'est vraiment drôle.
Il y a beaucoup de
de ce que vous avez dit avant.
Je veux dire des choses différentes.
Tout le monde est bon.
J'adore.
Une des choses intéressantes du web
d'écosystèmes, il y a beaucoup de choses
intéressantes sur comment ça a été développé.
Une des choses
que les gens qui ont fait
beaucoup de développement sur le web sont vraiment
intéressés et en rapide cycle d'adoration.
Parce que vous pouvez juste faire des choses dans
le browser et référer la page
et tout ça. Et de ne pas être malade.
C'est comme, oh, je veux mes tools
d'être vraiment vite.
Nous avons passé à notre éros slow
pour sûr, quand nous avons été en train de faire
des billets.
Mais une autre chose intéressante
sur le web d'écosystèmes, c'est que
ça tient tous ces différents gens
de tous ces différents écosystèmes
parce que le web est ubiquitous.
C'est comme, bien sûr, vous utilisez un JavaScript,
mais il y a beaucoup de gens qui sont
c'est comme, c'est un programateur C, un programateur REST
ou un programateur Java ou tout ça.
Mais ils ont tous à venir et faire
des choses dans cette sandbox.
On va essayer de construire des websites.
Oui, ça nous a fait de
beaucoup d'intérêts intéressants
sur les écosystèmes. Et je pense que
c'est comme, un pétri-diche pour la innovation.
Je vais juste regarder toutes ces choses
et nous avons passé de
un très rapide transition
pour le programme de logic,
pour le programme de réaction fonctionnelle
et pour toutes ces
inspirations intéressantes.
Je ne sais pas. C'est vraiment cool,
mais votre tour est
comme, c'est comme
un path très graceful
dans ce sort de monde,
qui est,
j'espère, et je serais vraiment
intéressé à entendre votre opinion sur ça, j'espère que c'est
plus apportable maintenant
que les gens pensent que c'est
parce que c'est comme, avec Rust en particulier,
c'est comme, le curve de la classe, pour sûr,
mais, comparé au temps de
C++, c'est comme, je vais faire
un toulon négatif, c'est
un jeu différent, c'est complètement différent.
Oui, je
...
j'ai écrit
basically no C++
comme, almost 0
et
le seul C
que j'ai écrit, c'était en collège
pour mon cours de sondage
de l'intérêt des systèmes.
Donc
je ne viens pas de
de la classe,
de
pas de classe, je ne viens pas de, c'est pas mon
boulot, comme,
et
pour moi, le fait que je
peut en réunir
en Rust,
je ne peux pas dire que je suis
super bon à Rust,
mais je suis maintenant à un point
où je suis,
je suis
productive
et je pense que je pense
aux problèmes dans le right
et quand mon cours ne comporte pas
je peux me predicter que c'est pas
un comporte et je sais pourquoi, même si je ne
ne sais pas
exactement comment je dois changer
mais pour moi,
en writing Rust, c'est
un super power, c'est comme,
je ne
je serai vraiment fier de
faire en writing un c et c plus
plus, et des choses que je pense
c'est probablement sur moi,
je ne devrais pas avoir cette opinion
d'écosystèmes qui sont
massivement succesples,
ou beaucoup de gens aiment
les works, mais pour moi, ils me
sont intimidés,
c'est comme que vous voulez,
et j'aime
les works en Rust,
je ne sais pas, pour moi
ça me dit beaucoup de Rust,
et un très cool
chose que nous avons vu
vous voyez,
nous avons réellement réveillé Rust,
et même après Rust
se sont formés
un peu populaires, on a eu
beaucoup de gens qui nous disent
que vous ne seriez pas
jamais allés trouver des contributaires,
vous ne seriez jamais allés
trouver des gens pour vous
faire
les projets, les gens ne vont pas être allés
pour les contribuer, parce que c'est Rust,
et c'est différent,
ce n'était pas le fait que c'était Rust,
mais c'était le fait que c'était pas Python,
et
les gens
ne vont pas pouvoir trouver
des gens à travailler sur ça, et je me dis
en fait, en fait, on a
beaucoup de contributaires, et
aussi, quelque chose que je suis vraiment
très proche de, et qui est vraiment cool, est que
beaucoup de nos contributaires,
à moins ils disent qu'ils n'ont pas été réveillés
avant,
donc, ils
viennent, et ils disent, hey, je travaille dans le systeme Python
j'ai vraiment intérêt à
apprendre Rust,
je pense que nous avons fait un bon travail
de la setting up, ruff,
en entier point, pour les gens
qui connaissent Python,
et, vous savez, ils comprendent
les semantics de Python, ils comprendent
Python AST, même si ils n'ont pas travaillé avec AST,
ils comprendront l'idée de function
de classe, de variable,
mais ils n'ont pas vraiment réveillé Rust avant, et ruff,
je pense que c'est un petit peu de
faire avec la nature moduelle
du projet, comme
implementer un lint-roule est un
très bien contenu
pour faire,
comme opposed à avoir à
changer un peu de infrastructure au cours, donc on a
beaucoup de gens qui n'ont pas réveillé Rust avant,
ou qui sont juste en train de
apprendre ou dabbler en Rust, et ils sont en train
de se faire une bonne contribution,
et ils continuent de se faire
contribuer, et donc
pour moi,
je ne sais pas ce que j'ai
prévu, comme quand j'ai commencé, je ne sais pas
si je l'ai prévu pour ça ou pas,
mais c'est un très cool
et très réveillant
de voir
comme le
créateur de ce projet, de voir les gens
s'entendre et
pas juste contribuer, mais ils sont en train de
s'entendre et pas juste contribuer, et donc
je ne sais pas si ça
aurait été
réveillé, comme si c'était
plus ou plus, mais
ça a été bien possible avec Rust,
et c'est très cool.
Oui, Steve Klamnick
était sur le podcast de quelques épisodes
il a mis ça en
une bonne manière, que Rust
est un
2010, qui est un
programme de systèmes,
et je pense que c'est
le truc, comme nos préoccupations de
l'application ont changé
beaucoup, depuis le 70s
et ce que nous espérons
de notre dev-tool a changé, avec ça,
si j'ai essayé de l'ouvrir
GCC, je suis perdu, il n'y a pas de
highlighting, il n'y a pas de couleurs,
je suis un poteau de l'eau, mais
avec un modernité, je pense que c'est
beaucoup plus approachable, et Rust
fait bien ce niche.
Oui, totalement.
Il y a une période où le programme était juste difficile,
il était juste accepté, comme ça c'est
un truc difficile à faire,
et
il n'y a pas de ressources
pour apprendre, les outils ne sont pas
beaucoup plus bas, et
importantement, dans un peu de ces cas,
les défaises qui se sont apportées,
les défaises que vous avez expérimètes,
souvent en temps de tour,
et non la mode de compilation,
parce que le truc ne vous permet pas de
donner beaucoup de sécurité, c'est un
intéressant chose de Rust, c'est que
si vous avez un truc de compilation, vous pouvez être
garantie, ou vous êtes raisonnablement
certain que ça va travailler, vous savez ?
Oui.
Le curve de la course est très réel,
oui, non, c'est super real.
C'est super real.
C'est pourquoi je suis...
Je ne sais pas que
personne ne m'a demandé pour mon conseil
sur comment apprendre Rust, mais
c'est pourquoi je m'ai fait le truc,
quand je suis à mon dernier travail,
j'ai travaillé avec un
très talentant
ingénieur, et il
a introduit Rust
dans la base de la course, et il était
vraiment confortable et Rust, et
j'ai voulu m'aider à maintenir ce système, et donc
j'aurais dû me changer
et changer les choses, mais je me suis dit
que j'étais toujours tentant de me faire
en train de le faire, et donc je me suis dit
comment je peux le faire sans vraiment
apprendre le truc ?
Et puis,
après que je...
après que je me suis dit que je lisais
le Rust Book,
ou peut-être que pendant que je suis encore là, je lisais le Rust Book,
c'était génial.
Et ça a aidé beaucoup, mais
vraiment
c'est assez personnel,
comme le style de apprendre, mais pour moi, je
j'ai juste dû
me battre la tête contre la walle, beaucoup,
et
perdre un jour en essayant de figure
les décisions de vie, et
je...
il y a des meilleures manières pour apprendre que ça, mais c'est ce que c'est pour moi,
et
je pense aussi
de construire quelque chose de scratch,
où j'avais
à penser à tout, et

je voulais
me familiariser avec l'écosystème,
comme, que j'utilise pour
parlement de commandes en ligne,
que j'utilise pour la log, que j'utilise pour
l'air-handling, comme, toutes ces décisions
que si vous vous aviez à faire un projet existant,
beaucoup de ces décisions sont,
je veux dire, c'est une bonne chose, mais
beaucoup de décisions sont faites pour vous,
mais si vous vous essayez de apprendre tout, c'est
bien de vous mettre en position où vous
vous introduisent des choses incrémentales,
donc je ne sais pas, je dois toujours apprendre
de faire et de faire un bunch de erreurs,
mais pour moi, c'est ce que c'est pour
faire en sorte que vous soyez confortable de
faire en essayant, c'est juste
un temps.
Oui, quand j'ai commencé à l'auxit, j'ai eu
un russes de 0, et je justais
de essayer,
c'est comme, oh, je dois
faire un changement de l'API,
c'est comme, je peux,
je peux, je peux, faire un match de mon
tour, des choses comme ça, et
je pense que l'une des choses
de russes, c'est que
ça vous aide quand vous allez en cours,
les erreurs sont bien,
c'est assez facile de
chercher, et c'est
quelqu'un qui connaît vraiment le russes,
il peut vous expliquer très rapidement,
il vous dit, oh, oui, c'est ce qui s'est passé,
fixer ça
n'est pas toujours straightforward,
il y a des moments où il est dit,
vous avez écrit ce truc en un moyen que ça ne
ne marche pas, ça ne marche pas.
Mais ces problèmes, c'est
comme, si vous trouvez en position,
la chose que j'ai, le instinct que j'ai
appris, que j'ai essayé de le faire, c'est que
vous pensez probablement que vous avez
le problème, ou que vous êtes
en train de faire votre solution,
vous devez en faire un step-back, souvent,
ou je le fais,
et
oh,
la autre chose,
je n'ai pas
comme, un taux de Twitter, je ne m'en souviens pas
si j'ai en fait tweeté ça, ou si c'est juste
quelque chose que j'ai pensé en tweetant,
mais le truc avec russes,
il y a
beaucoup de souci dans le chaine de tour,
parce que quand je
fais un projet russes,
je suis très confiant
que je serai capable de le construire,
et très très confiant
que je serai capable de le faire,
de la faire, de la faire,
de la faire, de la faire, de la faire,
comme, en comparaison
à d'autres écosystèmes,
comme la standardisation, je pense
que ça a été arrivé, entre autres choses,
je suis juste très confiant quand je vais
faire un projet russes, et
ça se construit en temps,
que vous pourrez être capable de le faire,
et ça se construit,
et donc,
je ne pense pas
que je vais faire
une russes idiomatique,
je pense que c'est beaucoup de russes
idiomatiques et d'avance
que je ne suis pas là,
et je suis capable de le faire,
et c'est
extrêmement impressionnant,
mais je suis comme, confortable,
et je pense que ce que je vais faire,
c'est un peu de niveaux de russes.
Oui, en revanche,
sur un point que vous avez fait
plus tard, pour les contributors,
quand vous vous faites quelque chose
dans le russes, et c'est pour le système Python
Javascript a été la même chose,
c'est le type script,
c'est comme, si vous commencez à faire un type script,
les gens ne vont pas être à un type script,
et ils ne vont pas contribuer à votre projet,
et je me suis dit, ça a été,
c'est bien, type script est très populaire,
et ça a fait des contributions plus
plus facilement, parce que c'est comme,
il y a des types, et c'est une documentation extra,
mais le tooling,
pour le même chose, pour les années,
c'était comme, on va, on va
faire des choses dans la même langue
que nous sommes en train de faire,
ou quelque chose, donc les contributions sont plus simples,
et nous avons payé
la preuve de la performance,
et le caveat ici
est comme,
réwinding
quelque chose et le russes ne nécessairement
ne le rendent pas,
à quoi vous en avez ta из
et que vous zincz l'apprentissage en
plus Similarly vous vous niez
подon d' geehrtiers de kolay
starts carve tu
catches
Pour l'ffecteur.

et je peux faire des tests, je peux faire des choses,
et ça fait que la barrière de l'entrée est plus basée.
Donc je pense qu'il y a un tout petit peu d'éco-systeme
et le fait que les gens veulent vraiment bonnes outils,
ils ne voulaient pas vraiment les faire.
Ils veulent être rapides, et vous allez avoir des contributaires
pour ce que vous vous réveillez.
Je pense que certains choses vont être réduites,
si vous êtes subset, si vous êtes en train de faire un tour et un assemblée,
vous allez avoir quelques gens qui vont être là-bas.
Mais si vous faites quelque chose de plus mainstream,
vous allez avoir des contributaires.
Si vous réveillez ça en restant,
l'answer à cette question est,
c'est que c'est tout le monde qui va être réveillé.
Oui, pas tout le monde devrait être réveillé en restant.
Vous ne devriez pas de plus en plus prendre votre tour
et rééter en restant, évidemment pas.
Mais il y a beaucoup de nuances à ce point.
Si votre tour n'est pas réveillé en restant,
ça ne veut pas que vous soyez pas en train de faire des performances.
Si votre tour est réveillé en JavaScript,
il y a encore des moyens de faire ça vite et de faire ça lentement.
Vous ne devez pas de rééter en restant pour faire quelque chose vite.
Rééter en restant ne vous garantit pas que c'est facile.
Quand vous rééter en restant,
la chose des gens qui peuvent contribuer,
c'est un cost real.
Je suis sûr qu'il y a beaucoup de gens qui...
Je ne sais pas.
Je pense qu'il y a des gens qui contribuent au raf.
C'est en Python mais pas.
Je ne dis pas que ça n'a pas de cost.
Il y a beaucoup de trade-offs.
Mais c'est une nuance.
Ce n'est pas que tout soit en raf.
Ce n'est pas que tout soit en raf.
Il dépend.
Qu'est-ce qui va vous acheter?
Qu'est-ce qui va vous acheter?
Il y a des tools.
Je ne sais pas le nom du projet.
Le type re-writing n'est pas réveillé.
C'est un projet très ambitieux.
C'est super difficile.
Je ne suis pas commenté sur si ils devraient ou pas.
Mais c'est un projet grand ambitieux
qui va prendre beaucoup de temps.
Il a un grand payoff.
Il y a beaucoup d'évaluation qui doit aller ici.
Tout le monde aime le re-writing en restant.
C'est super cool et populaire.
Je pense que ça peut être très impactif.
Je ne veux pas que ce soit très simple.
Parce que si quelqu'un
qui est re-writing beaucoup de choses en restant,
je ne crois pas que tout soit re-written en restant.
Je pense que c'est bien.
Je donne des impressions.
On a filmé un dernier épisode
à ce moment avec Steve Krauss.
Un de ses dernières entreprises, Zapplib,
a dit que c'est important de faire tout le monde
dans le rustic et de faire le re-writing en restant.
Ils ont fait un test très rapide.
Mais en fin de l'année, ils ont trouvé
que ce n'est pas tout que rapide.
C'est un moyen de faire le re-writing
et de faire le right tool pour le travail.
Il y a aussi des costs techniques
et des costs de travail
pour le re-writing en rustic.
Je ne sais pas,
peut-être quelques exemples.
Si vous avez un outil en Python,
vous avez l'accessoire à l'étude standard.
C'est un outil de métropos,
mais il y a un peu de choses
qui sont utiles pour le re-writing.
Vous pouvez détecter
les choses qui sont dans le library standard.
Il y a un peu de choses qui sont utiles
pour le re-writing en Python.
Nous ne sommes pas accessés à ça.
Quand nous devons
répliquer le logiciel,
nous devons ré-write
ce part en rustic.
Je pense que les exemples
qui sont plus triviales
sont des valeurs
de variable name.
Ce n'est pas super difficile,
mais c'est un exemple.
Python a des utiles pour ça
et nous n'avons pas l'accessoire.
C'est un outil
qui peut, selon ce que vous essayez,
réimplir des choses qu'on n'a pas d'accessoire.
Nous devons réimplir des choses comme ça.
C'est un cost.
C'est débattable
si c'est un cost,
mais nous ne utilisons pas le c Python parcer.
Nous utilisons un autre parcer
pour le parcer en Python.
C'est un code en rustic.
Il signifie que nous devons
avoir des bugs différents.
Vous devez avoir des codes
qui devraient prendre du temps
pour compétitivité.
Nous utilisons un parcer
d'un tool appel Rust Python.
Il y a des choses
qui sont plus ambitieuses.
C'est un code en rustic.
C'est pas juste le parcer,
mais le parcer.
C'est un code en rustic.
Nous avons pu
prendre le parcer
comme un piece de réuse.
Nous étions les premiers
que nous utilitons.
Nousехons par c Python
sur la France.
On a WingJob.
Nous avons pu estrogen


Comme les etrogens

Et quand les features de la nouvelle langue viennent,
nous devons impliquer ces choses-là en le parcer.
Mais si le Python a introduit une nouvelle feature de la nouvelle langue,
il peut se voir que le Python est une partie de ce processus.
Donc, une grande limitation et assez longues
était que nous n'avons pas supporté le syntaxe de la pattern structurelle.
Le syntaxe, qui a été introduit dans...
3.9, je pense, Python 3.9, peut-être 3.10.
C'est embarrassant, je dois le savoir. C'était l'une des choses.
Mais nous n'avons pas supporté.
Donc, si vous essayez de faire un rough sur les files que vous avez utilisées,
nous serions juste en train de faire un syntaxe.
Et nous ne pouvons pas vraiment vous donner de l'analyses utiles.
Et ça a bloqué des gens d'adopter un rough pour un moment.
ones
Donc, les Пока routres sont importants plutôt que les
C'est juste un exemple de pas utiliser Python pour faire des tools Python,
ça a des causes techniques et des causes de maintenance.
Oui, peut-être que tu as fait un « Rust Python » ou un « Bridge »
où tu parles des fonctions internes.
Je sais que ça serait probablement la meilleure performance que tu peux obtenir.
Mais il y aurait été un moyen de faire ça d'autrefois ?
Oui, je l'ai pensé un peu, mais c'est aussi un endroit où...
Je voulais reconnaître mes propres constrées,
ou mes propres inadequacies.
Je pense que, en théorie, on pourrait peut-être réutiliser le « C Python » parcer directement,
ce qui est écrit en « C ».
Mais j'ai eu de la peine de savoir comment faire ça, et je n'en ai pas.
Et puis j'utilise le « Rust » parcer, et c'est très performant.
On peut contribuer des changements et des improvements.
Il y a beaucoup de sub-pices pour le parcer qui sont utiles pour s'en sortir.
Des choses différentes pour parcer des strings.
Python a de nombreuses différentes manières de représenter les strings,
et les deux pièces sont formées.
C'est juste utile que c'est tout « Rust » et que c'est tout le système.
Je pense que c'est possible de faire ça, mais j'ai donné l'opinion très rapidement,
car je ne pouvais pas comprendre.
C'est sur moi.
C'est juste bon.
Plait de la force, ok ?
C'est sur ça que les choses qui sont réunis sont en dessous,
entre les deux en milieu ou en arrière.
Et avec le parcer et le Rust, je suis sûr que vous reutilisez des types,
ce qui est, je suis sûr, en itself, valable.
Oui.
Oui, pardon, c'est un très bon point.
Oui.
Vous devez inventer tout ça.
Donc, en revanche, je n'ai jamais vu le space Python linting.
Qu'est-ce que ça a fait avant le Rust ?
Parce que dans le script Java, il y a deux choix.
Vous utilisez ESLint ou tout le autre.
Et puis, vous pouvez le faire linting.
Mais ça semble que dans le space Python, c'est un peu différent.
Oui, c'est un peu plus...
Je pense que c'est un peu plus...
Je ne veux pas nécessairement dire...
Je pense que Fragmentid a des connotations négatives,
mais je pense que ce que je dirais est que...
Often, vous utilisez un peu plus de sortes de tools suite,
en tant que ESLint avec un peu de plugins.
Je pense que dans le script Java, c'est vrai,
car vous avez ESLint en plus,
et je suis sûr que c'est d'autres trucs cool que je ne utilise pas encore.
Donc, dans le Python,
pour le space linting, il y a quelques linters qui sont vraiment populaires.
Et aussi, pour être tout à fait clair,
tous ces tools sont encore plus populaires que les uns des autres,
et c'est un des grands tools,
j'ai beaucoup de respect pour eux,
j'ai utilisé les plus grand pour un long temps.
Donc, je ne sais pas ce qui est le plus populaire, mais un tool très populaire est appelé Flake 8.
Et ce tool est un truc qui combine des sortes de fruits de fruits ici.
Ce qui est en fait des bundles à deux autres fruits.
C'est comme un fruit de fruits ici.
Flake 8 est un truc appelé Pi Code Style et un truc appelé Pi Flakes.
Un de ces trucs est en style et l'autre en style linter.
Et l'autre en symante.
Flake 8 a été construit et Flake 8 a eu un système de plug-in très robuste.
On utilise souvent Flake 8 avec un peu de plug-ins.
Vous pouvez avoir un plug-in pour mettre vos strings de doigt.
Vous pouvez avoir un plug-in pour ajouter plus de correcteur et des cheques communes
qui ne sont pas construits dans le linter par default.
Ça ressemble à l'escalier, c'est un linter qui a un système de plug-in.
Et il y a un système de plug-ins.
Il y a aussi un linter appelé Pylint, qui est très populaire aussi.
Pylint fait beaucoup de choses qui sont plus proches de ce que vous pourrez imaginer.
Pylint fait un analyse crossfile.
C'est un linter qui a un cycle importe.
Pylint fait beaucoup plus de analyses statiques et de branches.
Il a aussi des règles de 400.
Dans mon expérience, les gens ne sont pas obligés de faire des choses.




C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un système de plug-ins.
C'est un peu comme un type script, mais pas comme ça.
Les annotations sont partie du Python.
Elles sont partie du syntaxe.
Elles sont partie du standard Python syntaxe.
Mais la langue ne force pas les annotations.
Il y a un spec et des tools de partage d'une troisième.
C'est un spec pour regarder les annotations et les forcer.
Il y a un système d'éco-système de type-checkers.
C'est similaire à la web.
Il y a un couple de package managers.
Il y a NPM, NERN, PNPM, Bun, etc.
Ici, il y a un couple de tools qui peuvent tous faire type-checking.
Certaines utilisent un, d'autres utilisent un.
Un stack de standard est un de ces lintures.
Le format est très populaire.
Un de ces type-checkers.
Et vous devez lair des autres tools,
qui font des analyses ad hoc.
Je l'ai entendu beaucoup en temps de flake 8.
Je l'ai commencé en C&C++ et l'ai fait au Python après ça.
Et j'ai utilisé flake, tout de suite.
Où vous avez commencé à construire Ruff?
Vous avez eu un AST pour choisir?
Vous avez construit votre propre AST?
Vous avez forké d'autres projets?
Je pense que j'ai lu dans les docs que vous avez évoqué
des codes de flake 8 ou quelque chose.
Où vous avez commencé à construire Ruff?
Comme je l'ai dit, quand j'ai commencé à construire Ruff,
je n'ai jamais vraiment construit quelque chose comme ça avant.
J'ai eu beaucoup de temps à lire les codes.
Le point de départ était que je devais trouver un moyen
pour faire un AST pour aller sur le Python source code.
Je pouvais traverser et analyser.
Je me suis rapidement détenu sur l'utilisation de Ruff Python.
Ruff Python, leur schema de AST est créée
effectivement par les définitions standardes de Python.
Les définitions et la structure de l'AST
sont très similaires, si pas identiques,
à ce que le Python soit utilisé.
Je l'ai écouté tout de suite
avec les codes de source code et les piflakes.
Je l'ai écouté les définitions variables,
les bindings,
les limitations,
les choses de scoping.
Les choses de scoping, tout ça.
Je pense que l'une des choses que Ruff
aie utilisé comme une phrase optimisée pour l'adoption,
c'est que nous avons fait des décisions
qui ont vraiment aidé
à faciliter l'adoption et à faire ça facilement.
C'est relativement facile, j'espère, pour les gens à l'adopter.
L'un des choses que nous avons essayé de faire
de l'adopter en compétition avec des outils existants,
c'est bien,
car si les gens utilisent ces outils existants,
ils peuvent se déplacer à Ruff,
et si leur code est passé avant, c'est maintenant.
C'est vraiment important.
L'autre est que
nous avons commencé à bundler plus en plus des outils.
C'est presque quelque chose qui s'est passé par accident,
mais c'est maintenant, dans mon avis,
un très important part
d'un grand profit de Ruff.
Nous avons maintenant bundlé beaucoup de outils.
Quand je dis que ça a été un accident,
c'est parce que c'est assez difficile de faire un système de plug-in.
En fait, j'étais en train de dire
que nous ne serions jamais en train de impliquer
tous ces outils que les gens ont besoin.
Nous avons besoin d'un système de plug-in.
Je ne pouvais pas vraiment venir avec un bon
pratique pour faire ça.
Je commençais à impliquer les outils en Ruff.
J'ai regardé les outils les plus populaires
pour faire un système de plug-in.
J'ai regardé un peu de projets et j'ai dit
que si c'était un projet qui voulait adapter Ruff,
quels outils nous devaient nous impliquer?
J'ai vraiment regardé les outils et
travaillé par eux.
Nous avons impliqué un peu des outils les plus populaires.
Nous avons impliqué un peu des outils
pour pouvoir adapter Ruff.
Nous avons parlé un peu
des outils de performance.
Les outils de performance, les outils de fast-feedback.
Je suis un grand
believer en ça.
Mais il y a des gens qui adoptent
Ruff et la vitesse n'est pas la raison primaire
qu'ils ont fait.
C'est un peu surprise car c'est le flagship.
C'est un flagship
qui est super rapide.
C'est très rapide.
Mais il y a d'autres bénéfices.
C'est que ça peut vraiment simplifier votre chaine de dépendance.
Donc,
quand les gens ont bougé à Ruff,
il y a des fois où ils ont répliqué 10 ou plus
de dépendances avec un seul outil.
C'est cool, vous avez un peu de rèdes
et votre dépendance
est bien.
Mais le bénéfice est qu'il y a un outil,
une invocation, une configuration
qui peut remplir un peu de outils.
Mais pour l'exemple, nous avons aussi
un outil d'importance
qui est un outil totalement separate.
Et dans Ruff, c'est un rule de lint.
Vous avez besoin d'importance.
Il faut êtreties.
On met l'exaction
aussi auexी que l'existime.
Ils ont de Bref,
et führen unегодня.
Ils ont même estns,
j'ai même actually
des outils.
C'est vraiment sparkle,

Je pense que c'est le behavior auto-fix.
La flakate et le pylite ne supportent pas la fixation auto-fixant.
Il y a des outils séparats qui utilisent
des outils qui ont l'air de faire des fixations auto-fixant.
Mais nous avons installé ça dans l'inter,
assez rapidement.
Et en temps, nous avons pu expérer le scope
des choses que nous pouvons fixer.
Un peu de gens sont attaqués.
Quand je parle d'optimisation pour l'adoption,
c'est vraiment en train de mettre en compétition.
C'est super important.
Nous allons utiliser des appels très similaires.
Même si nous ferions des décisions un peu différentes,
nous ne serons pas en train de faire.
C'est vraiment utile pour les gens.
Et puis, un peu d'optimisation
qui est un bon moyen d'utiliser le tool.
C'est un peu plus facile,
mais c'est plus facile.
C'est un peu unifié,
ça fait que tu peux simplifier
ta chaine et tes dépendances.
Et c'est, j'espère,
plus facile et plus facile à utiliser,
comme l'autofixant et d'autres outils.
Avant de nous changer de la prochaine,
j'ai une question à vous demander de la raf.
Qu'est-ce que vous avez fait pour les plug-ins ?
Vous avez réglé tout,
un grand part de mon expérience avec l'inter
a toujours été plug-in.
Vous vous souhaitiez les supporter ?
Oui, les plug-ins,
les plug-ins sont très rigides.
Les plug-ins,
ils sont là tout de même,
dès qu'on a réglé,
il y a un très grand problème,
où beaucoup de discussions sur les plug-ins ont été faites.
Je voudrais supporter les plug-ins.
Oui, on supporte les plug-ins.
Je voudrais supporter les plug-ins,
je vais planer pour les plug-ins,
mais je ne vais pas promis de faire ça à quelle heure.
Parce que,
de la façon dont on plane,
il y a beaucoup d'approches différentes que nous pouvons prendre.
Et ça dépend de
ce que vous voulez de l'outil.
Pour les plug-ins, il faut faire des choses arbitraires.
Peut-être.
Mais je suis très intéressé,
c'est un peu de cop-out,
mais je suis très intéressé
dans une idée,
ou dans un monde où les plug-ins peuvent être expressés
déclarativement sans
la code de la réglé.
Il y a un tool appelé AST Grab,
qui est assez cool,
et qui vous permet de faire des expressions
de pattern matching
sur les ASTs.
C'est basé sur le tricet.
Et
je suis très intéressé
en en avoir du rough supporter ça.
Donc, en en utilisant
une pièce de pièce de pièce de pièce,
peut-être que vous pouvez mettre les plug-ins
avec un sort d'insultat.
Je suis toujours intéressé dans cette idée.
Je pense que beaucoup de les raisons
que les gens ont besoin
de leurs plug-ins
sont parmi ces paradigmes.
C'est comme,
vous voulez que les gens ne s'appliquent
à un certain API,
ou qu'ils ne s'appliquent
à un point avant d'une autre.
C'est comme, typiquement, les règles sont...
Ce n'est pas le seul cas de plug-ins,
mais en ma expérience,
quand on a écrit nos règles customaires
dans une compagnie,
c'était toujours un
des choses propriétaires
sur le code base.
Les relations qui ont besoin de force
ou les méthodes qui ne sont pas appelées.
Ce serait le rêve pour moi,
d'avoir des moyens
pour que les gens puissent avoir
les règles et les plug-ins
qui ne nécessitent pas
de faire des règles ou des codes Python.
Et ça devient
très facile.
Le problème qui devient beaucoup plus difficile
est si vous voulez que les gens puissent faire
leurs règles ou Python plug-ins.
Je pense qu'il y a des moyens
pour que vous puissiez apporter ça.
Il y a un peu de problèmes
qui sont quand vous...
Je vais parler candidament,
c'est quand
une expérience est un feature,
ça limite des choses que vous pouvez offrir.
Donc, si l'expérience est un feature,
les plug-ins sont très flexibles
et les gens peuvent faire
ce qu'ils veulent avec les plug-ins.
Il y a des moyens pour les gens
de l'expérience avec les règles
qui sont très saines.
Si les plug-ins sont saines,
mais aussi si les plug-ins sont
plus saines.
Et donc,
je vais essayer de être au courant
pour faire un peu de ça.
Je ne veux pas
être en train de compter
avec un design de plug-in
qui est très sain
et je ne veux pas
encourager les plug-ins
qui sont vraiment saines.
Donc, on va voir.
Je vais essayer de supporter ça,
mais il y a un espace
très grand design
de choses que nous pouvons faire.
Et
ce n'est pas
quelque chose que je travaille sur.
La réponse est dévoilante.
Non, c'était un bon答et.
Cool, cool.
All right,
on va le faire.
Avant de passer sur les conseils,
on a toujours aimé
poser des questions
des gens qui pensent
dans le futur
ou dans les plans.
Donc, l'une des choses
que vous avez shared avec nous
en privé
c'est que vous
allez commencer une compagnie
autour de ce sort de
dev-tooling que vous travaillez sur.
Et on aimerait entendre
plus de ça.
Qu'est-ce que vos plans?
Qu'est-ce que cette compagnie?
Et quel plan vous faites avec ça?
Oui, oui, absolument.
Donc,
la compagnie est appelée Astral.
Et
le but de la compagnie
est vraiment de
faire ce que nous avons fait
avec Ruff.
Donc,
construire les plus
bonnes
dev-tooling
par la production
Rust
et de construire
vraiment de la performance.
Et
je pense que
être capable de travailler
sur ce genre de choses
en plein temps
était vraiment important
pour
le succès que nous avons
mis en place.
Comme,
je pouvais
être vraiment responsable
aux gens.
Nous pouvions construire
vraiment vite.
Nous pouvions
adresser des problèmes
très rapidement,
pour le faire beaucoup.
Et je veux garder
cette énergie
et expérer l'esprit
de les problèmes
qu'on peut se résoudre.
Et donc, la compagnie
existe
pour accomplir ce goût
qui est
qu'on va construire
plus de la tournage
dans le modèle rough
et
de construire le rough.
Donc, une performance
de la pièce de pièce
plus de la tournage statique
spéciale
mais aussi de brancher
dans
peut-être des autres
zones qui ne sont pas
comme beaucoup de
tristes
de ce que Rust
fait aujourd'hui.
Donc,
quels sont les premiers
types de tools
qui sont
dans vos sites?
Ce sont des
formes auto-formataires.
Je pense que c'est le premier
test runner
et bundler.
Où sont les formes auto-formataires?
Donc,
je suis toujours très hésité
de parler de ce truc.
Non pas la compagnie
mais les choses que nous devons faire.
Et c'est vrai
avant de l'annoncer
la compagnie
parce que
j'aime
être très open
sur ce que je veux faire
et
sur le scope
de le travail
et
la potentiale et l'ambition.
Mais
je t'ai aussi essayé
d'être vraiment au courant
de promiser des choses
qui ont eu le temps
de faire.
Et donc,
ça va être
une très fine ligne
de tournage
parce
que si tu dis que tu vas faire
des choses,
tu crées des préoccupations.
Mais si tu ne dis pas
que tu vas faire des choses,
tu ne seras pas
en train de être
ouvert et honnête.
Donc,
pour moi,
la
façon de rêver
Rust
est
que
il continue de
se développer
comme une tournage

Donc, on a le
linter
de
le format
et,
à l'aider,
aussi,
le type checker
et je voudrais
faire toutes ces choses.
Et
je ne...
C'est où je dois être
très au courant
parce que
on ne travaille pas
sur un type checker
maintenant.
Et je ne sais pas
si on va
parce que je pense que
il y a beaucoup de bonnes
raisons
pour ne pas le faire.
Mais
je vais juste être
ouvert et honnête
et dire
que ça serait
une bonne
combination
de tournage
parce que
et par cool,
je veux dire
qu'il est
puissant
et utile
pour les utilisateurs.
Et donc,
la raison
que c'est
intéressant pour moi
est que
ils sont
tous très
complémentaires.
Et donc,
c'est similaire
à la vision
que Rome a,
qui est
que si on
construit
l'infrastructure
pour un linter,
il y a beaucoup de
structures
communes qui sont
utilisées pour
un format
et un type checker.
Et
ce n'est pas
seulement la
linterie qui
ferait
toutes ces choses
plus bien.
Les tournages
pourraient aussi
être plus belles.
Donc,
en raf,
on a souvent
ce problème
où on veut
savoir
le type
de la variable.
On a des règles
qui ne sont pas

sur les dataframes
ou on a des règles
qui
sont seulement
sur les dictionnaires.
Et
on peut seulement
renforcer
ces règles
dans un contexte
très conservatif
parce qu'on ne peut
pas faire
l'infrastructure type.
Donc,
on ne peut pas
savoir si
la variable
est un
dictionary

enregistre.
Donc,
si vous avez un
linter
qui a eu
l'accès
à l'infrastructure type
et l'infrastructure type,
vous pouvez
faire beaucoup
de choses
qu'une
ou l'autre
tool
fait.
JAMAVOUS



plus de 1 que les outils d'individu.
Il y a un peu d'autres choses que je vais aussi intéresser,
qui sont dans un espace de design.
Mais il y a peut-être des problèmes sub-découtes,
comme la parlementation de la parlementation,
comme l'extraction des parlementations et la validation des parlementations.
Mais pour moi, c'est comme une school de statuels similaire.
Je veux vraiment mettre sur les choses
que je pense que les gens aiment bien les ruffes,
qui sont en grande performance,
qui sont intégrées et unifiées.
C'est très compatible avec des tools existants.
C'est un important point.
Et je veux juste continuer à mettre sur ça et donner plus de ressources
et d'adresser à la plupart d'entre eux d'aider à nous faire ça possible.
Quand tu parles de tout ça,
et quand je faisais mes recherches,
Rome est comme ça.
La valeur de la parlementation de Rome est comme ça.
On a tous ces tools, ils font tout ce que l'on passe,
tout ce que l'on passe, rien ne l'a pas été séparé.
Et le start de la parlementation est très bien,
c'est comme ça.
On a 10 tools, ils sont tous paré de différentes choses.
On les met ensemble, c'est magiquement plus rapide,
et on peut mettre sur un autre point,
un meilleur expert de développeur sur le point.
Oui, et c'est intéressant parce que Ruff a déjà fait ça.
Si vous regardez ce que Ruff peut ou peut remplacer aujourd'hui,
vous avez un bunch de différents tools
qui étaient tous les parlementés par le Parlementation et le Traverse de la Parlementation,
et le Parlementation du Parlementation avait sa propre logique.
Et le Parlementation du Parlementation a sa propre logique.
Et le Parlementation du Parlementation a sa propre logique.
Et maintenant, on a un système.
Et il y a une chose de très counterintuitive,
que, comme le système fait plus,
ça devient plus facile de maintenir et de construire plus de choses sur le top.
Si vous avez construit un bunch de différents tools
qui ont besoin d'analyser des codes,
ils doivent impliquer des mêmes choses.
Et avec Ruff, si on veut mettre un nouveau piece de fonctionnalité
ou un nouveau comportement,
c'est comme en détenant une fonction et un module,
et nous avons tout cet infrastructur.
Et quand nous allons impliquer cette fonction,
on a probablement déjà beaucoup de logic et de aide,
qui ont été utilisés pour d'autres règles,
ou on a déjà fait un peu de la information semantique que vous avez besoin.
Et donc, la toute chose,
il y a un peu de, je pense, un effet de snowball
avec le moyen que les tools s'impassent.
Et mon espace est que nous pouvons juste
construire des choses qui sont vraiment impactuelles
et qui réellement résonnent aux gens.
C'est comme, la toute joie,
je veux dire que je travaille sur ces problèmes,
mais Ruff a été comme un truc très réel de travailler,
parce que, honnêtement, ça réellement résonne aux gens.
Ils sont vraiment heureux quand ils utilisent ces tools,
et ils ont une réponse positive.
Pour moi, ça me suggère qu'il y a une opportunité
de faire plus de ça.
Le purpose de la première compagnie est de faire plus de ça,
et de construire des tools unifiés,
et de essayer de mettre le Python en avant,
par la production de Rust,
de construire des tools unifiés et de la performance de la performance,
et de faire que les gens aient un peu plus d'amélioration.
J'adore la vision.
C'est pourquoi on a commencé tout ça.
Le construire des tools
fait l'écosystème plus bien.
C'est génial.
Je pense que le construire des tools est incroyable.
C'est drôle, parce que,
je me suis dit à la fin,
quand j'ai fait le travail en spring,
je ne savais pas vraiment ce que je voulais travailler sur,
et que je pouvais travailler sur des choses différentes.
Mais je me suis dit que je devais revenir à la fonction de la tooling,
parce que je trouve ça être la plus gratifique de travailler sur.
C'est un travail très grand,
et je ne pensais pas vraiment à ce que je voulais travailler sur,
mais c'était de construire des tools de développement.
J'étais construit des tools pour enlever des gens à faire de bon travail.
J'étais construit d'infrastructure et de tooling.
Et ça, pour moi, est la chose le plus réel.
Et en regardant les projets que Ruff a déjà supporté,
c'est vraiment cool,
à mon avis.
C'est aussi très grand.
C'est une chose très gratifique,
pour moi, de voir la réponse des gens,
et de voir comment c'est de faire les gens plus efficaces.
Et si on pouvait faire le système de Python,
1% plus efficace,
comme en agréable,
pense au compounding qui se passe là-bas,
tout le monde se fait plus de ça,
tout le monde est plus efficace.
Depuis comment on est arrogants,
je vais dire, on va faire plus que 1%.
Mais 1% serait bien,
c'est un grand...
le monde.
Je sais que c'est un peu...
maltraumatique, mais
je travaille vraiment sur les tools,
et le point de ce point
c'est de faire que les gens puissent travailler plus vite,
et ne pas plus...
Beaucoup de tools sont en train de se faire,
je veux avoir des tools en train de les faire,
et leur faire des choses.
C'est vraiment le point.
Ok, avec ça,
on va changer les tips de la tool.
C'est tout pour la version libre de l'épisode.
Si vous voulez entendre la whole chose,
vous devez s'inscrire.
Cool, ça se rapporte pour les tips de la tool.
Merci pour votre attention Charlie,
c'était un très bon tour de la Dive
dans All Things Rust et Python Linting.
J'ai vraiment aimé votre perspective
en devenir un maintenance d'open source
ou overnight,
et comment vous avez été connu.
Merci beaucoup, c'était...
Je veux dire, je parle de ce genre de choses,
c'est un bosse pour moi.
Je vous remercie, je vous remercie,
et je vous remercie pour
me regarder à la fin, je pense.
Vous avez vu tout le magie éditing ?
Oui Charlie, c'est un plaisir absolument,
c'est tellement réel,
depuis que beaucoup de rustes
que je trouve moi-même en ces jours,
et je peux entendre beaucoup de mes expériences
et des histoires que vous avez prises.
C'est un grand plaisir.
C'est vraiment cool, je vous remercie.

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