Ответ 1
Он работает в процессе, тщательно не разбивая семантику Scala между JVM и .NET.
Я задал этот вопрос еще в 2011 году в списке рассылки scala -tools, и ответ дал Мигель Гарсия, в котором он излагает общую картину:
Некоторые цитаты:
(1) В настоящее время выполняется предварительный просмотр Scala.Net. Как вы заметили, фаза стирания также проходит как часть трубопровода. Это "функция" версии предварительного просмотра, "функция", которая должна была быть включена потому что поддержки для CLR Generics еще не было (подробнее об этом ниже). Однако есть одно большое преимущество для запуска JVM-стиля стирание в Scala.Net: все программы Scala, которые полагаются на библиотека Scala уже может быть скомпилирована на .Net вместо ожидания для создания CLR Generics. Те программы, которые полагаются на Java JDK также могут быть скомпилированы с учетом поддержки IKVM API-интерфейсов JDK в Вопрос 1].
(2) Поддержка общих свойств CLR в Scala.Net. Основная мотивация поддерживает его взаимодействие с существующими сборками. В получив эту интероперабельность, позаботьтесь о том, чтобы не отделиться из семантики Scala. Другими словами, любая действительная программа Scalaдля запуска и получения тех же результатов на JVM и .NET. Что приносит нам к незавершенной работе [2]. Первоначальный прототип обрабатывает только С# подмножество Scala. Так что теперь я обращаюсь к остальным. Это больше, чем первоначально ожидалось, но важно охватить весь язык.
Несколько комментариев относительно взаимодействия с сборками .NET, в в частности, родные проблемы. Да, сборки CLR могут выражать использование "native int" (разные размеры для разных процессоров), P/Invoke of C-функции, экспортируемые DLL и т.д. Scala.Net не стремится делать что низкоуровневый обман. Интересующая способность сборки на уровне "Common Language Specification", т.е. какой обычно получается из любого компилятора С#, VB.NET и т.д. ( "обычно", т.е. за исключением использования атрибутов "[DllImport]" и связанных с ним С++ -изомов).
Цитата из спецификации CLI:
--- начало цитаты --- Общая спецификация языка (CLS) - CLS - это соглашение между разработчиками языка и каркасом (то есть, класс библиотеки). Он определяет подмножество CTS (Common Type System) и набор правил использования. Языки предоставляют своим пользователям наибольшую возможность доступа посредством реализации по крайней мере тех частей CTS, которые частью CLS. Аналогичным образом, рамки будут наиболее широко использоваться, если их публично экспортируемые аспекты (например, классы, интерфейсы, методы, и поля) используют только типы, которые являются частью CLS и которые придерживаются конвенции CLS. --- конец цитаты ---
посмотреть весь поток:
https://groups.google.com/forum/?fromgroups#!topic/scala-tools/JDjstK1_uvM