<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 17, 2015, at 11:21 PM, Gergely Orosz via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">(forwarding a discussion on Swift reflection from swift-users)<br class=""><br class="">It seems there is no disagreement on how reflection is something we would want in Swift. Given that until this is part of the language, it will be a blocker for several types of projects - both mocking frameworks, and data modeling runtime (as Jens Alfke mentioned) - I would be keen to understand the constraints swift wants to have in place so we can put a proposal together.<div class=""><br class=""></div><div class="">Specifically:</div><div class="">- Regarding interfaces, is there any direction or proposal on the interfaces to be used for reflection, or is this up for discussion?<br class="">- Regarding security, what model would the goal be? Would something like the .NET security model (classes declaring security critical attribute cannot be accessed using readwrire reflection be suffcient? Details on this:&nbsp;<a href="http://bit.ly/1RVQc5J" class="">http://bit.ly/1RVQc5J</a> ). To my knowledge .NET has the most tight reflection rules in place, all other popular typed languages (e.g. Java, Ruby) are all more relaxed.<br class=""></div><div class="">- Would secrecy also be a language goal on top of security - e.g. the ability to disallow even read reflection for certain members?</div></div></div></blockquote><br class=""></div><div>Also consider alternatives to the use cases you described—mocking and data modeling can also be accomplished by compile-time code generation, and by features like type providers that supply external type information to the compiler. Runtime reflection is definitely useful in many cases, but compile-time approaches are likely to be easier to verify and maintain, faster, and more secure.</div><div><br class=""></div><div>-Joe</div><br class=""></body></html>