Why is Hello World larger in Modula-3 than in C?

Modula-3 programs are slightly larger than C programs because the generated code includes runtime type information, and runtime checks for out-of-bound array references and NIL pointers. Many of these checks could be removed by a more sophisticated compiler.

The fixed runtime is substantially larger (there is no runtime support in C). It contains a garbage collector, a thread runtime, and exception support. It is typically placed in a dynamically linked library, shared on disk and in memory between all the Modula-3 programs.