Issue #18576 has been updated by byroot (Jean Boussier).
@naruse no one is denying that there is private code out there that will be broken by such
change. The question is how much and how hard it would be to detect and fix, and how much
the change improve Ruby for its users.
We regularly make changes with much more breaking potential. So that alone isn't a
reason to refuse the change in my opinion.
But if there is consensus that the cost/benefit isn't positive, then I'd like to
propose again:
We could keep Encoding#name as "ASCII-8BIT",
but change Encoding#inspect and make sure EncodingError use the BINARY name in its error
messages.
But slightly modified:
I'd like to change `Encoding::BINARY.inspect` from
`"#<Encoding:ASCII-8BIT>"` to `"#<Encoding:ASCII-8BIT
(BINARY)>"`.
Would that be acceptable?
----------------------------------------
Feature #18576: Rename `ASCII-8BIT` encoding to `BINARY`
https://bugs.ruby-lang.org/issues/18576#change-106290
* Author: byroot (Jean Boussier)
* Status: Open
* Priority: Normal
* Target version: 3.4
----------------------------------------
### Context
I'm now used to it, but something that confused me for years was errors such as:
```ruby
> "fée" + "\xFF".b
(irb):3:in `+': incompatible character encodings: UTF-8 and ASCII-8BIT
(Encoding::CompatibilityError)
```
When you aren't that familiar with Ruby, it's really not evident that `ASCII-8BIT`
basically means "no encoding" or "binary".
And even when you know it, if you don't read carefully it's very easily confused
with `US-ASCII`.
The `Encoding::BINARY` alias is much more telling IMHO.
### Proposal
Since `Encoding::ASCII_8BIT` has been aliased as `Encoding::BINARY` for years, I think
renaming it to `BINARY` and then making asking `ASCII_8BIT` the alias would significantly
improve usability without backward compatibility concerns.
The only concern I could see would be the consistency with a handful of C API functions:
- `rb_encoding *rb_ascii8bit_encoding(void)`
- `int rb_ascii8bit_encindex(void)`
- `VALUE rb_io_ascii8bit_binmode(VALUE io)`
But that's for much more advanced users, so I don't think it's much of a
concern.
--
https://bugs.ruby-lang.org/