prek - un meilleur pre-commit réécrit en Rust
(prek.j178.dev)- Un outil de remplacement de
pre-commitconçu pour améliorer la vitesse et l’efficacité de la gestion des hooks Git, tout en conservant la compatibilité avec la configuration et les hooks existants - Fourni sous la forme d’un binaire unique basé sur Rust, avec une architecture de traitement parallèle qui réduit le temps d’installation et d’exécution des hooks
- Déjà adopté par de grands projets comme CPython, Apache Airflow, FastAPI et Home Assistant
- Prend en charge la gestion intégrée de toolchains multilingues pour Python, Node.js, Go, Rust, Ruby, etc.
- L’intégration avec
uvaccélère la création d’environnements virtuels Python et l’installation des dépendances - Prend en charge nativement les environnements workspace (monorepo), avec une configuration possible pour chaque sous-projet
- Propose des commandes CLI améliorées comme
prek run,prek list,prek auto-update- Les options
--directoryet--last-commitpermettent de vérifier uniquement un répertoire donné ou les commits récents - L’option
--cooldown-daysfournit une fonction d’atténuation des attaques sur la supply chain
- Les options
- Intègre nativement en Rust certains hooks courants, avec prise en charge d’une exécution hors ligne et sans configuration
- Licence MIT
- Développé en s’inspirant du projet
uvd’Astral
5 commentaires
J’ai une question pour les développeurs : pourquoi, ces derniers temps, la plupart des projets semblent-ils être développés en Rust plutôt qu’en Golang ? La raison principale est-elle surtout la présence ou l’absence d’un GC ?
Je doute que le GC pose un problème à ce point pour ce projet. Parmi « la plupart des projets récents », j’ai l’impression que, dans bien des cas, le choix d’un langage de programmation relève davantage de la préférence que des avantages ou limites propres à un langage donné. Malgré cela, si l’on me demande quel avantage comparatif Rust a sur Go en tant que langage de programmation généraliste, je répondrais sans doute que c’est le niveau d’abstraction qu’offre Rust, ainsi que sa capacité à détecter diverses erreurs à la compilation. Bien sûr, Go a aussi des atouts face à Rust, comme une programmation asynchrone plus simple, un temps de compilation plus rapide et une syntaxe plus concise.
Eh bien, ce n’est qu’une supposition, mais je me dis que c’est peut-être parce que la barrière à l’entrée de Rust a disparu.
La plus grande difficulté, c’est qu’on code puis que la compilation continue d’échouer, mais l’IA s’en charge à notre place.
Avec Rust, une grande part des erreurs est détectée à la compilation, donc un échec de compilation donne presque l’impression d’aider l’IA à se remettre sur la bonne voie.
Je l’ai trouvé vraiment bien.