>>16ffi bindings don't force you to go low level
No, of course not. They do encourage it, though.
The biggest impediment to widespread adoption of new languages is the simple fact that, in the real world, any code written in the new language will eventually need to interface with code written in older languages, and cross language binding is a very painful task. Look at what has become of COM, Java, CLR... all touted as solutions to this m x n explosion of language bindings, and all disappointments because all they ever really accomplished was to codify interface requirements for a superset language (C++, Java, or C#) to the detriment of all other languages.
At least with C, everyone has pretty much recognized that this kind of effort is futile and tries as much as possible to solve it elsewhere. Hence, shitty but fast C ABI where you really need it and slow but robust data oriented IPC where you don't remains the way to go for useful interoperable software.