[#113756] [Ruby master Bug#19711] NoMethodError "private method `new' called for class" since bebd05fb51ea65bc57344b67100748200f8311eb — "yahonda (Yasuo Honda) via ruby-core" <ruby-core@...>

Issue #19711 has been reported by yahonda (Yasuo Honda).

7 messages 2023/06/05

[#113771] [Ruby master Feature#19712] IO#reopen removes singleton class — "itarato (Peter Arato) via ruby-core" <ruby-core@...>

Issue #19712 has been reported by itarato (Peter Arato).

11 messages 2023/06/05

[#113782] [Ruby master Bug#19716] SystemStackError occurs too easily on Alpine Linux (due to small stack size reported by pthread_attr_getstacksize on musl libc) — "alexdowad (Alex Dowad) via ruby-core" <ruby-core@...>

Issue #19716 has been reported by alexdowad (Alex Dowad).

6 messages 2023/06/07

[#113788] [Ruby master Bug#19717] `ConditionVariable#signal` is not fair when the wakeup is consistently spurious. — "ioquatix (Samuel Williams) via ruby-core" <ruby-core@...>

Issue #19717 has been reported by ioquatix (Samuel Williams).

13 messages 2023/06/07

[#113819] [Ruby master Feature#19720] Warning for non-linear Regexps — "Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>

Issue #19720 has been reported by Eregon (Benoit Daloze).

11 messages 2023/06/08

[#113835] [Ruby master Misc#19722] DevMeeting-2023-07-13 — "mame (Yusuke Endoh) via ruby-core" <ruby-core@...>

Issue #19722 has been reported by mame (Yusuke Endoh).

9 messages 2023/06/09

[#113944] [Ruby master Feature#19737] Add `IO::Buffer#cat` for concat `IO::Buffer` instances — "unasuke (Yusuke Nakamura) via ruby-core" <ruby-core@...>

Issue #19737 has been reported by unasuke (Yusuke Nakamura).

7 messages 2023/06/19

[#113953] [Ruby master Bug#19739] Key cannot be found in a Hash when slice! method is applied to the key — "ilya.andreyuk (Ilya Andreyuk) via ruby-core" <ruby-core@...>

Issue #19739 has been reported by ilya.andreyuk (Ilya Andreyuk).

9 messages 2023/06/20

[#113966] [Ruby master Bug#19742] Introduce `Module#anonymous?` — "ioquatix (Samuel Williams) via ruby-core" <ruby-core@...>

Issue #19742 has been reported by ioquatix (Samuel Williams).

47 messages 2023/06/21

[#114025] [Ruby master Feature#19744] Namespace on read — "tagomoris (Satoshi TAGOMORI) via ruby-core" <ruby-core@...>

Issue #19744 has been reported by tagomoris (Satoshi TAGOMORI).

71 messages 2023/06/27

[#114032] [Ruby master Misc#19747] Propose Kevin Newton and Jemma Issroff as core committers — "k0kubun (Takashi Kokubun) via ruby-core" <ruby-core@...>

Issue #19747 has been reported by k0kubun (Takashi Kokubun).

8 messages 2023/06/28

[#114038] [Ruby master Bug#19749] Confirm correct behaviour when attaching private method with `#define_method` — "itarato (Peter Arato) via ruby-core" <ruby-core@...>

Issue #19749 has been reported by itarato (Peter Arato).

15 messages 2023/06/28

[ruby-core:113991] [Ruby master Feature#19708] Support `attr_reader :foo?`

From: "AMomchilov (Alexander Momchilov) via ruby-core" <ruby-core@...>
Date: 2023-06-22 00:42:58 UTC
List: ruby-core #113991
Issue #19708 has been updated by AMomchilov (Alexander Momchilov).


Hey Jean & Benoit, thanks for finding those prior discussions. I tried searching for them before posting, but the question mark makes it really hard to find anything relevant, haha

I think the use case is clear: defining reader methods that are both fast (`VM_METHOD_TYPE_IVAR`) _and_ idiomatic (`#foo?` over `#is_foo`).

Today you're forced to choose one or the other:
* Either you get idomatic naming with `def foo? = @foo`, but a slower `VM_METHOD_TYPE_ISEQ` method,
* Or you get a faster method with `attr_reader :is_foo`, but lose the idomatic naming.

With the proposed change, you can get the best of both worlds.

There's also the case for convenience: you no longer have to split your attribute readers into two groups:

```ruby
class C
  attr_reader :a, :c, :d, :f # Group 1: non-predicate methods can use attr_reader

  def initialize
    # ...
  end

  # ... other stuff

  # Group 2: predicate methods need explicit `def`s
  def b? = @b
  def e? = @e
end
```

> I think a PR/patch for this would help to make progress (it might not be trivial).

I took a cursory look: I think it'll definitely be a challenge, but I think it's something to take on.

Ideally, I'd like to first get some sort of tentative interest, to make sure I don't put effort into a PR that's dead-on-arrival :D

----------------------------------------
Feature #19708: Support `attr_reader :foo?`
https://bugs.ruby-lang.org/issues/19708#change-103649

* Author: AMomchilov (Alexander Momchilov)
* Status: Open
* Priority: Normal
----------------------------------------
Creating reader methods with `attr_reader` is preferable over defining them by hand, not only because it's more convenient, but also because it hits a fast path in MRI (see `VM_METHOD_TYPE_IVAR`).

Since local and instance variables can't end with `?`, you can't use `attr_reader` to define predicate-style methods for boolean values, like:

```ruby
class Person
  attr_reader :name, :age, :active? # invalid attribute name `active?' (NameError)
  
  def initialize
    @name = "Bob"
    @age = 30
    @active = true
  end
end
```

It would be nice if `attr_reader` (and friends) could behave like:

```ruby
def active? = @active
```

(`attr_writer` and `attr_accessor` couldn't do the same, since `def active?=(new_value)` isn't valid, so they'd probably stick with `def active=(new_value)`)



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

In This Thread

Prev Next