The availability of compilers for a specific architecture is orthogonal to the language.
Pascal dialects already in the late 80's, early 90's, allowed for:
- type safe sub ranges
- proper strings
- type safe enumerations, enumerations as vector indexes
- type safe allocation (new vs malloc)
- type safe out parameters via references instead of pointers
- bounds checking and checked arithmetic (you can explicit disable them if required for performance)
- real modules via units
- pointer arithmetic is more explicit
As for MicroPython, MikroPascal from MikroElektronika supports all those tiny chips.
http://www.mikroe.com/mikropascal/
The availability of compilers for a specific architecture is orthogonal to the language.