[#119000] [Ruby master Bug#20710] Reducing Hash allocation introduces large performance degradation (probably related to VWA) — "pocke (Masataka Kuwabara) via ruby-core" <ruby-core@...>

Issue #20710 has been reported by pocke (Masataka Kuwabara).

6 messages 2024/09/02

[#119033] [Ruby master Bug#20713] Ruby 3.3.5 triggers a deprecation warning with `require "json"` — "Bo98 (Bo Anderson) via ruby-core" <ruby-core@...>

Issue #20713 has been reported by Bo98 (Bo Anderson).

7 messages 2024/09/04

[#119041] [Ruby master Bug#20714] Handle optional dependencies in `bundled_gems.rb` — "Earlopain (A S) via ruby-core" <ruby-core@...>

Issue #20714 has been reported by Earlopain (A S).

31 messages 2024/09/04

[#119074] [Ruby master Bug#20716] Different instance_method behavior in Ruby 2.7 and Ruby 3.x — "natton (Tien Truong) via ruby-core" <ruby-core@...>

Issue #20716 has been reported by natton (Tien Truong).

13 messages 2024/09/06

[#119145] [Ruby master Misc#20728] Propose Eileen Uchitelle as a core committer — "kddnewton (Kevin Newton) via ruby-core" <ruby-core@...>

Issue #20728 has been reported by kddnewton (Kevin Newton).

14 messages 2024/09/12

[#119168] [Ruby master Feature#20738] Removing a specific entry from a hash literal — "ursm (Keita Urashima) via ruby-core" <ruby-core@...>

Issue #20738 has been reported by ursm (Keita Urashima).

16 messages 2024/09/13

[#119199] [Ruby master Bug#20742] Trying to assign to a variable in statement modifier should emit a warning — "esad (Esad Hajdarevic) via ruby-core" <ruby-core@...>

SXNzdWUgIzIwNzQyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGVzYWQgKEVzYWQgSGFqZGFyZXZpYyku

7 messages 2024/09/15

[#119208] [Ruby master Bug#20745] IO::Buffer#copy triggers UB when src/dest buffers overlap — "hanazuki (Kasumi Hanazuki) via ruby-core" <ruby-core@...>

Issue #20745 has been reported by hanazuki (Kasumi Hanazuki).

8 messages 2024/09/16

[#119239] [Ruby master Feature#20750] Expose ruby_thread_has_gvl_p in ruby/thread.h — "kbrock (Keenan Brock) via ruby-core" <ruby-core@...>

Issue #20750 has been reported by kbrock (Keenan Brock).

8 messages 2024/09/17

[#119248] [Ruby master Bug#20752] IO::Buffer#slice fails to copy readonly flag, allowing writes into frozen String — "hanazuki (Kasumi Hanazuki) via ruby-core" <ruby-core@...>

Issue #20752 has been reported by hanazuki (Kasumi Hanazuki).

7 messages 2024/09/18

[#119301] [Ruby master Bug#20761] [DOC] `RubyVM::AbstractSyntaxTree.of` examples raise because parser is prism by default — "Earlopain (A S) via ruby-core" <ruby-core@...>

Issue #20761 has been reported by Earlopain (A S).

11 messages 2024/09/26

[#119335] [Ruby master Bug#20770] A *new* pipe operator proposal — "AlexandreMagro (Alexandre Magro) via ruby-core" <ruby-core@...>

Issue #20770 has been reported by AlexandreMagro (Alexandre Magro).

56 messages 2024/09/29

[ruby-core:119198] [Ruby master Feature#20738] Removing a specific entry from a hash literal

From: "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>
Date: 2024-09-15 16:32:13 UTC
List: ruby-core #119198
Issue #20738 has been updated by jeremyevans0 (Jeremy Evans).


ursm (Keita Urashima) wrote in #note-9:
> There are several Rails codes that can be improved with this feature. In my opinion, it is especially useful in multiple situations, such as generating JSON responses and constructing HTTP request headers. It would be more useful if it could be applied to keyword arguments as well.
> 
> - https://github.com/rails/rails/blob/6d1252cf3e65a7720aad5511ff719b44e49fd2a3/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L1121
> - https://github.com/rails/rails/blob/6d1252cf3e65a7720aad5511ff719b44e49fd2a3/activerecord/lib/active_record/connection_adapters/sqlite3/schema_statements.rb#L201
> - https://github.com/rails/rails/blob/6d1252cf3e65a7720aad5511ff719b44e49fd2a3/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L1141
> - https://github.com/rails/rails/blob/6d1252cf3e65a7720aad5511ff719b44e49fd2a3/activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb#L19
> - https://github.com/rails/rails/blob/6d1252cf3e65a7720aad5511ff719b44e49fd2a3/activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb#L31
> - https://github.com/rails/rails/blob/6d1252cf3e65a7720aad5511ff719b44e49fd2a3/activerecord/lib/active_record/relation/predicate_builder/polymorphic_array_value.rb#L16

I reviewed every example listed and in all cases I think it would be made harder to understand using the proposed feature.  Each example listed is straightforward and easy to understand currently.

----------------------------------------
Feature #20738: Removing a specific entry from a hash literal
https://bugs.ruby-lang.org/issues/20738#change-109782

* Author: ursm (Keita Urashima)
* Status: Open
----------------------------------------
Sometimes I want to decide whether or not to add a particular entry to a hash depending on a condition. If the entire hash does not use nil, I can use Hash#compact.

```ruby
{
  foo: 1,
  bar: bar? ? 2 : nil
}.compact
```

But if I want to remove only a specific entry while leaving the other nil, it is somewhat cumbersome. I have to either assign the hash once and change it destructively, or use Hash#reject.

``` ruby
h = {
  foo: 1,
  baz: nil
}

h[:bar] = 2 if bar?
```
``` ruby
{
  foo: 1,
  bar: bar? ? 2 : :drop,
  baz: nil
}.reject {|_, v| v == :drop }
```

As a suggestion, how about a special value that indicates an invalid key for the hash? With this, the above example could be written like this:

``` ruby
{
  foo: 1,
  bar: bar? ? 2 : Hash::DROP,
  baz: nil
} #=> {foo: 1, baz: nil}
```



-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/


In This Thread