<div dir="ltr">I&#39;d think the hypothetical way in Swift to write to configuration registers would be to create an UnsafeMutablePointer&lt;Int64&gt; (or some other raw integer type) from a raw memory address, and then get/set the contents using the &#39;memory&#39; property. Not sure if the compiler is &quot;smart&quot; enough to optimize out memory accesses made using that mechanism, although I would assume no.<div><br></div><div>Austin<br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 7, 2016 at 3:52 AM, Romain Goyet via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi everyone,</div><div><br></div><div>In the <a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/" target="_blank">introduction to Swift</a>, it is presented as an &quot;industrial-quality systems programming language&quot;.</div><div>According to <a href="https://en.wikipedia.org/wiki/System_programming_language" target="_blank">Wikipedia</a>, this means that I could expect to be able to write device drivers or operating systems in Swift.</div><div><br></div><div>However it seems like this claim is only partially true, since several important low-level features seem to be completely missing:</div><div><br></div><div>- Is it possible to generate <a href="http://llvm.org/docs/LangRef.html#volatile-memory-accesses" target="_blank">volatile memory accesses</a> in Swift? Writing device drivers is virtually impossible without a way to guarantee certain memory operations are actually made (and not optimized-out). </div><div><br></div><div>- Is it possible to embed raw binary data in Swift? For example, an equivalent of the following C code &quot;const int8_t foo[6] = {0x00,0x11,0x22,0x33,0x44,0x55};&quot;? The simple Swift equivalent, &quot;let foo: [Int8] = [0x0,0x1,0x2,0x3,0x4,0x6];&quot; is obviously wildly different. Being able to embed raw binary data is very important in a low-level environment: for example, you may need to feed specific data to a device for an initialization sequence at a point where you don&#39;t have a filesystem available yet.</div><div><br></div><div>There might be other aspects that I&#39;m overlooking right now, but I think that&#39;s enough to start a discussion: is Swift really meant to be a systems programming language?</div><div><br></div><div>Thanks,</div><div><br></div><div> - Romain</div></div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=7XtDdMHRjqIUi4tzSjSp2pWQIyxYdP6woIWn4vwV5gfVLTcEDIqbam8OiNxfcRQfX-2Bl9GHIO-2FU84nxsuxuL5i8cTPy3g3gZwfF-2BT9Z1Y77HER-2FansvPpUmxT3Oh3qUMo4sMZ01rMx0GmWe1Vb97wOSe79EcGWNs1iJ0WbBVcWKzGVricaPCDcDSDCG97dfyFz0aW0vMU4SwnmFT4IKvgB2Hp4k4CxAqZbj9ZQW-2F8YNc-3D" alt="" width="1" height="1" border="0" style="min-height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important; display: none !important;">
<br>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div></div></div>