I was thinking from the perspective of task failure not being recoverable at the call site, i.e. a higher level library is free to fail, but the absolute lowest building blocks shouldn't, so that people can handle problems as they wish (even if it's just manually triggering task failure).

If liballoc *isn't* designed to be the lowest level allocation library, failing is fine.

(BTW, I think you may've misinterpreted my comment, because I wasn't talking about libcore, just liballoc.)