I completely fail to see how this change makes anything slower.
_rx_buffer->head = _rx_buffer->tail;
takes just a couple of cycles (or less)
Could take upto (n? cycles) x (the size of the buffer)
Its slow in the context that accomplishing something very simple, as a user
takes more cycles now, depending on how full the buffer is, than it did before.
You say it is valid and then propose a completely invalid situation. If you really feel the need to flush the serial buffer so that you only see the "response" you are interested in, you have to write your own flush method anyway. You would need to flush everything except for tokens that you want to see.
How is it invalid? what rubbish. IMO, it's totally valid. I can point you at a whole hand full of modules that fill the serial buffer with unnecessary information that you either have to parse, or dump. Just dumping it is totally valid!
If on the other hand you want to just dump whatever is in the Serial Receive buffer, a simple for loop will do that.
Re-purposing flush to the transmit makes sense now that the transmit buffer is asynchronous.
Maybe to you, and other participants at a developer level - but that's also not likely the majority of users out there....
Arduino is mean't to be eeeeasy for the users.
This change has also perhaps gone and broken a whole bunch of libraries...
comes at the sacrifice of something else completely unnecessarily!