Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom Tromey <tom@tromey.com>
To: Simon Marchi <simark@simark.ca>
Cc: Tom Tromey <tom@tromey.com>,  gdb-patches@sourceware.org
Subject: Re: [RFC 0/4] Better Python safety
Date: Mon, 23 Feb 2026 16:23:12 -0700	[thread overview]
Message-ID: <87y0kjqc2n.fsf@tromey.com> (raw)
In-Reply-To: <b65f9274-fab2-47fa-826b-c8f0f3d90a6a@simark.ca> (Simon Marchi's message of "Mon, 23 Feb 2026 16:00:35 -0500")

>>>>> "Simon" == Simon Marchi <simark@simark.ca> writes:

Simon> We have BorrowedObject:
Simon>     https://git.efficios.com/?p=babeltrace.git;a=blob;f=src/cpp-common/bt2/borrowed-object.hpp;h=3ea62072df3f0dbfbf2ad3434980c4f7f597dd39;hb=HEAD
Simon> which holds a weak reference on an object.  It can't hold nullptr,
Simon> meaning that if you receive a BorrowedObject of some kind, you know
Simon> there is an object in it.

Initially I made gdbpy_borrowed_ref reject NULL pointers, but Python
will pass NULL as the keyword argument to varargs methods.  But I think
a separate class can be done.

Simon> Finally (1), is there something specific to GDB here?  I'm wondering if we
Simon> could make it a separate project (and import it in GDB), because it's
Simon> something I would be tempted to use outside of GDB.

Yeah, it is tied into other parts of gdb to some extent.

It checks for gdb exceptions specifically and gdbpy_convert_exception
knows about QUIT and whatnot.

gdbpy_ref is just an specialization of a template in gdbsupport.

The result converters use LONGEST, ULONGEST, and gdb::unique_xmalloc_ptr
(dunno if all those are in the patches I already sent, but anyway they
are clearly needed).

The string converter uses host_charset().

I vaguely plan to eventually use gdb_python_exception to solve the
"exception denaturation" problem, which would mean integrating it more
with the existing gdb exception system.

Simon> https://nanobind.readthedocs.io/en/latest/exchanging.html#option-3-wrappers

Simon> I'm not convinced that going with this library would be easier in the
Simon> long run, but I think we should at least take a moment to check what is
Simon> out there before writing something new.

To me this looks more complicated than anything we need.
I did look at it predecessor, pybind11, a little before starting.

Tom

  reply	other threads:[~2026-02-23 23:23 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-22 19:49 Tom Tromey
2026-02-22 19:49 ` [RFC 1/4] Add gdbpy_borrowed_ref Tom Tromey
2026-02-24  4:57   ` Simon Marchi
2026-02-25  3:55     ` Tom Tromey
2026-02-25 15:24       ` Simon Marchi
2026-02-26  1:38       ` Tom Tromey
2026-02-22 19:49 ` [RFC 2/4] Add wrappers for some Python APIs Tom Tromey
2026-02-22 19:49 ` [RFC 3/4] Add constexpr functions to create PyMethodDef entries Tom Tromey
2026-02-22 19:49 ` [RFC 4/4] Convert some Python code to new-style Tom Tromey
2026-02-23 20:28 ` [RFC 0/4] Better Python safety Simon Marchi
2026-02-23 21:00 ` Simon Marchi
2026-02-23 23:23   ` Tom Tromey [this message]
2026-02-23 23:56     ` Tom Tromey
2026-02-24  1:05       ` Simon Marchi
2026-02-24 16:29         ` Tom Tromey
2026-02-23 21:22 ` Tom Tromey
2026-03-04 17:39 ` Matthieu Longo
2026-03-04 21:02   ` Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87y0kjqc2n.fsf@tromey.com \
    --to=tom@tromey.com \
    --cc=gdb-patches@sourceware.org \
    --cc=simark@simark.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox