This means that a string is a range. What is it a range of? If you want to make it a range of code units, I think you will lose that battle.
After the first migration step joiner will return a decoded dchar range just like it does now, only code will change internally, there will be no observable semantic difference to the user. Anyway, read Walter's proposal in the thread about dealing with autodecode.
