Initial RFR: 8187302: [Nestmates] Prepare for classfile version 54 and javac "release" update
David Holmes
david.holmes at oracle.com
Thu Sep 7 21:38:07 UTC 2017
Hi Maurizio,
I didn't see your public comment before my private reply so I'll repeat
that reply here - as there's nothing really private about it. :)
On 8/09/2017 12:59 AM, Maurizio Cimadamore wrote:
> As discussed individually, I believe that bumping classfile version (or
> source version) is not something that an experimental branch should do.
> The risk of doing so is that multiple developers will be doing the same
> change (perhaps in slightly incompatible ways) and create an integration
> hell.
The work I'm doing _has_ to involve a change to the classfile version
and I need the related changes to the javac --release so that I can
control that. So regardless of whether I end up pushing this change from
the nestmates branch I'm going to need the change. And the same is
likely true for a project like condy.
> So I believe it would be best to assume that any given experimental
> branch adds some experimental behavior on top of the latest version
> (whatever that is at a given point in time). If certain features need to
> be constrained further (see MVT, where we don't want all classfiles to
> be able to exploit value opcodes), minor version can be used for that
> purpose.
I don't see any difference between using v54 versus v53.1 ??? I still
need a different classfile version and I still need a way to tell javac
to produce it.
> When it's time to target a specific JDK N, I think the work to setup
> appropriate source/version numbers should happen in the upstream repo;
> once that's settled, changes will flow onto the branches - which will
> then changed to target the desired version number. Then a patch for the
> branch is extracted and pushed upstream (after due review, etc.).
I would be happy to leave this exercise to someone else in another repo
to merge into mainline. But there are two significant problems with that:
1. It doesn't help me! I need to be able to work with the updated
version information _now_, so that I can complete this feature. So I'm
going to have to apply those changes in vahalla-nestmates even if I
never intend to actually migrate them. Same would be true for the Condy
folk.
2. Someone somewhere has to be given this task and work on it to ensure
it is ready to push to mainline as soon as 10/18.3 has forked. If that
isn't me or someone from condy then who will do it? Plus even if the
version change pushes immediately after the fork, that will still delay
the completion of nestmates/condy as we will have to pull those changes
back into the project repos (or more likely a separate mainline sandbox
by this stage) and then finish of the features so we can push them.
Given that, it really makes no difference if I include these changes
with nestmates, or someone from condy includes them with condy. We will
both need a local variant of them anyway, and whomever does the push
doesn't have a messy integration. If a third-party does the push
"upstream" then we both have a messy integration.
And if condy and nestmates are in different releases anyway then the
exercise has to happen twice.
> I would not be surprised if, now that we're moving to a more regular
> release cadence, some of these tasks (update classfile version/source
> version) would be automated and automatically applied after a new
> version has 'forked off'.
That would be nice I think, but I'd still need a way to manually trigger
that _now_ so that I can base my work on it _now_.
Cheers,
David
-----
> Maurizio
>
>
> On 07/09/17 14:20, Karen Kinnear wrote:
>> 10 is planning to bump to 54 for condy
>>
>> Karen
>>
>>> On Sep 7, 2017, at 6:48 AM, David Holmes<david.holmes at oracle.com> wrote:
>>>
>>> Hi Remi,
>>>
>>> On 7/09/2017 7:39 PM, Remi Forax wrote:
>>>> Hi David,
>>>> Having 10 -> v53 and 11 -> v54 is weird,
>>> How is that weird? I just incremented the value. If it turns out that 10 needs to bump to 54 then I'd bump 11 to 55.
>>>
>>>> perhaps, --release 99 is better than release 11.
>>> ???
>>>
>>> David
>>>
>>>> Rémi
>>>> ----- Mail original -----
>>>>> De: "David Holmes"<david.holmes at oracle.com>
>>>>> À: "valhalla-dev"<valhalla-dev at openjdk.java.net>
>>>>> Envoyé: Jeudi 7 Septembre 2017 10:54:04
>>>>> Objet: Initial RFR: 8187302: [Nestmates] Prepare for classfile version 54 and javac "release" update
>>>>> webrev:http://cr.openjdk.java.net/~dholmes/8187302/webrev/
>>>>>
>>>>> (please ignore the two hotspot test changes)
>>>>>
>>>>> This changes prepares for switching to release 11 and classfile version
>>>>> 54 so that I can put classfile version checks where needed, and compile
>>>>> tests the right way, where needed.
>>>>>
>>>>> Initially the default remains release 10 and v53, but --release 11 can
>>>>> be used to explicitly use v54.
>>>>>
>>>>> I think I have found everything that needs updating to allow use of
>>>>> release 11 and v54 classfiles.
>>>>>
>>>>> Testing so far is minimal: javac Foo.java -> v53
>>>>> javac --release 11 Foo.java -> v54
>>>>>
>>>>> langtools/tools/javac testing also conducted.
>>>>>
>>>>> Thanks,
>>>>> David
>
More information about the valhalla-dev
mailing list