Archive for November 26, 2024

Tuesday, November 26, 2024

Watch Out for Counterintuitive Implicit Actor-Isolation

Jared Sinclair:

I ran into some unexpected runtime crashes recently while testing an app on iOS 18 compiled under Swift 6 language mode, and the root causes ended up being the perils of using @unchecked Sendable in combination with some counterintuitive compiler behavior with implicit actor isolation.

[…]

What occurred to me instead was to find a way to use locking mechanisms to synchronize access to the static var mutable property. What happened next led me down a path to some code that (A) compiled without warnings or errors but (B) crashed hard at runtime due to implicit actor isolation assertion failures.

[…]

It turns out that the implicit Main Actor isolation is getting introduced by MyApp[…] Therefore that init() method is isolated to the Main Actor. But our Logging.sink member is not isolated to the Main Actor. It’s implicitly nonisolated, so why is the compiler inferring Main Actor isolation for the block we pass to it?

Matt Massicotte:

What’s happening here is the compiler is reasoning “this closure is not Sendable so it couldn’t possibly change isolation from where it was formed and therefore its body must be MainActor too” but your unchecked type allows this invariant to be violated. This kind of thing comes up a lot in many forms, and it’s hard to debug…

Mutex is a potential solution but requires iOS 18. He also shows how to protect the sink with a non-global actor.

Previously:

Mini vMac for iOS Rejected via Notarization

Jesús A. Álvarez:

Mini vMac for iOS won’t be coming to #AltStorePAL, it was just #RejectedByAppReview for notarization after an initial rejection and appeal.

You can of course still get it from GitHub and build it with Xcode or sideload the ipa with AltStore Classic.

Via Riley Testut:

Apple’s complete abuse of Notarization is going to be the reason the EC comes down hard on them, and it’s wild how ignorant they are 💀

[…]

Based on actual, real conversations we’re having with the EC rn, I am very confident that this is not going to end well for Apple — but it seems like they genuinely don’t realize this?

Apple’s rejection notice says:

Use of Apple’s software is limited to the terms of the license for such software. Apple does not license its Mac operating system software for use outside of an Apple-branded computer. Your app necessarily involves and promotes the use of Mac operating system software on devices other than Apple-branded computers and such use goes beyond of the scope of its license terms. Notarization of your app thus would contravene the terms of Apple’s software licenses. Additionally, your prominent use of Apple’s MAC mark in the app name; MACINTOSH in the subtitle, and a Macintosh graphic in the icon for an operating system software product improperly and confusingly suggests or implies that the app has an affiliation, endorsement, or sponsorship by Apple and is in contravention of Apple’s Trademark Guidelines.

However, even if it’s correct about these points, they do not seem to be violations of the notarization guidelines and should probably be adjudicated via a different process.

Khaos Tian:

Apple really treat Notarization process like an app review and explicitly call out the reason for rejection to be unrelated to what DMA permits is just providing written evidence of abusing process at this point…

Previously:

App Store Search Queries Appear to Violate Data Minimization Practices

Mysk:

This is an example of what the App Store app shares with #Apple when you search for an app. Everything you type in the search field is recorded as an event and associated with your Apple ID before it is sent to Apple. When I search for “Google Authenticator,” events are recorded as I type character by character. The leap between rows 78 and 79 is when I picked a suggestion. The timestamp of every event is recorded, i.e. Apple can calculate my typing speed 🙃.

[…]

There is no way you can opt out of sending such app Analytics to Apple or request it be anonymous.

[…]

Apple Maps does the same, but it never associates the requests with the user’s ID when sending the search requests, and never records them as app analytics.

Nick Heer:

What I cannot understand is why Apple wants to record all typed text and completed queries and correlate those to millisecond-level time codes and attach all that to someone’s Apple ID. This is the very opposite of data minimization — a reality which is unfortunately common among Apple’s services. It is not “tracking” by the company’s definition, which is exclusively concerning third-party sharing, but it violates the spirit of user privacy.

Previously:

Apple’s Movie Theater Beef With Hollywood

Mike Fleming Jr.:

Jon Watts, the filmmaker who stepped out of the Spider-Man franchise with Tom Holland and Zendaya to script and direct George Clooney and Brad Pitt in the film Wolfs for Apple, created a press dustup yesterday when he let slip that he and they would not be doing a sequel, even though Wolfs became by far the most viewed feature film ever released on Apple TV+.

[…]

It is similar to when Doug Liman feuded with Amazon after his Road House remake went straight to streaming despite his deal for a theatrical release and huge test scores, and he is not returning for the inevitable sequel. It underscores the continuing dilemma between streaming bows and risky theatrical release deals with big P&A spends.

Via M.G. Siegler:

Look, on paper, in a vacuum, I’m not sure Apple didn’t make the right call in pulling back on the theatrical release and going straight-to-streaming. The reality of our currentsituation is such that a movie like Wolfs – especially and oddly when marketed by Apple – was unlikely to be a big hit at the box office. And that would have been a black eye. For Apple. For Clooney. For Pitt. For Watts. For everyone. So pulling it back made sense in this very practical regard.

But my god the intangibles here. First and foremost, risking pissing off two of the biggest movie stars in the world with the maneuver. Second, this was exponentially riskier because one of those movie stars, Pitt, was in the midst of wrapping up Apple’s biggest movie ever which will need to be a huge hit in theaters: F1. Third, risking pissing off one of the hottest directors in the industry right now with the maneuver. Which clearly happened! Honestly, all of the above probably happened, but Watts is the only one talking about it openly right now.

And it’s not just the move Apple pulled, it’s how they did it. A last-minute bait-and-switch. And done with not only no discussion but almost no heads up. And then the ultimate dagger in the back: trying to spin the move with the sequel talk (which immediately seemed fishy to everyone when paired with the pull-back news – obviously) after Watts explicitly asked them not to do that.

Wes Davis:

The New York Times reported in August that Apple pulled the theatrical run for Wolfs because it was concerned it was spending too much on films after suffering multiple high-profile box office disappointments.

Previously: