Почти все современные ОС планируют потоки для нескольких ядер, AFAIK. Конечно, ни у одного варианта Unix, с которым я когда-либо играл, нет ни малейшей проблемы, и я совершенно уверен, что все Windowses справляются с этим хорошо. Компилятор не проблема, так как нативные потоки - это вещи уровня ОС, поэтому компилятор просто передает системный вызов вниз.
Есть несколько языков (таких как Ruby), которые не используют собственные потоки, а вместо этого используют свои собственные «зеленые» потоки, которые реализованы в интерпретаторе и, следовательно, выглядят как единый поток для ОС, но они скорее исключение, чем правило, и, как правило, в документах видно, что происходит.