Java, Scala, Functional Programming, Concurrency, Macro.
annotation processors or bytecode generators. Using macros is a different story; it’s usually no different from calling a method. The fact that error messages are not always perfect is a problem, but that’s a matter of maturing the ecosystem, not a fundamental issue of the entire approach. While