News for hackers. Stuff that matters.
Re:Swift Ownership Manifesto by slavapestov on Tuesday June 06, 2023 @07:38PM (#36220635)
> It's super easy to cause its type check to timeout, which is something I haven't seen when using Rust.

Yeah, the operator overloading design makes it too easy to construct an exponential search space.

> For instance, Swift doesn't have the orphan rule, so it's possible that 2 packages implement the same protocol for the same type, and when this happens currently there are no solutions;

There's now a warning about this: https://github.com/apple/swift-evolution/blob/main/proposals.... What other solutions can there be other than making it a hard error? It seems like an inherent drawback of typeclasses over first-class modules.

> there is this strange design decision that classes and structs should be different things and each have their own set of random limitations

structs in Swift are the same as structs in Rust, and a class is a heap-allocated reference counted box, like an Arc<Box<T>>.

> and there is SwiftUI, which hacks on the syntax itself, making statements no longer mean what they are supposed to mean

Result builders are a language feature and not part of SwiftUI: https://github.com/apple/swift-evolution/blob/main/proposals...

Re:Swift Ownership Manifesto by ii41 on Tuesday June 06, 2023 @08:15PM (#36220978)
> structs in Swift are the same as structs in Rust, and a class is a heap-allocated reference counted box, like an Arc<Box<T>>.

Yeah, and by representing the differences this way, Rust allows you to easily decide whether an object is used directly or is wrapped in a rc box when its used, instead of when it's defined, often not by you, and when you change your mind you don't need to change all methods or functions than mutates it and all their call sites.

> Result builders are a language feature and not part of SwiftUI

I admit that this is the first time I see the term result builders. This is never mentioned in any SwiftUI documentation I've seen, so I guess I should extend my complaint to include quality of docs :p. Whatever this is called you seem to agree that the syntax is hacked and it can get hard to understand what something means

Re:Swift Ownership Manifesto by slavapestov on Tuesday June 06, 2023 @08:31PM (#36221101)
> Yeah, and by representing the differences this way, Rust allows you to easily decide whether an object is used directly or is wrapped in a rc box when its used, instead of when it's defined, often not by you, and when you change your mind you don't need to change all methods or functions than mutates it and all their call sites

Changing a value type into a reference type is a pretty fundamental transformation because your local mutations now become non-local. Its not clear the Rust approach makes this any easier either, since you’d still have to update all call sites that perform mutation if suddenly one of your value types was now always wrapped in a box.

> Whatever this is called you seem to agree that the syntax is hacked and it can get hard to understand what something means

Result builders are just a way to build data types from the results of top-level expressions (hence their name). It’s not just a SwiftUI thing, they’re also used for regular expressions for example: https://github.com/apple/swift-evolution/blob/main/proposals...

Re:Swift Ownership Manifesto by plorkyeran on Tuesday June 06, 2023 @10:58PM (#36222331)
The regex result builder is awful. It's very obviously a feature which was developed to make SwiftUI look good in WWDC presentations at the expense of everything else, and no one's found anything that they're actually useful for even with some effort to pretend that it's not just there for SwiftUI.
Re:Swift Ownership Manifesto by bsaul on Wednesday June 07, 2023 @04:08AM (#36224221)
this trend of apple building api that only serves to make good-looking wwdc talks but fall short under real life usage is one of the worst things... It has now reached a point where people don't trust anything apple dev say during those presentations, because they know there's a limitation hidden somewhere.
Re:Swift Ownership Manifesto by cdcarter on Tuesday June 06, 2023 @11:41PM (#36222565)
I spent some time with Swift-on-the-server last year and definitely felt like the class/struct difference made sense.

But I have to agree, from a novice eye at least, result builders look to be a feature added to support SwiftUI and limited other use cases. Have you seen many examples of third party libraries successfully using them?

And while we're here, do the introduction of macros in Swift 5.9 allow room for replacing result builders with something more uniformly useful?

Re:Swift Ownership Manifesto by jurip on Wednesday June 07, 2023 @12:41AM (#36222904)