{"id":16975,"date":"2017-01-23T10:14:16","date_gmt":"2017-01-23T15:14:16","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=16975"},"modified":"2017-01-26T11:37:05","modified_gmt":"2017-01-26T16:37:05","slug":"chris-lattner-atp-interview","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2017\/01\/23\/chris-lattner-atp-interview\/","title":{"rendered":"Chris Lattner ATP Interview"},"content":{"rendered":"<p><a href=\"http:\/\/atp.fm\/episodes\/205\">Accidental Tech Podcast<\/a> did a great interview with Chris Lattner (<a href=\"https:\/\/twitter.com\/clattner_llvm\/status\/822122392352763904\">tweet<\/a>). The whole episode is worth listening to, but here are some of my thoughts:<\/p>\n<p>He seems to agree that the &ldquo;Objective-C without the C&rdquo; branding for Swift was more about making developers feel comfortable with the language than it was a description of what the language actually is and aspires to be.<\/p>\n<p>With so many other responsibilities at Apple, Swift was always kind of a side project for him. So his leaving Apple is less of a change for Swift than one might think.<\/p>\n<p>It sounds like Tesla is primarily interested in his engineering and management skills. They might at some point use Swift for something, but it does not sound like he was hired to adapt it for their purposes, as some have speculated.<\/p>\n<p>He thinks the criticisms of Swift not being dynamic enough are overblown because many dynamic features, such as introspection, can and likely will be added to Swift in the future. I agree with the latter and am not worried that patterns like the responder chain will be impossible. My main concern has been that message passing is opt-in rather than the default. This closes the door on unanticipated swizzling and other techniques. Once the dispatches have been baked in (or, I guess, <em>out<\/em>) they cannot be changed. This is not an area where Swift can satisfy both camps, and it has been obvious from day one which way it leans. So I think it would have been rather pointless to try to argue this point on Swift Evolution.<\/p>\n<p><a href=\"http:\/\/mjtsai.com\/blog\/2012\/03\/21\/objective-c-literals\/\">Objective-C literals<\/a> are described as an easy sugar feature that Apple added while much of the team was busy with Swift. I have never understood why it took so long for this feature to arrive. It could have been added to Objective-C 1.x but instead came about 6 years after <a href=\"https:\/\/en.wikipedia.org\/wiki\/Objective-C#Objective-C_2.0\">Objective-C 2.0<\/a>. Or, to put a positive spin on this, the rate of progress with Swift is incredible compared with what we saw with Objective-C.<\/p>\n<p>Swift doesn&rsquo;t support 32-bit Intel for Mac or the old Objective-C runtime. I had assumed this would mean that Apple would drop support for the 32-bit frameworks as it starts using Swift internally, but he seems to think that Swift will add 32-bit support so that it can be used in AppKit.<\/p>\n<p>There is a great overview of ARC vs. garbage collection. I think ARC was absolutely the right choice.<\/p>\n<p>He makes a <a href=\"https:\/\/twitter.com\/iTod\/status\/822113611258753024\">strong argument<\/a> that ABI compatibility should be postponed <a href=\"http:\/\/mjtsai.com\/blog\/2016\/05\/17\/abi-stability-deferred-until-after-swift-3-0\/\">again<\/a>.<\/p>\n<p>The planned Rust-like ownership model sounds like it will give us an escape hatch for ARC problems: manual memory management, but only when you need it, and with lots of compiler support to prevent mistakes.<\/p>\n\n<p>See also: <a href=\"https:\/\/developers.slashdot.org\/story\/17\/01\/23\/085232\/slashdots-interview-with-swift-creator-chris-lattner\">Lattner&rsquo;s Slashdot interview<\/a>, <a href=\"http:\/\/bitsplitting.org\/2017\/01\/18\/progressive-disclosure-in-swift\/\">Daniel Jalkut<\/a>.<\/p>\n\n<p>Previously: <a href=\"http:\/\/mjtsai.com\/blog\/2017\/01\/10\/chris-lattner-is-leaving-apple\/\">Chris Lattner Is Leaving Apple<\/a>, <a href=\"http:\/\/mjtsai.com\/blog\/2015\/12\/09\/swift-plans\/\">Swift Plans<\/a>, <a href=\"http:\/\/mjtsai.com\/blog\/2014\/08\/18\/its-a-coup\/\">&ldquo;It&rsquo;s a Coup&rdquo;<\/a>, <a href=\"http:\/\/mjtsai.com\/blog\/2014\/09\/24\/objective-c-drops-vtable-optimization\/\">Objective-C Drops vtable Optimization<\/a>, <a href=\"http:\/\/mjtsai.com\/blog\/2010\/06\/16\/copland-2010-revisited\/\">Copland 2010 Revisited<\/a>, <a href=\"http:\/\/mjtsai.com\/blog\/2011\/05\/24\/regarding-objective-c-copland-2010\/\">Regarding Objective-C &amp; Copland 2010<\/a>.<\/p>\n\n<p>Update (2017-01-23): ATP now has a <a href=\"http:\/\/atp.fm\/205-chris-lattner-interview-transcript\">full transcript<\/a> of the interview (<a href=\"https:\/\/twitter.com\/atpfm\/status\/823587988559036416\">tweet<\/a>).<\/p>\n\n<p>Update (2017-01-26): See also: <a href=\"https:\/\/www.relay.fm\/analogue\/98\">Analog(ue)<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Accidental Tech Podcast did a great interview with Chris Lattner (tweet). The whole episode is worth listening to, but here are some of my thoughts: He seems to agree that the &ldquo;Objective-C without the C&rdquo; branding for Swift was more about making developers feel comfortable with the language than it was a description of what [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[55,1167,230,69,288,295,286,31,1380,346,46,229,30,1381,571,966,54,991,440,71,341,408,901,1295],"class_list":["post-16975","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-arc","tag-car","tag-clang","tag-cocoa","tag-garbargecollection","tag-history","tag-interview","tag-ios","tag-ios-10","tag-javascript","tag-languagedesign","tag-llvm","tag-mac","tag-macos-10-12","tag-memory-management","tag-message-passing","tag-objective-c","tag-open-source-software","tag-opengl","tag-programming","tag-reactivecocoa","tag-rust-lang","tag-swift-programming-language","tag-tesla"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/16975","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=16975"}],"version-history":[{"count":7,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/16975\/revisions"}],"predecessor-version":[{"id":17010,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/16975\/revisions\/17010"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=16975"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=16975"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=16975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}