'''Recursive transpiling''' (or '''recursive transcompiling''') is the process of applying the notion of [[Source-to-source compiler|transpiling]] recursively, to create a pipeline of transformations (often starting from a [[single source of truth]]) which repeatedly turn one technology into another.{{not in citation given|date=June 2017}}
{{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=13 February 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 its 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 transpiling takes advantage of the fact that transpilers 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>