[swift-evolution] [Proposal] Introduces endianness specific type

Jens Persson jens at bitcycle.com
Sun Jul 9 02:23:37 CDT 2017

On Sat, Jul 8, 2017 at 6:28 PM, Chris Lattner via swift-evolution <
swift-evolution at swift.org> wrote:

> Hi Susan,
> Swift does not currently specify a layout for Swift structs.  You
> shouldn’t be using them for memory mapped i/o or writing to a file, because
> their layout can change.  When ABI stability for fragile structs lands, you
> will be able to count on it, but until then something like this is probably
> a bad idea.
> -Chris

Does this imply that you should never use Swift structs to eg interact with

This seems to be a very common practice. Here is a typical example (from a
Metal tutorial at raywenderlich.com):

struct Vertex {
  var x,y,z: Float     // position data
  var r,g,b,a: Float   // color data

  func floatBuffer() -> [Float] {
    return [x,y,z,r,g,b,a]


Also, does it imply that we cannot use structs (of only primitive types)

struct RgbaFloatsLinearGamma {
    var r, g, b, a: Float
struct BgraBytesSrgbGamma {
    var b, g, r, a: UInt8

for manipulating raster image data?

I vaguely remember a swift evo discussion where it was concluded that such
usage was considered OK provided the stored properties of the structs was
only primitive types, but I can't find it now.

Perhaps it could be considered OK at least when the intended platforms are
known to be only iOS devices?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170709/358023ae/attachment.html>

More information about the swift-evolution mailing list