> On Nov 13, 2017, at 2:16 PM, John McCall <rjmcc...@apple.com> wrote:
> 
>> 
>> On Nov 13, 2017, at 4:30 PM, Joe Groff <jgr...@apple.com 
>> <mailto:jgr...@apple.com>> wrote:
>> 
>> On Nov 13, 2017, at 11:40 AM, John McCall <rjmcc...@apple.com 
>> <mailto:rjmcc...@apple.com>> wrote:
>>> 
>>> 
>>>> On Nov 7, 2017, at 8:58 PM, Joe Groff via swift-dev <swift-dev@swift.org 
>>>> <mailto:swift-dev@swift.org>> wrote:
>>>> 
>>>> I’m trying to plan out changes to our type metadata record formats for ABI 
>>>> stability. I’ll start by looking at the current situation and then make 
>>>> suggestions about things we ought to change. We want to settle on a design 
>>>> that leaves room for future expansion and runtime changes, and still 
>>>> allows efficient access to the most frequently-accessed parts of metadata. 
>>>> I’ll be looking exclusively at metadata records themselves for this 
>>>> message, leaving other data structures for separate scrutiny. I'd 
>>>> appreciate all your feedback.
>>>> 
>>> 
>>> Overall, I think this is a nice description of the problem.  A few comments:
>>> 
>>>   - One notable omission here is that you don't discuss nominal type 
>>> descriptors at all.
>> 
>> Yeah, sorry if I didn't make that clear that that was intentional. I'm 
>> working on a plan for renovating nominal type descriptors in a separate 
>> document.
> 
> Okay, great.  I guess that's what you meant by "other data structures" above, 
> sorry.
> 
>>>   - For the structural types (tuples, functions, existentials, metatypes), 
>>> I don't think there's any particular reason to abstract access to the 
>>> component types.  If there are future changes to these types that require 
>>> additional data to be stored, I don't see any reason that that couldn't be 
>>> stored compatibly with the current layout.  We should make sure that all of 
>>> these metadata have some space to encode flags and that reads of those 
>>> flags are appropriately delimited, as opposed to e.g. assuming that an 
>>> entire word is used to store a single enum.
>> 
>> Maybe not. I can think of a few possible evolution avenues to keep room for:
>> 
>> - Some of these could conceivably become nominal types at some point. 
>> Tuple<T...> and Metatype<T> structs seem conceivable at some point in the 
>> future, and it might be nice if we can move the structural metadata formats 
>> over to nominal metadata at some point in the future. It may be sufficient 
>> to ensure that tuple metadata lays out its element type and field offset 
>> vectors in a way that's compatible with how a generic struct would.
> 
> Much like Optional has a special kind, I don't think it's unreasonable to say 
> that special structural types could always have a special layout.

Sure. Optional's special kind does however still act as a physical subtype of 
general enum metadata layout.

-Joe

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to