Les défis et les solutions des bibliothèques Fennel en un seul fichier

2025-08-13
Les défis et les solutions des bibliothèques Fennel en un seul fichier

Cet article explore les défis de la création de bibliothèques Fennel en un seul fichier, un dialecte Lisp embarqué dans Lua, en particulier les complexités liées à la gestion simultanée des macros et des fonctions. L'auteur dissèque méticuleusement le système de modules de Lua, notamment le fonctionnement de `package.loaded`, `package.preload` et `package.searchers`, en expliquant comment Fennel les utilise pour compiler et charger les modules. Le cœur de l'article se concentre sur la résolution des limitations des macros Fennel, telles que l'impossibilité d'exporter directement les macros et l'interdépendance entre les macros. Une solution ingénieuse est présentée, utilisant `eval-compiler` et `relative-require` pour regrouper les macros et les fonctions dans un seul fichier, et en traitant le chargement des macros en définissant manuellement la table `fennel.macro-loaded` lors de la compilation. Enfin, l'auteur décrit les améliorations futures possibles pour le système de macros Fennel, proposant la suppression des modules de macros, le chargement direct des modules complets lors de la compilation et l'adoption de l'approche de Clojure pour résoudre les dépendances des macros.

Développement