I agree that "same to io.readlines()" is the behavior 99% people expect.
This backward incompatible change will fix more bugs in user applications than break user application.
But breaking backward compatibility is a hard decision, always.
More easy way is adding a new method: str.iterlines{[keepends]).
This is ugly, but backward compatible.