public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@polymtl.ca>
To: "Maciej W. Rozycki" <macro@embecosm.com>, gdb-patches@sourceware.org
Cc: Andrew Burgess <aburgess@redhat.com>, Tom Tromey <tom@tromey.com>,
	Simon Sobisch <simonsobisch@web.de>
Subject: Re: [PATCH v6 5/8] GDB/Python: Use None for `var_zuinteger_unlimited' value set to `unlimited'
Date: Mon, 17 Oct 2022 11:02:49 -0400	[thread overview]
Message-ID: <0cf90df8-6943-212a-b4c5-bd5301b44369@polymtl.ca> (raw)
In-Reply-To: <alpine.DEB.2.20.2208171751060.10833@tpp.orcam.me.uk>



On 2022-08-17 18:04, Maciej W. Rozycki wrote:
> Consistently with parameters of the PARAM_UINTEGER and PARAM_INTEGER 
> types, return the special value of `None' for a PARAM_ZUINTEGER_UNLIMITED 

I had trouble parsing this sentence, I think adding a comma between
"types" and "return" would help.

> parameter set to `unlimited', fixing an inconsistency introduced with 
> commit 0489430a0e1a ("Handle var_zuinteger and var_zuinteger_unlimited 
> from Python"); cf. PR python/20084.  Adjust the testsuite accordingly.
> 
> This makes all the three parameter types consistent with each other as 
> far as the use of `None' is concerned, and similar to the Guile/Scheme 
> interface where the `#:unlimited' keyword is likewise used.  We have a 
> precedent already documented for a similar API correction:
> 
>  -- Function: gdb.breakpoints ()
>      Return a sequence holding all of GDB's breakpoints.  *Note
>      Breakpoints In Python::, for more information.  In GDB version 7.11
>      and earlier, this function returned 'None' if there were no
>      breakpoints.  This peculiarity was subsequently fixed, and now
>      'gdb.breakpoints' returns an empty sequence in this case.
> 
> made in the past.
> 
> And then we have documentation not matching the interface as far as the 
> value of `None' already returned for parameters of the PARAM_UINTEGER 
> and PARAM_INTEGER types is concerned, and the case of an incorrect 
> assertion for PARAM_UINTEGER and PARAM_ZUINTEGER_UNLIMITED parameters in 
> the sibling Guile/Scheme module making such parameters unusable that has 
> never been reported, both indicating that these features may indeed not 
> be heavily used, and therefore that the risk from such an API change is 
> likely lower than the long-term burden of the inconsistency.

To rephrase, just to make sure I understand right, this is the
inconsistency you'd like to fix:

(gdb) set an-integer unlimited 
(gdb) set an-uinteger unlimited 
(gdb) set a-zuinteger-unlimited unlimited 
(gdb) python print(gdb.parameter('an-integer'))
None
(gdb) python print(gdb.parameter('an-uinteger'))
None
(gdb) python print(gdb.parameter('a-zuinteger-unlimited'))
-1

I'm hesitant about this kind of of breaking changes.  I don't agree with
your reasoning leading you to claim that these features are not heavily
used.  We had and have all kinds of inconsistencies in our MI and Python
API, where the actual API doesn't match the doc, and people usually just
silently work around them.  Also, the fact that Guile was broken doesn't
mean people don't use the equivalent in Python.

The closest thing to empirical data we can have if searching to
occurences on Github.  I just did this search, and there are no hits:

  https://github.com/search?q=PARAM_ZUINTEGER_UNLIMITED+extension%3Apy&type=Code&ref=advsearch&l=&l=

That is, searching for PARAM_ZUINTEGER_UNLIMITED in all the .py files on
Github.  As opposed to PARAM_ZINTEGER, for instance:

  https://github.com/search?q=PARAM_ZINTEGER+extension%3Apy&type=Code&ref=advsearch&l=&l=

Of course, that's not all the code in the world, but that gives an idea.

And I do agree that fixing the API once will reduce the long-term costs
for everybody (us and users bumping in the inconsistency and losing
time).  So, I am fine with fixing PARAM_ZUINTEGER_UNLIMITED in this
case.

However, I am unable to apply your patch locally in order to properly
review it.  Can you send an updated version of the series, after perhaps
pushing the already approved patches that make sense on their own?

Thanks,

Simon

  parent reply	other threads:[~2022-10-17 15:03 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-17 22:03 [PATCH v6 0/8] gdb: split array and string limiting options Maciej W. Rozycki
2022-08-17 22:03 ` [PATCH v6 1/8] GDB/Guile: Don't assert that an integer value is boolean Maciej W. Rozycki
2022-10-17 13:43   ` Simon Marchi
2022-10-21  7:58     ` Maciej W. Rozycki
2022-10-21 18:44   ` Simon Marchi
2022-10-21 20:54     ` Maciej W. Rozycki
2022-10-22  0:48       ` Simon Marchi
2022-08-17 22:03 ` [PATCH v6 2/8] GDB/doc: Document the Guile `#:unlimited' keyword Maciej W. Rozycki
2022-08-18  6:06   ` Eli Zaretskii
2022-09-01 10:31     ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 3/8] GDB/testsuite: Expand Python integer parameter coverage across all types Maciej W. Rozycki
2022-10-17 13:56   ` Simon Marchi
2022-10-21  7:59     ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 4/8] GDB/Python: Make `None' stand for `unlimited' in setting integer parameters Maciej W. Rozycki
2022-10-17 14:26   ` Simon Marchi
2022-10-21  8:03     ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 5/8] GDB/Python: Use None for `var_zuinteger_unlimited' value set to `unlimited' Maciej W. Rozycki
2022-08-18  6:08   ` Eli Zaretskii
2022-10-17 15:02   ` Simon Marchi [this message]
2022-10-29 15:58     ` Maciej W. Rozycki
2022-10-31 13:00       ` Simon Marchi
2022-10-31 13:31         ` Maciej W. Rozycki
2022-11-01 12:28           ` Maciej W. Rozycki
2022-10-26 11:58   ` Luis Machado
2022-10-29 13:52     ` Maciej W. Rozycki
2022-10-31  8:14       ` Luis Machado
2022-10-31 12:37         ` Luis Machado
2022-10-31 13:08           ` Maciej W. Rozycki
2022-10-31 13:14             ` Luis Machado
2022-10-31 14:05               ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 6/8] GDB: Allow arbitrary keywords in integer set commands Maciej W. Rozycki
2022-08-17 22:05 ` [PATCH v6 7/8] GDB: Add a character string limiting option Maciej W. Rozycki
2022-08-17 22:05 ` [PATCH v6 8/8] GDB/testsuite: Expand for character string limiting options Maciej W. Rozycki
2022-08-18  0:07   ` [PATCH v6.1 " Maciej W. Rozycki
2022-09-01 10:32 ` [PING][PATCH v6 0/8] gdb: split array and " Maciej W. Rozycki
2022-09-08  9:37 ` [PING^2][PATCH " Maciej W. Rozycki
2022-09-14 17:43 ` [PING^3][PATCH " Maciej W. Rozycki
2022-09-22 22:07 ` [PING^4][PATCH " Maciej W. Rozycki
2022-09-29  7:09 ` [PING^5][PATCH " Maciej W. Rozycki
2022-09-29  7:12   ` Simon Sobisch
2022-10-06 15:46 ` [PING^6][PATCH " Maciej W. Rozycki
2022-10-12 21:19 ` [PING^7][PATCH " Maciej W. Rozycki

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=0cf90df8-6943-212a-b4c5-bd5301b44369@polymtl.ca \
    --to=simon.marchi@polymtl.ca \
    --cc=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=macro@embecosm.com \
    --cc=simonsobisch@web.de \
    --cc=tom@tromey.com \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).