[External] Foo / Foo.ref is a backward default; should be Foo.val / Foo
Kevin Bourrillion
kevinb at google.com
Mon Apr 25 17:58:51 UTC 2022
On Mon, Apr 25, 2022 at 1:19 PM Brian Goetz <brian.goetz at oracle.com> wrote:
> Changing from a B2 -> B3 changes the default spelling from "L" -> "Q".
> Why does this have to be done atomically?
>
> (First note that I'm thinking in terms of source compatibility, if that
makes a difference.) I mostly just mean that anyone anywhere might be
counting on the type being nullable. Is it possible to fix all that code
ahead of time to be nullness-agnostic, i.e. the very same code works
whether the type is nullable or not? I feel like it would be hard to get
*everything* that way.
> 6. It's very nice when the *new syntax* corresponds directly to the *new
> thing*. That is, until a casual developer *sees* `.val` for the first time,
> they won't have to worry about it.
>
> That's nice initially but a few releases after B3 values are available
> will we still want the syntax to highlight (scream?) "new thing”?
>
> Yes, that’s the risk. (Still, primitives today LOOK DIFFERENT from class
> names.)
>
Indeed I could have phrased it that way: it's nice when the thing that IS
different is the thing that LOOKS different. It's not the language wearing
its history on its sleeve. It's a good outcome in perpetuity imho.
--
Kevin Bourrillion | Java Librarian | Google, Inc. | kevinb at google.com
More information about the valhalla-spec-observers
mailing list