Kafka 0.8 and trunk by default have SBT set up to cross-compile 2.8.0,
2.8.2, 2.9.1 and 2.9.2, and it defaults to 2.8.0.

I assume that one of the major contributors requires 2.8.0.  Any
approximation on how long will that last?
Dropping 2.8.0 would be beneficial because some uses of Java Conversions
is replaced with Java Converters (in 2.10 +), and Java Converters was not
added until 2.8.1.
http://stackoverflow.com/questions/8301947/what-is-the-difference-between-j
avaconverters-and-javaconversions-in-scala

https://issues.apache.org/jira/browse/KAFKA-717 is attempting to add build
support for Scala 2.10.  The required changes to support 2.10 use Java
Converters, which is not available in 2.8.0.

The other item required to support Scala 2.10 is to move from
scala.StaticAnnotation to scala.annotation.StaticAnnotation.
Scala 2.10.x has only scala.annotation.StaticAnnotation.
Scala 2.9.x has both scala.StaticAnnotation (deprecated) and
scala.annotation.StaticAnnotation.
Scala 2.8.x has only scala.StaticAnnotation

Dropping support for 2.8.x entirely and supporting only 2.9.x and 2.10.x
would make 2.10.x support easy.
If 2.8.2 is required (but not 2.8.0), then some sort of conditional
compile or two flavors of the source code where
scala.annotation.StaticAnnotation is used will be required.  Use of
StaticAnnotation is very limited.
If 2.8.0 must be kept, then two versions of all code that uses Java
Conversions APIs will also need to be maintained.

I can't find any discussions about 2.8.0 usage requirements.  I also don't
know enough about sbt to configure cross compilation to use different
source files for different cases, which would solve the problems above but
add some maintenance burden.


Reply via email to