Archive for November 20, 2025

Thursday, November 20, 2025

(No) MainActor by Default

Matt Massicotte (Mastodon):

Swift 6.2 gives you the ability make MainActor the default isolation. Unlike the rest of the features introduced as part of “Approachable Concurrency”, this is a long-term mode. It is optional and will remain so. However, this mode is enabled for new app targets in Xcode 26. And many people take this as a very strong signal from Apple, myself included.

[…]

Well I have made up my mind, at least for now. We should not. I’m not sure we should even have the ability to do so.

[…]

But when you finally encounter concurrency, and you almost certainly will, a default of MainActor can make those encounters much more difficult to understand and address.

[…]

(I also did a whole talk on this if that’s interesting.)

I still find this all rather confusing, but I’m inclined to agree with his argument. I understood the original motivation as sort of progressive disclosure. You shouldn’t have to deal with concurrency at all if you don’t need your code to be concurrent. But for most real apps you will have to understand and use the full Swift Concurrency. If opting in to MainActor (the keyword, not the default isolation) is easier than opting out, is that really helping in the end? Why start down a garden path that leads to a cliff? And is having the simple mode worth the confusion of having two modes, and having to keep straight which module is using which? (This is on top of having separate modes for Swift 5 and 6.)

Ryan Booker:

I’ve seen quite a few people saying something similar. What worries me is that not only is MainActor the default now, the WWDC videos introducing it are quite clear that Apple think you should make your App target and UI based modules all MainActor by default, with non UI modules nonisolated by default.

So I’m worried about fighting the tide, but also the idea that you have two inverted concurrency systems to reason about in one code base if you follow Apple’s suggestion!

Jonathan Wight:

The most vocal Swift Concurrency expert outside of Apple is recommending to avoid MainActor default isolation and you’re left wondering what is even the point.

Previously:

Europe Scaling Back GDPR and AI Laws

Robert Hart and Dominic Preston (Hacker News, MacRumors):

Under intense pressure from industry and the US government, Brussels is stripping protections from its flagship General Data Protection Regulation (GDPR) — including simplifying its infamous cookie permission pop-ups — and relaxing or delaying landmark AI rules in an effort to cut red tape and revive sluggish economic growth.

The changes, proposed by the European Commission, the bloc’s executive branch, changes core elements of the GDPR, making it easier for companies to share anonymized and pseudonymized personal datasets. They would allow AI companies to legally use personal data to train AI models, so long as that training complies with other GDPR requirements.

The proposal also waters down a key part of Europe’s sweeping artificial intelligence rules, the AI Act, which came into force in 2024 but had many elements that would only come into effect later. The change extends the grace period for rules governing high-risk AI systems that pose “serious risks” to health, safety, or fundamental rights, which were due to come into effect next summer. The rules will now only apply once it’s confirmed that “the needed standards and support tools are available” to AI companies.

Sketch Copenhagen

Freddie Harrison (Mastodon, Pieter Omvlee):

Early on in the process, we prototyped various approaches to the sidebar and Inspector, including floating options (the new default in Tahoe) and glass materials. Ultimately, we went custom here, with fixed sidebars that felt less distracting in the context of a canvas-based design tool.

Another area we went custom with was document tabs. Having them run along the top of the window didn’t work well with the toolbar and ultimately felt too boxy and imposing. Instead, they now live in the sidebar, and are just as functional.

[…]

As well as shipping our own glass effect soon after WWDC, we’ve adopted Liquid Glass in subtle ways in Copenhagen. You’ll find it in the toolbar, minimap and notifications at the bottom of the Canvas.

[…]

One of the first things you’ll notice when you work with the new Inspector is that most of the old popovers are now separate panels.

These new panels have a lot of advantages. You can move them freely around the window to bring them closer to your work. They also stay open if you change your selection and they’re still applicable, making similar changes across multiple layers more convenient.

[…]

We created a new set of icons (over 700 of them) — you’ll find them everywhere from menus, to the Inspector, and beyond.

Nick Heer:

This probably will not convert the kind of person who finds Liquid Glass revolting in its entirety, but I think this implementation is thoughtful and well-considered. Note, too, that Apple itself has not shipped any of its own Mac pro apps with Liquid Glass changes. The choices made by the Sketch team are instructional.

Mario Guzmán:

The Sketch design team should be the folks designing at Apple.

Haven’t they sucked up enough talent already?

Jonathan Fischer:

Random thing that I love: the whole application is still just 215MB.

Benjamin Schmidt:

In general a nice update and so far the best implementation of Liquid Glass, but that toolbar is breaking me. Muscle memory I built since Sketch 3 (partly Sketch 2 even) gone and replaced by searching icons in an ever changing toolbar.

Sketch:

A customizable toolbar wasn’t really a viable option in this era of macOS.

Previously:

Mastodon CEO Steps Down

Eugen Rochko (via Hacker News):

After nearly 10 years, I am stepping down as the CEO of Mastodon and transferring my ownership of the trademark and other assets to the Mastodon non-profit. Over the course of my time at Mastodon, I have centered myself less and less in our outward communications, and to some degree, this is the culmination of that trend. Mastodon is bigger than me, and though the technology we develop on is itself decentralized—with heaps of alternative fediverse projects demonstrating that participation in this ecosystem is possible without our involvement—it benefits our community to ensure that the project itself which so many people have come to love and depend on remains true to its values. There are too many examples of founder egos sabotaging thriving communities, and while I’d like to think myself an exception, I understand why people would prefer better guardrails.

But it would be uncouth for me to pretend that there isn’t some self-interest involved. Being in charge of a social media project is, turns out, quite the stressful endeavour, and I don’t have the right personality for it.

Matt Birchler:

Rochko seems like a good guy and I thank him for all he’s done leading Mastodon all these years.