This tutorial shows you how to write plugins that provide wholesale new compilers. This is something you should use if you want to be compatible with Rebar3 prior to version 3.7.0, or when your compiler requires features outside of the scope of what is provided by the compiler plugin behaviour. Often applications have non-Erlang code that needs compiling, such as DTL templates, C code for generating parsers from PEG files, etc.