[swift-evolution] [Draft] Introducing Build Configuration Tests for Platform Conditions

Erica Sadun erica at ericasadun.com
Tue Mar 15 11:10:00 CDT 2016


I think this one is pretty straightforward, but as always feedback is requested and appreciated. 
Let me know if you're okay with the names and the approach and whether there are any technical
barriers that need addressing.

Thanks, -- E

Introducing Build Configuration Tests for Platform Conditions

Proposal: SE-00XX
Author(s): Erica Sadun <http://github.com/erica>
Status: TBD
Review manager: TBD

This proposal introduces configuration test to differentiate platform conditions.

This proposal was discussed on-list in the Introducing Build Configuration Tests for Platform Conditions <applewebdata://DAF46169-949E-4C76-B744-5D8AB8E633A8>.


Testing for platform conditions is a typical developer task. Although some built-in features like CFByteOrderGetCurrentexist, it seems a natural match to Swift to introduce build configurations specific to common platform conditions.

 <https://gist.github.com/erica/5a344b12bd989f6395c2#detail-design>Detail Design

This proposal adds the following build configuration tests:

#if endian(big)
#if endian(little)
#if bitwidth(32)
#if bitwidth(64)
 <https://gist.github.com/erica/5a344b12bd989f6395c2#current-art>Current Art

Swift currently supports the following configuration tests:

The literals true and false
The os() function that tests for OSX, iOS, watchOS, tvOS, Linux, Windows, and FreeBSD
The arch() function that tests for x86_64, arm, arm64, i386, powerpc64, and powerpc64le
The swift() function that tests for specific Swift language releases, e.g. swift(>=2.2)
 <https://gist.github.com/erica/5a344b12bd989f6395c2#alternatives-considered>Alternatives Considered

There are no alternatives considered.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160315/d0195733/attachment.html>

More information about the swift-evolution mailing list