I'm working on an extension for the Rust language and, as far as I can tell, there seem to be two major ways of integrating a new language:
1. Add a bunch of MEF components (usually taggers?) for all of the features desired, with a minimal LanguageService.
2. Do everything through the LanguageService.
The LanguageService API feels a lot older, but seems to provide actually-useful defaults (like the ability to do brace matching easily). I've surveyed vsClojure, PTVS, and the F# extensions and they seem to all do things a bit differently. And, of course, the Ook sample does everything with MEF. What are the best practices around integrating a new language?
Extension source: https://github.com/cmr/VisualRust
Rust: http://www.rust-lang.org/
(Apparently I can't post links yet...)