Looking through out the source code I can quickly see that the Swift project does the same mistake as many other language projects when it starts to support more and more operating systems.
For example Thread.swift is littered with #if statements which makes it difficult to read. Another example is FileManager+POSIX.swift one file for each OS. This is a better approach as now each system support is separate files.
The problem is as Swift will be ported to more and more systems, this approach will quickly make the code unmanageable. Much better if the OS dependent implementation files are moved to separate files and subfolders. Then as a natural step, an API can be developed in order to interface the OS dependent implementation. While you think an API is unnecessary, it can help creating a OS independent interface both to the system and the programmer. An example how to not do it is Go where they just copied many POSIX nomenclatures into their own standard library which is the wrong approach I think.
If you make these changes, porting to other systems will be much easier. Also the separation between Swift dependent and OS dependent code will be more maintainable. Make these changes early (which means now) because otherwise the bad #if hell design tends to remain as there were no way out of it.