<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap:break-word"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"></div><div id="bloop_sign_1470334947639267840" class="bloop_sign">Thanks, cristal clear! :-)<table width="400" border="0" cellspacing="0" cellpadding="0" style="color:rgb(0,0,0);font-family:Times"><tbody></tbody></table></div> <br><p class="airmail_on">On August 3, 2016 at 9:51:38 PM, Brent Royal-Gordon (<a href="mailto:brent@architechies.com">brent@architechies.com</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>&gt; On Aug 3, 2016, at 8:39 PM, Fernando Rodríguez via swift-corelibs-dev &lt;<a href="mailto:swift-corelibs-dev@swift.org">swift-corelibs-dev@swift.org</a>&gt; wrote:
<br>&gt;  
<br>&gt; I&#39;m having some trouble  understanding what on Earth SwiftShims are. The name probably makes it obvious to native English speakers, but it&#39;s not helping me...
<br>&gt;  
<br>&gt; Could someone please enlighten me?
<br>
<br>&quot;Shim&quot; is a relatively common programming term; it means a lightweight compatibility layer which corrects for differences between platforms. For instance, if you&#39;re supporting three different OSes with three different random number calls, you might write a `randomNumber()` shim function which calls whichever one is correct for that platform.
<br>
<br>(Outside of programming, a &quot;shim&quot; is a thin piece of material, often wood, which you put under the leg of a piece of furniture if it&#39;s crooked or wobbly.)
<br>
<br>SwiftShims specifically contains functions written in C, C++, or Objective-C++ which the Swift standard library&#39;s internals need to call. These functions often translate the parameter types of calls into forms which are easier to call from Swift, or fill in functionality that&#39;s missing on certain platforms. For instance, the I/O in the standard library&#39;s `readLine()` function is handled by a C++ function called `swift_stdlib_readLine_stdin()`. That function is part of SwiftShims; on most platforms, it calls through to a C standard library `getline()` function, but on a few it emulates that function&#39;s behavior.
<br>
<br>Unless you&#39;re working on the standard library (or Foundation, which I believe uses a couple of SwiftShims calls), you shouldn&#39;t ever interact with or care about SwiftShims. It&#39;s a private implementation detail of Swift.
<br>
<br>--  
<br>Brent Royal-Gordon
<br>Architechies
<br>
<br></div></div></span></blockquote></body></html>