Skip to content

Release 2.13.0-RC3 #628

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
54 tasks done
adriaanm opened this issue May 27, 2019 · 21 comments
Closed
54 tasks done

Release 2.13.0-RC3 #628

adriaanm opened this issue May 27, 2019 · 21 comments

Comments

@adriaanm
Copy link
Contributor

adriaanm commented May 27, 2019

For every Scala release, make a copy of this file named after the release, and expand the variables.
Ideally this should become a script you can run on your local machine. The only missing piece is programmatic triggering of travis jobs with custom config.

Variables to be expanded in this template:

  • SCALA_VER_BASE="2.13.0"
  • SCALA_VER_SUFFIX="-RC3"
  • SCALA_SHA=a73bacc2499170688eda6e0b2a912be5524da737
  • DIST_SHA=4507b42f85a51cec140d1fb230a2ea34d02eb697
  • SCALA_VER="$SCALA_VER_BASE$SCALA_VER_SUFFIX"

Key links:

N weeks before the release

  • Wind down PR queue. There has to be enough time after the last (non-trivial) PR is merged and the next phase. The core of the eco-system needs time to prepare for the final!
  • Triage scala/bug and scala/scala-dev tickets
  • Create next scala/scala milestone, move the magical "Merge to 2.13.x" description to it (so Scabot uses it as default for new PRs)
  • Close the scala/bug milestone, create next milestone, move pending issues
  • Close the scala/scala-dev milestone, create next milestone, move pending issues
  • Check PRs assigned to the milestone, also check WIP
  • Announce expected release date and current nightly "release candidate" (nightly sha-mangled version) at https://scala-ci.typesafe.com/artifactory/scala-integration/ on https://contributors.scala-lang.org/c/announcements

Release announcement / notes

N days before release

  • Announce no more PRs will be merged unless last-minute regressions are found. Re-iterate current nightly sha version for testing.
  • Community build
  • Run scala-collections-laws and evaluate results
    • Rex Kerr (@Ichoran) is the keeper and expert on this
  • Windows Jenkins job
  • Check any merged PRs accidentally assigned to the next milestone in this branch, and re-assign them to this milestone
  • Merge in any older release branch (decided not to)
  • Check module versioning (is everything in versions.properties up to date?)
  • On major release, bump PickleFormat version

Point of no return

Check availability

When everything is on maven central

Modules

Announcements

Afterwards

@adriaanm
Copy link
Contributor Author

Still deciding whether we need an RC3, but in the meantime...

@adriaanm
Copy link
Contributor Author

adriaanm commented May 27, 2019

A few small tweaks to consider:

  1. new immutable.HashSet() no longer works (add such constructor).
  2. FutureConverters: use asJava, not toJava, as they wrap.
  3. maybe look again at the API changes of Option? (Make Option extend IterableOnce scala#8038 (comment)) (edited)
  4. A default implementation of knownSize in IterableOnce rather than IterableOnceOps
  5. Rename keyStepper and valueStepper in Map to mirror keysIterator and valuesIterator

@adriaanm
Copy link
Contributor Author

Plus the PRs already scheduled: https://github.com/scala/scala/milestone/80

@Philippus
Copy link
Member

Philippus commented May 27, 2019

Does that mean scala/scala#8063 is back on the table? as per scala/scala#8063 (comment)

@adriaanm
Copy link
Contributor Author

Perhaps. We're still contemplating whether we even want to do an RC3. Once we do, we'll still be extremely conservative about what goes in, because the RC cycle has to converge sooner rather than later...

@adriaanm
Copy link
Contributor Author

adriaanm commented May 28, 2019

To be a bit more concrete: I'm warming up to doing an RC3, but I want the rule of thumb to be that a PR has to be an extremely clear win. There are two kinds of changes we can still make, in descending priority:

  1. fixes for critical regressions (i.e. used to work in 2.12, now broken and no clear workaround): this will block a release and we will delay accordingly: the only PR that comes close to meeting this requirement is Remove unnecessary type parameter on IterableOnce#stepper scala#8083
  2. small improvements that are clear wins but that couldn't land in 2.13.0 due to binary compatibility issues; these are opportunistic inclusions triggered by the need for (1)-level changes. We cannot afford to hold up the release for them, but they would be nice to have.

Let's be very critical in assigning even (2) status to the PRs currently in queue. I really appreciate everyone's drive for perfection and the final polish -- I really do -- but now is the time to grit our teeth and accept that 2.13.0 is as good as we can make it, and by that I mean very, very good. It's going to be an outstanding release. Now we just need to get it to the final :-)

@adriaanm
Copy link
Contributor Author

adriaanm commented May 28, 2019

As a separate comment, because timing is everything right now: if we do an RC3 (and I still need to run it by the team), it would have to be tomorrow Wed May 29th for us to get the final out before Scala Days. I hope we can all agree the latter's a suitable hard deadline :-)

@lrytz
Copy link
Member

lrytz commented May 28, 2019

Does that mean scala/scala#8063 is back on the table

We'd need to have a PR very quickly to consider it. And it should be done for both Double and Float.

@lrytz
Copy link
Member

lrytz commented May 28, 2019

Here's the list of methods that would need to be implemented if Option extended IterableOnceOps[A, IterableOnce, IterableOnce[A]]:

  def scanLeft[B](z: B)(op: (B, A) => B): IterableOnce[B] = ???
  def take(n: Int): Option[A] = ???
  def takeWhile(p: A => Boolean): Option[A] = ???
  def drop(n: Int): Option[A] = ???
  def dropWhile(p: A => Boolean): Option[A] = ???
  def slice(from: Int, until: Int): Option[A] = ???
  def flatMap[B](f: A => IterableOnce[B]): IterableOnce[B] = ???
  def flatten[B](implicit asIterable: A => IterableOnce[B]): IterableOnce[B] = ???
  def zipWithIndex: Option[(A, Int)] = ???
  def span(p: A => Boolean): (Option[A], Option[A]) = ???
  def tapEach[U](f: A => U): Option[A] = ???

@lrytz
Copy link
Member

lrytz commented May 28, 2019

And here's the list of methods that Option would acquire by extending IterableOnceOps: https://gist.github.com/lrytz/4900473bba1640dda9d7a52aa3c0490d/revisions?diff=unified#diff-03c850668807a029aa19d81bfc077d9d

@lrytz
Copy link
Member

lrytz commented May 28, 2019

If I remember correctly, our argument for making Option extend IterableOnce, but not IterableOnceOps, was that it fixes the issue we were discussing (scala/bug#11033) without pulling a large number of new methods into Option (see gist link above). This leaves the door open to revert that change if we ever can / want to, for example if type inference for overloaded methods is improved to fix the issue directly.

I think we should not extend IterableOnceOps, it's a really large interface. Maybe we should re-consider the deprecation of option2iterable? This would be the least-breaking change. We could deprecate it in 2.14, but make sure to add methods that are commonly used on Option via option2iterable and missing in Option today.

@adriaanm
Copy link
Contributor Author

Dropping the deprecation SGTM

@adriaanm
Copy link
Contributor Author

Ok, all RC3 PRs have been merged. We'll be working through the community build breakage today and cut RC3 as soon as we're back to as many green projects as we had for RC2.

@adriaanm
Copy link
Contributor Author

Community build looking good! Doing another rebuild, but the predecessor to https://scala-ci.typesafe.com/job/scala-2.13.x-integrate-community-build/2218/console is already at 122 green (RC2 was at 123)

@SethTisue
Copy link
Member

RC3 jars are on Maven Central

@sjrd
Copy link
Member

sjrd commented May 29, 2019

I'll publish Scala.js 0.6.28 and 1.0.0-M8 (which was just released) for RC3 later tonight. Right I gotta go, unfortunately.

@sjrd
Copy link
Member

sjrd commented May 29, 2019

Scala.js 0.6.28 and 1.0.0-M8 built for 2.13.0-RC3 are on their way to Maven Central.

@SethTisue
Copy link
Member

@SethTisue
Copy link
Member

SethTisue commented May 31, 2019

it would be nice to have three-state checkboxes here: not done, done, intentionally skipped as N/A this time. I think Adriaan typically uses unchecked as the N/A, I use checked :-)

@dwijnand
Copy link
Member

dwijnand commented Jun 3, 2019

Checked and strikethrough or bullet-point and strikethrough works well.

  • bulk update Jira tickets
  • bulk update Jira tickets

@SethTisue
Copy link
Member

good idea, I will use that

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants