Archive for June 7, 2018

Thursday, June 7, 2018

Removed in macOS 10.14 Mojave

Tim Hardwick:

When Apple released iOS 11, the company removed built-in integration with Twitter, Facebook, Flickr, and Vimeo, a feature that allowed iPhone and iPad users to store their third-party account information and access it within apps that needed to use those services.

The equivalent integration remains in macOS High Sierra, but Reddit user Marc1199 has noted that Apple appears to have removed support for third-party accounts completely in macOS 10.14 Mojave.

Paul Haddad:

Apple killed off subpixel antialiasing in 10.14 and called it a “refinement”. Not sure they know what that word means.

To be clear, having all NSViews backed by layers is a good thing. Framing loss of font smoothing as a refinement is 🙄

Mike Rundle:

It means Apple no longer cares about non-retina Macs like the MacBook Air and thinks owners of those machines won’t notice rough, jagged text when they “upgrade” to Mojave.

Mitchel Broussard (Hacker News):

Alongside the new features, Apple has confirmed that it is deprecating OpenGL (Open Graphics Library) and OpenCL (Open Computing Language) in favor of Metal.

This means that apps built using OpenGL and OpenCL will still run in Mojave, but they will no longer be updated after macOS 10.14 launches. Apple encourages games and “graphics-intensive apps” built with OpenGL to adopt Metal ahead of Mojave’s launch, and apps that use OpenCL for computational tasks “should now adopt Metal and Metal Performance Shaders.”


Although Apple’s decision to deprecate the older technology in favor of its own graphics API may not be surprising, some game developers have begun criticizing Apple for the move, particularly how it affects the future of gaming on Mac. Notably, OpenGL is an open-source, cross-platform solution that made it simple for developers to build games on both Mac and PC at the same time, providing some parity to a platform that many have agreed is lacking as a gaming hub.

Chris Messina:

⚰️ RIP Safari Extensions

“Safari Extensions installed from the Safari Extensions Gallery is deprecated with Safari 12 on macOS. Submissions to the Safari Extensions Gallery will no longer be accepted after December 2018”

Tim Hardwick:

As expected, Apple confirmed yesterday during its WWDC keynote that macOS 10.14 Mojave will be the last version of macOS to support legacy 32-bit apps.

Previously: John Carmack’s Steve Jobs Stories, macOS 10.13.4 to Warn About 32-bit Apps Starting April 12.

Update (2018-06-07): Rob Mathers:

You might want to add that developer-signed (not in the gallery) Safari Extensions are gone completely, not even deprecated.

Jeff Nadeau:

FYI the subpixel antialiasing change is unrelated to layer-backing on a technical level. We’ve had techniques for accomplishing smoothing in layer-backed text for years.


One other unmentioned point. Xcode 10 loses support for Subversion.

Update (2018-06-08): Jeff Johnson:

On Mojave you can no longer “Use dark menu bar and Dock” in non-dark mode.

I am not amused.

Nick Lockwood:

So many bad takes about Apple deprecating OpenGL. The reality is that this does not matter.

Windows games use DirectX instead of OpenGL, this doesn’t make it any harder to port them.

Most indie games are made using high-level game engines like Unity that already support Metal.

Apple didn’t kill OpenGL, it’s been dead in the water as a cross platform standard for some time.

The future is clearly DX on Win, Metal on iOS/Mac and Vulkan everywhere else

Hopefully a good, open source SDL-like wrapper that abstracts these three APIs will emerge at some point

Update (2018-06-12): John Siracusa:

Now that the new version of Safari has killed all non-App-Store extensions, I would pay a surprising amount for a replacement for this.

Update (2018-09-07): Mark Alldritt:

Non-system scripting additions are no longer supported by Mojave, so Script Debugger will not display them in Dictionary view.

Swift 4.2

Ole Begemann:

I made a “What’s new in Swift 4.2” playground for Xcode 10: new collection algorithms, random numbers, enumerating enum cases, and more.

Ole Begemann:

Working with random numbers in Swift used to be a bit of pain because there was no native random number API. Developers had to fall back on C APIs provided by the operating system, which are often easy to misuse. Moreover, the preferred random number API differs between platforms (e.g. arc4random vs. rand vs. random), making it difficult to write cross-platform code.

Swift 4.2 makes this much easier by including a native and fairly full-featured random number API in the standard library. You can read about the full API and its design rationale in Swift Evolution proposal SE-0202).

Previously: Swift 4.1.

Update (2018-06-09): Roadfire Software (via Hacker News):

In What’s New in Swift at WWDC 2018, Apple gave a quick overview of what’s new in Swift 4.2 and Swift 5. You can read my notes below, or you can watch the 40-minute video and download the slides from Apple.

Ole Begemann:

Problem: a manual CaseIterable implementation risks becoming incorrect as a type evolves. The compiler doesn’t catch this.

Solution: a dummy function whose only purpose is to produce a compile error on (almost) the correct line when a new case is added.

It’s ugly but it works.

Update (2018-06-12): Ole Begemann:

New in Swift 4.2, the compiler can generate a collection of an enum’s cases, relieving you from the error-prone task of maintaining such a list yourself. The Swift Evolution proposal that introduced this feature is SE-0194.


The manual implementation is easy enough to write, but it has a major downside compared to compiler-generated code: we now have to remember to keep it up to date. If we later add another workout type to our enum, the compiler won’t alert us that our allCases implementation is no longer correct. It will just silently return the wrong result.

The only workaround I can think of is a little ugly, but it solves this problem in a really interesting way.

Update (2018-08-14): Mattt Thompson:

Swift 4.2 refines Hashable even further by introducing the Hasher type and adopting a new universal hashing function.

Update (2018-09-03): Brent Simmons:

The point still stands, though, that automatic hashing in the case of objects with lots of properties might be a performance hit. As always — use the profiler.

Facebook-WhatsApp Turmoil Takeaway

Felix Salmon:

WhatsApp wasn’t an easy acquisition for Zuckerberg, because the two apps have very different founding principles. Koum, who grew up in Ukraine, believes deeply in privacy; Zuckerberg thinks that the more open and connected we are, the happier we all become. And so in order to acquire WhatsApp, Zuckerberg not only had to pay a lot of money and give up a board seat to Koum; he also had to make a lot of promises. Some of those promises were even enshrined in the acquisition agreement: If Facebook imposed “monetization initiatives” like advertising onto WhatsApp, its founders’ shares would vest immediately, and they could leave without suffering any kind of financial penalty.

Thus did WhatsApp retain exactly the independence that it had been promised—until it didn’t.

Today, it seems inevitable not only that advertising will make it onto WhatsApp, but also that the advertising in question will be targeted—which is to say that when you use the app, Facebook will know exactly who you are, where you live, and what kind of products you might be interested in buying. It’s a complete repudiation of WhatsApp’s founding principles, and makes a mockery of its end-to-end encryption.