[swift-evolution] Low-level Swift

Romain Goyet r.goyet at gmail.com
Thu Jan 7 05:52:14 CST 2016

Hi everyone,

In the introduction to Swift
it is presented as an "industrial-quality systems programming language".
According to Wikipedia
<https://en.wikipedia.org/wiki/System_programming_language>, this means
that I could expect to be able to write device drivers or operating systems
in Swift.

However it seems like this claim is only partially true, since several
important low-level features seem to be completely missing:

- Is it possible to generate volatile memory accesses
<http://llvm.org/docs/LangRef.html#volatile-memory-accesses> in Swift?
Writing device drivers is virtually impossible without a way to guarantee
certain memory operations are actually made (and not optimized-out).

- Is it possible to embed raw binary data in Swift? For example, an
equivalent of the following C code "const int8_t foo[6] =
{0x00,0x11,0x22,0x33,0x44,0x55};"? The simple Swift equivalent, "let foo:
[Int8] = [0x0,0x1,0x2,0x3,0x4,0x6];" 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't have a filesystem
available yet.

There might be other aspects that I'm overlooking right now, but I think
that's enough to start a discussion: is Swift really meant to be a systems
programming language?


 - Romain
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160107/4e6c938d/attachment.html>

More information about the swift-evolution mailing list