RFR: 8253455: Record Classes javax.lang.model changes [v5]

Alex Buckley alex.buckley at oracle.com
Thu Oct 1 00:38:42 UTC 2020


On 9/30/2020 4:48 PM, Joe Darcy wrote:> Conversely, the fact that an API 
element is preview on one release and
> non-preview in a subsequent one does not necessarily imply the spec has 
> changed. (Although it might have changed, of course.)
> 
> Non-preview methods don't necessarily have *exactly* the same semantics 
> between releases either, subject to our general API evolution policies.

I recognize that a permanent API element may have its behavior changed 
in some situations, and we would leave @since alone in that context. For 
example, a method flagged with @since 8 might have been extended in 9 to 
handle modules, and we would not dream of saying @since 9.

However, a preview API element has an order of magnitude more freedom to 
change than a permanent API element. This means that the element 
previewing in 15 might have the same name and signature as the element 
which previewed in 14, but with novel behavior in some _or even all_ 
situations ... if that happens, then it would be misleading to suggest 
that the novel aspect of the element's spec has been present since 14 
just because the element itself has been present since 14. The element 
in 15 is not really the same element as in 14, and the element in 16 
might not be the same element as in 15. Updating @since to 16 when the 
element becomes permanent wipes the slate clean (the preview behavior no 
longer matters) and lets the element join the club of "non-preview and 
not-deprecated-for-removal API elements" which "can be assumed to be 
present in the next release."

Alex


More information about the compiler-dev mailing list