Un compilateur source à source, transpileur ou transcompilateur est un type de compilateur qui prend le code source d'un langage de programmation et le compile dans un autre langage de programmation. Un compilateur source-à-source opère sur deux langages avec approximativement le même niveau d'abstraction, alors qu'un compilateur traditionnel compile un langage de haut niveau vers un langage de bas niveau.
Historique
Un des premiers compilateurs de ce type était le XLT86 de Digital Research en 1981, un programme écrit par Gary Kildall qui compilait du code .ASM pour le processeur Intel 8080 en code source .A86 pour le processeur Intel 8086.
Implémentations
Certains langages de programmation ont été supportés par un transpileur avant de l'être par un compilateur. Parfois un compilateur ne voit jamais le jour.
- Babel.js[1] est un transpileur qui permet de convertir du JavaScript (version ES2015 ou supérieure), CoffeeScript ou TypeScript en code compatible avec les navigateurs du marché (en ES5 par exemple).
- C++ (à cette époque "C avec classes") transcompilait en C avec le transpileur cfront.
- CoffeeScript, TypeScript, et toute la famille, vers du JavaScript.
- Efene, vers de l'Erlang.
- Eiffel vers du C.
- Haxe, vers JavaScript, PHP, C++, C#, et Java. Aussi compilable vers du bytecode comme celui d'ActionScript.
- Lisaac, vers du C.
- Mirah, vers du Java.
- PHP, vers le C++ via HipHop.
- Vala, vers du C.
- Xtend, vers du Java[2]
- Python peut être compilé vers du C grâce au compilateur Nuitka.
De plus en plus de langages aussi se compilent en JavaScript, une liste[3] existe classant ces transpileurs par famille et langages.
Références
- « Babel · The compiler for writing next generation JavaScript », sur babeljs.io (consulté le ).
- Eclipse Xtend
- (en) List of languages that compile to JS, sur GitHub