typelevel / algebra

Experimental project to lay out basic algebra type classes
https://typelevel.org/algebra/
Other
378 stars 69 forks source link

publish for Scala 2.13.0-M5 #219

Closed erikerlandson closed 5 years ago

erikerlandson commented 5 years ago

Dependency for https://github.com/non/spire/issues/742

erikerlandson commented 5 years ago

available for 2.13.0-M5: scalacheck-1.14.0, scalatest-3.0.6-SNAP3 missing cats, which in turn depends on https://github.com/typelevel/machinist/issues/31

update - now also scalatest-3.0.6-SNAP4 https://github.com/scalatest/scalatest/issues/1409#issuecomment-431650454

erikerlandson commented 5 years ago

plugin dependency sbt-scalajs can be upgraded to 0.6.25, to get 2.13.0-M5

johnynek commented 5 years ago

I think scalacheck 1.14 is binary incompatible with 1.13.6 so I think this makes the laws package binary incompatible.

Which may be okay. I guess we can bump a version.

erikerlandson commented 5 years ago

I also don't see a huge problem with doing what scalatest did with "3.0.6-SNAPx", although presumably scala 2.13 is the future so moving in that direction on a non-snapshot release is good imo.

ceedubs commented 5 years ago

@johnynek Unfortunately I don't think that it's compatible (pre-Scala 2.12 at least). See https://github.com/typelevel/cats/issues/2449 (where you said the same). I'd love to find out otherwise though :\

erikerlandson commented 5 years ago

machinist-0.6.6 now available with 2.13.0-M5

SethTisue commented 5 years ago

note that @xuwei-k did some work in this direction at #217

erikerlandson commented 5 years ago

cats PR for 2.13.0-M5: https://github.com/typelevel/cats/pull/2589

erikerlandson commented 5 years ago

cats 1.5.0-RC0 https://github.com/typelevel/cats/releases/tag/v1.5.0-RC0

erikerlandson commented 5 years ago

fooling around with a 2.13 build, I think the dependencies resolve but I'm running into IterableOnce vs TraversableOnce incompatabilities pre vs post 2.13

[error] /home/eje/git/algebra/core/src/main/scala/algebra/instances/map.scala:53:24: type TraversableOnce in package scala is deprecated (since 2.13.0): Use IterableOnce instead of TraversableOnce
[error]   override def sum(as: TraversableOnce[Map[K, V]]): Map[K, V] = {
[error]                        ^
[error] /home/eje/git/algebra/core/src/main/scala/algebra/instances/map.scala:55:8: method foreach in class IterableOnceExtensionMethods is deprecated (since 2.13.0): Use .iterator.foreach(...) instead
[error]     as.foreach { m =>
johnynek commented 5 years ago

In idea I’ve had is replace the TraversableOnce methods with two methods of the same name. One on Iterator one on Iterable. The Iterable one by default can call the other.

Working with Iterator is pretty critical in big data systems that don’t always allow you to iterate twice.

What do you think?

erikerlandson commented 5 years ago

@johnynek that seems totally sane to me - the only case that seems ambiguous there is Stream, which is being replaced(?) by LazyList in 2.13. Stream/LazyList are (iiuc) neither Iterator nor Iterable.

erikerlandson commented 5 years ago

btw I was not planning on fixing TraversableOnce related issures. unless nobody else wants to :)

erikerlandson commented 5 years ago

@johnynek, I have been assuming that somebody familiar with this code would be better suited to this, but I see that nobody has been working much with this code since late 2016 :smile: I'll take a run at it unless somebody else is planning to.

SethTisue commented 5 years ago

Stream and LazyList are both Iterables

johnynek commented 5 years ago

@erikerlandson I don’t think anyone is working on it, thanks.

I’m pretty skeptical the 2.13 churn is going to be a net positive. Twitter (and Stripe) are not even on 2.12 yet. I can’t imagine how long 2.13 will take.

erikerlandson commented 5 years ago

I'm sure the benefits of 2.13 are rather un-evenly distributed. My own interest in it is focused almost exclusively on https://github.com/scala/scala/pull/6050, and in my case the benefit is actually a side-effect of that work (better behavior of the resolution algorithm), not the original goal of by-name implicits.

johnynek commented 5 years ago

I’m really trying hard not to rant about how much work it is to keep sbt up to date and have publishing working reliably...

erikerlandson commented 5 years ago

@SethTisue this is a bit tangent, but the scaladoc list of super-types does not indicate anything about being a subclass of Iterable (however the code does).

SethTisue commented 5 years ago

but the scaladoc list of super-types does not indicate anything about being a subclass of Iterable (however the code does).

I see scala.Iterable[A] under "Linear supertypes", but maybe we're not talking about the same thing. if something here still seems wrong to you, please open a ticket in https://github.com/scala/bug

erikerlandson commented 5 years ago

I finally figured it out - the page I had was the companion object page, not the class page :/

SethTisue commented 5 years ago

what's next here? (just curious, just checking)

erikerlandson commented 5 years ago

If #221 is approved, that should be sufficient for a release built against 2.13, but @johnynek would know more about other release roadmap concerns.

larsrh commented 5 years ago

223

larsrh commented 5 years ago

Done.

SethTisue commented 5 years ago

scala/make-release-notes@261159060de4fd224c52c048d70ee5991cef90e7