Yes. But sometimes this is not possible.
Most of the time the target language is less expressive and it is impossible to define the source language as a library.
For instance, to support "par_or" as a library, we rely on closures, runtime debug info (for error messages), stackful coroutines (not generators), and deterministic finalization (not garbage collection).
Except for closures, these are all unusual features.
So, another valid question would be why not maintain the language runtime as an external library? Because it is impossible, most of the time.
Francisco