Skip to content
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

Scala 3.2.0-RC2 Open Community Build regressions tracker #15647

Closed
WojciechMazur opened this issue Jul 11, 2022 · 14 comments
Closed

Scala 3.2.0-RC2 Open Community Build regressions tracker #15647

WojciechMazur opened this issue Jul 11, 2022 · 14 comments

Comments

@WojciechMazur
Copy link
Contributor

WojciechMazur commented Jul 11, 2022

Each table contains a list of projects that failed to compile with Scala 3.2.0-RC2, but was successfully built with the given previous version.
A summary is based only on final and released candidate versions of Scala 3.
Information about the last Scala version used for the last successful build might not always be correct, due to lack of data (lack of build for that project with given Scala version)

  • Version - version of project being built, single version if both current and last successful build version of project are equal, otherwise 'LastSuccessfullProjectVersion -> CurrentProjectVersion>'
  • Build URL - link to the Open Community Build, containing logs and details of the failed project
  • Reproducer issue - link to the reproducer issue to be filled in

Open community build might have applied -source:X-migration flag if it is detected it could possibly fix the build.
Summary only contains projects that failed when compiling source or test files of at least 1 sub-project.

All tested projects: 818
Open Community build run: Build #17 - 3.2.0-RC2-all-projects

Notes for issue reproducers:
To reproduce builds locally you can use:

scala-cli run https://raw.githubusercontent.com/VirtusLab/community-build3/master/cli/scb-cli.scala -- reproduce --locally BUILD_ID

BUILD ID can be found in the BUILD_URL columns (eg. Open CB #BUILD_ID)
Helpful options for reproducer scripts:

  • --scalaVersion VERSION run build with the selected version of Scala (to check if the problem existed in given release)
  • --withUpstream - build also all upstream dependencies of failing project
  • --locally - checkout and build the project locally, without this flag it would try to start a minikube cluster to make the reproduction environment exactly the same as in the Open Community Build run (eg. to compile with the same version of the JDK)

Projects with last successful builds using Scala 3.1.3 [15]:

Project Version Reproducer issue Build URL
erikerlandson/coulomb 0.6.0-M3 #15650 Open CB #2209
gchudnov/swearwolf 2.1.0 see below Open CB #2127
h8io/borscht 1.2.9 #15652 Open CB #1888
indoorvivants/subatomic 0.0.7 see below Open CB #2450
mvv/typine 0.1-M4 see below Open CB #1938
ohze/akka-guice 3.3.1 see below Open CB #1944
ohze/couchbase-scala 9.2.0 see below Open CB #1688
ohze/sd-util 1.3.0 see below Open CB #2065
rssh/cps-async-connect 0.9.9-1 #15664 Open CB #2434
shiftleftsecurity/codepropertygraph 1.3.554 see below Open CB #2159
tabdulradi/happypath 0.3.0 #15612 Open CB #1795
tinkoff/phobos 0.15.1 see below Open CB #2428
zengularity/benji 2.2.0 see below Open CB #2183
zio/zio-config 3.0.1 #15649 Open CB #2187
shiftleftsecurity/codepropertygraph 1.3.553 -> 1.3.554 Not a regression Open CB #2159

Projects with last successful builds using Scala 3.1.3-RC5 [4]:

Project Version Reproducer issue Build URL
disneystreaming/smithy4s 0.12.16 -> 0.13.7 #15666 Open CB #2474
eikek/binny 0.4.0 -> 0.6.0 JDK version related issue Open CB #2400
kevin-lee/extras 0.14.0 -> 0.18.0 #15668 (won't fix) Open CB #2313
losizm/little-sql 3.0.0 -> 5.0.0 See below (not a regression) Open CB #1928

Projects with last successful builds using Scala 3.1.3-RC3 [4]:

Project Version Reproducer issue Build URL
giiita/refuel 2.0.2 #15670 Open CB #1884
jcouyang/meow 0.4.13 #15656 (not a regression) Open CB #1903
reactivemongo/reactivemongo 1.1.0-RC4 #15595 Open CB #2198
hedgehogqa/scala-hedgehog 0.8.0 -> 0.9.0 Not a regression, usage of flag --siteroot in Compile/scalacOptions Open CB #1889

Projects with last successful builds using Scala 3.1.1 [10]:

Project Version Reproducer issue Build URL
caspercommunityio/casper-scala-sdk 1.2.1 Not a regression, uses no longer allowed overrides of mutable variables Open CB #2116
earogov/ordset 0.1.0 #15677 Open CB #2105
gzoller/scala-reflection 1.1.4 Not a regression, see below Open CB #1887
johnhungerford/generic-schema 1.1.0 #15678 Open CB #2564
lorandszakacs/sprout 0.0.4 Not a regression, failure due to opaque type overrides Open CB #2136
narma/zio-docker 2.0.1-M1 Open CB #2141
nrinaudo/kantan.repl 1.1.1 Not a regression. Usage of compiler API (nme.REPL_NAME) removed in #14021 Open CB #2277
scala-tessella/ring-seq 0.4.0 #15673 Open CB #1976
thoughtworksinc/dsl.scala 2.0.0-M2 Open CB #1715
zygfryd/scala-zygf-cement 0.3.0 Not a regression, tries to access reflectively default parameters of Scala compiler API (Symbol.newNormalizedClassSymbol) in macros. Mainter is aware how unsafe and prone to changes it is Open CB #2034

Projects with no successful builds data [16]:

Project Version Reproducer issue Build URL
2m/yabai-scala 2.0.0 Not a regression, open trait + -Xfatal-warnings Open CB #1833
armanbilge/saslprep 0.1.1 see below, CB env specific Open CB #2110
arturopala/gitignore 0.1.0 Does not, and should not compile with any version of Scala 2 or Scala 3 Open CB #1846
benhutchison/scalaswingcontrib 1.9 Does not compile with any version of Scala Open CB #2047
ciaraobrien/dottytags 1.1.0 #15676 Open CB #1858
delimobil/fs2-hbase 0.1.0-RC1 Does not compile with any version of Scala Open CB #2398
giabao/asm-flow 0.1.0 Does not compile with any version of Scala Open CB #2129
jbwheatley/pact4s 0.4.0 Not a regression, duplicated -Wconf flags Open CB #2489
katrix/minejson 0.4.0 Does not compile with any version of Scala Open CB #2272
sciss/soundprocesses 4.14.2 Changes to the compiler API introduced in #14702 Open CB #2362
virtuslab/pretty-stacktraces 0.0.1-M1 Usage of method isTupleType renamed in ##13384 Open CB #1797
vladkopanev/cats-saga 1.0.0-RC2 #15686 (won't fix) Open CB #2371
@WojciechMazur WojciechMazur added stat:needs triage Every issue needs to have an "area" and "itype" label help wanted and removed stat:needs triage Every issue needs to have an "area" and "itype" label labels Jul 11, 2022
@WojciechMazur WojciechMazur changed the title Scala 3.2.0-RC2 regressions tracker Scala 3.2.0-RC2 Open Community Build regressions tracker Jul 11, 2022
@griggt
Copy link
Contributor

griggt commented Jul 12, 2022

The build failures of ohze/akka-guice, ohze/couchbase-scala, and ohze/sd-util are all due to the use of the sbt plugin "com.sandinh" % "sd-devops-oss". That plugin checks the value of CrossVersion.scalaApiVersion(scalaVersion):

https://github.com/ohze/sbt-devops/blob/771fbf9283d687e2fe68e5918adec23097cb3891/sd/src/main/scala/com/sandinh/sbtsd/SdPlugin.scala#L150

which has this behavior:

CrossVersion.scalaApiVersion("3.1.0")       // Some((3,1))
CrossVersion.scalaApiVersion("3.1.3")       // Some((3,1))
CrossVersion.scalaApiVersion("3.1.0-RC1")   // None
CrossVersion.scalaApiVersion("3.1.3-RC1")   // Some((3,1))
CrossVersion.scalaApiVersion("3.2.0")       // Some((3,2))
CrossVersion.scalaApiVersion("3.2.0-RC2")   // None      <---- this is our failing case
CrossVersion.scalaApiVersion("3.2.1-RC2")   // Some((3,2))

I'm not sure if this scalaApiVersion method is intended to be used with Scala 3 versioning (all the test cases are for Scala 2), but it seems the issue here is either with the plugin or sbt.

@armanbilge
Copy link
Contributor

Btw, I'm looking into my own project on that list. I don't think it's a regression, even the current main doesn't seem to be compiling locally even though CI is green. So something weird going on.

@som-snytt
Copy link
Contributor

@armanbilge technically, that is called a weird regression.

@griggt
Copy link
Contributor

griggt commented Jul 12, 2022

Some of the other build failures are not regressions per se, but expected based on changes from 3.1 to 3.2.

Examples:

  • indoorvivants/subatomic and mvv/typine apparently use non-local returns, which are no longer supported
  • shiftleftsecurity/codepropertygraph has pattern binding narrowing (this now warns and it appears they are using fatal warnings)
  • zengularity/benji uses refutable extractors (these now warn, and fatal warnings seem to be enabled)
  • gchudnov/swearwolf triggers a new deprecation warning ':' after symbolic operator is deprecated; use backticks around operator instead and appears to be using fatal warnings

@armanbilge
Copy link
Contributor

I offer CI evidence that my project is fine on 3.2.0-RC2.
https://github.com/armanbilge/saslprep/runs/7294875650?check_suite_focus=true

I don't know what's magic about CI. Seems to go badly wrong basically everywhere else, not just Scala 3 but Scala 2 as well.

@griggt
Copy link
Contributor

griggt commented Jul 12, 2022

Here's a reproducer for the tinkoff/phobos failure:

import scala.quoted.*

class ProductTypeField(using val quotes: Quotes)(val name: String)

def foo(using Quotes): ProductTypeField = ProductTypeField()("")
-- Error: ptf.scala:5:58 -------------------------------------------------------
5 |def foo(using Quotes): ProductTypeField = ProductTypeField()("")
  |                                          ^^^^^^^^^^^^^^^^^^
  |missing argument for parameter name of constructor ProductTypeField in class ProductTypeField: (name: String): ProductTypeField

However if I understand correctly this is caused by an intentional source breaking change in #14840?

@griggt
Copy link
Contributor

griggt commented Jul 12, 2022

Btw, I'm looking into my own project [saslprep] on that list. I don't think it's a regression, even the current main doesn't seem to be compiling locally even though CI is green. So something weird going on.

I cloned it and built and tested locally on 3.2.0-RC2 and it was fine, so 🤷

@WojciechMazur
Copy link
Contributor Author

@griggt great hob. The failure in shiftleftsecurity/codepropertygraph in theory should be handled as we do apply -source:3.2-migration flag if logs show us it could fix the build, the problem was caused by the fact of combination -Xfatal-warnings or -Wconf:e:any flag which do elevate warning about possible rewrite, into an error (#15589)

@WojciechMazur
Copy link
Contributor Author

@armanbilge I can confirm that the issue with your project is only happening in our testing environment due to a more strict resource policy (limited memory inside the container) though due to reduced -Xss leading to StackOverflowError. It can re reproduced when using the scala-cli script listed at the begging of the issue (without --locally flag). It can be ignored

@KacperFKorban
Copy link
Member

I took a look at jcouyang/meow:

  • I don't think it's a regression from 3.1.3-RC3. The compilation result changed since 3.1.3-RC3, but with 3.2.0-RC1 it gives an error on test-compile, and with 3.1.3-RC3 it crashed on compile.
  • The only Scala version it compiled correctly with is 3.0.0. However, versions 3.0.1 - 3.0.2 can be fixed by changing IO to be covariant.
  • 3.2.0-RC1 gives additional compilation errors related to implicit resolution. Issue: Possible regression: Ambiguous implicit extension methods error #15656

@KacperFKorban
Copy link
Member

When it comes to losizm/little-sql the error is caused by difference in java version. (deprecation of java method + -Werror)

@WojciechMazur
Copy link
Contributor Author

Similarly eikek/binny fails due to usage of method missing in Java 8.
Sidenote: open community build picks the lowest version of Java version defined in github workflows, otherwise it defaults to Java 11. Config both of the failing projects due to this issue was overridden.

@WojciechMazur
Copy link
Contributor Author

Failures observed in @gzoller /scala-reflection are not regressions either. Scala 3.1.3 introduced a bug fix, which prevented access to the protected constructor of case class. Code snippet from this project fails starting at that version and it is correct behavior (however it's not ok that it was introduced in a patch release, next minor would be more suitable):

case class SealedTraitInfo protected(
    name: String, 
    children: Array[RType]
  )

Adding a public apply method in the companion object or making the primary constructor public would fix the problem.

@ckipp01
Copy link
Member

ckipp01 commented May 24, 2023

Seeing that we're releasing 3.3.0 and many of the build urls now 404, are we ok just to close this @WojciechMazur?

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

No branches or pull requests

6 participants