From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id gQfWFUUAOWqhMRMAWB0awg (envelope-from ) for ; Mon, 22 Jun 2026 05:28:37 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=dtfwHJyf; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 438A71E024; Mon, 22 Jun 2026 05:28:37 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id A20231E024 for ; Mon, 22 Jun 2026 05:28:36 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D17334BA23C4 for ; Mon, 22 Jun 2026 09:28:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D17334BA23C4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1782120515; bh=z3msJy/LQRzBrtSeIW3qZIh1ncILb10O5aryTYoTuC0=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=dtfwHJyfNwVphba28CUIfl8rwYl3C1Rc/VnpuVI+wHZMl6p5NiFI1cdB82u3eH4mx V9Jug53Hq6Zbly/j0AgabB/Q4wgUf8WnpAsWSbw0HJ/gug6u+rm9GIFe6+AyAZtalm QoB3biXB5655eA+RKVVEK/kld8sLeaEEKX2HAtM0= Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011031.outbound.protection.outlook.com [40.107.130.31]) by sourceware.org (Postfix) with ESMTPS id 421204BA2E09 for ; Mon, 22 Jun 2026 09:27:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 421204BA2E09 ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 421204BA2E09 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1782120477; cv=pass; b=S3P+QlAJK9kRV066RkDBJBTb3isF9NrSqcl/Bi9/FRVV0ciRt3m8zR/h2BHymA9kGK6O7ntmbFNCMqVzng6ZCXQf/ogPaJPXNhk7wyMP9J/ZE/x1liRRhm3AXMhgJmmRl++LBTzJOJ7iV4hENTdtGnTKGfeynvvBqSlT5v6/jqU= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1782120477; c=relaxed/simple; bh=04zSwUW56TWPdPWi06jLZcni3LhrmoZ51wS0tdEYQPc=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=RZPtiUGk8bLwC/tBIPpJVXYqGYPHnWLLq042gVJf9TTF3wt/bdMJ6ZDw3zTdc6ZT+yP5QwuzPNkCXar5+14Km/JTLBX3CELDWORbEwWAR7sXi2dT0eYXS8CvlbK3m/uuGCOOzfPcx7wUhwjUO/Up1dggWCxMX+8bl26u1PQ9OPM= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=n+8W1RzZ; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=n+8W1RzZ DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 421204BA2E09 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=ht+Zf3mTqlAN6dFCMyzyocGCAKEiaJaHdSiowMjBolU5ONshWI80E5GDo04upG0BXE32vBZdZ4YZUAGZLSjE5GB1V0bxxkG03idktLdtKCtuspgyYeYKpRB461GxiYwPGSC+KWFMDxIU7LAWkssW4nCGXpIlKG/dI1MAwo44bWPzDaXzPKpONqFX8pAk+Jp/lmTznTPjTkR91aGC2Hw0nppM1Wo6Di9SEWH2T8TNL0wmGT23gVm+v0PIGZ5qrsVrE1FgJ1lV1kS4Td0liRrukQg8e9uy2sp3u2htSuaGZr4w0GO0vb5eV0HE1BTl8BKMAgMurlawxAEiytE37yni7w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=z3msJy/LQRzBrtSeIW3qZIh1ncILb10O5aryTYoTuC0=; b=b9lNiwhOem5JCIdgDZ/Bces7zon6X43HHI0LJONFfHNUMhwwvKB5WG65kz/wgPUV7KXW3+fF6uXnSeI9T7YH1oYoBLjzlva2J3RASHOGiHxtGILBb6J8TLlgQPntkakbg/er9EglRRhA1Ccs5y5Srl7n+T/Hr30X7tZHJAAStZHzpEcPzynYmLYXRy9I9INCbhr4JgM04xdyS3BXe0L/n8Gk0tozraXnOHVSq2P3pqFvNfb+0aze5EAj795qEPCTo1w6Z/nnfOCS+Njz87XoHZMAmhl1mthaUGSCyz2vJ97zMc9hIre4ifhJAkclzZjk+MNAVPdS9GY4xO73sJ5rPQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=tromey.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from DB9PR06CA0030.eurprd06.prod.outlook.com (2603:10a6:10:1db::35) by GVXPR08MB11640.eurprd08.prod.outlook.com (2603:10a6:150:323::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.19; Mon, 22 Jun 2026 09:27:46 +0000 Received: from DB1PEPF00039233.eurprd03.prod.outlook.com (2603:10a6:10:1db:cafe::a8) by DB9PR06CA0030.outlook.office365.com (2603:10a6:10:1db::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.15 via Frontend Transport; Mon, 22 Jun 2026 09:27:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB1PEPF00039233.mail.protection.outlook.com (10.167.8.106) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.159.10 via Frontend Transport; Mon, 22 Jun 2026 09:27:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ylq9yHnCZIPH0vAeBhjYMFQqh9BaUGeRvxQziLmSp6nUzIJEjV2rMMzhLcytlNaxCzZJ/mwbqi3TshmYTpzSESLGUDG7dzzsGfFewxbmdPOM1c76/QXFpb3aypbA2G5wozOkOAdYC161oJmV0VhJEHSpF5ttcn2L7A0Mbcm+N9HVvOQ/J3YpAkBCTUczcosAoHK0G6Etqyg4FJDZV0U1Xx6SEzyptpf45J2ZfOh0ShFm/YJexlwrOWdaQYm4cLYfTDSV5FXoLWLY7w6X9AaNjuzHi8n9xvNPaoPQv19sRaDLTlB54TYMOZxalQI/YOaA9JsrbxTTDrJhGAF5yhBjDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=z3msJy/LQRzBrtSeIW3qZIh1ncILb10O5aryTYoTuC0=; b=t9tzo0y6bOX98RopAU+oI3aNnODYT3Gk/gBTwDugshUq18+otb7dA2N/QL1lRaObfOgkd6GLuzuvod1VhRRgpzWAHzysfaQT8Q44zWG7W/yhLmVsiOLXCHgpyUfGvzy4U2HwWMlNloDGmYxBEV4vCxR9q34Vw5MPaaocpNy+YMgAmhUKS+y9gKHbfkSmNoYbabi791glz7HrGmdtl6/PHAE5t+1rrMuG0yRLBgn1EXLRlddKmH1j7uQVelYrI5nI2i4sKMl0g3K19cLXMzgGuD2ol7X9PFtmPHf7pqEkmegslVEYTbAkWniVtbbFcCl8ptT6wZ5h4DCVbrJTpNLY4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DU0PR08MB8663.eurprd08.prod.outlook.com (2603:10a6:10:401::6) by PAVPR08MB8966.eurprd08.prod.outlook.com (2603:10a6:102:320::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.18; Mon, 22 Jun 2026 09:26:42 +0000 Received: from DU0PR08MB8663.eurprd08.prod.outlook.com ([fe80::f957:cec9:ec8d:7968]) by DU0PR08MB8663.eurprd08.prod.outlook.com ([fe80::f957:cec9:ec8d:7968%2]) with mapi id 15.21.0139.018; Mon, 22 Jun 2026 09:26:42 +0000 Message-ID: Date: Mon, 22 Jun 2026 10:26:41 +0100 User-Agent: Mozilla Thunderbird Subject: Re: RFC: prototype of C extensions using the Python limited API To: Tom Tromey , Matthieu Longo via Gdb Cc: Andrew Burgess References: <21479c1d-3a9a-4ae2-bc1a-5dc19871f275@arm.com> <87v7bqpeab.fsf@redhat.com> <877bnvinla.fsf@tromey.com> Content-Language: en-US In-Reply-To: <877bnvinla.fsf@tromey.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0088.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:190::21) To DU0PR08MB8663.eurprd08.prod.outlook.com (2603:10a6:10:401::6) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DU0PR08MB8663:EE_|PAVPR08MB8966:EE_|DB1PEPF00039233:EE_|GVXPR08MB11640:EE_ X-MS-Office365-Filtering-Correlation-Id: cecc01c9-db81-47f8-8d37-08ded0408543 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|366016|1800799024|376014|23010399003|18002099003|22082099003|56012099006|11063799006|6133799003|4143699003; X-Microsoft-Antispam-Message-Info-Original: ym9+Q19Z9OuXK6gXTXxsuo/FvWZ9cHqYPz8ZPhb46nlU34HKem9tJsHU0l8eX+3s9jeN38Qe82ieH4/Zl19jQuZCSBKiRM3AFV40NQb6ujW/F4CkdtnGK7a3uZdR3RqMbha3227+ibtnBBNeGsHUSzN3FpsdAHuluIzVYOfdNh3qcGNFOHIAa+womvFGgSckCXkFzJsV8/sECgSUA7qdMbqIiUSSWR5XKwEx7G4XNiB2NS29qrN42mM4Ai2EguWjg5LGSsA/njfhKqMiEShu3muL5qjBiFJScxJcpnYpJf9VmKhbv1mjAEuWEAKQz6kI7UYxIwPKrPJDk4lyfvr0jdhihwcxqT+cysrmHl/nEupCyWl3RzeSLEV104Rx+JLD+MBwyM5mQ1GNkLGrJQqMhjGt+RJWKI6d9DEcAJtVDhGY78uQ8ynRjyAOGdQIN7Lc31ju9PD4CpNLCueMGn9IlNn+ZZCnxLmbuV8gcs5R6NYvXrKmkczgG66bIH9uNzbyPYEFBoaC+qGDJFAx2JimqU8uNWbo7KOUinlkYL051vLLBPvp86TDnydpLngHGVRGa2UDtB3c/+lMBl5BU8ZHJfBgYnSuUTRnvCwcykPFe2L2ROiXie75wA+qgVFwelzrYuUXiCBi+D1HYOw1dCZoJtAQjtIIkoSOw7m+rMs43OU= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0PR08MB8663.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(23010399003)(18002099003)(22082099003)(56012099006)(11063799006)(6133799003)(4143699003); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: oTE+vHvcKh47xmCmcySGnd50ilLVUinkavFwFQkBXizBcl/ICdVfxcR43Ott+MmBgE4KSZFS3iNlhiVKuI/i/aVoKqPYnm4oVnDYf5wBtNPiVlSibsxZ/dfSMVHUJ4SyisxfceTVS/oVQvJAaj4JhvJ8Oq2Jxi5Qr3rT0zt88yuCwU+B2VpiG9U0OcQnO5togMLvQkFT9CGCExk4CYriVo7QRqqf+3keENBlyMoaSFtQN7xknZyjtCH0S8R5W04+s4fw38/O8K5Uf5aQknMhBt6/z6Zu/EbU24Nbc8HQYMedSUELzfoUkZ7V0N4Gmi9PCFcaKBf0fJ2yqiaKIjMIyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB8966 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF00039233.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 29395bda-c973-46a7-d2ac-08ded0405ee5 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|14060799003|35042699022|376014|23010399003|36860700016|82310400026|4143699003|56012099006|11063799006|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: l5ovjfgb5uqDh7yCMgQ6UbUcre3ySbR1/eEMo22HiKM2Xin+xqpqIto17CjXltKJnhSkNYPocgsbMx3CKT/74iMeRm+mG7ufc/7XcVUOx7z/QW/8Tzndxn+Wa9WuamtCzwlRXQati41IyuMmQmiU1bTpKcG/yEXiKHcauLlSp2C8h5+L2gXERDuslqhZmI1Y6a+92hvdm7WbhwutIzAuqpQBSRzHzesIdlk3fvGJwe2xoYAi7UONmonDFTotWH8ejnthxcbwcpDZx2ks1cT14HuI7caK5P6l5VCWVwESnjR54uothHjJkCb84PBx/zM+YWKBpscuCv1UiffLz4/y4fFwXS3Afv0kAdNFbS5PFg3sDm9HLqUc3MXNvxun/JH98hi8MgOIB8orY5u3YRWGshpFJ2nsN0r1C5EkqheJ1U1fNBfQoOhMYihFQT4R89IqDASc87QXTNMX4Kp0XT8RGcLe7RoW0aRXHFRS6M3a4X+UgT7TlwqgUIm7nZrIpkEIgAGwMXZEOw5kIPClOg7wsRDC1QU1K4zpp2/zckkawFCiw9SMB1H9YDluDp5xrLlnZv0F6CjegBgLF8KgBYJxRi/TOGpGJCk+WW4XlpBt0i24cN3eo1VKlxKfz6W1stb9JajVI1RDZPKUr3NeXmPE1Q58LAFPmDH3DOVxNK3N61RXqmktNlv07vNBG5JgiL9Y0c1RhnM+ET+uegkcs/sRJg== X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(14060799003)(35042699022)(376014)(23010399003)(36860700016)(82310400026)(4143699003)(56012099006)(11063799006)(6133799003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UeGh0R2j8hUU3Jewp9Ha86Y3Fb4aKfjft091UmU1iE/uJhUTN80YHGJo+XemR5QwsnCWyoL/eQiNbsCTaRFGdi/1gBARA+XsfeHqxueLvSOeA87dFUJAbThf4WKW9ce8rksXrJk+ef5q8LNPluRlUdwoYnpgCcdQYBbWBkTmkcSeno3fs+XtQh9loTeRszUQzmf7D/noo31V/eWJwDmlTKGn4PBj3bq1TkysWpSusuq0IfvFaLyTC7eRb77Bi9K9HoayJAtNackYN4qV0ci4vu9HpImQjXnq/hqgYg9GU2OlveFzpLUkcJy46r1bStRFzcJuxMeGCwT89IORFcKkeG9T9V6CcC/t2HAW5iXU3lmlckYiI503qUO3xVokwDB0xdgQq0QodDguSFt3W7di4kZ0ODeJizcVbSb9ZfOAxPfQ5IUk0BrNXOfxtOCPSWDf X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2026 09:27:46.4496 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cecc01c9-db81-47f8-8d37-08ded0408543 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF00039233.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB11640 X-BeenThere: gdb@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Matthieu Longo via Gdb Reply-To: Matthieu Longo Errors-To: gdb-bounces~public-inbox=simark.ca@sourceware.org Sender: "Gdb" On 18/06/2026 21:46, Tom Tromey wrote: > Matthieu> The prototype is organized as follows: > Matthieu> - include/ > Matthieu> - py-ref.hpp: copied from GDB. Addition of a clear() method in gdbpy_ref_policy. > > Do we really need this? > > What if gdb_py_ref is a subclass that adds a custom method instead? This is for cases when a 'gdbpy_ref<> *' is a member of a Python object. Py_CLEAR and Py_VISIT have to be called on the 'PyObject *' owned by gdbpy_ref. This case does not appear in the prototype. I have only one occurrence inside GDB (which I introduced), which is perfectly replaceable by a raw 'PyObject *'. It does not seem a big deal to discard this. > > I still haven't really read the code. It's kind of difficult in this > form. > I just noticed that the patch was not inlined properly in the email. I usually use git-send-email for this, but had to add the patch manually here. I used Thunderbird to send it, with "mailnews.send_plaintext_flowed = true" so I would have expected the patch to be inlined. Sorry for this. I can retry to send the inlined patch again. Is there anything else I can do to make things easier for you ? > Matthieu> + gdbpy_heap_type: generic logic for dynamically-allocated types > Matthieu> (tp_traverse, tp_clear, tp_dealloc) > > I don't understand why these can't just be methods of the implementation > class, by which I mean the subclasses of PyObject. If needed we could > make an intermediary base class that interposes between the > implementation and PyObject like > > struct intermediary : public PyObject {}; > struct type_object : public intermediary { ... }; // eg > The Python object is allocated by Python with PyObject_GC_New, so no C++ initialization is performed. Given this constraint, I am not sure that this intermediate class would work. I haven't tried to check. Additionally, for the types requiring a __dict__, I noticed that all those inheritances cause more issues than it helps. > Matthieu> I don't expect a thorough review of all the code, but a > Matthieu> validation of the approach. > > I'll try to send more next week. > > > Tom Matthieu