커널의 메모리 안전성, Swift로 높인다
Apple이 커널 메모리 안전성(Kernel Memory Safety) 강화를 위해 Swift 도입을 시작했음
KernelKit이라는 새로운 프레임워크와 임베디드 Swift 런타임(Embedded Swift Runtime)이 발견됨
현재는 C/C++ 기반 커널(C/C++ Kernel)은 그대로 유지하며, Swift는 확장 계층(Extension Layer)에 국한됨
macOS는 Swift 런타임이 포함된 빌드를, iOS는 플랫폼만 준비된 상태로 확인됨
KernelKit: 새로운 커널 확장 프레임워크
Apple은 커널 메모리 안전성(Kernel Memory Safety) 확보를 목표로 KernelKit이라는 새로운 프레임워크를 개발 중인 것으로 분석됨. 이는 기존의 C/C++ 기반 커널 코드(Mach, BSD, IOKit)는 그대로 유지하면서, 확장 계층(Extension Layer)에 Swift 런타임을 통합하는 방식임. macOS 27에서는 `/System/KernelKit` 경로에 `Libm.kext`와 `pthread.kext`가 KernelKit SDK를 통해 재빌드되어 포함되었으며, 이는 드라이버킷(DriverKit)과 유사한 접근 방식을 따르고 있음.
임베디드 Swift 런타임의 역할
발견된 임베디드 Swift 런타임(Embedded Swift Runtime)은 약 2.4KB 크기로, Swift 표준 라이브러리의 핵심 기능(메모리 관리, 동적 캐스팅 등)을 포함함. `swift_retain`, `swift_release`와 같은 함수들이 실제 커널 코드에서 호출되는지 확인한 결과, 현재는 `com.apple.kec.pthread` kext 내부에서만 사용되고 있으며 다른 커널 컴포넌트에서는 참조되지 않는 상태임. 이는 점진적 도입(Gradual Adoption) 전략의 일환으로, 런타임 안정성 확보 후 실제 Swift 코드 적용을 늘려갈 것으로 보임.
플랫폼별 차별화된 도입 전략
macOS와 iOS는 KernelKit 도입에 있어 차이를 보임. macOS 27 빌드에서는 `macOS-kernelKit` (ID 25) 플랫폼으로 Swift 런타임이 포함된 `pthread.kext`가 발견된 반면, iOS 27에서는 `iOS-kernelKit` (ID 26) 플랫폼으로 동일한 kext가 존재하지만 Swift 런타임은 포함되지 않았음. 이는 운영체제별(OS-specific)로 Swift 커널 컴포넌트 도입 시기를 조절하고 있음을 시사하며, iOS는 런타임 통합 준비 단계에 있는 것으로 추정됨.
C/C++ 커널의 견고함과 Swift의 안전성
Apple은 수십 년간 검증된 C/C++ 기반의 XNU 커널을 유지하면서, 메모리 안전성(Memory Safety)이 중요한 영역에 Swift를 점진적으로 도입하려는 것으로 보임. 분석 결과, 커널 자체(XNU)는 여전히 C/C++로 작성되어 있으며(DW_LANG_C11, DW_LANG_C_plus_plus_14), Swift는 KernelKit kext와 같은 새로운 모듈(New Modules)에 한정적으로 적용되고 있음. 이는 기존 시스템의 안정성을 해치지 않으면서 Swift의 장점을 활용하려는 하이브리드 아키텍처(Hybrid Architecture) 전략으로 해석됨.