Languages with type systems designed for 1 are trying to figure out how to enable 2 without breaking backwards compatibility.
(Languages without a full runtime are in a very bad position here.)
Sparse is a great way to extend the C type system; sure, it's no ML type calculus, but it gives us a lot of the things we need (e.g. __user pointers, endian annotations).
@WomanCorn Some of us still hack on kernels, where your program *is* the runtime.
As https://www.usenix.org/system/files/1311_05-08_mickens.pdf puts it,
"if you find yourself drinking a martini and writing programs in garbage-collected, object-oriented Esperanto, be aware that the only reason that the Esperanto runtime works is because there are systems people who have exchanged any hope of losing their virginity for the exciting opportunity to think about hex numbers"