"Model 2" prototype status
elias vasylenko
eliasvasylenko at gmail.com
Tue Aug 4 20:24:52 UTC 2015
This all sounds pretty encouraging so far to me. I feel like all my major
tick boxes are being steadily, if tentatively, filled. Thanks for the
update!
I do have one new concern though - something you said earlier jumped out at
me, Brian:
"So its quite possible that Foo<any T extends Comparable> may in fact be
meaningful. (And if that's the case, primitives might join the party
too.) Or not, we're not sure yet."
I suppose this must mean there is a realistic possibility that will *not*
in fact be meaningful, which is a surprise to me... Is this something that
has been discussed in more depth and I missed it? If anyone could expand on
this a little (preferably to give a little reassurance that I'm
overreacting to the importance, or that the chances are low for this to end
up being the case!) I'd be pretty relieved. It feels like it'd be a pretty
huge blow, and given my (limited) understanding I can't see what
particularly troublesome issues this even presents.
Cheers,
Eli
On Sat, 1 Aug 2015 at 22:49 Brian Goetz <brian.goetz at oracle.com> wrote:
> > I dislike the Foo<ref> / Foo<any> thing for several reasons.
>
> Not surprising. This wasn't our first choice either.
>
> We spent a great deal of effort investigating whether it was possible to
> re-use Foo<?> to mean Foo<ref> when the corresponding tvar is a ref
> tvar, and to mean Foo<any> when the corresponding tvar is an any tvar.
> Seems obvious, right?
>
> Several hundred hours later, the short answer is that things fall apart
> when a library is any-fied and the client is not recompiled; this would
> make any-fication a binary-incompatible change, which would be a loser.
> So with tears in our eyes, we reluctantly concluded that we needed to
> differentiate between Foo<ref> and Foo<any>. Once we swallowed that
> pill, many things snapped into place. So as sad as it is to have two
> kinds of wildcard, I'm pretty sure its the right call.
>
> You prefer another syntax? Sure, I'm sure there are alternatives. We
> can talk about it -- but not this year! We have way more important
> things to work out before that comes anywhere near the top of the list.
>
> As to bounds... we're still working out the details of the interaction
> between value types and interfaces. So its quite possible that Foo<any
> T extends Comparable> may in fact be meaningful. (And if that's the
> case, primitives might join the party too.) Or not, we're not sure yet.
>
>
>
More information about the valhalla-dev
mailing list