On 5/12/16 12:29 PM, Andrei Alexandrescu wrote:
On 5/12/16 6:55 PM, Walter Bright wrote:
This reminds me of all the discussions around trying to hide the fact
that D strings are UTF-8 code units. The ultimate outcome of trying to
make it "make sense" was the utter disaster of autodecoding.

I am as unclear about the problems of autodecoding as I am about the
necessity to remove curl. Whenever I ask I hear some arguments that work
well emotionally but are scant on reason and engineering. Maybe it's
time to rehash them? I just did so about curl, no solid argument seemed
to come together. I'd be curious of a crisp list of grievances about
autodecoding. -- Andrei


Autodecoding, IMO, is not the problem. The problem is hijacking an array to mean something other than an array.

I ran into this the other day. In iopipe, I treat char[] buffers as actual buffers of code units. This makes sense, as I'm reading/writing text to buffers, and care very little about decoding.

I wanted to test my system's ability to handle random-access ranges, and I'm using isRandomAccessRange || isNarrowString to get around this.

As soon as I do chain(a, b) where a and b are narrow strings, this doesn't work, and I can't get it back.

See my exception in the unit test: https://github.com/schveiguy/iopipe/blob/master/source/iopipe/traits.d#L91

If you want to avoid auto-decoding, you have to be very cautious about using Phobos features.

-Steve

Reply via email to