- Mako est un outil de build frontend basé sur Rust, décrit comme « très rapide » et « production-grade »
- Lancé en 2023.3, il a été open source un an plus tard
- Le projet a démarré pour répondre à un besoin de vitesse de build « très rapide »
- L’expression « production-grade » est utilisée parce que Mako a été officiellement déployé en interne chez Ant Group (anciennement Alipay) à partir du 24/11/2023
- Il a été validé sur des milliers de projets, ainsi qu’avec les nombreux packages npm et versions utilisés dans ceux-ci
Pourquoi Mako a été développé
- L’an dernier (2023.3), l’équipe a lancé trois projets autour de Rust, du SSR et de l’AIG, et a choisi Rust pour résoudre des problèmes de performance de build
- Les raisons pour lesquelles ils ont décidé de le construire eux-mêmes plutôt que d’utiliser des outils Rust existants relèvent de la complexité
- Le niveau de maturité des bibliothèques de la communauté et leur compatibilité avec les exigences d’Ant
- La nécessité de garder le contrôle (de nombreuses personnalisations sont indispensables pour des raisons métier)
- Les meta-frameworks modernes nécessitent, au-delà du build, un framework au moment de la compilation. En particulier, les scénarios SSR et RSC demandent beaucoup de compilation
- Le besoin d’apprendre Rust et de faire progresser l’équipe
- Chronologie de Mako : lancement en 2023.3, première version utilisable en 2023.7, déploiement interne chez Ant en 2023.11, passage en open source en 2024.6
Vitesse
- Mako a fait l’objet de gros efforts sur la vitesse. Les données de benchmark sont les suivantes
- Les benchmarks ont été exécutés sur un projet également utilisé pour tester Turbopack, sur un Mac Book Pro M2 Max
- Ils couvrent notamment le temps de démarrage à froid en dev, le temps de HMR sur nœud racine et nœud feuille, le temps de build en production et la taille du bundle JS
- Par rapport à la version précédente
- Pour le build complet du projet Ant Design Pro, Webpack prend 16 secondes contre 3,9 secondes pour Mako, soit un gain de vitesse de 4x
- Pour le build complet du projet Ant Design Pro, Mako offre des hot updates quasiment en temps réel
- Pour le projet Smallfish, un framework hybride d’intranet basé sur RSC, le temps de build du projet scaffold est passé de 36,7 secondes à 1,2 seconde
- Mako propose aussi une fonctionnalité expérimentale appelée SSU, qui réalise le packaging et la mise en cache des dépendances, de manière similaire à l’implémentation précédente de MFSU
- Selon le ratio entre le code source et les dépendances, cela peut accélérer le démarrage à chaud en dev de 10 à 50 fois
1 commentaires
Avis sur Hacker News
Les performances peuvent être inférieures à celles d’esbuild ou de swc
Cet outil prend en charge des fonctionnalités non standard, ce qui peut créer une dépendance à un bundler précis
La principale force de Vite est de s’appuyer sur le système de plugins existant de rollup
Comme il y a « Rust » dans le titre, je pensais que c’était un compilateur Rust pour le web
Comme je ne suis pas développeur web, je ne vois pas bien ce que fait réellement un bundler
Je ne suis pas développeur web, mais je développe régulièrement des applications web
Rspack (ByteDance) a publié la version 1.0
Un autre bundler JavaScript intéressant basé sur Rust est Oxid / OXC
Je me demande ce qui se passera quand on atteindra les limites du bundling
Je me demande s’il y a un lien avec MakoTemplates