[#100689] [Ruby master Feature#17303] Make webrick to bundled gems or remove from stdlib — hsbt@...

Issue #17303 has been reported by hsbt (Hiroshi SHIBATA).

11 messages 2020/11/02

[#100715] [Ruby master Bug#17306] TestGCCompact#test_ast_compacts test failures — v.ondruch@...

Issue #17306 has been reported by vo.x (Vit Ondruch).

11 messages 2020/11/05

[#100720] [Ruby master Feature#17307] A way to mark C extensions as thread-safe, Ractor-safe, or unsafe — eregontp@...

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

22 messages 2020/11/05

[#100744] [Ruby master Bug#17310] Closed ractors should die — marcandre-ruby-core@...

Issue #17310 has been reported by marcandre (Marc-Andre Lafortune).

12 messages 2020/11/08

[#100753] [Ruby master Feature#17312] New methods in Enumerable and Enumerator::Lazy: flatten, product, compact — zverok.offline@...

Issue #17312 has been reported by zverok (Victor Shepelev).

11 messages 2020/11/09

[#100763] [Ruby master Feature#17314] Provide a way to declare visibility of attributes defined by attr* methods in a single expression — radek.bulat@...

Issue #17314 has been reported by radarek (RadosナBw BuナBt).

17 messages 2020/11/10

[#100777] [Ruby master Feature#17316] On memoization — sawadatsuyoshi@...

Issue #17316 has been reported by sawa (Tsuyoshi Sawada).

18 messages 2020/11/11

[#100788] [Ruby master Misc#17319] Rename Random::urandom to os_random and document random data sources — zofrex@...

Issue #17319 has been reported by zofrex (James Sanderson).

11 messages 2020/11/11

[#100807] [Ruby master Feature#17322] Deprecate `Random::DEFAULT` and introduce `Random.default()` method to provide Ractor-supported default random generator — ko1@...

Issue #17322 has been reported by ko1 (Koichi Sasada).

14 messages 2020/11/12

[#100816] [Ruby master Feature#17323] Ractor::LVar to provide ractor-local storage — ko1@...

Issue #17323 has been reported by ko1 (Koichi Sasada).

19 messages 2020/11/12

[#100849] [Ruby master Feature#17325] Adds Fiber#cancel, which forces a Fiber to break/return — nicholas.evans@...

Issue #17325 has been reported by nevans (Nicholas Evans).

17 messages 2020/11/14

[#100852] [Ruby master Feature#17326] Add Kernel#must! to the standard library — zimmerman.jake@...

Issue #17326 has been reported by jez (Jake Zimmerman).

24 messages 2020/11/14

[#100858] [Ruby master Feature#17327] The Queue constructor should take an initial set of items — chris@...

Issue #17327 has been reported by chrisseaton (Chris Seaton).

10 messages 2020/11/15

[#100897] [Ruby master Feature#17330] Object#non — zverok.offline@...

Issue #17330 has been reported by zverok (Victor Shepelev).

21 messages 2020/11/17

[#100925] [Ruby master Feature#17331] Let Fiber#raise work with transferring fibers — nicholas.evans@...

Issue #17331 has been reported by nevans (Nicholas Evans).

12 messages 2020/11/18

[#100930] [Ruby master Feature#17333] Enumerable#many? — masafumi.o1988@...

Issue #17333 has been reported by okuramasafumi (Masafumi OKURA).

10 messages 2020/11/18

[#100971] [Ruby master Bug#17337] Don't embed Ruby build time configuration into Ruby — v.ondruch@...

Issue #17337 has been reported by vo.x (Vit Ondruch).

16 messages 2020/11/20

[#100999] [Ruby master Feature#17339] Semantic grouping on BigDecimal#to_s — co.chuma@...

Issue #17339 has been reported by chumaltd (Takahiro Chuma).

9 messages 2020/11/21

[#101071] [Ruby master Feature#17342] Hash#fetch_set — hunter_spawn@...

Issue #17342 has been reported by MaxLap (Maxime Lapointe).

26 messages 2020/11/25

[#101093] [Ruby master Misc#17346] DevelopersMeeting20201210Japan — mame@...

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

17 messages 2020/11/26

[#101141] [Ruby master Bug#17354] Module#const_source_location is misleading for constants awaiting autoload — tom@...

Issue #17354 has been reported by tomstuart (Tom Stuart).

21 messages 2020/11/29

[#101143] [Ruby master Feature#17355] Or-patterns (pattern matching like Foo(x) | Bar(x)) — fg@...

Issue #17355 has been reported by decuplet (Nikita Shilnikov).

8 messages 2020/11/29

[#101153] [Ruby master Feature#17356] Alignment of memory allocated through Fiddle struct's malloc — andrea.ribuoli@...

Issue #17356 has been reported by AndreaRibuoli (Andrea Ribuoli).

8 messages 2020/11/30

[ruby-core:100994] [Ruby master Bug#9580] Refinements regression in IRB

From: marcandre-ruby-core@...
Date: 2020-11-20 22:06:34 UTC
List: ruby-core #100994
Issue #9580 has been updated by marcandre (Marc-Andre Lafortune).


I ran into this today.

We really should change the default to something that works for refinements. I note that:

```sh
irb --single-irb # => works (shared context for nested sessions)
irb --context 0 # => works
irb --context 1 # => works
irb --context 2 # => works
irb --context 3 # (default) => does not work
```

I get the same stacktraces in all modes in Ruby 2.7.

I am proposing a new default context in https://github.com/ruby/irb/pull/138 but any other context mode seems better than the current one.

----------------------------------------
Bug #9580: Refinements regression in IRB
https://bugs.ruby-lang.org/issues/9580#change-88660

* Author: davidbalbert (David Albert)
* Status: Open
* Priority: Normal
* ruby -v: 2.2.0dev
----------------------------------------
The problem: Top level refinements do not work in IRB. They worked in 2.0.0-p451, but don't work in 2.1.0, 2.1.1, or today's trunk.

Details:

Here some code in a file:

    #refine.rb
    
    module A
      refine String do
        def asdf
          :asdf
        end
      end
    end
    
    using A
    
    p "foo".asdf
    
In all versions, of Ruby between 2.0.0-p451 and 2.2.0dev, running this file, prints `:asdf`. This is the expected behavior. Ruby 2.0.0 also prints the "Refinements are experimental" warning, as expected:

    # Ruby 2.0.0-p451
    $ ruby refine.rb 
    refine.rb:2: warning: Refinements are experimental, and the behavior may change in future versions of Ruby!
    :asdf

    # Ruby 2.1.0, 2.1.1, and 2.2.0dev
    $ ruby refine.rb 
    :asdf


In Ruby 2.0.0-p451, the same code also works in IRB, also as expected:

    irb(main):001:0> "#{RUBY_VERSION}-#{RUBY_PATCHLEVEL}"
    => "2.0.0-451"
    irb(main):002:0> module A
    irb(main):003:1>   refine String do
    irb(main):004:2*     def asdf
    irb(main):005:3>       :asdf
    irb(main):006:3>     end
    irb(main):007:2>   end
    irb(main):008:1> end
    (irb):3: warning: Refinements are experimental, and the behavior may change in future versions of Ruby!
    => #<refinement:String@A>
    irb(main):009:0> using A
    => main
    irb(main):010:0> "foo".asdf
    => :asdf

However, in all newer versions of Ruby (2.1.0, 2.1.1, and 2.2.0dev), this code raises a `NoMethodError` in IRB:

    irb(main):001:0> RUBY_VERSION
    => "2.1.0"
    irb(main):002:0> module A
    irb(main):003:1>   refine String do
    irb(main):004:2*     def asdf
    irb(main):005:3>       :asdf
    irb(main):006:3>     end
    irb(main):007:2>   end
    irb(main):008:1> end
    => #<refinement:String@A>
    irb(main):009:0> using A
    => main
    irb(main):010:0> "foo".asdf
    NoMethodError: undefined method `asdf' for "foo":String
    	from (irb):10
    	from out/bin/irb:11:in `<main>'


    irb(main):001:0> RUBY_VERSION
    => "2.1.1"
    irb(main):002:0> module A
    irb(main):003:1>   refine String do
    irb(main):004:2*     def asdf
    irb(main):005:3>       :asdf
    irb(main):006:3>     end
    irb(main):007:2>   end
    irb(main):008:1> end
    => #<refinement:String@A>
    irb(main):009:0> using A
    => main
    irb(main):010:0> "foo".asdf
    NoMethodError: undefined method `asdf' for "foo":String
    	from (irb):10
    	from bin/irb:11:in `<main>'


    irb(main):001:0> RUBY_VERSION
    => "2.2.0"
    irb(main):002:0> module A
    irb(main):003:1>   refine String do
    irb(main):004:2*     def asdf
    irb(main):005:3>       :asdf
    irb(main):006:3>     end
    irb(main):007:2>   end
    irb(main):008:1> end
    => #<refinement:String@A>
    irb(main):009:0> using A
    => main
    irb(main):010:0> "foo".asdf
    NoMethodError: undefined method `asdf' for "foo":String
    	from (irb):10
    	from bin/irb:11:in `<main>'

This seems like a bug because the code behaves differently in IRB than how it behaves in the file. If it's the intended behavior, it's frustrating because it makes it harder to prototype code that uses refinements in the REPL.

This issue is not specific to IRB. I get the same behavior in Pry (works in 2.0.0, doesn't work in newer Ruby versions). This makes me think the issue is not inside the IRB source, but rather has something to do with `using`'s behavior in the `Binding` objects that IRB and Pry are probably using. I haven't looked at the Pry or IRB source in quite a long time, so this paragraph is mostly speculation.

Please let me know if there's any more info I can provide to make this easier to fix



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

In This Thread

Prev Next