-
Notifications
You must be signed in to change notification settings - Fork 66
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 [draft] #182
base: main
Are you sure you want to change the base?
Scala 3 [draft] #182
Conversation
… time. Migrate from Scalatest to Munit. Drop Scalacheck and property-based tests that were overkill for simple methods. Deprecate a bunch of methods to try to align with naming conventions in the std lib. Code bulk also dropped as top-level definitions & exports avoid some package object boilerplate
I would strongly recommend against going 3-only just yet. Cross-building for mouse shouldn't be a problem, no? |
(The suggestion to use |
Er, why? The proposal is to go 2 branch, not 3 only..
…On Tue., 2 Mar. 2021, 7:29 am Lars Hupel, ***@***.***> wrote:
I would strongly recommend against going 3-only just yet. Cross-building
for mouse shouldn't be a problem, no?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#182 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAXJZHZ2TB7SWTHIYEKFC3TBP2L3ANCNFSM4XZRAX2A>
.
|
The problem with a two-branch strategy is that it becomes impossible to ensure that both Scala 2 and Scala 3 builds are on par with features. Essentially, you are forcing every downstream dependency to also use a two-branch strategy. |
We need to keep in perspective what mouse is: a small, simple and slowly
changing api, almost 100% extension methods.
Im not convinced mouse should grow much larger. So I think it's unlikely
downstream consumers will be greatly impacted if the branches are source
compatible.
…On Tue., 2 Mar. 2021, 7:33 am Lars Hupel, ***@***.***> wrote:
The problem with a two-branch strategy is that it becomes impossible to
ensure that both Scala 2 and Scala 3 builds are on par with features.
Essentially, you are forcing every downstream dependency to also use a
two-branch strategy.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#182 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAXJZB2ZNVSPIIDRSINTB3TBP2YHANCNFSM4XZRAX2A>
.
|
Downstream consumers, no matter whether they're libraries or applications, will 100% be affected by your proposal. Essentially, even if there is source compatibility (which you cannot enforce if you have multiple branches), there is no clean migration path from Scala 2 to Scala 3 because suddenly users need to make their dependency on |
If by "clean migration" you mean, change scalaVersion from 2.x to 3.x in
build.sbt and everything else just works, no that will not be possible. But
this is a major version jump, the last one was circa 2006, with breaking
language changes. Using a different version of a library is not an
unreasonable ask of users. A small number of downstream libraries will need
version specific logic, but my impression is that mouse's consumers are
mainly applications not libs, that run on a single version.
…On Tue, Mar 2, 2021 at 7:57 AM Lars Hupel ***@***.***> wrote:
Downstream consumers, no matter whether they're libraries or applications,
will 100% be affected by your proposal. Essentially, even if there is
source compatibility (which you cannot enforce if you have multiple
branches), there is no clean migration path from Scala 2 to Scala 3 because
suddenly users need to make their dependency on mouse to be conditional
on the Scala version. This is very inconvenient and breaks expectations
from past Scala migrations.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#182 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAXJZBT6GVRI4AZAF5SYS3TBP5UBANCNFSM4XZRAX2A>
.
|
It is unreasonable if there's no pressing need for it. This library (status quo) certainly doesn't use match types or macros or any other features specific to a Scala version. It creates pain for users while giving them no benefit whatsoever in return. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My two cents about Scala 3 migration.
I like the idea of using extension methods for Scala 3. Also, I think we can have one main
branch, and introduce a new syntax for Scala 3 using the same approach as in #248 (use different source directories for Scala 2 and Scala 3). What do you think @benhutchison?
Here is my work on Scala 3 support.
2 branch strategy
Remaining:
/example
subproject that is shared across both branches, link from README. That's to help ensure source compatbility across the rewrite.