Description
Now that we change the artifact name, there's an opportunity to do binary breaking changes. (Though maybe it's a bad idea, and we should only consider it when we release a 3.0.0.)
In particular, I'm thinking of the inconsistency in the packages used for backported library classes, for example
scala.collection.compat.immutable.LazyList
, vsscala.util.Using
I assume the motivation to put LazyList
in a compat
sub-package was to avoid split packages, i.e., to ensure that this module doesn't add any classes into packages that exist in the 2.11 / 2.12 standard library? Since it's not done consistently I think we should just use the original package name for backports (like scala.util.Using
does).
A small but maybe still realistic issue is that the recommended import scala.collection.compat._
brings an immutable
into scope which is not scala.collection.immutable
.
The scala.collection.compat
package object still makes sense for extension methods (import scala.collection.compat._; xs.to(List)
). Though, given that this is now library-compat
, should it just be scala.compat._
instead? There might be backports of non-collection extension methods in the future. I'm not sure.