[#115565] [Ruby master Feature#20034] [mkmf] Support creating a compilation database for C language tooling — "pounce (Calvin Lee) via ruby-core" <ruby-core@...>

Issue #20034 has been reported by pounce (Calvin Lee).

7 messages 2023/12/01

[#115595] [Ruby master Bug#20043] `defined?` checks for method existence but only sometimes — "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>

Issue #20043 has been reported by tenderlovemaking (Aaron Patterson).

10 messages 2023/12/05

[#115598] [Ruby master Bug#20044] Add runtime flag and environment variable for prism — "HParker (Adam Hess) via ruby-core" <ruby-core@...>

Issue #20044 has been reported by HParker (Adam Hess).

7 messages 2023/12/06

[#115647] [Ruby master Bug#20048] UDPSocket#remote_address spec errors — "vo.x (Vit Ondruch) via ruby-core" <ruby-core@...>

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

9 messages 2023/12/07

[#115648] [Ruby master Feature#20049] Destructive drop_while for Array and Hash — "chucke (Tiago Cardoso) via ruby-core" <ruby-core@...>

Issue #20049 has been reported by chucke (Tiago Cardoso).

8 messages 2023/12/07

[#115649] [Ruby master Bug#20050] Segfault on Ruby 3.2.2 on x86_64 Darwin 20 (maybe in Array#hash) — "martinemde (Martin Emde) via ruby-core" <ruby-core@...>

Issue #20050 has been reported by martinemde (Martin Emde).

11 messages 2023/12/07

[#115671] [Ruby master Feature#20054] Replace the use of `def` in endless method definitions with a new sigil — "sawa (Tsuyoshi Sawada) via ruby-core" <ruby-core@...>

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

7 messages 2023/12/09

[#115682] [Ruby master Misc#20056] Dir#chdir inconsistency with Dir.chdir — "zverok (Victor Shepelev) via ruby-core" <ruby-core@...>

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

12 messages 2023/12/10

[#115684] [Ruby master Feature#20057] Change behaviour of rb_register_postponed_job for Ruby 3.3 — "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>

Issue #20057 has been reported by kjtsanaktsidis (KJ Tsanaktsidis).

8 messages 2023/12/11

[#115688] [Ruby master Bug#20058] `warning: bigdecimal/util is found in bigdecimal` even if the gem spec has the `add_dependency "bigdecimal"` entry — "yahonda (Yasuo Honda) via ruby-core" <ruby-core@...>

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

10 messages 2023/12/11

[#115749] [Ruby master Feature#20066] Reduce Implicit Array/Hash Allocations For Method Calls Involving Splats — "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>

Issue #20066 has been reported by jeremyevans0 (Jeremy Evans).

19 messages 2023/12/15

[#115764] [Ruby master Feature#20069] Buffer class in stdlib — "pynix (Pynix wang) via ruby-core" <ruby-core@...>

Issue #20069 has been reported by pynix (Pynix wang).

9 messages 2023/12/16

[#115830] [Ruby master Misc#20075] DevMeeting-2024-01-17 — "mame (Yusuke Endoh) via ruby-core" <ruby-core@...>

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

9 messages 2023/12/21

[#115831] [Ruby master Bug#20076] M:N scheduler crashes on macOS with RUBY_MN_THREADS=1 — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>

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

7 messages 2023/12/21

[#115847] [Ruby master Bug#20079] alexandria testsuite began to segfault recently — "mtasaka (Mamoru TASAKA) via ruby-core" <ruby-core@...>

Issue #20079 has been reported by mtasaka (Mamoru TASAKA).

15 messages 2023/12/22

[#115864] [Ruby master Feature#20080] Implement #begin_and_end method on Range — "stuyam (Stuart Yamartino) via ruby-core" <ruby-core@...>

Issue #20080 has been reported by stuyam (Stuart Yamartino).

17 messages 2023/12/22

[#115892] [Ruby master Bug#20085] Fiber.new{ }.resume causes Segmentation fault for Ruby 3.3.0 on aarch64-linux — "oleksii (Oleksii Leonov) via ruby-core" <ruby-core@...>

Issue #20085 has been reported by oleksii (Oleksii Leonov).

27 messages 2023/12/25

[#115912] [Ruby master Bug#20090] Anonymous arguments are now syntax errors in unambiguous cases — "willcosgrove (Will Cosgrove) via ruby-core" <ruby-core@...>

Issue #20090 has been reported by willcosgrove (Will Cosgrove).

8 messages 2023/12/26

[#115919] [Ruby master Feature#20093] Syntax or keyword to reopen existing classs/modules, never to define new classs/modules — "tagomoris (Satoshi Tagomori) via ruby-core" <ruby-core@...>

Issue #20093 has been reported by tagomoris (Satoshi Tagomori).

11 messages 2023/12/27

[#115923] [Ruby master Bug#20094] Inline while loop behavior changed unexpectedly in 3.3.0 — "sisyphus_cg (Sisyphus CG) via ruby-core" <ruby-core@...>

Issue #20094 has been reported by sisyphus_cg (Sisyphus CG).

12 messages 2023/12/27

[#115925] [Ruby master Bug#20096] Ruby 3.2.2 win32/registry: Junk appended to Windows Registry String Value — "jay4rubydev (Jay M) via ruby-core" <ruby-core@...>

SXNzdWUgIzIwMDk2IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGpheTRydWJ5ZGV2IChKYXkgTSkuDQ0K

8 messages 2023/12/27

[ruby-core:115966] [Ruby master Bug#20089] Fiber#kill transfers to root fiber

From: "rmosolgo (Robert Mosolgo) via ruby-core" <ruby-core@...>
Date: 2023-12-28 15:57:52 UTC
List: ruby-core #115966
Issue #20089 has been updated by rmosolgo (Robert Mosolgo).


That definitely makes sense for a Fiber killing _itself_, but would you say that killing a _different_ Fiber should cause a fiber to transfer away? In my first script above, calling `worker.kill` causes the `manager` fiber to transfer. 

I looked a little deeper, it looks like this only happens when both Fibers have been started with `.transfer`. Here's a scenario with two different Fibers, one killing the other, and only the `.transfer`/`.transfer` case exits early: 

```ruby
puts "\n\nResume/Transfer"
fiber1 = Fiber.new {
  puts "1. Fiber1 Runs"
  fiber2 = Fiber.new {
    puts "2. Fiber2 Runs"
    fiber1.transfer
    puts "Never: Fiber2 is killed"
  }
  fiber2.transfer
  fiber2.kill
  puts "3. Fiber1 finishes"
}
fiber1.resume
puts "4. Exit"
# Resume/Transfer
# 1. Fiber1 Runs
# 2. Fiber2 Runs
# 3. Fiber1 finishes
# 4. Exit

puts "\n\nTransfer/Resume"
fiber1 = Fiber.new {
  puts "1. Fiber1 Runs"
  fiber2 = Fiber.new {
    puts "2. Fiber2 Runs"
    Fiber.yield
    puts "Never: Fiber2 is killed"
  }
  fiber2.resume
  fiber2.kill
  puts "3. Fiber1 finishes"
}
fiber1.transfer
puts "4. Exit"
# Transfer/Resume
# 1. Fiber1 Runs
# 2. Fiber2 Runs
# 3. Fiber1 finishes
# 4. Exit

puts "\n\nResume/Resume"
fiber1 = Fiber.new {
  puts "1. Fiber1 Runs"
  fiber2 = Fiber.new {
    puts "2. Fiber2 Runs"
    Fiber.yield
    puts "Never: Fiber2 is killed"
  }
  fiber2.resume
  fiber2.kill
  puts "3. Fiber1 finishes"
}
fiber1.resume
puts "4. Exit"
# Resume/Resume
# 1. Fiber1 Runs
# 2. Fiber2 Runs
# 3. Fiber1 finishes
# 4. Exit

puts "\n\nTransfer/Transfer"
fiber1 = Fiber.new {
  puts "1. Fiber1 Runs"
  fiber2 = Fiber.new {
    puts "2. Fiber2 Runs"
    fiber1.transfer
    puts "Never: Fiber2 is killed"
  }
  fiber2.transfer
  fiber2.kill
  puts "3. Fiber1 finishes"
}

fiber1.transfer
puts "4. Exit"
# Transfer/Transfer
# 1. Fiber1 Runs
# 2. Fiber2 Runs
# 4. Exit
```

Is there a more appropriate way to terminate `fiber2` in that case, while keeping control inside `fiber1`, or is this a bug?


----------------------------------------
Bug #20089: Fiber#kill transfers to root fiber
https://bugs.ruby-lang.org/issues/20089#change-105925

* Author: rmosolgo (Robert Mosolgo)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22]
* Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN
----------------------------------------
I was hoping to use `Fiber#kill` to clean up formerly `.transfer`-d Fibers and work around https://bugs.ruby-lang.org/issues/20081, but I found that `Fiber#kill` has a similar control flow jump behavior. Is this on purpose, or a bug? 

Here's a script to test the behavior: 

```ruby
manager = Fiber.new do
  worker = Fiber.new do
    puts "2. Begin Worker"
    manager.transfer
    puts "This should never print -- killed"
  end

  puts "1. Transfer to Worker"
  worker.transfer
  puts "3. Killing Worker"
  worker.kill
  puts "4. Finished manager"
end

manager.transfer
puts "5. Finished script"
```

I expected items `1` through `5` to be printed in order, but in fact, `4` is never printed: 

```
$ ruby fiber_transfer_test.rb
1. Transfer to Worker
2. Begin Worker
3. Killing Worker
5. Finished script
```

It seems like `worker.kill` is transferring control to the top-level fiber instead of giving it back to `manager`.



I also tried having the thread kill _itself_, hoping it would return to the fiber that originally `.transfer`ed to it, but it also seems to jump out: 

```ruby
manager = Fiber.new do
  worker = Fiber.new do
    puts "2. Begin Worker"
    manager.transfer
    Fiber.current.kill
    puts "This should never print -- killed"
  end

  puts "1. Transfer to Worker"
  worker.transfer
  puts "3. Killing Worker"
  worker.transfer
  puts "4. Finished manager"
end

manager.transfer
puts "5. Finished script"
```

Prints: 

```
1. Transfer to Worker
2. Begin Worker
3. Killing Worker
5. Finished script
```



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