The Transition to Apple Silicon
In June of last year, Apple announced that the Mac would transition to Apple’s own chips, called Apple Silicon. Here at PyCharm, this would mean major changes to the way we build our software. A change of this magnitude has not happened since the move from PowerPC to Intel’s x86 architecture.
Although the performance was somewhat acceptible on Rosetta 2, Apple’s new translation engine that translates the x86 instruction set to the M1’s ARM-base instruction set, it was not good enough for our IDEs.
In general, if you have a simple program then Rosetta 2 should be able to translate your program without significant overhead. However, our IDEs are built on top of our own custom Java Runtime Environment, and that is in no way a simple program.
Up until 2010, Apple bundled their own version of Java with their operating system. This meant that every time a new version of Java was released, Apple would need to patch it for their own operating system, so that it did not have any security vulnerabilities. With the deprecation of Java on the Mac, certain things such as font-rendering on retina screens became more difficult using the version of Java that Oracle released. In order to remedy this, JetBrains forked the OpenJDK project in order to facilitate better control over how the IDEs looked on Macs a well as other HiDPI screens; JetBrains Runtime was born and we bundled it with our IDEs from 2014.
The JetBrains Runtime ships with all our IDEs and although this gives us more control, it also means that we need to have a large team to maintain this codebase. Furthermore, there are many facets of the runtime, and we do not know every little crevice of it, rather we focus on the part of the code that handles the rendering of UI on screens.
M1 Enters the Chat
The change to Apple Silicon meant that we’d need to re-write a lot of JetBrains Runtime, to make sure that we had adequate performance. Although we had been experimenting with running applications on Raspberry Pi computers, this was a completely different issue; the M1 meant that ARM-based computers would soon become mainstream. Our IDEs couldn’t just run adequately on the M1, they had to run well on them.
To this end, we began to investigate how we could handle this transition with grace. It soon turned out that we had to re-write a lot of the JIT system, a core component of the JVM itself, which was something we had little to no experience in.
Eventually, we did manage to solve this issue with the help of Azul Systems. To hear the whole story, listen to the podcast, where I talk to Konstantin Bulenkov, who had to weather the storm of this fundamental change.
Subscribe to Blog updates
Thanks, we've got you!
Getting Started in Data Science: EuroPython 2023 Follow-Up
One of my favorite parts of my job as a developer advocate is being able to help people get started in data science. I still remember when I made the transition from academia to data science almost 8 years ago, and how overwhelming it was and how much I felt like I needed to learn to even get starte…
PyCharm 2023.2.1 Is Out!
PyCharm 2023.2.1, the first bug-fix update for PyCharm 2023.2, is now available! You can update to v2023.2.1 by using the Toolbox App, installing it right from the IDE, or downloading it from our website. Download PyCharm 2023.2.1 Here are the most notable fixes available in this version: …
Live stream: Who Is Behind Django? An Interview with the DSF President
We’ve all seen and used the famous Django framework, but there’s a lot more to a successful project than commits. The Django Software Foundation is a hallmark achievement in the Python community, but who’s behind it? In this interview, we’ll be talking with DSF President Chaim Kirby about its histor…
PyCharm 2023.2: New Live Templates for Django, Black Formatter Integration, Run Anything, and AI Assistant
With this build, you can now type your Django code faster with the new live templates, reformat your code in one click with the integrated Black formatter, and generate commit messages with the help of AI Assistant. Read on below for the full list of enhancements!