Move ZincCompiler to a separate module and run it independently, close #2289, close #2290