[#107430] [Ruby master Feature#18566] Merge `io-wait` gem into core IO — "byroot (Jean Boussier)" <noreply@...>
Issue #18566 has been reported by byroot (Jean Boussier).
22 messages
2022/02/02
[ruby-core:107693] [Ruby master Feature#18595] Alias `String#-@` as `String#dedup`
From:
"Eregon (Benoit Daloze)" <noreply@...>
Date:
2022-02-21 19:20:01 UTC
List:
ruby-core #107693
Issue #18595 has been updated by Eregon (Benoit Daloze). @danh337 `-@` and the proposed `dedup` intern/deduplicate. This is the main feature of those methods and it is *very much* part of the semantics (as the docs say). It's the whole point of these methods really, to reduce the number of duplicate strings and reduce memory usage (which @byroot and others successfully used in many gems). `freeze` does not intern/deduplicate. That has the advantage it's faster, but it doesn't help memory footprint if there are many duplicates of the same string. Regarding `+@`/`dup` feel free to continue discussing that on #16295, this issue should remain focused on `dedup`, that is the purpose of the new issue. ---------------------------------------- Feature #18595: Alias `String#-@` as `String#dedup` https://bugs.ruby-lang.org/issues/18595#change-96611 * Author: byroot (Jean Boussier) * Status: Open * Priority: Normal ---------------------------------------- This is a rescoped feature request for https://bugs.ruby-lang.org/issues/16295 ### Rationale [Unary operator have some precedence oddities](https://bugs.ruby-lang.org/issues/16150#note-39) (@headius) This often force to use parentheses, which is awkward and breaks the chaining flow. It's really not obvious what it does. I submitted many pull requests to various open source projects to reduce their memory footprint, and I am constantly asked what it does and I have to point to the `String#-@` documentation. [The last example was 3 days ago](https://github.com/dry-rb/dry-schema/pull/399#issuecomment-1043963073). I believe that `String#dedup` would help users discover this feature, and in projects where 3.2 is the oldest supported version, it would allow for much clearer code. ### Proposal It's all in the title: Alias `String#-@` as `String#dedup`. Or maybe even rename `String#-@` as `String#dedup`, and make `String#-@` the alias? -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>