Kernel Extensions (KEXTs), provide control to the developers in order to load the code directly into the macOS kernel. It is fundamentally an extension to what macOS does and can effectively extend or change a particular service. KEXTs being part of Kernel, which is in control of everything on the system, get the full system privileges in order to create very powerful apps.
As they say, with power comes responsibility. A small bug in a kernel code can bring the whole system down. That makes kernel extension complex and hard to develop. So any mischievous kernel extension, may possess a great risk both from security and stability perspective.
At Worldwide Developers Conference (WWDC) 2019, Apple announced the deprecation of few of the KEXTs also called as legacy system extensions. According to Apple, Kernel programming interfaces (KPIs) will be deprecated as alternatives become available, and future OS releases will no longer load kernel extensions that use deprecated KPIs by default. macOS Catalina will be the last macOS to fully support KEXTs.
Modern alternative to KEXTs are System Extensions and DriverKit. System extensions and drivers built with DriverKit run in user space, where they can’t compromise the security or stability of macOS. Once installed, an extension is available to all users on the system and can perform tasks previously reserved for kernel extensions. There are 3 types of System Extensions:
Apple have been working with the developers to transition their software. System Extension will improve the security, reliability and enable more user-friendly software distribution mechanisms on macOS.
macOS Catalina 10.15.4 and later updates show the following message in case a legacy system extension is loaded
Just for the transition, Apple has allowed means to allow legacy system extensions but only with a caveat that those will not work on future versions of macOS.
System Extensions are meant to ease the life of user and developer. But based on our experience, though users will certainly benefit from the move, it is still a significant effort to develop the System Extensions. This is because:
Based on our extensive research and development on System Extensions, we have listed only few of the challenges here. But we reckon that there are many stones waiting to be unturned.
It seems that the legacy system extensions are still working on Big Sur, but based on Apple’s statement these would soon be deprecated and will not load. So if you are a developer still working on Kernel Extension, it’s time to move to System Extension.