But some changes were hard to adapt, for example at some point the definition of SpecialPage::userCanExecute() changed from public function userCanExecute( $user )
to
public function userCanExecute( User $user ) with typecheck. Then extension's special pages that inherited from SpecialPage and override ::userCanExecute() throwed PHP error about incompatible declaration.
It would be better to check $user instanceof User in SpecialPage code itself, but who cares. Dmitriy