I don’t know, this isn’t really a good Swift API either. Some of the other bare 
pointer cases we changed to return arrays instead for this reason, like 
String’s version of cString(using:). 
https://github.com/apple/swift/blob/master/stdlib/public/SDK/Foundation/NSStringAPI.swift#L413

I am actually in favor of having a minimal shim, but I’d rather it do nothing 
like Joe’s case than to start allowing arbitrarily-delayed deinitialization 
like this.

Jordan


> On Nov 2, 2016, at 13:00, Philippe Hausler <phaus...@apple.com> wrote:
> 
> See:
> 
> https://github.com/apple/swift-corelibs-foundation/blob/d015466450b2675037c6f1ace8e17e73050ccfb9/Foundation/NSURL.swift#L561
>  
> <https://github.com/apple/swift-corelibs-foundation/blob/d015466450b2675037c6f1ace8e17e73050ccfb9/Foundation/NSURL.swift#L561>
> 
> This is far and few between of cases that it would be useful but there are a 
> few APIs that we have not been able to express without being able to 
> autorelease items. Most of which we have either forbidden in Linux or 
> redesigned because they were sub-par swift experiences. However it seems 
> reasonable to have a minimal shim to provide cross platform code 
> compatibility even if it does next to nothing. That way trivial code as the 
> original issue showed can easily be directly compiled on either platform 
> without littering gnarly #ifdefs about.
> 
>> On Nov 2, 2016, at 12:55 PM, Jordan Rose <jordan_r...@apple.com 
>> <mailto:jordan_r...@apple.com>> wrote:
>> 
>> I’m confused about this. Shouldn’t you be able to get away with using +1 
>> convention everywhere? What needs to have arbitrary lifetime-extension in an 
>> ARC-ified language?
>> 
>> Jordan
>> 
>>> On Nov 2, 2016, at 12:23, Philippe Hausler <phaus...@apple.com 
>>> <mailto:phaus...@apple.com>> wrote:
>>> 
>>> So there are issues we have in swift-corelibs that suffer(leak) because we 
>>> don't have ARPs on Linux. It would be super nice to have a retain until 
>>> scope end concept for swift core libs where autorelease would be an 
>>> accessor in unmanaged that would retain the object until the arp ends scope.
>>> 
>>> Sent from my iPhone
>>> 
>>> On Nov 2, 2016, at 10:17 AM, Jordan Rose <jordan_r...@apple.com 
>>> <mailto:jordan_r...@apple.com>> wrote:
>>> 
>>>> 
>>>>> On Nov 2, 2016, at 09:42, Joe Groff via swift-users 
>>>>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>>>>> 
>>>>>> 
>>>>>> On Nov 1, 2016, at 6:40 PM, Bernardo Breder via swift-users 
>>>>>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>>>>>> 
>>>>>> Hello,
>>>>>> 
>>>>>> I want to create a mini http server project and execute at Ubuntu 15. 
>>>>>> The Xcode compile and access the function "autoreleasepool", but when i 
>>>>>> compile the same code at Ubuntu, this function not found
>>>>>> 
>>>>>> For example, i can compile the code above at Xcode:
>>>>>> 
>>>>>> while true {
>>>>>>    autoreleasepool {
>>>>>>    var test: Data = "HTTP/1.1 200 OK\r\nContent-Length: 
>>>>>> 1\r\n\r\na".data(using: .utf8)!
>>>>>>    }
>>>>>> }
>>>>>> 
>>>>>> But when i try to compile at Ubuntu:
>>>>>> 
>>>>>> git@breder:~$ cat main.swift     
>>>>>> import Foundation
>>>>>> 
>>>>>> while true {
>>>>>>    autoreleasepool {
>>>>>>    var test: Data = "HTTP/1.1 200 OK\r\nContent-Length: 
>>>>>> 1\r\n\r\na".data(using: .utf8)!
>>>>>>    }
>>>>>> }
>>>>>> 
>>>>>> git@breder:~$ swiftc main.swift 
>>>>>> main.swift:4:5: error: use of unresolved identifier 'autoreleasepool'
>>>>>>    autoreleasepool {
>>>>>>    ^~~~~~~~~~~~~~~
>>>>> 
>>>>> Autoreleasepools are an ObjC compatibility feature. They aren't necessary 
>>>>> in standalone Swift.
>>>> 
>>>> But they are necessary in Swift programs on Apple platforms (that don’t 
>>>> use RunLoop, anyway). Philippe, what do you think? What’s the right way to 
>>>> write cross-platform code that doesn’t use RunLoop or dispatch_main for an 
>>>> implicit autorelease pool?
>>>> 
>>>> (/me remembers +[NSAutoreleasePool drain] from the ObjC-GC days)
>>>> 
>>>> Jordan
>> 
> 

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

Reply via email to