Scala: двоичная несовместимость между выпусками - PullRequest
20 голосов
/ 13 января 2010

Почему двоичный файл Scala несовместим между различными выпусками?

Ответы [ 6 ]

21 голосов
/ 13 января 2010

Это связано с тем, как черты компилируются, потому что черты похожи на интерфейсы, но могут содержать реализацию. Это делает ОЧЕНЬ легко вносить изменения, которые не нарушают совместимость с исходным кодом, но нарушают двоичную совместимость, потому что, когда вы добавляете новый метод к признаку вместе с реализацией, вы должны перекомпилировать все, что реализует эту черту, чтобы они подхватит эту реализацию. Возможно, есть и другие проблемы, но я думаю, что они в основном совпадают.

9 голосов
/ 13 января 2010

Отсутствие поддержки JVM для специфических функций Scala, таких как упомянутые черты, и тот факт, что он активно развивается.

5 голосов
/ 08 декабря 2011

Вот предыстория этого, прямо из Одерского, если вы хотите понять конкретные языковые проблемы, которые вызывают проблемы:

http://www.scala -lang.org / узел / 9346

Стоит прочитать вместе с этим сообщением от Дэвида Поллака, если вы новичок в этой проблеме и хотите понять, какое влияние это может оказать на приложения:

http://lift.la/scalas-version-fragility-make-the-enterprise

2 голосов
/ 09 апреля 2016

Я реализовал поддержку Scala в japi-Compliance-Checker 1.6 и выполнил анализ обратной совместимости для всех версий Scala (как двоичной, так и исходной совместимости) .

Так что теперь вы можете просматривать критические изменения в деталях. Отчет доступен здесь: http://abi -laboratory.pro / java / tracker / timeline / scala /

Отчет обновляется через день, поэтому вы можете отслеживать изменения в последних версиях Scala.

enter image description here

2 голосов
/ 13 января 2010

Он все еще относительно молодой и активно развивается.

В новом выпуске произошли некоторые изменения, которые с нетерпением ожидались и помогли решить множество проблем, но сделать их обратно совместимыми было невозможно.

Потому что Sun вроде какИз-за ограниченности обновлений Java изменяется довольно медленно и, как правило, старается поддерживать обратную совместимость с горьким концом.Иногда это мешает прогрессу, но крупные компании любят стабильный язык.

Scala, с другой стороны, находится в руках небольшой группы ученых, и она (пока) широко не используется впромышленности, поэтому они имеют (или берут) больше свободы с изменениями.

0 голосов
/ 13 января 2010

Умм, нет. Получите ваши факты прямо. Не было необходимости в перекомпиляции * при переходе от 2.7.2.3b1 -> 2.7.2.3b2, что было для меня настоящим облегчением из-за большой клиентской базы с укоренившимся унаследованным кодом, использующим функции 2.7.2.3b1.

* Предупреждение - если вы по глупости не использовали код в scala.collection._ или scala.xml ._

...