Scheme to JavaScript compilation
Florian Loitsch · OpenGrey (Institut de l'Information Scientifique et Technique) · 2009
Cette these presente un compilateur de Scheme vers JavaScript. Bien que tres proches, ces deux langages different dans des points majeurs. En particulier, les continuations et la recursivite terminale, qui n'existent que dans Scheme, sont importantes dans le contexte d'une telle compilation. Dans ces travaux nous montrons que, sans ces deux fonctionnalites, produit du code aussi efficace que du code ecrit a la main. Cependant, ce langage reduit n'est pas conforme a R5RS, la specification de Scheme, mais represente un sous-langage pragmatique. Dans cette configuration est utilise quotidiennement dans notre projet. Bien que desactive par defaut, permet aussi la recursivite terminale et les continuations. Nous presentons dans cette these une implementation de la recursivite terminale qui se base sur la technique des trampolines. Elle a la propriete interessante de faciliter la coexistence d'un code genere et d'un code JavaScript existant. Notre implementation des continuations est une amelioration des continuation a base d'exceptions. Nous avons adapte des techniques developpees pour des continuations 'one-shot' (utilisees par exemple pour la migration). Pour capturer l'essence de notre algorithme de compilation des continuations nous avons developpe, une version canonique de notre implementation. Independant des fonctionnalites non-standard de Scheme, comme les exceptions, nous proposons comme alternative a CPS. Pour une version simplifiee de Scheme nous avons prouve que est correct.