<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal"><p dir="auto">Thanks for the comments, David.<br>
I responded to #2 in a separate email, but wanted to get back to responding to #1.</p>
<p dir="auto">In implementing this, I have had the same thoughts. Ideally, one day, we would be able to migrate the implementation of this away from the compiler to public API (through reflection, property behaviors, or similar). If the compiler offers external features that would allow us to do everything that we want, I would be more than happy to move the implementation from inside the compiler to outside of it.</p>
<p dir="auto">On 16 Mar 2017, at 0:09, David Hart wrote:</p>
</div>
<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><div id="A5233358-FAE7-437A-A4D8-5691889E83D5"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">First of all, great proposal :D<div class=""><br class=""></div><div class="">Brent, earlier in the thread makes a lot of good points. But I’d still like to discuss two subjects:</div><div class=""><br class=""></div><div class="">1) What makes the proposal really stand on its feet compared to third-party libraries is the compiler generation magic. I feel divided about it. On one hand, this is the only solution today to have this level of type and key safety. But on another hand, I have the impression that future versions of Swift (with more reflection, property behaviours, lenses, etc…) would dramatically affect how this subject is treated and implemented. Are you worried that we are asking the compiler to do work which might be un-necessary in the future? That this topic would be better expressed with more powerful language features? Any plans to migrate for this API to smoothly migrate to those features in the future?</div><div class=""><br class=""></div><div class="">2) Libraries like Marshal (<a href="https://github.com/utahiosmac/Marshal" class="">https://github.com/utahiosmac/Marshal</a>) and Unbox (<a href="https://github.com/JohnSundell/Unbox" class="">https://github.com/JohnSundell/Unbox</a>) don’t require the decoding functions to provide the type: those functions are generic on the return turn and it’s automatically inferred:</div><div class=""><br class=""></div><div class="">func decode&lt;T&gt;(key: Key) -&gt; T</div><div class=""><br class=""></div><div class="">self.stringProperty = decode(key: .stringProperty) // correct specialisation of the generic function chosen by the compiler</div><div class=""><br class=""></div><div class="">Is there a reason the proposal did not choose this solution? Its quite sweet.</div><div class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="" applecontenteditable="true"><div class=""><h1 id="toc_0" style="-webkit-print-color-adjust: exact; margin: 0px 0px 10px; padding: 0px; -webkit-font-smoothing: antialiased; cursor: text; position: relative; font-size: 28px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);" class="">Swift Archival &amp; Serialization</h1><ul style="-webkit-print-color-adjust: exact; margin: 15px 0px; padding-left: 30px; font-family: Helvetica, arial, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);" class=""><li style="-webkit-print-color-adjust: exact; margin: 0px;" class="">Proposal:&nbsp;<a href="https://github.com/apple/swift-evolution/pull/639" class="">SE-NNNN</a></li><li style="-webkit-print-color-adjust: exact; margin: 0px;" class="">Author(s):&nbsp;<a href="https://github.com/itaiferber" style="-webkit-print-color-adjust: exact; color: rgb(65, 131, 196); margin-top: 0px;" class="">Itai Ferber</a>,&nbsp;<a href="https://github.com/mlehew" style="-webkit-print-color-adjust: exact; color: rgb(65, 131, 196);" class="">Michael LeHew</a>,&nbsp;<a href="https://github.com/parkera" style="-webkit-print-color-adjust: exact; color: rgb(65, 131, 196);" class="">Tony Parker</a></li><li style="-webkit-print-color-adjust: exact; margin: 0px;" class="">Review Manager: TBD</li><li style="-webkit-print-color-adjust: exact; margin: 0px;" class="">Status:&nbsp;<strong style="-webkit-print-color-adjust: exact; margin-top: 0px;" class="">Awaiting review</strong></li><li style="-webkit-print-color-adjust: exact; margin: 0px;" class="">Associated PRs:<ul style="-webkit-print-color-adjust: exact; margin: 0px 0px 15px; padding-left: 30px;" class=""><li style="-webkit-print-color-adjust: exact; margin: 0px;" class=""><a href="https://github.com/apple/swift/pull/8124" style="-webkit-print-color-adjust: exact; color: rgb(65, 131, 196); margin-top: 0px;" class="">#8124</a></li><li style="-webkit-print-color-adjust: exact; margin: 0px;" class=""><a href="https://github.com/apple/swift/pull/8125" style="-webkit-print-color-adjust: exact; color: rgb(65, 131, 196); margin-top: 0px;" class="">#8125</a></li></ul></li></ul></div></div></blockquote></div></div></div></div></div></blockquote>
<div style="white-space:normal"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px">
</blockquote></div>
</div>
</body>
</html>