Hi all,

The Kafka build currently includes support for Scala 2.9, which means that
it cannot take advantage of features introduced in Scala 2.10 or depend on
libraries that require it.

This restricts the solutions available while trying to solve existing
issues. I was browsing JIRA looking for areas to contribute and I quickly
ran into two issues where this is the case:

* KAFKA-1351: "String.format is very expensive in Scala" could be solved
nicely by using the String interpolation feature introduced in Scala 2.10.

* KAFKA-1595: "Remove deprecated and slower scala JSON parser from
kafka.consumer.TopicCount" could be solved by using an existing JSON
library, but both jackson-scala and play-json require 2.10 (argonaut
supports Scala 2.9, but it brings other dependencies like scalaz). We can
workaround this by writing our own code instead of using libraries, of
course, but it's not ideal.

Other features like Scala Futures and value classes would also be useful in
some situations, I would think (for a more extensive list of new features,
see
http://scala-language.1934581.n4.nabble.com/Scala-2-10-0-now-available-td4634126.html
).

Another pain point of supporting 2.9.x is that it doubles the number of
build and test configurations required from 2 to 4 (because the 2.9.x
series was not necessarily binary compatible).

A strong argument for maintaining support for 2.9.x was the client library,
but that has been rewritten in Java.

It's also worth mentioning that Scala 2.9.1 was released in August 2011
(more than 3.5 years ago) and the 2.9.x series hasn't received updates of
any sort since early 2013. Scala 2.10.0, in turn, was released in January
2013 (over 2 years ago) and 2.10.5, the last planned release in the 2.10.x
series, has been recently released (so even 2.10.x won't be receiving
updates any longer).

All in all, I think it would not be unreasonable to drop support for Scala
2.9.x in a future release, but I may be missing something. What do others
think?

Ismael

Reply via email to