<html><body><p><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;On Apr 5, 2016, at 5:57 PM, Kevin Lundberg via swift-evolution &lt;</font></i></tt><a href="https://lists.swift.org/mailman/listinfo/swift-evolution"><tt><i><u><font size="4" color="#0000FF">swift-evolution at swift.org</font></u></i></tt></a><tt><i><font size="4">&gt; wrote:<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;Generally I'm +1 on this, but I do have a concern. It's not made explicit in the proposal, but I presume that this is meant to only be available on Darwin, and not Linux or other platforms that don't have swift using the Objective-C runtime? (Please correct me if I am mistaken.)<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;I ask because of the swift-corelibs-foundation project; Presumably once that is complete for Swift 3, code that makes use of this type bridging should be able to be run cross-platform. For example:<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;var a = [AnyObject]()<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;(a as NSArray).addObject(NSObject()) // should this work on all platforms?<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;swift-corelibs-foundation uses its own protocol named _ObjectTypeBridgeable (defined here: </font></i></tt><a href="https://github.com/apple/swift-corelibs-foundation/blob/338f4bf3a89c75a0420b49f5701466e106af02b5/Foundation/NSSwiftRuntime.swift#L205"><tt><i><u><font size="4" color="#0000FF">https://github.com/apple/swift-corelibs-foundation/blob/338f4bf3a89c75a0420b49f5701466e106af02b5/Foundation/NSSwiftRuntime.swift#L205</font></u></i></tt></a><tt><i><font size="4">&nbsp;&lt;</font></i></tt><a href="https://github.com/apple/swift-corelibs-foundation/blob/338f4bf3a89c75a0420b49f5701466e106af02b5/Foundation/NSSwiftRuntime.swift#L205"><tt><i><u><font size="4" color="#0000FF">https://github.com/apple/swift-corelibs-foundation/blob/338f4bf3a89c75a0420b49f5701466e106af02b5/Foundation/NSSwiftRuntime.swift#L205</font></u></i></tt></a><tt><i><font size="4">&gt;) to simulate what happens today on Darwin platforms, but there is no language support for it so API consumers must explicitly call its bridging methods. It would be great if corelibs-foundation (and any code designed to work on Linux) could take advantage of this proposal to provide the language support, and if the proposal as written is not intended to have an effect on Linux at all, then I would suggest we modify it so that the resulting implementation is not tied to Objective-C and Darwin only.<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;-Kevin<br></font></i></tt><tt><font size="4">&gt;</font></tt><tt><i><font size="4">&nbsp;<br></font></i></tt><br>This is a very timely observation.  Following a suggestion from Tony Parker, I've prototyped using (abusing?) ObjectiveCBridgeable to enable this kind of conversion for swift-corelibs-foundation on Linux (where there is no Objective-C runtime).  The motivation is to get consistent cross-platform bridging.<br><br>On the plus side, the change is pretty straightforward and seems to be working as expected (still working through all the TestFoundation test cases and replacing bridge() calls with as operations).  I expect to complete the initial pass through the foundation test cases by the weekend.<br><br>On the minus side, the name becomes a little misleading.  We are really using ObjectCBridgeable to bridge from one Swift type to another Swift type.<br><br>For the curious, the relevant pull requests are:<br>        <a href="https://github.com/apple/swift/pull/1994">https://github.com/apple/swift/pull/1994</a><br>        <a href="https://github.com/apple/swift-corelibs-foundation/pull/303">https://github.com/apple/swift-corelibs-foundation/pull/303</a><br><br>Would be interested in comments on the approach.<br><br>regards,<br><br>--dave<br><BR>
</body></html>