On Mon, Jun 7, 2021 at 3:00 PM Dan Smith <daniel.sm...@oracle.com> wrote:
>
> > On Jun 7, 2021, at 9:13 AM, Dan Smith <daniel.sm...@oracle.com> wrote:
> >
> > On the other side, I'm not that persuaded by the argument for urgency. We 
> > want to encourage a slow migration from 'new Object()' to 
> > 'SomeClass.newIdentity()'. It's not going to be completed for a number of 
> > years. We can start that migration in 17, or wait another release or two. 
> > What's the rush?
>
> Just to clarify this, because I know, when it comes to compatibility impact, 
> adoption patterns will tend to have quantum leaps between LTS releases—from 
> 11 to 17 to 26. It's potentially meaningful that "17" is a number in that set.

Right.  "17" is a meaningful number in that set, especially if we see
the possibility that "new Object();" becomes illegal by "26".  Having
a nice landing pad to ease migration of libraries in 17 sets us up for
easy adoption by libraries.  And it provides clear guidance for them
to target.

>
> However: in some future day (when we're all running Java in our self-driving 
> electric cars), we will decide the time has come to turn 'new Object()' from 
> a warning into an error. At that point, we will want to consider the body of 
> source code that plans to compile with --release NN (NN >> 26), and how much 
> of that source code still has lingering 'new Object()' uses. This universe of 
> source code i) is comfortable with all the Valhalla features, and ii) does 
> not intend to run on any pre-NN JVMs. Where there are a few lingering 'new 
> Object()' uses, presumably there will be tooling in place to quickly fix them 
> up.
>
> Meanwhile, there's no impact in Java NN on legacy binaries (the JVM will 
> indefinitely support 'new java/lang/Object'), and there's no impact on 
> sources compiled with --release 17 or --release 26, etc.

I'd hope that NN >> 26 isn't required to get the ecosystem to jump.
If we don't start the ball rolling, then it'll definitely be that much
longer to change.

>
> I hope NN is a relatively small number, but... shrug. We'll get there when we 
> get there. There are no downstream dependencies.
>
> Nor do I expect an API point available in 17 to hasten this much, because 
> there won't be any *push* to change source code until JEP 401 comes along 
> with a warning about 'new Object()'.
>

Sure javac might not warn now but if it starts to warn in 17 < version
< 26 then even libraries still targeting 17 can "do the right thing".

--Dan

Reply via email to