<div dir="ltr">Thanks all! It&#39;s great to hear that this wouldn&#39;t be completely unwelcome -- especially Swift Darwin with Objective-C interop disabled.<div><br></div><div>I&#39;ll try and send a patch sometime soon -- although I&#39;m busy with work stuff, so at the latest it&#39;ll be sometime in December... in the meantime, I created a task for it: <a href="https://bugs.swift.org/browse/SR-3292">https://bugs.swift.org/browse/SR-3292</a>. Feel free to comment there, or to claim the task for yourself. :)<div><br></div><div>- Brian Gesiak</div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 28, 2016 at 5:02 PM, John McCall <span dir="ltr">&lt;<a href="mailto:rjmccall@apple.com" target="_blank">rjmccall@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">&gt; On Nov 28, 2016, at 1:33 PM, Joe Groff via swift-dev &lt;<a href="mailto:swift-dev@swift.org">swift-dev@swift.org</a>&gt; wrote:<br>
&gt;&gt; On Nov 28, 2016, at 7:26 AM, Brian Gesiak via swift-dev &lt;<a href="mailto:swift-dev@swift.org">swift-dev@swift.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hello all!<br>
&gt;&gt;<br>
&gt;&gt; While reviewing <a href="https://github.com/apple/swift/pull/5904" rel="noreferrer" target="_blank">https://github.com/apple/<wbr>swift/pull/5904</a>, I had a crazy thought, and I&#39;d like to get some feedback on it.<br>
&gt;&gt;<br>
&gt;&gt; Here&#39;s my original comment &lt;<a href="https://github.com/apple/swift/pull/5904#discussion_r89797900" rel="noreferrer" target="_blank">https://github.com/apple/<wbr>swift/pull/5904#discussion_<wbr>r89797900</a>&gt;.<br>
&gt;&gt;<br>
&gt;&gt; Basically, I notice that we have two sets of targets we compile the Swift runtime and standard library for:<br>
&gt;&gt;<br>
&gt;&gt; 1. &#39;ALL_APPLE_PLATFORMS&#39;, which is composed of macOS, iOS, tvOS, and watchOS.<br>
&gt;&gt; 2. The other platforms: Linux, FreeBSD, Android, Cygwin, and (as of the pull request above) Windows.<br>
&gt;&gt;<br>
&gt;&gt; In other words:<br>
&gt;&gt;<br>
&gt;&gt; 1. All the platforms that support Objective-C interop. I suggest we call these &#39;OBJC_INTEROP_PLATFORMS&#39; in CMake.<br>
&gt;&gt; 2. All the platforms that don&#39;t. I suggest we call these &#39;NO_OBJC_INTEROP_PLATFORMS&#39; in CMake.<br>
&gt;&gt;<br>
&gt;&gt; ---<br>
&gt;&gt;<br>
&gt;&gt; I think the above is a good idea, regardless of how you feel about my other, zanier thought:<br>
&gt;&gt;<br>
&gt;&gt; Over the weekend I learned of the mulle-objc project &lt;<a href="https://mulle-objc.github.io" rel="noreferrer" target="_blank">https://mulle-objc.github.io</a>&gt;<wbr>. It boasts an Objective-C compiler and runtime that works on Linux.<br>
&gt;&gt;<br>
&gt;&gt; Now, I don&#39;t know if Swift&#39;s Objective-C interop will work completely with mulle-objc, but I did a bit of experimenting over the weekend, and it seems possible. But one obstacle is the fact that the Swift build system conflates &quot;an Apple target&quot; with &quot;capable of Objective-C interop.&quot; To even start working with mulle-objc, I had to remove a lot of `#ifdef __APPLE__` in the code.<br>
&gt;<br>
&gt; It&#39;s not only the build system, but the IRGen and runtime implementation of ObjC interop is also heavily biased towards Apple&#39;s implementations of the ObjC runtime and Foundation on Darwin. Just changing all those #ifdef __APPLE__ s to #if SWIFT_OBJC_INTEROP is not going to get you very far working with another ObjC implementation. As Doug noted, supporting ObjC-less Darwin would on the other hand be very useful!<br>
<br>
</span>Right.  If you really wanted to support using Swift with a different Objective-C ABIs, I think the first step would be to do some work in clang to expose an abstract API for building classes.  You&#39;d still need *some* ABI-specific code in Swift IRGen, I expect, but it ought to be possible to re-use the majority of Clang&#39;s ObjC targeting code.<br>
<span class="HOEnZb"><font color="#888888"><br>
John.<br>
</font></span></blockquote></div><br></div>