Magenta is an implementation of Darwin/BSD on top of the Linux kernel. It is made up of a number of kernel and userland components that work together. It is fully binary compatible with iPhone OS 5.0 (as in, it uses the same binary format). So far, it includes the following libraries: * CoreFoundation * libstdc++ * libobjc * libc++abi * libicucore * libncurses * As part of libSystem * libmath * libunwind * libsystem_blocks * libC All libraries are compiled for vanilla Darwin, so nothing is compiled for Linux. The only exception is libC (which resides inside the dynamic linker) as it serves as the main bridge between the userland and the kernel. The final goal is probably recreating the iPhone OS 1.0 stack. I think this is a pretty feasible goal, considering the fact that there are so many open source libs that can be used to replace the proprietary libs used by Apple. Just as an example: * CoreGraphics -> Cairo -> FreeType -> libpng/jpg * Celestial -> Various open source media decoding libs. * UIKit -> Chamelleon This is a very weird project. You may ask, why am I doing this? The answer is: no ****ing idea This project is actually far more complicated than it sounds. *Far* more complicated.
The CPU isn't emulated on Playbook (though it is on Windows). It works very similarly to how WINE works to run Windows applications on Linux. The app binary is mapped into memory and imports are resolved to point to my own implementation of the various APIs needed. iOS actually uses a few open APIs already, which Playbook supports just as well (GL ES, and OpenAL). The bulk of the work has been in implementing all of the objective C classes that are required. The ARM code of the applications run as-is - the armv6/v7 support on PB/iDevices are pretty much identical, and the code is designed to run in USR mode. No SWIs, GPIO accesses or any of that kind of shenanigans.