Archive for April 23, 2020

Thursday, April 23, 2020

Bloomberg: ARM Macs in 2021

Mark Gurman at al. (tweet, Hacker News, Slashdot, AppleInsider, MacRumors):

The Cupertino, California-based technology giant is working on three of its own Mac processors, known as systems-on-a-chip, based on the A14 processor in the next iPhone. The first of these will be much faster than the processors in the iPhone and iPad, the people said.

Apple is preparing to release at least one Mac with its own chip next year, according to the people. But the initiative to develop multiple chips, codenamed Kalamata, suggests the company will transition more of its Mac lineup away from current supplier Intel Corp.


The first Mac processors will have eight high-performance cores, codenamed Firestorm, and at least four energy-efficient cores, known internally as Icestorm. Apple is exploring Mac processors with more than 12 cores for further in the future, the people said.

This is another good reason to postpone or scale back macOS 10.16. We want the software to be in as good a shape as possible before a big hardware transition. Apple will have even less time to fix bugs, and developers less time to work around them.

I expect the ARM transition to be accompanied by removal of lots of APIs, so developers will have to contend with that, as well as porting and testing their own code, and dealing with any dependencies that have broken.

Gus Mueller:

I don’t think unifying the chip architecture would make the app ecosystem any more unified. Apple could do this today if they really wanted to, fat binaries (where different cpu architectures are combined in the same application) have been around forever. Major frameworks are already on both architectures, which is the biggest hurtle. I think the problem is more philosophical, or maybe Apple just lacks the will or vision to actually get it done today, if ever.


Update (2020-04-24): John Gruber:

The $64,000 question is whether they’re going to have an emulator for running x86 code on ARM Macs.

Update (2020-05-06): Raphael Sebbe:

About ARM Macs: that would also enable machine learning on laptops. Like in big ways.

ANE is the new dedicated DSP, and with hardware and software stacks already in place, this gives Apple a significant advantage.

Update (2020-05-18): Jason Snell:

The Motorola 68000 era lasted for the Mac’s first 12 years (non-PowerPC PowerBooks… lingered). In 1994, the PowerPC transition began, and Apple shipped Macs with PowerPC processors for 12 years.

At 14 years and counting, the Intel era is the longest in the Mac’s history. The transition was also the fastest—Apple really cleared out the PowerPC Macs in a hurry and replaced them with Intel models.

I still find it hard to believe that the Intel era is the longest and that the OS X era is longer than the classic Mac OS era.

Throttling Due to Thunderbolt Left Proximity Sensor

Dion Almaer:

Do you charge your Macbook on the left or right side? Turns out right is better!


Occasionally my machine will have a kernel_task instance max out the CPU[…] This can last from minutes to sometimes hours. The machine is effectively unusable in this state. Restarting doesn’t help; a new kernel_task pops up again until it finishes whatever it’s doing.


State C shows that simply having stuff plugged in to TB ports raises their temperature significantly. Both the hub (mouse and keyboard ONLY) and HDMI adapter individually raise the temperature about 10 degrees, and 15 degrees together.

Note that high temperature on the right side appears to be ignored by the OS. Plugging everything into the two right ports instead of the left raised the Right temperatures to over 100 degrees, without the fans coming on. No kernel_task either, but the machine becomes unusable from something throttling.

Joseph Pierini:

Just had this problem on Catalina 10.15.4.

Again, it seems like Apple’s notebooks aren’t designed with enough thermal headroom.

Update (2020-04-23): See also: Hacker News, Igor Kromin.

Update (2020-04-24): Peter Steinberger:

This finally explains what high kernel_task is, and why it happens. I spent so much time on it; wrote radars, escalated to Apple support; replaced hardware (!) to finally see that it’s temperature emergency code because I plugged in the LG 5k monitor left.

It’s maddening. Probably a design compromise [so] it can be 1mm thinner.

It changed the way I work - almost stopped using external screens because of this bug. The back pain this caused...

Update (2020-06-05): Apple (via Lloyd Chambers):

One of the functions of kernel_task is to help manage CPU temperature by making the CPU less available to processes that are using it intensely. In other words, kernel_task responds to conditions that cause your CPU to become too hot, even if your Mac doesn’t feel hot to you. It does not itself cause those conditions. When the CPU temperature decreases, kernel_task automatically reduces its activity.

See also: Howard Oakley.

CS Unplugged

University of Canterbury (via Hacker News):

CS Unplugged is a collection of free teaching material that teaches Computer Science through engaging games and puzzles that use cards, string, crayons and lots of running around.

The activities introduce students to Computational Thinking through concepts such as binary numbers, algorithms and data compression, separated from the distractions and technical details of having to use computers. Importantly, no programming is required to engage with these ideas!

Here’s the textbook (PDF).

WebKit: Inline Caching With Delete

Justin Michaud:

Here, we can see that the addition of a delete statement to a hot section of code can send the performance off a cliff! The primary reason for this is that deletion in JavaScriptCore used to disable all of the inline caching optimizations for an object, including when putting and getting properties of the object.


For performance, JavaScriptCore uses multiple internal representations for objects, choosing between them at runtime based on how a program uses them. The default representation of objects use something called a Structure to hold the general shape of an object, allowing many instances that have the same shape to share a structure. If two objects have the same structure ID, we can quickly tell that they have the same shape.


In previous versions of JavaScriptCore, this is the representation that was chosen for any object that had a deleted property. This is why we see such a large performance difference when a delete is performed on a hot object.


Now that we can cache deletion transitions, we can further optimize the act of property deletion itself. Getting and putting properties both use something called an inline cache to do this, and now deletion does too. The way this works is by emitting a generic version of these operations that modifies itself over time to handle frequent cases faster.

The Most Impactful iPad Apps of the Decade


Some forged a path by adopting the latest Apple technologies in a unique way that set an example for apps that followed. Others are apps that define a category that takes unique advantage of the iPad’s hardware. These are also apps that work on the iPhone or Mac too, but are most at home on the iPad’s unique platform.