Hi Ismael,

Thanks for the reply. I don't think the demand is high at the moment, but
it will increase overtime.
What do you think about me submitting a PR now with only the changes I
mention in group a)? They are small changes like dropping extra
parenthesis, or stopping shadowing names. The resulting code would be
cleaner Scala that can cross compile.

Thanks again,
———
Josep Prat

Aiven Deutschland GmbH

Immanuelkirchstraße 26, 10405 Berlin

Amtsgericht Charlottenburg, HRB 209739 B

Geschäftsführer: Oskari Saarenmaa & Hannu Valtonen

m: +491715557497

w: aiven.io

e: josep.p...@aiven.io

On Fri, Oct 8, 2021, 16:22 Ismael Juma <ism...@juma.me.uk> wrote:

> Hi Josep,
>
> Thanks for looking into this. As you said, it seems like there are a number
> of rough edges still. Do we have many users asking for this right now? If
> not, it may make sense to wait for things to get a bit more mature before
> adding the burden of a third Scala version. Ideally, we would drop Scala
> 2.12 before we add Scala 3 support.
>
> Ismael
>
> On Fri, Oct 8, 2021 at 6:07 AM Josep Prat <josep.p...@aiven.io.invalid>
> wrote:
>
> > Hi there,
> > For the last month I was actively working on migrating Apache Kafka to
> > Scala 3. For what I could see, Apache Kafka is the biggest mixed
> Java-Scala
> > project to attempt a migration to Scala 3. This means, a lot of
> regressions
> > in regards to Java and Scala interoperability at bytecode were found
> within
> > this task. You can take a look at the PR here:
> > https://github.com/apache/kafka/pull/11350
> > Currently, the status of the migration is as follows:
> >
> >    - All tests pass in Scala 3 except one (
> >
> >
> KafkaApis#getAllTopicMetadataShouldNotCreateTopicOrReturnUnknownTopicPartition).
> >    Root cause for this is this bug with no easy workaround: Type erased
> for
> >    by-name parameters lampepfl/dotty#13638
> >    <https://github.com/lampepfl/dotty/issues/13638>
> >    - All tests pass in Scala 2
> >    - It still uses a snapshot build of Gradle with support for Scala 3
> >    - Spotbugs detected some new errors when the code was compiled with
> >    Scala 3. Some are simply false positives, but a small subset seem like
> > they
> >    might be legit bugs in Scala 3. I still need to come up with a
> minimized
> >    reproducer for those cases.
> >
> > As one can see, most of the changes are arguably low-level and no big
> > rewrite was needed. The biggest refactoring was splitting several classes
> > into their own file.
> >
> > Changes made in this PR could be categorized in 3 different groups:
> > a) Needed changes because of changes in syntax or compiler being
> currently
> > more strict
> > b) Changes where a workaround is present but they are (or will be) fixed
> in
> > upcoming Scala versions
> > c) Changes in the build file
> >
> > In order to have a smooth and manageable migration to Scala 3, I propose
> > perform the migration in several steps:
> >
> >    - Firstly apply all changes that would fall into category *a)*
> >    - Once a new Scala version that incorporates the mentioned fixes is
> >    released, revisit point changes in point *b)*
> >    - Once Type erased for by-name parameters lampepfl/dotty#13638
> >    <https://github.com/lampepfl/dotty/issues/13638> is resolved or a
> >    workaround is found and Gradle with Scala 3 support is released we
> could
> >    tackle the final step and incorporate changes mentioned in point *c)*
> >    - After this, we would run the Scala Migration Tool to automatically
> >    rewrite the code that uses removed syntax or language constructs. (See
> >
> >
> https://docs.scala-lang.org/scala3/guides/migration/tooling-migration-mode.html
> >    )
> >
> >
> > What do you think about this approach? Please feel free to share your
> > opinion on the proposed plan.
> > Also, I'm not sure if this should be written in a KIP form or not, no
> > public interfaces needed to be modified.
> >
> >
> > For extra information, these are the bugs reported to Scala 3 so far:
> >
> >    - https://github.com/lampepfl/dotty/issues/13549
> >    - https://github.com/lampepfl/dotty/issues/13572
> >    - https://github.com/lampepfl/dotty/issues/13630
> >    - https://github.com/lampepfl/dotty/issues/13638
> >    - https://github.com/lampepfl/dotty/issues/13645
> >
> >
> > Thank you in advance!
> > --
> >
> > Josep Prat
> >
> > *Aiven Deutschland GmbH*
> >
> > Immanuelkirchstraße 26, 10405 Berlin
> >
> > Amtsgericht Charlottenburg, HRB 209739 B
> >
> > Geschäftsführer: Oskari Saarenmaa & Hannu Valtonen
> >
> > *m:* +491715557497
> >
> > *w:* aiven.io
> >
> > *e:* josep.p...@aiven.io
> >
>

Reply via email to