public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: "Maciej W. Rozycki" <macro@embecosm.com>
To: Simon Marchi <simon.marchi@polymtl.ca>
Cc: gdb-patches@sourceware.org, 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: Sat, 29 Oct 2022 16:58:12 +0100 (BST)	[thread overview]
Message-ID: <alpine.DEB.2.20.2210291618270.19931@tpp.orcam.me.uk> (raw)
In-Reply-To: <0cf90df8-6943-212a-b4c5-bd5301b44369@polymtl.ca>

On Mon, 17 Oct 2022, Simon Marchi 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.

 Fixed in v7.

> > 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

 Correct.  Please note that the -1 value for PARAM_ZUINTEGER_UNLIMITED was 
also only added when `None' had been already used for PARAM_UINTEGER and 
PARAM_ZINTEGER types, so it was wrong right from the beginning.

> 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.

 Fair enough, especially on the last point.

 My overall impression of the Python technical culture has sadly been that 
things largely happen on an ad-hoc basis there, with little structure or 
consistency.  I guess this is an unfortunate side effect resulting from 
the low entry barrier, not by itself bad, Python presents to newcomers to 
computer programming.

> 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.

 Thank you for doing this research.  I wasn't aware of this Github's 
feature (I don't usually use Github).

> 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.

 Good.  Given that you are in favour to making this change and Andrew was 
against, do you think we need another opinion?  Have we reached consensus?

> 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?

 I'm not sure what happened here, I had no conflicts in the rebase (but 
then maybe I rebased already after I posted v6 and forgot about it).  I 
have now posted the remaining parts of the series rebased against current 
master.

 Thank you for your review.

  Maciej

  reply	other threads:[~2022-10-29 15:58 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
2022-10-29 15:58     ` Maciej W. Rozycki [this message]
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=alpine.DEB.2.20.2210291618270.19931@tpp.orcam.me.uk \
    --to=macro@embecosm.com \
    --cc=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=simon.marchi@polymtl.ca \
    --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).