Draft: réécriture de l'évaluation avec une machine à pile
Avantages :
- Les objets susceptibles d'être référencés vivent à tout moment sur la pile, donc le GC a des chances de tourner au meilleur moment possible, plutôt qu'entre chaque expression dans une séquence.
- C'est beaucoup plus rapide.
- Les implémentations actuelles des entiers, rationnels et flottants avec
value_tne changeront que très peu. Il en va de même pourgc_t(le garbage collector). - Sera utilisable pour un mode REPL.
Détails d'implémentation :
- Il faut analyser statiquement les fonctions pour déterminer les variables capturées dans des clôtures (closures).
- Les
lambdadoivent également être détectés avant la génération de code, sinon on doit les générer après là où ils sont utilisés, et c'est plus embêtant à gérer. - Pas encore sûr mais je ne sais pas à quel point les continuations (via
call/ccoucall-with-current-continuation) seront faisables.