The original file’s here: https://github.com/rxwei/cuda-swift/blob/master/Sources/Warp/CollectionOperations.swift
I’m assuming this change has affected Dispatch users as well. It's not a good idea for such high-level APIs to rely on explicit pointers to pass mutating self for struct types. -Richard > On Dec 16, 2016, at 03:05, Richard Wei <rxr...@gmail.com> wrote: > > It’s not the correct choice here :) > >> On Dec 16, 2016, at 03:04, Rien <r...@balancingrock.nl> wrote: >> >> Just because it is called “Unsafe” does not mean it is unsafe :-) >> It all depends on how you use it. >> >> Regards, >> Rien >> >> Site: http://balancingrock.nl >> Blog: http://swiftrien.blogspot.com >> Github: http://github.com/Swiftrien >> Project: http://swiftfire.nl >> >> >> >> >>> On 16 Dec 2016, at 09:52, Richard Wei <rxr...@gmail.com> wrote: >>> >>> Zhao, it’s not a class. >>> >>> Rien, unsafe pointers is the last thing I would ever want to introduce in >>> my library… >>> >>> Capturing self was clean, working perfectly, until Swift 3.0.2. >>> >>> -Richard >>> >>>> On Dec 16, 2016, at 02:49, Zhao Xin <owe...@gmail.com> wrote: >>>> >>>> What is the type of self? If it is a class, try [unowned self]. >>>> >>>> Zhaoxin >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Fri, Dec 16, 2016 at 4:33 PM, Rien via swift-users >>>> <swift-users@swift.org> wrote: >>>> How about using: >>>> >>>> UnsafeMutablePointer<TypeOfSelf> >>>> >>>> ? >>>> >>>> Regards, >>>> Rien >>>> >>>> Site: http://balancingrock.nl >>>> Blog: http://swiftrien.blogspot.com >>>> Github: http://github.com/Swiftrien >>>> Project: http://swiftfire.nl >>>> >>>> >>>> >>>> >>>>> On 16 Dec 2016, at 09:10, Richard Wei via swift-users >>>>> <swift-users@swift.org> wrote: >>>>> >>>>> Capturing makes it immutable, which unfortunately can't solve this >>>>> problem. >>>>> >>>>> -Richard >>>>> >>>>>> On Dec 16, 2016, at 02:05, Zhao Xin <owe...@gmail.com> wrote: >>>>>> >>>>>> I did not test the code. But if you cannot implicitly capture a mutating >>>>>> self, you should do it explicitly, right? >>>>>> >>>>>> let blockSize = min(512, count) >>>>>> let blockCount = (count+blockSize-1)/blockSize >>>>>> device.sync { [self] () -> () in // Launch CUDA kernel >>>>>> try! fill<<<(blockSize, blockCount)>>>[ >>>>>> .pointer(to: &self), .value(value), .value(Int64(count)) >>>>>> ] >>>>>> } >>>>>> >>>>>> Hope above code works. >>>>>> >>>>>> Zhaoxin >>>>>> >>>>>> On Fri, Dec 16, 2016 at 3:46 PM, Richard Wei via swift-users >>>>>> <swift-users@swift.org> wrote: >>>>>> Hi, >>>>>> >>>>>> Swift 3.0.2 seems to have broken my code due to mutating self capture. >>>>>> But I have to pass inout self to the closure. Any workaround? >>>>>> >>>>>> let blockSize = min(512, count) >>>>>> let blockCount = (count+blockSize-1)/blockSize >>>>>> device.sync { // Launch CUDA kernel >>>>>> try! fill<<<(blockSize, blockCount)>>>[ >>>>>> .pointer(to: &self), .value(value), .value(Int64(count)) >>>>>> ] >>>>>> } >>>>>> >>>>>> <PastedGraphic-1.png> >>>>>> >>>>>> -Richard >>>>>> >>>>>> _______________________________________________ >>>>>> swift-users mailing list >>>>>> swift-users@swift.org >>>>>> https://lists.swift.org/mailman/listinfo/swift-users >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> swift-users mailing list >>>>> swift-users@swift.org >>>>> https://lists.swift.org/mailman/listinfo/swift-users >>>> >>>> _______________________________________________ >>>> swift-users mailing list >>>> swift-users@swift.org >>>> https://lists.swift.org/mailman/listinfo/swift-users >>>> >>> >> > _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users