merge master into 1.9 branch

as we have not opened 1.10 yet we can merge it into 1.9 to preserve ancestry of the changes and simplify backports