Compile time
Compile time usually refers to operations performed by a compiler, requirements that must be met by source code for it to be successfully compiled, or properties of the program that can be reasoned about at compile time.
The actions undertaken at the compilation phase of the program life cycle are referred to as compile-time, static, and sometimes as early. The term static is used in order to stress that the properties provable at compile-time stay valid for the program as a whole, and thus do not depend on the program's dynamic execution state. The term early is used as an opposite to late.
In particular statically typed languages are often backed with the argument that errors need to be detected as early as possible. Some languages were specifically designed in a way to support an extensive static analysis of the program semantics. Various statically typed languages such as Java, Rust, V (Vlang), or Zig, check types at compile time to ensure type safety.
The phases that follow compile time are link time and run time.
Compile-time actions are undertaken by a compiler or interpreter. These include lexical, and syntax and semantic analysis followed by code generation, maintenance of the language development environment and error diagnostics. In a compiler the generated code is usually intermediate. In an interpreter the code is targeted for a corresponding virtual machine and is immediately executed on it.
Examples of use: compile-time error detection, compile-time object, compile-time constant, static analysis, static typing, static expression, early binding.