I have the following quotation from my compiler's course (in the context of graph coloring):Because it is slow, graph coloring tends to be used in batch  compilers, while linear scan tends to be used in JIT compilers.I couldn't find a clear definition online. So, what makes a compiler be a batch compiler?
What is a batch compiler?
compilers
A JIT (Just-In-Time) compiler compiles code at run-time, i.e. as the program is running. Therefore the cost of compilation is part of the execution time of the program, and so should be minimized.The opposite of this is an ahead-of-time (AOT) compiler which is basically synonymous with batch compiler. This converts the source code to machine code and then just the machine code is distributed. Therefore, the compiler can be very slow as it doesn't impact the execution time of the resulting program.Nowadays, when people say compiler they typically mean an AOT compiler. Indeed, the term AOT compiler only really started becoming popular relatively recently when people started making AOT compilers for JIT compiled languages, particularly JavaScript. Many of these languages, e.g. C#, compile to an intermediate language for a VM which is then JIT compiled to machine code at run-time. The term AOT compiler has the connotation that the source code will be compiled directly to machine code, so no form of JIT compilation is required at run-time.Batch compiler is a bit of an archaic term at this point.  The real contrast to a batch compiler when the term was popular was an incremental compiler.  Incremental compilation is often associated with languages like Lisp where you had a REPL and you could interactively request the language implementation to compile a specific function. If a function was executed whose compilation had not been requested before, it would typically be interpreted. A batch compiler, by contrast, compiled all functions at once, i.e. in a batch.