It's not too hard to figure out (and there are a couple of other ObjC 
implementations) but if Apple have any specs for the archive format, I would be 
keen to take a look.

Also regarding interoperability - perhaps it might be reasonable, for 
non-Foundation classes that have non-namespaced names (on non-ObjC platforms) 
for the caller to configure the NSKeyedArchiver with explicit class mappings?

-- Luke

Sent from my iPhone

> On 21 Dec 2015, at 00:02, Luke Howard via swift-corelibs-dev 
> <swift-corelibs-dev@swift.org> wrote:
> 
> 
>> Somewhat; the mangled symbols are technically searchable by dlsym but that 
>> seems like a hack. Perhaps one of the stdlib/compiler team might be able to 
>> speak more on this than myself and they may have suggestions for a better 
>> way. Foundation is at a special spot in which we can sometimes get special 
>> runtime considerations for these types of things.
> 
> It’d arguably be more of a hack to add a global manifest of classes if the 
> dynamic linker already has one ;-) Here’s a toy implementation of 
> swift_classFromString():
> 
> https://github.com/lhoward/SwiftRuntimeTest
> 
> Disclaimer: I know very little about Swift nor its implementation beyond a 
> bit of poking around.
> 
>> For example NSUUID is defined by it’s module name Foundation.NSUUID; in that 
>> a program could have it’s own NSUUID that is totally different (naming it 
>> the same thing would be confusing to read and potentially viewed as bad form 
>> but it can be done…). That would result in MyApplication.NSUUID to define 
>> the symbolic name of the item. From the perspective of NSKeyedArchiver it 
>> will encode things as NSUUID (without the namespace) in that in the realm of 
>> objc there can be only one.
> 
> What if you (re-)added the ability to annotate Swift classes with their 
> Objective-C name on non-Apple platforms? I don’t know what the runtime costs 
> of doing this are but it seems like it’s either this, or only allow 
> non-namespaced names for Foundation objects.
> 
> — Luke
> _______________________________________________
> swift-corelibs-dev mailing list
> swift-corelibs-dev@swift.org
> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev
_______________________________________________
swift-corelibs-dev mailing list
swift-corelibs-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-corelibs-dev

Reply via email to