Delete a duplicate sentence relating to a description of global variable $_
Split the whole paragraph into three semantically related smaller ones.
To make it easier to digest the content.
Emphasize names of separators. To make a distinction between each one.
They are similar both in naming and their functions.
Add "and is a string" where usage of $' and $\ is explained.
When assigning any other value then a string to each of them,
Ruby throws a TypeError. It seems like a valid point to highlight.
io.c: [DOC] split documentation for IO#print into smaller paragraphs,
delete duplicate sentence, fix call-seq.
Based on a patch by Dario Daic. [ruby-core:78291] [Bug #12975]
Add "and is a string" where usage of $' and $\ is explained.
When assigning any other value then a string to each of them,
Ruby throws a TypeError. It seems like a valid point to highlight.
Applied without this restraint, since it doesn't make sense: these variables must reference a string (or nil), since the type is validated during assignment, as you wrote yourself. The TypeError doesn't affect print.
I also modified the grouping a bit (what it does in general; preconditions and argument handling; separators).