> On Oct 5, 2016, at 7:08 PM, Greg Parker <[email protected]> wrote:
>
>> Now, as for naming: I like using the leading "C" convention ("CLibc")
>> because it leaves us room for introducing an overlaid version of the module
>> in the future without breaking source compatibility. Because of this, I
>> wouldn't want to name the module just `C`, because it wouldn't leave room
>> for a Swifty version later.
>
> I don't think separating the raw C library translation from the pretty Swift
> wrapper works, at least not for everybody. The problem is that the raw
> translation is going to have functions that the pretty wrapper does not.
> (Perhaps the pretty wrapper is new and incomplete. Perhaps an OS has added
> functions and the pretty wrapper has not caught up yet.) If you try to
> import both then you end up with the same problems of name collisions today
> and source incompatibility in the future when the pretty wrapper grows.
I didn't mean that you could import both—merely that, if you used CLibc (or
CPlatform) today, the introduction of the pretty Libc or Platform in a future
version of Swift wouldn't affect your existing code.
As for handing unsupported features, I'd like you to be able to say something
like (using a version of today's syntax):
import Platform
import func CPlatform.newfunc(_:_:)
Which would hopefully mean that, if a future version of Libc added
newfunc(_:_:), the CLibc version—which is the one we explicitly requested—would
shadow it. (Perhaps when you rebuilt against the newer version of Libc, you'd
get a shadowing warning that would hint to you that you don't need to pull that
function in from CLibc anymore.)
--
Brent Royal-Gordon
Architechies
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution