Merge 2.3.0 updates

Merge the remaining updates from 2.3.0. For fac900a, which we don't actually want to include in 3.0.0, I added a revert commit, eb0e382, before merging with the 3.0.0 code.

This is ready to merge at your convenience.