[ruby-core:96694] [Ruby master Feature#8215] Support accessing Fiber-locals and backtraces for a Fiber
From:
samuel@...
Date:
2020-01-06 20:50:58 UTC
List:
ruby-core #96694
Issue #8215 has been updated by ioquatix (Samuel Williams).
@eregon I agree with your points. I respect that you've studied a lot in your thesis so ultimately I'll defer to your judgement. But let me explain a bit more.
The reason for expanding the `Fiber#` interface is so that tools like `async` can show better debugging of all fibers.
Ideally it can show the backtrace, and allow the user to check fiber locals (and maybe even get a list of keys for debugging purposes).
I'd also be okay with adding `Fiber.[]` and so on, but that's kind of a separate issue.
Thread safety is not my concern, the function can be marked as thread unsafe, and maybe we can add detection of this and warn against it.
----------------------------------------
Feature #8215: Support accessing Fiber-locals and backtraces for a Fiber
https://bugs.ruby-lang.org/issues/8215#change-83679
* Author: halorgium (Tim Carey-Smith)
* Status: Assigned
* Priority: Normal
* Assignee: ioquatix (Samuel Williams)
* Target version:
----------------------------------------
=begin
As part of debugging celluloid, I have been wanting to diagnose where the Fibers are running and their various locals.
I would expect the following to work.
Thread.current[:key] = "outside"
fiber = Fiber.new do
Thread.current[:key] = "inside"
Fiber.yield
end
fiber.resume
fiber[:key] == "inside" # true
fiber.backtrace # ...
I also wonder whether (({Fiber#[]})) should be implemented, so (({Fiber.current[:key]})) is possible.
For reference, here is the issue on the rubinius issue tracker: ((<"github/rubinius/rubinius/2200"|URL:https://github.com/rubinius/rubinius/issues/2200>))
=end
---Files--------------------------------
0001-cont.c-fiber-local-accessors.patch (2.94 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>