Objective Modula-2 is a superset of the Modula-2 programming language (ModulaTwo) adding an OOP layer that supports reflection, dynamic message dispatch (late binding) and both static and dynamic typing. Its object system is based on the object model of Smalltalk and it uses the runtime library of Objective-C to support the Cocoa and GNUstep APIs natively. Objective Modula-2 is developed and maintained by the non-profit open source Objective Modula-2 project.
Differences to Modula-2
Objective Modula-2 is a dialect of Modula-2 based on the PIM4 language report in Wirth's fourth edition of "Programming in Modula-2" with some features omitted and some other features added.
No local modules
No subrange types
No EXPORT statement
No WITH DO statement
Binary literals use radix 2 instead of radix 8
Character code literals use radix 16 instead of radix 8
Variant records are replaced by Oberon-style extensible records
Pragma delimiters (*$ and *) are replaced by <* and *> as in ISO Modula-2
Type conversion functions are replaced by a new type conversion operator ::
Array indices always start with zero
Variables are always exported read-only
Set and enumeration types cannot be anonymous
Named elements of sets and enumerations must be qualified, fixing a design flaw of Modula-2