Login
📚 The Mojo Manual
Chapters ▾

Chapter 5: Metaprogramming

Many languages have facilities for metaprogramming: writing code that generates or modifies code. Python has facilities for dynamic metaprogramming: features like decorators, metaclasses, and many more. These features make Python very flexible and productive, but since they're dynamic, they come with run-time overhead. Other languages have static or compile-time metaprogramming features, like C preprocessor macros and C++ templates. These can be limiting and hard to use.

Mojo's compile-time metaprogramming system uses the same language as run-time programs, so you don't have to learn a new language—just a few new features. The primary features you'll need to learn are:

  • Compile-time statements and expressions
  • Compile-time parameters
  • Generics and traits