[swift-users] An OpenGL math library in pure Swift

Stephen Canon scanon at apple.com
Tue Jan 5 15:20:39 CST 2016

There are three pieces of the simd module on OS X / iOS.

- There’s the SDK overlay, which is part of Swift.
- There are C/C++ headers /usr/include/simd/*.h, which comprise the bulk of the C implementation.
- A small number of routines require external calls, whose implementations are part of libSystem (to clarify for Linux folks, libSystem is a dynamic library that contains all the low-level runtime stuff: libc, libm, compiler-rt, etc).

The first is part of the Swift open-source project; the other two are not, so the simd interfaces are not available in open-source Swift.  However, only a small subset of the Swift operations depend on the C/C++ headers and library for their implementation; most of the implementations for Swift are in the SDK overlay itself.  It would be easy for someone to provide implementations for the remaining operations (inverse and determinant, IIRC) if they were so inclined.  With that done, I don’t believe there would be any other obstacles to the use of the SDK overlay as a native Swift module.

– Steve

If you’re asking if the C library that Apple ships will be open-sourced, that’s an Apple product-planning question that’s out of scope for this list.  We (Apple) will definitely take such a request into account, but please file a formal request (Radar) at bugreporter.apple.com.  Thanks!

> On Jan 5, 2016, at 2:45 PM, Volodymyr Boichentsov <sakristx at gmail.com> wrote:
> Any plans to make simd open-source? or available for Linux?
> Best Regards,
> Volodymyr Boichentsov
>> On 5 Jan 2016, at 16:59, Stephen Canon via swift-users <swift-users at swift.org <mailto:swift-users at swift.org>> wrote:
>> Hey David —
>> FYI essentially all of this stuff is already present in the simd module (stdlib/public/SDK/simd/simd.swift.gyb or ‘import simd'), albeit without nice generics, and with some different stylistic choices because simd is at present a straight Swift port of a subset of the simd C/Obj-C/C++ library on OS X and iOS (the most important distinction is that the vector types are compatible with clang extended vectors in C languages).
>> Making the simd module more “swifty” is something that will need to happen eventually, and there’s a lot of other opportunities for other improvements, but you should be aware that it’s available.
>> – Steve
>>> On Jan 4, 2016, at 10:11 PM, David Turnbull via swift-users <swift-users at swift.org <mailto:swift-users at swift.org>> wrote:
>>> I've been working on a math library for SwiftGL. It's looking good. Vector2, Vector3, Vector4, Matrix2x2, Matrix3x3, Matrix4x4 are implemented with all arithmetic. You can even swizzle just like GLSL.
>>> var myVec = vec4(1, 2, 3, 4)
>>> myVec.ab = vec2(99, 98)
>>> print(myVec) //=> (1, 2, 98, 99)
>>> There's still a lot to do. I hope to have feature parity with GLSL done this week. But it's ready to set free and get feedback.
>>> https://github.com/AE9RB/SwiftGL <https://github.com/AE9RB/SwiftGL>
>>> And a couple questions. Is there any way to make import SwiftGL.Math work? Note the dot. Also, is there anything reasonable I can do to improve the compile time? 3.5 minutes for 2000 lines of code can't be right.
>>> -David "Expression was too complex to be solved" Turnbull
>>>  _______________________________________________
>>> swift-users mailing list
>>> swift-users at swift.org <mailto:swift-users at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-users <https://lists.swift.org/mailman/listinfo/swift-users>
>>  _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org <mailto:swift-users at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-users <https://lists.swift.org/mailman/listinfo/swift-users>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160105/b294641d/attachment.html>

More information about the swift-users mailing list