Thanks for the review, Kelvin.

> On Dec 20, 2017, at 8:52 PM, Kelvin Ma via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> it makes sense to have @abiPublic on private and fileprivate declarations too 
> and i hope this gets added, because private and fileprivate are tools for 
> code organization and maintenance,, the compiler with wmo doesn’t care about 
> private vs internal. but @abiPublic private is bound to cause confusion and 
> it just reads funny. 

>From an implementation standpoint, it would be a simple change to allow 
>@abiPublic on private and fileprivate declarations. However, I think that 
>introduce some confusion. Recall that the mangling of private symbols includes 
>the source file name. This would now be part of your framework’s ABI. If you 
>moved the @abiPublic function to another source file, or rename the source 
>file, you will break ABI.

Another approach would be to change the mangling so that @abiPublic private 
symbols are mangled like internal symbols, with a module name and no source 
file name. This makes for a simpler ABI. However this also has a downside, 
because now if you define two @abiPublic private functions in different files 
that have the same mangling, you will get a linker error and not a nice 
compiler diagnostic.

Note that nothing in this proposal precludes @abiPublic from being applied to 
private and fileprivate symbols though. If we figure out a nice solution to the 
above problems, we could generalize @abiPublic without any issues.

Slava

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to