Modula-3 supports interfaces, objects, generics, lightweight threads
of control, the isolation of unsafe code, garbage collection,
exceptions, and subtyping. Some of the more problematical features
of Modula-2 have been removed, like variant records and the built-in
unsigned numeric data type. Modula-3 is substantially simpler than other
languages with comparable power.