> On Oct 27, 2017, at 9:27 AM, Mike Kluev via swift-evolution > <swift-evolution@swift.org> wrote: > > if it wasn't already discussed here is the preliminary proposal, if it was > then my +1 to the feature. > > i propose we have an explicit apparatus to denote classes having stack > storage. > > stack class StackObject { // guaranteed to be on stack > } > > class NonStackObject { // is not guaranteed to be on stack, can be on heap as > well > } > > this is for performance reasons. sometimes what we need is “structs with > deinit” and as this is not going to happen the next best thing could be > “lightweight” classes. this shall be self obvious, here are few examples:
Move-only struct types will be able to provide deinit. See the ownership manifesto. John. > > stack class StackObject { > var variable = 0 > > func foo() { > print(“i am ok to live on stack”) > } > } > > stack class BadObject { > var variable = 0 > > func foo() { > DispatchQueue.main.async { // error: can’t be a stack class > self.variable = 1 > } > } > } > > class NonStackObject { > … > } > > foo() { > let stackObject = StackObject() > > DispatchQueue.main.async { > stackObject.foo() // error: can’t use a stack object in this context > } > } > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution