Skip to content

Draft: réécriture de l'évaluation avec une machine à pile

Lucas requested to merge wip/bytecode into main

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_t ne changeront que très peu. Il en va de même pour gc_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 lambda doivent é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/cc ou call-with-current-continuation) seront faisables.

Merge request reports

Loading