Recursive Transcompiling is the process of applying the notion of [[Source-to-source compiler|Transcompiling]] recursively, to create a pipeline of transformations which repeatedly turn one technology into another.
{{R from merge}}
By repeating this process, one can turn A -> B -> C -> D -> E -> F and then back into A(v2). Some information will be preserved through this pipeline, from A -> A(v2), and that information (at an abstract level) demonstrates what each of the components A-F agree on.<ref>Digital Research (1981): ''XLT86 - 8080 to 8086 Assembly Language Translator - User's Guide''. Digital Research Inc, Pacific Grove ([http://www.s100computers.com/Software%20Folder/Assembler%20Collection/Digital%20Research%20XLT86%20Manual.pdf]).</ref>
{{R to section}}
In each of the different versions that the [[Source-to-source compiler|Transcompiler]] pipeline produces, that information is preserved<ref>{{cite web | url=http://martinfowler.com/bliki/TransparentCompilation.html | title=Transparent Compilation | date=February 12, 2013 | accessdate=February 13, 2013 | author=Fowler, Martin}}</ref>. It might take on many different shapes and sizes, but by the time it comes back to A (v2), having been transcompiled 6 times in the pipeline above, the information returns to it's original state.
This information which survives the transform through each format, from A-F-A(v2), is (by definition) derivative content or [[derivative code]].
Recursive transcompiling takes advantage of the fact that Transcompilers may either keep translated code as close to the source code as possible to ease development and [[debugging]] of the original source code, or else they may change the structure of the original code so much, that the translated code does not look like the source code. There are also debugging utilities that map the transpiled source code back to the original code; for example, [[JavaScript]] source maps allow mapping of the JavaScript code executed by a [[web browser]] back to the original source in a transpiled-to-JavaScript language.<ref name="javascript-sourcemaps">{{cite web | url=http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/ | title=Introduction to JavaScript Source Maps | publisher=html5rocks.com | date=21 March 2012 | accessdate=21 January 2015 | author=Seddon, Ryan}}</ref>