From: samuel@... Date: 2020-01-06T20:50:58+00:00 Subject: [ruby-core:96694] [Ruby master Feature#8215] Support accessing Fiber-locals and backtraces for a Fiber 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: