Ну идеалов не бывает - это ясное дело. Как минимум потому что всем сразу не угодишь. Но как правило в новой версии исправлены ошибки предыдущих версий. К примеру PHP:
Было:
str_replace(search, replace, $str);
strpos($str, needle)
Станет:
$str->replace(search, replace);
$str->indexOf(needle);
Думаю не нужно объяснять где уродства больше.
В случае же с HTML нельзя сделать чтобы атрибуты принимали true/false - старые реализации будут неправильно интерпретировать разметку.