At this point, what won’t be supported by Dotty and what are the workarounds?
The main thing that comes to mind is macros that add members like Monocle’s @Lenses. In my understanding that won’t be possible any more. However I rely on it pretty heavily. It would be a huge loss not to have it.
Is there any good solution?
And, are there any other capabilities that are being left behind? What are they, and what is the migration plan?
Non-concrete-class type projection’s have been axed :-/
As workaround, usually passing around a value and using path-dependent type would be suggested. I’m still hoping that erased values will make it and be admissable for path-dependent types. (thread)
White box macro allows extend language injection capability for scala. It is very sad that there are no alternatives. Proposal to disallow class shadowing will make migration significantly difficult for us.
There will be no rewriting tools.
The service traits will be visible in user code.
We need manually distinguish names.
We will need to rewrite about 4000-8000 traits
It is also very sad improvements.
We will have to rewrite our core libraries to convert contexts into context providers.
It seems that migration will be the challenge for us.
Right so many of those have straightforward automatic or manual rewrites. My question is about things that have no good equivalent, again like @Lenses.
The Real replacement for package objects is exports. There’s still nothing definite about a replacement for package object’s implicit priorities, though.
The only thing that stops someone from reimplementing macro-paradise in two lines of the new compiler plugin API is that the powerful form of plugins is only available on nightly releases. The solution to that is simple – everyone will just use nightly like it’s Rust! That, or republished compiler binaries with prohibition turned off.