Making ast.walk 220x Faster
L'équipe de Reflex génère beaucoup de code Python par IA et a constaté que la compilation corrige les erreurs une par une, ce qui augmente fortement la latence. Ils ont créé un linter personnalisé pour appliquer des règles spécifiques mais ont rapidement rencontré des problèmes de performances en traitant de grandes quantités d'AST. Le diagnostic a montré que ast.walk et les générateurs (yield) étaient les goulots d'étranglement, ce qui a mené à des optimisations progressives comme l'élimination des générateurs et l'inlinage de fonctions. Pour aller plus loin ils ont translittéré le parcours en Rust via PyO3, itérant directement sur __dict__, évitant isinstance coûteux et mettant en place des caches mémoire pour les sous-classes d'AST. Ces changements cumulés ont permis d'accélérer le parcours d'AST d'environ 220x (jusqu'à ~99,5% d'amélioration), et le projet fast-walk contient des optimisations supplémentaires.