The can be just replacements for better code but there are many issues past and present that that are a "oops, that was bad regression". Heck Linus even made a comment to that effect in the last LKML kernel release message.
Shit in will always result in shit out.