scala binary-compatibility

Scala: incompatibilidad binaria entre lanzamientos.



binary-compatibility (6)

Aquí encontrará antecedentes sobre esto, directamente de Odersky, si desea comprender los problemas específicos del idioma que causan problemas:

http://www.scala-lang.org/node/9346

Vale la pena leerlo junto con esta publicación de David Pollack si eres nuevo en el tema y quieres comprender el impacto que esto puede tener en las aplicaciones:

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

¿Por qué Scala es binario incompatible entre diferentes lanzamientos?


Falta de compatibilidad con JVM para características específicas de Scala, como los rasgos mencionados y el hecho de que está evolucionando activamente.


He implementado el soporte para Scala en el verificador de cumplimiento de japi 1.6 y he realizado un análisis de compatibilidad con versiones anteriores para todas las versiones de Scala (compatibilidad con fuente y binario).

Así que ahora puedes ver los cambios de última hora en los detalles. El informe está disponible aquí: http://abi-laboratory.pro/java/tracker/timeline/scala/

El informe se actualiza cada dos días, para que pueda monitorear los cambios en las versiones recientes de Scala.


Tiene que ver con la forma en que se compilan los rasgos, porque los rasgos son como interfaces pero pueden contener la implementación. Esto hace que sea MUY fácil realizar cambios que no rompan la compatibilidad de origen sino que rompen la compatibilidad binaria, porque cuando agrega un nuevo método a un rasgo junto con una implementación, tiene que volver a compilar todo lo que implemente ese rasgo para que recogerá esa implementación. Probablemente haya otros problemas, también, pero creo que en su mayoría están en la misma línea.


Todavía es relativamente joven y está en desarrollo activo.

Hay algunos cambios en la nueva versión que se esperaban ansiosamente y que ayudan con muchos problemas, pero no fue posible hacerlos compatibles con versiones anteriores.

Debido a que Sun es un poco restrictivo con respecto a las actualizaciones, Java cambia bastante lentamente y, por lo general, intenta seguir siendo compatible con el extremo amargo. A veces esto obstaculiza el progreso, pero a las grandes empresas les encanta un lenguaje estable.

Scala, por otro lado, está en manos de un pequeño grupo de académicos, y no es (todavía) muy utilizado en la industria, por lo que tienen (o toman) más libertad con los cambios.


Umm no. Aclare sus hechos. No fue necesario volver a compilar * al pasar de 2.7.2.3b1 -> 2.7.2.3b2, lo que fue un verdadero alivio para mí debido a la gran base de clientes que teníamos con el código heredado arraigado que usa características 2.7.2.3b1.

* Advertencia: a menos que haya utilizado tontamente el código en scala.collection._ o scala.xml._