- Introduced OutputPage::addWikiMsg() and OutputPage::wrapWikiMsg(), to make it easier to avoid double-parsing. Double-parsing introduces differences between the old and new parsers.
- Used the new functions in the relevant places throughout the core. Where this was not possible, used wfMsgNoTrans() to avoid double-parsing.
- Calling wfEscapeWikiText() on a title before passing it to a message is unnecessary and causes bugs. The best idea is to let the message do its own escaping. Removed wfEscapeWikiText() from the caller of addedwatchtext, removedwatchtext, deletedtext, protect-text, nosuchusershort and movepage-moved. Updated all message files to use <nowiki>$1</nowiki> where appropriate in these messages.
- Removed unnecessary empty message handling from semiprotectedpagewarning
- Removed nonsense warning about the output of wfMsg() not being safe for inclusion in HTML.
- Changed wfShellExec() to use passthru/ob_get_contents instead of exec(). This avoids corruption of whitespace in the response.
- Added $wgValidateAllHtml feature, to optionally validate HTML on output.
- Fixed missing newline in cascadeprotected in MessagesEn.php
- Belatedly updated addedwatchtext to take account of the new "monobook" skin. No unwatch link in the sidebar anymore.