From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on starla X-Spam-Level: X-Spam-Status: No, score=-1.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from nue.mailmanlists.eu (nue.mailmanlists.eu [IPv6:2a01:4f8:1c0c:6b10::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 8FF2E1F44D for ; Sun, 7 Apr 2024 14:24:20 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=pass (1024-bit key; secure) header.d=ml.ruby-lang.org header.i=@ml.ruby-lang.org header.a=rsa-sha256 header.s=mail header.b=VGPTdu+P; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=J0dg6w5N; dkim-atps=neutral Received: from nue.mailmanlists.eu (localhost [127.0.0.1]) by nue.mailmanlists.eu (Postfix) with ESMTP id 0CD8A8143D; Sun, 7 Apr 2024 14:24:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ml.ruby-lang.org; s=mail; t=1712499854; bh=nw3ms3cz5H/PovoYXKyhgNNjeeSufqvexQmygLgd/mc=; h=Date:References:To:Reply-To:Subject:List-Id:List-Archive: List-Help:List-Owner:List-Post:List-Subscribe:List-Unsubscribe: From:Cc:From; b=VGPTdu+PdsDBif4S99++3VEIeL+iXdmzkfrIOby3H1rRZgDeeMnbl7N5PiXB6N7nG gBAzm4B5Q3+oHc7OJcbuIYEInKVhAS+sRzMFBN4QG91NfW+xZWIWHVwxp61/ZhWdjf qlSIaGFGdGOnk0m13fesL2Cwy8icOfkPT4C6g1ks= Received: from s.wfbtzhsv.outbound-mail.sendgrid.net (s.wfbtzhsv.outbound-mail.sendgrid.net [159.183.224.104]) by nue.mailmanlists.eu (Postfix) with ESMTPS id 279B581438 for ; Sun, 7 Apr 2024 14:24:10 +0000 (UTC) Authentication-Results: nue.mailmanlists.eu; dkim=pass (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=J0dg6w5N; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc:content-type:from:subject:to; s=s1; bh=IlbNwpePmlb/CN3ny3xwxthzUiRvsMomu4aYSfYGvmI=; b=J0dg6w5Nc9FhRpwmcTzsi2ZPzaypNvYloghbfQ55AGTmgJkMMp0mxrDt08Bdh4oio17n q8Sd8dFS0vMgZoF/In0yKSz69/ib/FGNXu8en1cJVEMEnhZ7zH0PHFNO4MJEkrERJWK3wm hbz8wRV7CBvCJirLBtMUzO+LBl5eM/fmNvYFbauVEoe6UdEBGYdMtdtNesiJUExfmdhgNb /Cw1dOKhoW1UKaGBa7OjjMCZqEtAGZT4FtUZm4mu4sIAYOocg8zLy0Tj8QvxbiZ97THczd Fj9Ei8xQcmV6Hs4H4UWJj98enELQQwF8xvyl9CU9NP6SelXscF5N8wfOr3RWwhGg== Received: by recvd-d64b65bdd-qdmxr with SMTP id recvd-d64b65bdd-qdmxr-1-6612AC89-2 2024-04-07 14:24:09.214596392 +0000 UTC m=+231205.775079294 Received: from herokuapp.com (unknown) by geopod-ismtpd-22 (SG) with ESMTP id xRfGOzv1T225iBNfpyjdHw for ; Sun, 07 Apr 2024 14:24:09.191 +0000 (UTC) Date: Sun, 07 Apr 2024 14:24:09 +0000 (UTC) Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 20102 X-Redmine-Issue-Author: ioquatix X-Redmine-Issue-Assignee: ioquatix X-Redmine-Issue-Priority: Normal X-Redmine-Sender: ioquatix X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 94055 X-SG-EID: =?us-ascii?Q?u001=2E3QFJPY5gaRwyNXkncYONHM3OeFnb=2FgeOrLDgg3PYIKrq5rvk81iAipQ1q?= =?us-ascii?Q?cdmuT9o5PIWGjXtTDstodNmslT=2F6xfCuIofWR2K?= =?us-ascii?Q?w8msDgVaVLydP7O8kFhMBe4iLNlqlUTsMrzN64t?= =?us-ascii?Q?=2FUkoiPvXJvlmV3i3507M+XZE+MSwz6sjVjR33DR?= =?us-ascii?Q?FlpbJPrHXyzbcBEFHgcJ3sZ565KA6P+FU3PTSxi?= =?us-ascii?Q?uz9bU6tUTpLzE5OUVEYgJp6HYtrdPDnrUd0gxkB?= =?us-ascii?Q?XD8rmPBT1qSLX0GUkH6V0QSb7w=3D=3D?= To: ruby-core@ml.ruby-lang.org X-Entity-ID: u001.I8uzylDtAfgbeCOeLBYDww== Message-ID-Hash: FJXPM2YSEJJP2IG5GHPSUMCLJYPNNEJG X-Message-ID-Hash: FJXPM2YSEJJP2IG5GHPSUMCLJYPNNEJG X-MailFrom: bounces+313651-b711-ruby-core=ml.ruby-lang.org@em5188.ruby-lang.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.3 Precedence: list Reply-To: Ruby developers Subject: [ruby-core:117460] [Ruby master Feature#20102] Introduce `Fiber#resuming?` List-Id: Ruby developers Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: "ioquatix (Samuel Williams) via ruby-core" Cc: "ioquatix (Samuel Williams)" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Issue #20102 has been updated by ioquatix (Samuel Williams). Here is the updated proposal: https://bugs.ruby-lang.org/issues/20414 ---------------------------------------- Feature #20102: Introduce `Fiber#resuming?` https://bugs.ruby-lang.org/issues/20102#change-107846 * Author: ioquatix (Samuel Williams) * Status: Closed * Assignee: ioquatix (Samuel Williams) ---------------------------------------- There are some tricky edge cases when using `Fibre#raise` and `Fiber#kill`, e.g. ```ruby fiber = nil killer = Fiber.new do fiber.raise("Stop") end fiber = Fiber.new do killer.resume end fiber.resume # 4:in `raise': attempt to raise a resuming fiber (FiberError) # 4:in `block in
' ``` Async has to deal with this edge case explicitly by rescuing the exception: https://github.com/socketry/async/blob/ffd019d9c1d547926a28fe8f36bf7bfe91d8a168/lib/async/task.rb#L226-L233 I'd like to avoid doing that and instead just ask "Can I kill/raise on this fiber right now?" which is determined by whether the fiber itself can be resumed or transferred to. To address this, I'd like to introduce `Fiber#resuming?`: ```c /* * call-seq: fiber.resumed? -> true or false * * Whether the fiber is currently resumed. */ VALUE rb_fiber_resuming_p(VALUE fiber_value) { struct rb_fiber_struct *fiber = fiber_ptr(fiber_value); if (FIBER_TERMINATED_P(fiber)) return RUBY_Qfalse; return RBOOL(fiber->resuming_fiber); } ``` See the PR: https://github.com/ruby/ruby/pull/9382 -- 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/