Conversation

The high level stdlib has no relevance to the kernel usage because it MUST use $![no_std] (freestanding) code. The high-level stdlib (libstd) uses lower-level standard libraries (libcore, liballoc, etc.) and they can use some of those, but they will need a stripped down liballoc.
1
So, basically, the only issue is they haven't yet forked liballoc to delete the methods doing panic on OOM. It's the same reason they need other placeholder stubs doing panic to fill in APIs used by stdlib code they've included via libcore, etc. Could fork libcore and delete it.
2
They don't have to fork Rust. No language changes are required. The standard compiler works fine. They do need to implement allocation APIs, collections and the infrastructure for writing Linux kernel drivers. A lot of the point is making enforced safe APIs for those things.
1
The reason they were able to use the standard liballoc at all is because it allows you to supply the low-level dynamic allocator. It implements higher level APIs. So, they wrapped the kernel allocator. Functionality in liballoc is higher-level than anything provided by C stdlib.
2
If you know modern C++, Box<T> is std::unique_ptr<T>, Rc<T> is a thread-local std::shared_ptr<T> (no atomics), Arc<T> (in libsync) is std::shared_ptr<T>, Vec<T> is std::vector<T>, etc. Unlike C++, it's memory safe and doesn't have inherent overhead. It's also more interoperable.
1