"Model 2" prototype status
martijnverburg at gmail.com
Tue Aug 4 20:33:42 UTC 2015
It's simply too early to tell and will need some more investigation by the
core valhalla team, we're going to have to be patient and wait until
they've explored this particular interaction further :-).
On 4 August 2015 at 21:24, elias vasylenko <eliasvasylenko at gmail.com> wrote:
> 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
> 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.
> 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