This pattern [(multi-stage programming)], which I’ll refer to as “biphasic programming,” is characterized by languages and frameworks that enable identical syntax to express computations executed in two distinct phases or environments while maintaining consistent behavior (i.e., semantics) across phases. These phases typically differ temporally (when they run), spatially (where they run), or both.
An older (2017) page on multi-stage programming
Winglang (“a programming language for the cloud”), the author’s language
The scala 3 page on multi staged programming: https://docs.scala-lang.org/scala3/reference/metaprogramming/staging.html