ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer
@ 2024-01-08 20:50 garrison (Garrison Jensen) via ruby-core
  2024-01-08 21:39 ` [ruby-core:116088] " Eregon (Benoit Daloze) via ruby-core
                   ` (23 more replies)
  0 siblings, 24 replies; 25+ messages in thread
From: garrison (Garrison Jensen) via ruby-core @ 2024-01-08 20:50 UTC (permalink / raw)
  To: ruby-core; +Cc: garrison (Garrison Jensen)

Issue #20163 has been reported by garrison (Garrison Jensen).

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163

* Author: garrison (Garrison Jensen)
* Status: Open
* Priority: Normal
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/postorius/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:116088] [Ruby master Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
@ 2024-01-08 21:39 ` Eregon (Benoit Daloze) via ruby-core
  2024-01-09  5:34 ` [ruby-core:116102] " shyouhei (Shyouhei Urabe) via ruby-core
                   ` (22 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Eregon (Benoit Daloze) via ruby-core @ 2024-01-08 21:39 UTC (permalink / raw)
  To: ruby-core; +Cc: Eregon (Benoit Daloze)

Issue #20163 has been updated by Eregon (Benoit Daloze).


The name sounds too close to `#bit_length`, and `length` and `count` are often quite close in Ruby
(e.g. Enumerable#count without arguments is the same as #size/#length after Enumerable#to_a or on an Array, Hash, etc).

I think `count_ones` is a better name because there is no ambiguity.

[`popcount`](https://en.cppreference.com/w/cpp/numeric/popcount) might be another common name for it, but that seems less clear unless the term or the assembly instruction is already known.
Also I think abbreviations are in general suboptimal in method names.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-106080

* Author: garrison (Garrison Jensen)
* Status: Open
* Priority: Normal
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/postorius/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:116102] [Ruby master Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
  2024-01-08 21:39 ` [ruby-core:116088] " Eregon (Benoit Daloze) via ruby-core
@ 2024-01-09  5:34 ` shyouhei (Shyouhei Urabe) via ruby-core
  2024-01-09 10:02 ` [ruby-core:116109] " nobu (Nobuyoshi Nakada) via ruby-core
                   ` (21 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: shyouhei (Shyouhei Urabe) via ruby-core @ 2024-01-09  5:34 UTC (permalink / raw)
  To: ruby-core; +Cc: shyouhei (Shyouhei Urabe)

Issue #20163 has been updated by shyouhei (Shyouhei Urabe).


count_ones could be something different from what the OP wants, because (-19).bit_count is expected to be 3.

PS. `i64::count_ones(-19)` is `62` for Rust.
PPS. There is no such thing like a 64bit signed integer in ruby.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-106099

* Author: garrison (Garrison Jensen)
* Status: Open
* Priority: Normal
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/postorius/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:116109] [Ruby master Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
  2024-01-08 21:39 ` [ruby-core:116088] " Eregon (Benoit Daloze) via ruby-core
  2024-01-09  5:34 ` [ruby-core:116102] " shyouhei (Shyouhei Urabe) via ruby-core
@ 2024-01-09 10:02 ` nobu (Nobuyoshi Nakada) via ruby-core
  2024-01-09 10:24 ` [ruby-core:116112] " byroot (Jean Boussier) via ruby-core
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: nobu (Nobuyoshi Nakada) via ruby-core @ 2024-01-09 10:02 UTC (permalink / raw)
  To: ruby-core; +Cc: nobu (Nobuyoshi Nakada)

Issue #20163 has been updated by nobu (Nobuyoshi Nakada).


GCC has `__builtin_popcount` and Ruby defines `rb_popcount` function family internally.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-106103

* Author: garrison (Garrison Jensen)
* Status: Open
* Priority: Normal
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/postorius/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:116112] [Ruby master Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (2 preceding siblings ...)
  2024-01-09 10:02 ` [ruby-core:116109] " nobu (Nobuyoshi Nakada) via ruby-core
@ 2024-01-09 10:24 ` byroot (Jean Boussier) via ruby-core
  2024-01-10  1:17 ` [ruby-core:116130] " garrison (Garrison Jensen) via ruby-core
                   ` (19 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: byroot (Jean Boussier) via ruby-core @ 2024-01-09 10:24 UTC (permalink / raw)
  To: ruby-core; +Cc: byroot (Jean Boussier)

Issue #20163 has been updated by byroot (Jean Boussier).


I also think `popcount` makes sense. Yes it's a bit of a cryptic name, but if you are dealing with bits, you are likely to be familiar with that name.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-106107

* Author: garrison (Garrison Jensen)
* Status: Open
* Priority: Normal
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/postorius/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:116130] [Ruby master Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (3 preceding siblings ...)
  2024-01-09 10:24 ` [ruby-core:116112] " byroot (Jean Boussier) via ruby-core
@ 2024-01-10  1:17 ` garrison (Garrison Jensen) via ruby-core
  2025-08-28 19:42 ` [ruby-core:123112] [Ruby " tenderlovemaking (Aaron Patterson) via ruby-core
                   ` (18 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: garrison (Garrison Jensen) via ruby-core @ 2024-01-10  1:17 UTC (permalink / raw)
  To: ruby-core; +Cc: garrison (Garrison Jensen)

Issue #20163 has been updated by garrison (Garrison Jensen).


I like `popcount`, and have no strong preferences for the chosen name. 

I want to share my performance tests in case they are helpful for the discussion. As you can see, the built-in method is significantly faster. 

```
(0..10_000_000).each { |x| x.to_s(2).count('1') }
processing time: 3.714706s

(0..10_000_000).each { |x| ruby_pop_count(x) }
processing time: 3.367775s

(0..10_000_000).each { |x| x.pop_count }
processing time: 0.515767s
```

Here are my implementations: 
```
def ruby_pop_count(n)
  n = n.abs
  count = 0
  while n > 0
    n &= n - 1 
    count += 1
  end
  count
end
```

```
unsigned int pop_count(long value) {
#ifdef __GNUC__
    // Use GCC built-in
    return __builtin_popcountl(value);
#else
    // Fallback method for compilers without the built-in
    unsigned int count = 0;
    while (value) {
        count += value & 1;
        value >>= 1;
    }
    return count;
#endif
}

// Wrapper function for Ruby
VALUE rb_pop_count(VALUE self) {
    long value = NUM2LONG(self);
    unsigned int count =  pop_count(labs(value));
    return UINT2NUM(count);
}
```


----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-106136

* Author: garrison (Garrison Jensen)
* Status: Open
* Priority: Normal
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/postorius/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123112] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (4 preceding siblings ...)
  2024-01-10  1:17 ` [ruby-core:116130] " garrison (Garrison Jensen) via ruby-core
@ 2025-08-28 19:42 ` tenderlovemaking (Aaron Patterson) via ruby-core
  2025-08-29  0:56 ` [ruby-core:123114] " akr (Akira Tanaka) via ruby-core
                   ` (17 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: tenderlovemaking (Aaron Patterson) via ruby-core @ 2025-08-28 19:42 UTC (permalink / raw)
  To: ruby-core; +Cc: tenderlovemaking (Aaron Patterson)

Issue #20163 has been updated by tenderlovemaking (Aaron Patterson).


I would also like a `popcount` method. I prefer `popcount` over `bit_count`.  I wrote my own [here](https://github.com/tenderlove/bitz/blob/93cedfe8f571e106ced753b3060c92507845e178/lib/bitz/set.rb#L332-L337) (but it only deals with single bytes).

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114429

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123114] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (5 preceding siblings ...)
  2025-08-28 19:42 ` [ruby-core:123112] [Ruby " tenderlovemaking (Aaron Patterson) via ruby-core
@ 2025-08-29  0:56 ` akr (Akira Tanaka) via ruby-core
  2025-08-29  7:09 ` [ruby-core:123116] " byroot (Jean Boussier) via ruby-core
                   ` (16 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: akr (Akira Tanaka) via ruby-core @ 2025-08-29  0:56 UTC (permalink / raw)
  To: ruby-core; +Cc: akr (Akira Tanaka)

Issue #20163 has been updated by akr (Akira Tanaka).


What is the behavior for negative values?

The proposal describes two implenentations that returns different values.

```
p (-5).to_s(2).count("1") #=> 2

def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
p bit_count(-5) #=> 0
```

 

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114430

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123116] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (6 preceding siblings ...)
  2025-08-29  0:56 ` [ruby-core:123114] " akr (Akira Tanaka) via ruby-core
@ 2025-08-29  7:09 ` byroot (Jean Boussier) via ruby-core
  2025-08-29 10:15 ` [ruby-core:123118] " mame (Yusuke Endoh) via ruby-core
                   ` (15 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: byroot (Jean Boussier) via ruby-core @ 2025-08-29  7:09 UTC (permalink / raw)
  To: ruby-core; +Cc: byroot (Jean Boussier)

Issue #20163 has been updated by byroot (Jean Boussier).


> What is the behavior for negative values?

IMO, the only behavior that makes sense in the context of a language with arbitrary size integers is to ignore the sign bit.


----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114434

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123118] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (7 preceding siblings ...)
  2025-08-29  7:09 ` [ruby-core:123116] " byroot (Jean Boussier) via ruby-core
@ 2025-08-29 10:15 ` mame (Yusuke Endoh) via ruby-core
  2025-08-29 12:46 ` [ruby-core:123119] " tompng (tomoya ishida) via ruby-core
                   ` (14 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: mame (Yusuke Endoh) via ruby-core @ 2025-08-29 10:15 UTC (permalink / raw)
  To: ruby-core; +Cc: mame (Yusuke Endoh)

Issue #20163 has been updated by mame (Yusuke Endoh).


What are the intended use cases for this proposal?

My experience (in other languages) involves two use cases of popcount:

* Bitboards for game AI (like Reversi) to count pieces.
* Succinct data structures (like LOUDS Tries) for rank operations.

In both scenarios, integers are treated as unsigned bitsets.

Does anyone have a use case where popcount on a negative number is necessary?
If not, I guess raising an exception would be the best behavior.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114446

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123119] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (8 preceding siblings ...)
  2025-08-29 10:15 ` [ruby-core:123118] " mame (Yusuke Endoh) via ruby-core
@ 2025-08-29 12:46 ` tompng (tomoya ishida) via ruby-core
  2025-08-29 13:12 ` [ruby-core:123120] " ahorek via ruby-core
                   ` (13 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: tompng (tomoya ishida) via ruby-core @ 2025-08-29 12:46 UTC (permalink / raw)
  To: ruby-core; +Cc: tompng (tomoya ishida)

Issue #20163 has been updated by tompng (tomoya ishida).


I also think popcount of a negative number should raise error because of the ambiguity.
One way to extend popcount to negative number is using a relationship below, derived from the fact that `-5 == 0b111...11111011` has 1 fewer bits compared to `-1  == 0b111...11111111`.
~~~ruby
x.popcount == popcount_of_minus_one - (~x).popcount
# popcount_of_minus_one: 0 or -1 or something else representing infinity bits
~~~
I'm not sure if this definition is useful, but anyway, extending to negative number has ambiguity.
If someone want a popcount of abs, `n.abs.popcount` is clearer.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114447

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123120] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (9 preceding siblings ...)
  2025-08-29 12:46 ` [ruby-core:123119] " tompng (tomoya ishida) via ruby-core
@ 2025-08-29 13:12 ` ahorek via ruby-core
  2025-08-29 13:42 ` [ruby-core:123121] " byroot (Jean Boussier) via ruby-core
                   ` (12 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: ahorek via ruby-core @ 2025-08-29 13:12 UTC (permalink / raw)
  To: ruby-core; +Cc: ahorek

Issue #20163 has been updated by ahorek (Pavel Rosický).


x64 and ARM have specialized CPU instructions
https://godbolt.org/z/xvGvzsvd9

and Ruby already uses it internally, for instance
https://github.com/ruby/ruby/blob/dc555a48e750b4d50eb7a7000ca1bfb927fa9459/string.c#L2209

That said, Ruby isn’t the ideal choice for implementing memory allocators, SIMD masks, parity checks, GCD calculations, UTF parsers, or prime sieving… but since many other languages, even Python, provide support for popcount, why not?

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114448

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123121] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (10 preceding siblings ...)
  2025-08-29 13:12 ` [ruby-core:123120] " ahorek via ruby-core
@ 2025-08-29 13:42 ` byroot (Jean Boussier) via ruby-core
  2025-08-29 17:43 ` [ruby-core:123123] " tenderlovemaking (Aaron Patterson) via ruby-core
                   ` (11 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: byroot (Jean Boussier) via ruby-core @ 2025-08-29 13:42 UTC (permalink / raw)
  To: ruby-core; +Cc: byroot (Jean Boussier)

Issue #20163 has been updated by byroot (Jean Boussier).


> but since many other languages, even Python, provide support for popcount, why not?

Usually a higher bar than that is required for a new method to be added to Ruby.


I personally don't have an immediate use case to point to (except for Aaron's gem of course). But more generally, in recent years we've tried to eliminate or at least reduce the need for C extensions, and bit operation are often useful in these cases, so I'm sympathetic to more bit oriented capacities.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114449

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123123] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (11 preceding siblings ...)
  2025-08-29 13:42 ` [ruby-core:123121] " byroot (Jean Boussier) via ruby-core
@ 2025-08-29 17:43 ` tenderlovemaking (Aaron Patterson) via ruby-core
  2025-08-29 19:00 ` [ruby-core:123124] " garrison (Garrison Jensen) via ruby-core
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: tenderlovemaking (Aaron Patterson) via ruby-core @ 2025-08-29 17:43 UTC (permalink / raw)
  To: ruby-core; +Cc: tenderlovemaking (Aaron Patterson)

Issue #20163 has been updated by tenderlovemaking (Aaron Patterson).


mame (Yusuke Endoh) wrote in #note-10:
> What are the intended use cases for this proposal?
> 
> My experience (in other languages) involves two use cases of popcount:
> 
> * Bitboards for game AI (like Reversi) to count pieces.
> * Succinct data structures (like LOUDS Tries) for rank operations.
> 
> In both scenarios, integers are treated as unsigned bitsets.

My experience is similar.  I've used it for sets (like I linked above) as well as modeling [undirected graphs](https://tenderlovemaking.com/2023/03/19/bitmap-matrix-and-undirected-graphs-in-ruby/) (a bit matrix, but I omitted popcount from the blog post).  I've only used unsigned integers, and I think it would be a bug in my code if the integers were signed.

> Does anyone have a use case where popcount on a negative number is necessary?
> If not, I guess raising an exception would be the best behavior.

I agree, and I think it should raise an exception.

ahorek (Pavel Rosický) wrote in #note-12:
> That said, Ruby isn’t the ideal choice for implementing memory allocators, SIMD masks, parity checks, GCD calculations, UTF parsers, or prime sieving…

Not yet!  But hopefully someday! 😂



----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114450

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123124] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (12 preceding siblings ...)
  2025-08-29 17:43 ` [ruby-core:123123] " tenderlovemaking (Aaron Patterson) via ruby-core
@ 2025-08-29 19:00 ` garrison (Garrison Jensen) via ruby-core
  2025-08-29 21:37 ` [ruby-core:123126] " tenderlovemaking (Aaron Patterson) via ruby-core
                   ` (9 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: garrison (Garrison Jensen) via ruby-core @ 2025-08-29 19:00 UTC (permalink / raw)
  To: ruby-core; +Cc: garrison (Garrison Jensen)

Issue #20163 has been updated by garrison (Garrison Jensen).


[Python ignores the sign](https://docs.python.org/3/library/stdtypes.html#int.bit_count). It seems friendlier to match that behavior than throw an exception.

``` ruby
(-x).popcount == x.popcount
```


----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114451

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123126] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (13 preceding siblings ...)
  2025-08-29 19:00 ` [ruby-core:123124] " garrison (Garrison Jensen) via ruby-core
@ 2025-08-29 21:37 ` tenderlovemaking (Aaron Patterson) via ruby-core
  2025-08-29 21:54 ` [ruby-core:123127] " tenderlovemaking (Aaron Patterson) via ruby-core
                   ` (8 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: tenderlovemaking (Aaron Patterson) via ruby-core @ 2025-08-29 21:37 UTC (permalink / raw)
  To: ruby-core; +Cc: tenderlovemaking (Aaron Patterson)

Issue #20163 has been updated by tenderlovemaking (Aaron Patterson).


garrison (Garrison Jensen) wrote in #note-15:
> [Python ignores the sign](https://docs.python.org/3/library/stdtypes.html#int.bit_count). It seems friendlier to match that behavior than throw an exception.
> 
> ``` ruby
> (-x).popcount == x.popcount
> ```

When would you use a negative number unless it's a mistake in your code?

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114453

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123127] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (14 preceding siblings ...)
  2025-08-29 21:37 ` [ruby-core:123126] " tenderlovemaking (Aaron Patterson) via ruby-core
@ 2025-08-29 21:54 ` tenderlovemaking (Aaron Patterson) via ruby-core
  2025-08-29 22:40 ` [ruby-core:123128] " garrison (Garrison Jensen) via ruby-core
                   ` (7 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: tenderlovemaking (Aaron Patterson) via ruby-core @ 2025-08-29 21:54 UTC (permalink / raw)
  To: ruby-core; +Cc: tenderlovemaking (Aaron Patterson)

Issue #20163 has been updated by tenderlovemaking (Aaron Patterson).


It seems like the Python folks didn't have too serious a discussion about handling negative numbers.

https://github.com/python/cpython/issues/74068#issuecomment-1093743975
https://github.com/python/cpython/issues/74068#issuecomment-1093743978

I prefer it raises an exception as it's probably a mistake in the code. 🤷🏻‍♀️

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114454

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123128] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (15 preceding siblings ...)
  2025-08-29 21:54 ` [ruby-core:123127] " tenderlovemaking (Aaron Patterson) via ruby-core
@ 2025-08-29 22:40 ` garrison (Garrison Jensen) via ruby-core
  2025-09-01  6:13 ` [ruby-core:123155] " akr (Akira Tanaka) via ruby-core
                   ` (6 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: garrison (Garrison Jensen) via ruby-core @ 2025-08-29 22:40 UTC (permalink / raw)
  To: ruby-core; +Cc: garrison (Garrison Jensen)

Issue #20163 has been updated by garrison (Garrison Jensen).


tenderlovemaking (Aaron Patterson) wrote in #note-16:
> When would you use a negative number unless it's a mistake in your code?

I don't have a strong argument. Raising an exception sounds good to me. 



----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114455

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123155] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (16 preceding siblings ...)
  2025-08-29 22:40 ` [ruby-core:123128] " garrison (Garrison Jensen) via ruby-core
@ 2025-09-01  6:13 ` akr (Akira Tanaka) via ruby-core
  2025-09-18  6:50 ` [ruby-core:123292] " slewsys (Andrew Moore) via ruby-core
                   ` (5 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: akr (Akira Tanaka) via ruby-core @ 2025-09-01  6:13 UTC (permalink / raw)
  To: ruby-core; +Cc: akr (Akira Tanaka)

Issue #20163 has been updated by akr (Akira Tanaka).


I prefer an exception for popcount to negative values.

I think an array of Fixnums (63 bit signed integers) can be used for mutable bit array.
(Ruby's Integer is immutable.  So mutable bit array needs a mutable data structure.)

In this scenario, we would like to count bits in a negative fixnum: `(n & 0x7ffffffff).popcount`.
This is not `n.abs.popcount`.
Also, this behavior is not suitable for Integer#popcount because it ignores bits higher than 63th bit.

So, I prefer an exception for negative values.


----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114487

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123292] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (17 preceding siblings ...)
  2025-09-01  6:13 ` [ruby-core:123155] " akr (Akira Tanaka) via ruby-core
@ 2025-09-18  6:50 ` slewsys (Andrew Moore) via ruby-core
  2025-09-25 13:39 ` [ruby-core:123329] " YO4 (Yoshinao Muramatsu) via ruby-core
                   ` (4 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: slewsys (Andrew Moore) via ruby-core @ 2025-09-18  6:50 UTC (permalink / raw)
  To: ruby-core; +Cc: slewsys (Andrew Moore)

Issue #20163 has been updated by slewsys (Andrew Moore).


garrison (Garrison Jensen) wrote in #note-6:
> ```
> unsigned int pop_count(long value) {
> #ifdef __GNUC__
>     // Use GCC built-in
>     return __builtin_popcountl(value);
> #else
>     // Fallback method for compilers without the built-in
>     unsigned int count = 0;
>     while (value) {
>         count += value & 1;
>         value >>= 1;
>     }
>     return count;
> #endif
> }
> 
> // Wrapper function for Ruby
> VALUE rb_pop_count(VALUE self) {
>     long value = NUM2LONG(self);
>     unsigned int count =  pop_count(labs(value));
>     return UINT2NUM(count);
> }
> ```

Section 1.8 of *Matters Computational* by Jörg Arndt offers efficient algorithms for popcount, including for arrays.  There is also an x86 instruction POPCNT.

Matters Computational: https://www.jjj.de/fxt/fxtbook.pdf

E.g.,
```
unsigned long popcount (unsigned long value) {
    value -= (value >> 1) & 0x5555555555555555UL;
    value = ((value >> 2) & 0x3333333333333333UL) + (value & 0x3333333333333333UL);
    value = ((value >> 4) + value) & 0x0f0f0f0f0f0f0f0fUL;
    value *= 0x0101010101010101UL;
    return value >> 56;
}
```

By the way, "popcount" is short for "population count", whereas "pop_count" suggests (to me) a stack operation - a bit (hm) confusing.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114663

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123329] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (18 preceding siblings ...)
  2025-09-18  6:50 ` [ruby-core:123292] " slewsys (Andrew Moore) via ruby-core
@ 2025-09-25 13:39 ` YO4 (Yoshinao Muramatsu) via ruby-core
  2025-09-26  1:45 ` [ruby-core:123331] " mame (Yusuke Endoh) via ruby-core
                   ` (3 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: YO4 (Yoshinao Muramatsu) via ruby-core @ 2025-09-25 13:39 UTC (permalink / raw)
  To: ruby-core; +Cc: YO4 (Yoshinao Muramatsu)

Issue #20163 has been updated by YO4 (Yoshinao Muramatsu).


We can use Integer#[] to negative numbers.
```
-1[0,8].popcount # => 8
-2[0,8].popcount # => 7
-3[0,8].popcount # => 7
```
In computers that use two's complement for negative numbers, I think this is expected behavior.

If generating sliced values becomes an overhead, we can add arguments to popcount.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114697

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123331] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (19 preceding siblings ...)
  2025-09-25 13:39 ` [ruby-core:123329] " YO4 (Yoshinao Muramatsu) via ruby-core
@ 2025-09-26  1:45 ` mame (Yusuke Endoh) via ruby-core
  2025-09-29 10:20 ` [ruby-core:123337] " YO4 (Yoshinao Muramatsu) via ruby-core
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: mame (Yusuke Endoh) via ruby-core @ 2025-09-26  1:45 UTC (permalink / raw)
  To: ruby-core; +Cc: mame (Yusuke Endoh)

Issue #20163 has been updated by mame (Yusuke Endoh).


> In computers that use two's complement for negative numbers, I think this is expected behavior.

Yes, but do you want `-1.popcount` to return `Float::INFINITY`? That might be theoretically consistent, but useless and even problematic, I think.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114702

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123337] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (20 preceding siblings ...)
  2025-09-26  1:45 ` [ruby-core:123331] " mame (Yusuke Endoh) via ruby-core
@ 2025-09-29 10:20 ` YO4 (Yoshinao Muramatsu) via ruby-core
  2025-10-23  6:45 ` [ruby-core:123531] " matz (Yukihiro Matsumoto) via ruby-core
  2025-10-24 19:04 ` [ruby-core:123539] " tenderlovemaking (Aaron Patterson) via ruby-core
  23 siblings, 0 replies; 25+ messages in thread
From: YO4 (Yoshinao Muramatsu) via ruby-core @ 2025-09-29 10:20 UTC (permalink / raw)
  To: ruby-core; +Cc: YO4 (Yoshinao Muramatsu)

Issue #20163 has been updated by YO4 (Yoshinao Muramatsu).


Popcount for negative numbers is useful when equivalent functionality to machine register operations is desired, but I do not consider operations on infinite bit widths to be useful.

When popcount is called on a negative number (without specifying a bit width if popcount has arguments), it may indicate abnormal input or a bug in user code.
I am +1 for raising exception on that case.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114709

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123531] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (21 preceding siblings ...)
  2025-09-29 10:20 ` [ruby-core:123337] " YO4 (Yoshinao Muramatsu) via ruby-core
@ 2025-10-23  6:45 ` matz (Yukihiro Matsumoto) via ruby-core
  2025-10-24 19:04 ` [ruby-core:123539] " tenderlovemaking (Aaron Patterson) via ruby-core
  23 siblings, 0 replies; 25+ messages in thread
From: matz (Yukihiro Matsumoto) via ruby-core @ 2025-10-23  6:45 UTC (permalink / raw)
  To: ruby-core; +Cc: matz (Yukihiro Matsumoto)

Issue #20163 has been updated by matz (Yukihiro Matsumoto).


Is there any real-world use-case for Integer#popcount method?
Bit-array?

Matz.


----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114907

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [ruby-core:123539] [Ruby Feature#20163] Introduce #bit_count method on Integer
  2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
                   ` (22 preceding siblings ...)
  2025-10-23  6:45 ` [ruby-core:123531] " matz (Yukihiro Matsumoto) via ruby-core
@ 2025-10-24 19:04 ` tenderlovemaking (Aaron Patterson) via ruby-core
  23 siblings, 0 replies; 25+ messages in thread
From: tenderlovemaking (Aaron Patterson) via ruby-core @ 2025-10-24 19:04 UTC (permalink / raw)
  To: ruby-core; +Cc: tenderlovemaking (Aaron Patterson)

Issue #20163 has been updated by tenderlovemaking (Aaron Patterson).


matz (Yukihiro Matsumoto) wrote in #note-24:
> Is there any real-world use-case for Integer#popcount method?
> Bit-array?
> 
> Matz.

Yes, I am using it for a [bit set gem](https://github.com/tenderlove/bitz) (I had to implement my own popcount [here](https://github.com/tenderlove/bitz/blob/3570f8dfd3aec46bc9ffac03ef5e85fb26cc27a3/lib/bitz/set.rb#L331-L336)). I want to use a bit array for representing an undirected graph.

----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-114917

* Author: garrison (Garrison Jensen)
* Status: Open
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set. 

This would be equivalent to
```
n.to_s(2).count("1")
```

However, this can be outperformed by
```
def bit_count(n)
  count = 0
  while n > 0
    n &= n - 1 # Flip the least significant 1 bit to 0
    count += 1
  end
  count
end
```

I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement. 

Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones



-- 
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/

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2025-10-24 19:06 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-08 20:50 [ruby-core:116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer garrison (Garrison Jensen) via ruby-core
2024-01-08 21:39 ` [ruby-core:116088] " Eregon (Benoit Daloze) via ruby-core
2024-01-09  5:34 ` [ruby-core:116102] " shyouhei (Shyouhei Urabe) via ruby-core
2024-01-09 10:02 ` [ruby-core:116109] " nobu (Nobuyoshi Nakada) via ruby-core
2024-01-09 10:24 ` [ruby-core:116112] " byroot (Jean Boussier) via ruby-core
2024-01-10  1:17 ` [ruby-core:116130] " garrison (Garrison Jensen) via ruby-core
2025-08-28 19:42 ` [ruby-core:123112] [Ruby " tenderlovemaking (Aaron Patterson) via ruby-core
2025-08-29  0:56 ` [ruby-core:123114] " akr (Akira Tanaka) via ruby-core
2025-08-29  7:09 ` [ruby-core:123116] " byroot (Jean Boussier) via ruby-core
2025-08-29 10:15 ` [ruby-core:123118] " mame (Yusuke Endoh) via ruby-core
2025-08-29 12:46 ` [ruby-core:123119] " tompng (tomoya ishida) via ruby-core
2025-08-29 13:12 ` [ruby-core:123120] " ahorek via ruby-core
2025-08-29 13:42 ` [ruby-core:123121] " byroot (Jean Boussier) via ruby-core
2025-08-29 17:43 ` [ruby-core:123123] " tenderlovemaking (Aaron Patterson) via ruby-core
2025-08-29 19:00 ` [ruby-core:123124] " garrison (Garrison Jensen) via ruby-core
2025-08-29 21:37 ` [ruby-core:123126] " tenderlovemaking (Aaron Patterson) via ruby-core
2025-08-29 21:54 ` [ruby-core:123127] " tenderlovemaking (Aaron Patterson) via ruby-core
2025-08-29 22:40 ` [ruby-core:123128] " garrison (Garrison Jensen) via ruby-core
2025-09-01  6:13 ` [ruby-core:123155] " akr (Akira Tanaka) via ruby-core
2025-09-18  6:50 ` [ruby-core:123292] " slewsys (Andrew Moore) via ruby-core
2025-09-25 13:39 ` [ruby-core:123329] " YO4 (Yoshinao Muramatsu) via ruby-core
2025-09-26  1:45 ` [ruby-core:123331] " mame (Yusuke Endoh) via ruby-core
2025-09-29 10:20 ` [ruby-core:123337] " YO4 (Yoshinao Muramatsu) via ruby-core
2025-10-23  6:45 ` [ruby-core:123531] " matz (Yukihiro Matsumoto) via ruby-core
2025-10-24 19:04 ` [ruby-core:123539] " tenderlovemaking (Aaron Patterson) via ruby-core

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).