Can you explain in what way is that different from e.g. C++, where a compiler will take "-std=<C++ revision>" parameter which chooses the "edition" of the language?
And even link different versions together?
Because it sounds like Rust uses the same approach with the benefit of not hitting all the problems this causes... yet.