Received: (at 77725) by debbugs.gnu.org; 18 Oct 2025 08:01:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 18 04:01:03 2025 Received: from localhost ([127.0.0.1]:37521 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vA1s6-0003B2-Rr for submit <at> debbugs.gnu.org; Sat, 18 Oct 2025 04:01:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59846) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vA1s3-00039J-GR for 77725 <at> debbugs.gnu.org; Sat, 18 Oct 2025 04:01:00 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vA1rw-0004wK-Pr; Sat, 18 Oct 2025 04:00:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=JjXX3jrKYOxLNsECZBxa8Kv6Dy6zEff3rkwpN0yh79g=; b=dOAgtS2Q2CquSw7Ng1X/ ONxnbgy1S1MCGwLwwVqYBzvUHXHYiSRosfnBhz4TmGvxg9WhQolAXtBk1vrJ3Fe5HxnchJ8pAt4kQ wnc2dPKuWI+iLXjOrQfvZadYvTGANe5njDChu8UbiImE2DjIQLXSix6IC4nC3b5wvdJCrzT9gZZVF rfpcbI/+QMpC8DR84gV5ld0us2hjG1vS/UjmhKf8EZtX7JvGSp+vx3k4C/mQV6DHFrVgTKHvdSYhe op9I7Kak6cOIztC1/5N7+o76tdfqmBWgvcmL2rcId9NcU/kqPZA3cFXKGOBs9sFzllKqQnD1hzSHm 5jhZ1a2aiBDNvg==; Date: Sat, 18 Oct 2025 11:00:49 +0300 Message-Id: <868qh8fxla.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: monnier@HIDDEN, David Ponce <da_vid@HIDDEN> In-Reply-To: <2590cb26-e2ee-4c32-af8a-64012c0a58a4@HIDDEN> (message from David Ponce on Sun, 28 Sep 2025 15:56:20 +0200) Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN> <438393de-6706-48ff-b029-a94eeb59718c@HIDDEN> <11647451-b3d3-4760-abe6-a053b4062213@HIDDEN> <86jz2ub73d.fsf@HIDDEN> <jwv1pp19opg.fsf-monnier+emacs@HIDDEN> <86cy84gg3u.fsf@HIDDEN> <868qi9ihyu.fsf@HIDDEN> <4975d872-1f65-4d8d-a548-5b474aaf1d1c@HIDDEN> <jwvqzvupb4x.fsf-monnier+emacs@HIDDEN> <0dc4d7c5-7533-474d-93cc-cd9e3a985111@HIDDEN> <jwvseg7ed78.fsf-monnier+emacs@HIDDEN> <2590cb26-e2ee-4c32-af8a-64012c0a58a4@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Ping! How can we make further progress with this? > Date: Sun, 28 Sep 2025 15:56:20 +0200 > Cc: Eli Zaretskii <eliz@HIDDEN>, 77725 <at> debbugs.gnu.org > From: David Ponce <da_vid@HIDDEN> > > Le 2025-09-28 à 00:55, Stefan Monnier a écrit : > >>> Overall, I'm undecided. > >> > >> Unless I am missing something, it seems to me that this "simple/cheap" > >> change will improve things compared to the current situation? > > > > The issue is that once we do that we have to maintain support for it, > > even if we later come up with a better solution (e.g. one where we can > > optimize the code ahead of time when building the dispatcher rather than > > every time the method is called). > > I understand your point: changing the tagcode function signature is not an > "internal" implementation choice that can be easily changed later without > breaking the compatibility of code external to Emacs. > > > That's the "cost". I'm thinking we may be able to make it acceptable by > > making it so the generalizer can select which kind of API it wants to > > use. > > If possible, it would indeed make it easier to try different approaches. > However, I have no idea how to do it! > > >>> IIUC, this patch is orthogonal to the rest. Could you add a comment > >>> explaining why a `wrong-number-of-arguments` error means that the "type > >>> with parents" is not atomic? > >> Please, find attached another patch with more comments about that. > > > > That makes it more clear, thanks, tho it also "obscures" the use of this > > `condition-case` when parents is nil (and you can remove the test of > > `arglist` since we the test of `wrong-number-of-arguments` has the exact > > same purpose as the previous test of `arglist`). > > Well seen! > > Also, if we catch only `wrong-number-of-arguments`, we risk bumping into > > backward compatibility problems because (funcall (eval expander t)) may > > fail *now* but would work correctly when the type is actually used. > > The `ignore-errors` was used so that in case the `cl-deftype` happens to > > use things that aren't yet defined during macro-expansion we "fail more > > gracefully". This said, I don't know if it's really needed or if I'm > > just being paranoid here. > > I must admit that I have a little trouble imagining cases where > "funcall(eval expander t)" could fail during type definition, but work > correctly when used. But I'm willing to believe it's possible ;-) > > However, using "ignore-errors" also has the disadvantage of completely > hiding actual errors in the type definition. For example, I sometimes > forget to cite the type specification, as in this case: > > (cl-deftype an-icon () > (and symbol (satisfies iconp))) > > With the current implementation, no error is reported until the type > is used: > > (cl-typep 'button 'an-icon) > => (void-variable symbol) > > With the patch applied, an error is reported as soon as the type is > defined: "Symbol’s value as variable is void: symbol", and I quickly > understand the cause. > > Perhaps the condition-case could be modified like below, as an > acceptable compromise? > > [...] > (specifier > (condition-case e > ;; FIXME: Pass a better lexical context. > (funcall (eval expander t)) > (wrong-number-of-arguments > (if parents ;; type is not atomic > (error "Type %S with parents is not atomic, %S" > name arglist) > (message "Type %S may be ill-defined, %S" > name (error-message-string e)) > nil)) > (error > (message "Type %S may be ill-defined, %S" > name (error-message-string e)) > nil))) > [...] > > > David >
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 28 Sep 2025 13:56:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 28 09:56:38 2025
Received: from localhost ([127.0.0.1]:47273 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v2rtF-00004s-Oa
for submit <at> debbugs.gnu.org; Sun, 28 Sep 2025 09:56:38 -0400
Received: from smtp-26.smtpout.orange.fr ([80.12.242.26]:59653
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1v2rt3-0008W7-3u
for 77725 <at> debbugs.gnu.org; Sun, 28 Sep 2025 09:56:29 -0400
Received: from [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]
([IPv6:2a01:cb15:8915:8600:87c3:d46d:c911:d504])
by smtp.orange.fr with ESMTPA
id 2rsyvIYZ1mXKa2rsyvsGiF; Sun, 28 Sep 2025 15:56:21 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1759067781;
bh=dfnqJMrpj7YxAR5dhfpNGGYy4odHMqIyplEYn7Ralik=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=Rko/dK+At5S2R98QLyC7TRTe9xDZi1gHR837C2bqGl9wX2TASMDsNYdggnNDaSSY5
8676yz9JNZ5X3ODKARpoA5R48jPdm9/Afm8akupQLHVJX3pdtpas0j08UhFFzDngFM
l0Y43tW865j3skgfuJzOw9ktCIwX4DZ6J7CwRS/4Bs26lIQ+uXFIDC63Dzow7yCoRJ
n6K/cvjjIM4k5LnpBAqP0FaInHU5xOoFelloiYkOWqaKtryKCrF9buVIoORyfiZudm
fWa2Kx/kaJ1OqMINXelDf+Dhpci5tPA4g4MAykuZlaaYNokC4GYULZuyIt2t1hqxDn
bkjcDa+zciieA==
X-ME-Helo: [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Sun, 28 Sep 2025 15:56:21 +0200
X-ME-IP: 2a01:cb15:8915:8600:87c3:d46d:c911:d504
Message-ID: <2590cb26-e2ee-4c32-af8a-64012c0a58a4@HIDDEN>
Date: Sun, 28 Sep 2025 15:56:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN>
<438393de-6706-48ff-b029-a94eeb59718c@HIDDEN>
<11647451-b3d3-4760-abe6-a053b4062213@HIDDEN> <86jz2ub73d.fsf@HIDDEN>
<jwv1pp19opg.fsf-monnier+emacs@HIDDEN> <86cy84gg3u.fsf@HIDDEN>
<868qi9ihyu.fsf@HIDDEN> <4975d872-1f65-4d8d-a548-5b474aaf1d1c@HIDDEN>
<jwvqzvupb4x.fsf-monnier+emacs@HIDDEN>
<0dc4d7c5-7533-474d-93cc-cd9e3a985111@HIDDEN>
<jwvseg7ed78.fsf-monnier+emacs@HIDDEN>
Content-Language: fr
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwvseg7ed78.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Le 2025-09-28 à 00:55, Stefan Monnier a écrit :
>>> Overall, I'm undecided.
>>
>> Unless I am missing something, it seems to me that this "simple/cheap"
>> change will improve things compared to the current situation?
>
> The issue is that once we do that we have to maintain support for it,
> even if we later come up with a better solution (e.g. one where we can
> optimize the code ahead of time when building the dispatcher rather than
> every time the method is called).
I understand your point: changing the tagcode function signature is not an
"internal" implementation choice that can be easily changed later without
breaking the compatibility of code external to Emacs.
> That's the "cost". I'm thinking we may be able to make it acceptable by
> making it so the generalizer can select which kind of API it wants to
> use.
If possible, it would indeed make it easier to try different approaches.
However, I have no idea how to do it!
>>> IIUC, this patch is orthogonal to the rest. Could you add a comment
>>> explaining why a `wrong-number-of-arguments` error means that the "type
>>> with parents" is not atomic?
>> Please, find attached another patch with more comments about that.
>
> That makes it more clear, thanks, tho it also "obscures" the use of this
> `condition-case` when parents is nil (and you can remove the test of
> `arglist` since we the test of `wrong-number-of-arguments` has the exact
> same purpose as the previous test of `arglist`).
Well seen!
> Also, if we catch only `wrong-number-of-arguments`, we risk bumping into
> backward compatibility problems because (funcall (eval expander t)) may
> fail *now* but would work correctly when the type is actually used.
> The `ignore-errors` was used so that in case the `cl-deftype` happens to
> use things that aren't yet defined during macro-expansion we "fail more
> gracefully". This said, I don't know if it's really needed or if I'm
> just being paranoid here.
I must admit that I have a little trouble imagining cases where
"funcall(eval expander t)" could fail during type definition, but work
correctly when used. But I'm willing to believe it's possible ;-)
However, using "ignore-errors" also has the disadvantage of completely
hiding actual errors in the type definition. For example, I sometimes
forget to cite the type specification, as in this case:
(cl-deftype an-icon ()
(and symbol (satisfies iconp)))
With the current implementation, no error is reported until the type
is used:
(cl-typep 'button 'an-icon)
=> (void-variable symbol)
With the patch applied, an error is reported as soon as the type is
defined: "Symbol’s value as variable is void: symbol", and I quickly
understand the cause.
Perhaps the condition-case could be modified like below, as an
acceptable compromise?
[...]
(specifier
(condition-case e
;; FIXME: Pass a better lexical context.
(funcall (eval expander t))
(wrong-number-of-arguments
(if parents ;; type is not atomic
(error "Type %S with parents is not atomic, %S"
name arglist)
(message "Type %S may be ill-defined, %S"
name (error-message-string e))
nil))
(error
(message "Type %S may be ill-defined, %S"
name (error-message-string e))
nil)))
[...]
David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 27 Sep 2025 22:56:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 27 18:56:01 2025
Received: from localhost ([127.0.0.1]:43085 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v2dpc-0004tp-4E
for submit <at> debbugs.gnu.org; Sat, 27 Sep 2025 18:56:01 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:29840)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1v2dpW-0004rb-CU
for 77725 <at> debbugs.gnu.org; Sat, 27 Sep 2025 18:55:52 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 4756A441E20;
Sat, 27 Sep 2025 18:55:44 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1759013743;
bh=xNrK4wfYgPPmLvOBHSTceE2ol42w5IFKAsNnDkNpP5g=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=HbEPka/vNKSMJLYMnPRRsrpAoESO09SJ7qxPRt4H2sPsi/3wIDpfmpS6vcn3sTSzp
lWxAx7AiI3gqeIc8I6X5QhkdL+k/ad7WVFimlNNtQXGOJA7GRtHfHX1GDwpKAiyfqJ
UncCyUYGdm2hGa4jMZ7OcXHfLzaR9FkRN6eZ8eNWpIU1a3cjcLSeg4f8GUC14vVJ6C
g1IF0P5Mb0kwUH280ls1ojSypeBwjWyUF+4Z7eISRidzTfj8bO/cno9swV6zl8H5Kx
bTjMEO2/D2QpxMrvoIkPoN9v5pnI7pRahp/g9c4CSEKvVU0TCZE2XzHl+HxYcJr30I
oHRUAHu0tiVfQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 101E1441E0A;
Sat, 27 Sep 2025 18:55:43 -0400 (EDT)
Received: from pastel (104-195-250-218.cpe.teksavvy.com [104.195.250.218])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id D12DB1204D5;
Sat, 27 Sep 2025 18:55:42 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <0dc4d7c5-7533-474d-93cc-cd9e3a985111@HIDDEN>
Message-ID: <jwvseg7ed78.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN>
<438393de-6706-48ff-b029-a94eeb59718c@HIDDEN>
<11647451-b3d3-4760-abe6-a053b4062213@HIDDEN>
<86jz2ub73d.fsf@HIDDEN> <jwv1pp19opg.fsf-monnier+emacs@HIDDEN>
<86cy84gg3u.fsf@HIDDEN> <868qi9ihyu.fsf@HIDDEN>
<4975d872-1f65-4d8d-a548-5b474aaf1d1c@HIDDEN>
<jwvqzvupb4x.fsf-monnier+emacs@HIDDEN>
<0dc4d7c5-7533-474d-93cc-cd9e3a985111@HIDDEN>
Date: Sat, 27 Sep 2025 18:55:41 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.391 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> Overall, I'm undecided.
>
> Unless I am missing something, it seems to me that this "simple/cheap"
> change will improve things compared to the current situation?
The issue is that once we do that we have to maintain support for it,
even if we later come up with a better solution (e.g. one where we can
optimize the code ahead of time when building the dispatcher rather than
every time the method is called).
That's the "cost". I'm thinking we may be able to make it acceptable by
making it so the generalizer can select which kind of API it wants to
use.
>> IIUC, this patch is orthogonal to the rest. Could you add a comment
>> explaining why a `wrong-number-of-arguments` error means that the "type
>> with parents" is not atomic?
> Please, find attached another patch with more comments about that.
That makes it more clear, thanks, tho it also "obscures" the use of this
`condition-case` when parents is nil (and you can remove the test of
`arglist` since we the test of `wrong-number-of-arguments` has the exact
same purpose as the previous test of `arglist`).
Also, if we catch only `wrong-number-of-arguments`, we risk bumping into
backward compatibility problems because (funcall (eval expander t)) may
fail *now* but would work correctly when the type is actually used.
The `ignore-errors` was used so that in case the `cl-deftype` happens to
use things that aren't yet defined during macro-expansion we "fail more
gracefully". This said, I don't know if it's really needed or if I'm
just being paranoid here.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 27 Sep 2025 10:15:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 27 06:15:51 2025
Received: from localhost ([127.0.0.1]:39161 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v2Ry2-0007ua-4L
for submit <at> debbugs.gnu.org; Sat, 27 Sep 2025 06:15:51 -0400
Received: from smtp-17.smtpout.orange.fr ([80.12.242.17]:38961
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1v2Rxl-0007u7-QX
for 77725 <at> debbugs.gnu.org; Sat, 27 Sep 2025 06:15:44 -0400
Received: from [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]
([IPv6:2a01:cb15:8915:8600:87c3:d46d:c911:d504])
by smtp.orange.fr with ESMTPA
id 2RxhvPpFQQdcq2RxivkITE; Sat, 27 Sep 2025 12:15:31 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1758968131;
bh=0++NpJXq4wNKEqOqxczgUtAKuwfcdCwqswqu4I3asr0=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=rarKR3mPZphPjp2BK1Bk+AzfM7fP9l6/F9jIGYvXmeM4MEbo4YXnwOeyP0oZ5aE4d
sEdlyHwCNLGEl35PE9drzQaPc0PRcF/pBpLzb280jaDz9CQ0W5NxInFLV2po61ZDVN
ok8uT77CnXDL3C0OZsB1+NIgIN+gZUhs6Z3sKgXe7Xd44lHrxCsQa75L+yxdz/fKPT
PR9XkKgnHmrrKq/wPktDKMFAWrsjUVIPTYVSgWd6sMoLCNUMN0/w/8EjeD/Vck61rk
yMe+yyEBnnH7Q0mhTXV7n0NHi9okVtykNxy3L+lVWvTSOXcKV5QBZKGqVG8MHD0yr7
AgY9fdj4rxcCA==
X-ME-Helo: [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Sat, 27 Sep 2025 12:15:31 +0200
X-ME-IP: 2a01:cb15:8915:8600:87c3:d46d:c911:d504
Content-Type: multipart/mixed; boundary="------------G8BoZRMI1V70Dx8jvcncSM2j"
Message-ID: <0dc4d7c5-7533-474d-93cc-cd9e3a985111@HIDDEN>
Date: Sat, 27 Sep 2025 12:15:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN>
<438393de-6706-48ff-b029-a94eeb59718c@HIDDEN>
<11647451-b3d3-4760-abe6-a053b4062213@HIDDEN> <86jz2ub73d.fsf@HIDDEN>
<jwv1pp19opg.fsf-monnier+emacs@HIDDEN> <86cy84gg3u.fsf@HIDDEN>
<868qi9ihyu.fsf@HIDDEN> <4975d872-1f65-4d8d-a548-5b474aaf1d1c@HIDDEN>
<jwvqzvupb4x.fsf-monnier+emacs@HIDDEN>
Content-Language: fr
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwvqzvupb4x.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
This is a multi-part message in MIME format.
--------------G8BoZRMI1V70Dx8jvcncSM2j
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Le 2025-09-25 à 22:05, Stefan Monnier a écrit :
>> diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
>> index e821b15378b..f933f26b0b6 100644
>> --- a/lisp/emacs-lisp/cl-generic.el
>> +++ b/lisp/emacs-lisp/cl-generic.el
>> @@ -708,11 +708,12 @@ cl--generic-get-dispatcher
>> (let* ((dispatch-arg (car dispatch))
>> (generalizers (cdr dispatch))
>> (lexical-binding t)
>> + (methods-arg (make-symbol "methods"))
>> (tagcodes
>> (mapcar (lambda (generalizer)
>> (funcall (cl--generic-generalizer-tagcode-function
>> generalizer)
>> - 'arg))
>> + 'arg methods-arg))
>> generalizers))
>> (typescodes
>> (mapcar
>
> This is the crux of the proposed change.
Yes
> Here are my thoughts about it:
>
> - I would prefer if we exposed the list of specializers rather than the
> list of methods (and even ideally only those specializers which use
> the same generalizer), especially since that would be more precise (the
> tagcode function doesn't know which arg is relevant so it has to look
> at all the specializers of all the arguments).
Yes, that would be better. Unfortunately, the code in cl-generic is tricky and I don't know how to achieve this.
You help is needed ;-)
> - It means the list of specializers is made available late, not when the
> tagcode is built but when it's evaluated (which is on the
> critical-path).
> + because the list of methods/specializers is provided late, it means
> the generated tagcode can be shared among several methods. IOW, the
> cache of dispatchers is not affected.
Correct.
> - This change risks breaking existing tagcode-functions which don't expect
> a second arg.
IMO, the risk is very low. The patch fixes the only occurrence I
found in cl-generic where the tagcode function didn't specify &rest in
its arglist. Also, the doc string of `cl-generic-define-generalizer'
clearly states that the tagcode function should accept several
arguments:
"TAGCODE-FUNCTION takes as first argument a varname and should return
a chunk of code that computes the tag of the value held in that variable.
Further arguments are reserved for future use." <====
> + it's a simple/cheap change.
Yes. Another pro is that with this change it is no more needed to
maintain a global list of derived types, which simplifies the
implementation and limits the impact of ill-defined types to only
methods that use them, without the need to handle type errors when
computing the dispatch list.
>
> Overall, I'm undecided.
Unless I am missing something, it seems to me that this "simple/cheap"
change will improve things compared to the current situation?
>
>> diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
>> index 63d85623fbe..86587093f63 100644
>> --- a/lisp/emacs-lisp/cl-macs.el
>> +++ b/lisp/emacs-lisp/cl-macs.el
>> @@ -3804,12 +3804,17 @@ cl-deftype
>> (cl-callf (lambda (x) (delq parent-decl x)) (cdr declares))
>> (when (equal declares '(declare))
>> (cl-callf (lambda (x) (delq declares x)) decls)))
>> - (and parents arglist
>> - (error "Parents specified, but arglist not empty"))
>> (let* ((expander
>> - `(cl-function (lambda (&cl-defs ('*) ,@arglist) ,@decls ,@forms)))
>> - ;; FIXME: Pass a better lexical context.
>> - (specifier (ignore-errors (funcall (eval expander t))))
>> + `(cl-function
>> + (lambda (&cl-defs ('*) ,@arglist) ,@decls ,@forms)))
>> + (specifier
>> + (condition-case nil
>> + ;; FIXME: Pass a better lexical context.
>> + (funcall (eval expander t))
>> + (wrong-number-of-arguments
>> + (and parents arglist ;; type is not atomic
>> + (error "Type %S with parents is not atomic: %S"
>> + name arglist)))))
>> (predicate
>> (pcase specifier
>> (`(satisfies ,f) `#',f)
>
> IIUC, this patch is orthogonal to the rest. Could you add a comment
> explaining why a `wrong-number-of-arguments` error means that the "type
> with parents" is not atomic?
Please, find attached another patch with more comments about that.
David
--------------G8BoZRMI1V70Dx8jvcncSM2j
Content-Type: text/x-patch; charset=UTF-8; name="cl-types-V2-6.patch"
Content-Disposition: attachment; filename="cl-types-V2-6.patch"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt
bGlzcC9jbC1leHRyYS5lbAppbmRleCA0YTk4MTlhMjAzOS4uMGQ2ZDI2NmM2NDYgMTAwNjQ0
Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp
c3AvY2wtZXh0cmEuZWwKQEAgLTk3NCwyMiArOTc0LDE2IEBAIGNsLS1kZXNjcmliZS1jbGFz
cy1zbG90cwogOzsgRXh0ZW5kIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgZGF0YSB0eXBlcyB3
aGljaCBhcmUgYWxzbyB2YWxpZAogOzsgYXJndW1lbnQgdHlwZXMgZm9yIGRpc3BhdGNoaW5n
IGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcyAoc2VlIGFsc28KIDs7IDxodHRwczovL2RlYmJ1
Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9Nzc3MjU+KS4KLTs7Ci07OyBUaGUg
bWFpbiBlbnRyeSBwb2ludHMgYXJlOgotOzsKLTs7IC0gYGNsLWRlZnR5cGUnLCB0aGF0IGRl
ZmluZXMgbmV3IGRhdGEgdHlwZXMuCi07OwotOzsgLSBgY2wtdHlwZXMtb2YnLCB0aGF0IHJl
dHVybnMgdGhlIHR5cGVzIGFuIG9iamVjdCBiZWxvbmdzIHRvLgogCiA7OyBFbnN1cmUgZWFj
aCB0eXBlIHNhdGlzZmllcyBgZXFsJy4KLShkZWZ2YXIgY2wtLXR5cGVzLW9mLW1lbW8gKG1h
a2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwpCi0gICJNZW1vaXphdGlvbiB0YWJsZSB1c2Vk
IGluIGBjbC10eXBlcy1vZicuIikKLQotOzsgRklYTUU6IGBjbC10eXBlcy1vZicgQ1BVIGNv
c3QgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIgb2YgdHlwZXMKLTs7IGRlZmluZWQg
d2l0aCBgY2wtZGVmdHlwZScsIHNvIHRoZSBtb3JlIHBvcHVsYXIgaXQgZ2V0cywgdGhlIHNs
b3dlcgotOzsgaXQgYmVjb21lcy4gIEFuZCBvZiBjb3Vyc2UsIHRoZSBjb3N0IG9mIGVhY2gg
dHlwZSBjaGVjayBpcwotOzsgdW5ib3VuZGVkLCBzbyBhIHNpbmdsZSAiZXhwZW5zaXZlIiB0
eXBlIGNhbiBzbG93IGV2ZXJ5dGhpbmcgZG93bgotOzsgZnVydGhlci4KKyhkZWZ2YXIgY2wt
LWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMtbWVtbyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0
ICdlcXVhbCkKKyAgIk1lbW9pemF0aW9uIHRhYmxlIHVzZWQgaW4gYGNsLS1kZXJpdmVkLXR5
cGUtc3BlY2lhbGl6ZXJzJy4iKQorCis7OyBGSVhNRTogYGNsLS1kZXJpdmVkLXR5cGUtc3Bl
Y2lhbGl6ZXJzJyBDUFUgY29zdCBpcyBwcm9wb3J0aW9uYWwgdG8KKzs7IHRoZSBudW1iZXIg
b2YgdHlwZXMgZGVmaW5lZCB3aXRoIGBjbC1kZWZ0eXBlJywgc28gdGhlIG1vcmUgcG9wdWxh
ciBpdAorOzsgZ2V0cywgdGhlIHNsb3dlciBpdCBiZWNvbWVzLiAgQW5kIG9mIGNvdXJzZSwg
dGhlIGNvc3Qgb2YgZWFjaCB0eXBlCis7OyBjaGVjayBpcyB1bmJvdW5kZWQsIHNvIGEgc2lu
Z2xlICJleHBlbnNpdmUiIHR5cGUgY2FuIHNsb3cgZXZlcnl0aGluZworOzsgZG93biBmdXJ0
aGVyLgogOzsKIDs7IFRoZSB1c3VhbCBkaXNwYXRjaCBpcwogOzsKQEAgLTEwMjYsNDkgKzEw
MjAsNTAgQEAgY2wtLXR5cGVzLW9mLW1lbW8KIDs7ICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBg
dCcgImR1bW15IHBhcmVudCIuICBbIFdlIGNvdWxkIGV2ZW4gZ28gY3JhenkKIDs7ICAgYW5k
IHRyeSBhbmQgZ3Vlc3MgUEFSRU5UUyB3aGVuIG5vdCBwcm92aWRlZCwgYnkgYW5hbHl6aW5n
IHRoZQogOzsgICB0eXBlJ3MgZGVmaW5pdGlvbi4gXQotOzsgLSBpbiBgY2wtdHlwZXMtb2Yn
IHN0YXJ0IGJ5IGNhbGxpbmcgYGNsLXR5cGUtb2YnLCB0aGVuIHVzZSB0aGUgbWFwCi07OyAg
IHRvIGZpbmQgd2hpY2ggY2wtdHlwZXMgbWF5IG5lZWQgdG8gYmUgY2hlY2tlZC4KKzs7IC0g
aW4gYGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyBzdGFydCBieSBjYWxsaW5nIGBj
bC10eXBlLW9mJywKKzs7ICAgdGhlbiB1c2UgdGhlIG1hcCB0byBmaW5kIHdoaWNoIGNsLXR5
cGVzIG1heSBuZWVkIHRvIGJlIGNoZWNrZWQuCiA7OwogOzs7IyMjYXV0b2xvYWQKLShkZWZ1
biBjbC10eXBlcy1vZiAob2JqZWN0ICZvcHRpb25hbCB0eXBlcykKLSAgIlJldHVybiB0aGUg
YXRvbWljIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgotUmV0dXJuIGFuIHVuaXF1ZSBsaXN0
IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCi1tb3N0IHNw
ZWNpZmljIHR5cGUgdG8gdGhlIG1vc3QgZ2VuZXJhbC4KLVRZUEVTIGlzIGFuIGludGVybmFs
IGFyZ3VtZW50LiIKLSAgKGxldCogKChmb3VuZCBuaWwpKQorKGRlZnVuIGNsLS1kZXJpdmVk
LXR5cGUtc3BlY2lhbGl6ZXJzIChvYmplY3QgdHlwZXMpCisgICJSZXR1cm4gdGhlIGxpc3Qg
b2Ygc3BlY2lhbGl6ZXJzIGZvciBPQkpFQ1QsIGRlcml2ZWQgZnJvbSBUWVBFUy4KK1JldHVy
biBhbiB1bmlxdWUgKGVxKSBsaXN0IG9mIGF0b21pYyB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0
bywgb3JkZXJlZAorZnJvbSB0aGUgbW9zdCBzcGVjaWZpYyB0eXBlIHRvIHRoZSBtb3N0IGdl
bmVyYWwuCitUWVBFUyBpcyBhIGxpc3Qgb2YgdHlwZXMgdGhhdCBPQkpFQ1QgY2FuIHBvdGVu
dGlhbGx5IGJlbG9uZyB0by4iCisgIChsZXQqICgoZm91bmQgKGxpc3QgKGNsLXR5cGUtb2Yg
b2JqZWN0KSkpKQogICAgIDs7IEJ1aWxkIGEgbGlzdCBvZiBhbGwgdHlwZXMgT0JKRUNUIGJl
bG9uZ3MgdG8uCi0gICAgKGRvbGlzdCAodHlwZSAob3IgdHlwZXMgY2wtLWRlcml2ZWQtdHlw
ZS1saXN0KSkKLSAgICAgIChsZXQgKChwcmVkIChnZXQgdHlwZSAnY2wtZGVmdHlwZS1zYXRp
c2ZpZXMpKSkKLSAgICAgICAgKGFuZAotICAgICAgICAgOzsgSWYgT0JKRUNUIGlzIG9mIHR5
cGUsIGFkZCB0eXBlIHRvIHRoZSBtYXRjaGluZyBsaXN0LgotICAgICAgICAgKGlmIHR5cGVz
Ci0gICAgICAgICAgICAgOzsgRm9yIG1ldGhvZCBkaXNwYXRjaCwgd2UgZG9uJ3QgbmVlZCB0
byBmaWx0ZXIgb3V0IGVycm9ycywKLSAgICAgICAgICAgICA7OyBzaW5jZSB3ZSBjYW4gcHJl
c3VtZSB0aGF0IG1ldGhvZCBkaXNwYXRjaCBpcyB1c2VkIG9ubHkgb24KLSAgICAgICAgICAg
ICA7OyBzYW5lbHktZGVmaW5lZCB0eXBlcy4KLSAgICAgICAgICAgICAoZnVuY2FsbCBwcmVk
IG9iamVjdCkKLSAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlCi0g
ICAgICAgICAgICAgICAoZnVuY2FsbCBwcmVkIG9iamVjdCkKLSAgICAgICAgICAgICAoZXJy
b3IgKHNldHEgY2wtLWRlcml2ZWQtdHlwZS1saXN0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgIChkZWxxIHR5cGUgY2wtLWRlcml2ZWQtdHlwZS1saXN0KSkKLSAgICAgICAgICAgICAg
ICAgICAgKHdhcm4gICJjbC10eXBlcy1vZiAlUzogJXMiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlIChlcnJvci1tZXNzYWdlLXN0cmluZyBlKSkKLSAgICAgICAgICAgICAg
ICAgICAgbmlsKSkpCi0gICAgICAgICAocHVzaCB0eXBlIGZvdW5kKSkpKQotICAgIChwdXNo
IChjbC10eXBlLW9mIG9iamVjdCkgZm91bmQpCi0gICAgOzsgUmV0dXJuIHRoZSBsaXN0IG9m
IHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCB3aGljaCBpcyBhbHNvIHRoZSBsaXN0Ci0gICAg
Ozsgb2Ygc3BlY2lmaWVycyBmb3IgT0JKRUNULiBUaGlzIG1lbW9pemF0aW9uIGhhcyB0d28g
cHVycG9zZXM6CisgICAgKGRvbGlzdCAodHlwZSB0eXBlcykKKyAgICAgIDs7IElmIE9CSkVD
VCBpcyBvZiB0eXBlLCBhZGQgdHlwZSB0byB0aGUgbWF0Y2hpbmcgbGlzdC4KKyAgICAgIChp
ZiAoZnVuY2FsbCAoZ2V0IHR5cGUgJ2NsLWRlZnR5cGUtc2F0aXNmaWVzKSBvYmplY3QpCisg
ICAgICAgICAgKHB1c2ggdHlwZSBmb3VuZCkpKQorICAgIDs7IFRoaXMgbWVtb2l6YXRpb24g
aGFzIHR3byBwdXJwb3NlczoKICAgICA7OyAtIFNwZWVkIHVwIGNvbXB1dGF0aW9uLgogICAg
IDs7IC0gTWFrZSBzdXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgKGVxKSBvYmplY3Qs
IHNvIHRoYXQgdGhlCiAgICAgOzsgICBtZXRob2QgZGlzcGF0Y2gncyBvd24gY2FjaGluZyB3
b3JrcyBhcyBpdCBzaG91bGQuCi0gICAgKHdpdGgtbWVtb2l6YXRpb24gKGdldGhhc2ggZm91
bmQgY2wtLXR5cGVzLW9mLW1lbW8pCisgICAgKHdpdGgtbWVtb2l6YXRpb24gKGdldGhhc2gg
Zm91bmQgY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMtbWVtbykKICAgICAgIDs7IENv
bXB1dGUgYW4gb3JkZXJlZCBsaXN0IG9mIHR5cGVzIGZyb20gdGhlIERBRy4KLSAgICAgIChs
ZXQgKGRhZykKLSAgICAgICAgKGRvbGlzdCAodHlwZSBmb3VuZCkKLSAgICAgICAgICAocHVz
aCAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzIHR5cGUpKSBkYWcpKQot
ICAgICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cyBkYWcpKSkpKQotCi0oZGVmdmFyIGNsLS1k
ZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCBuaWwKLSAgIkxpc3Qgb2YgdHlwZXMgdGhhdCBu
ZWVkIHRvIGJlIGNoZWNrZWQgZHVyaW5nIGRpc3BhdGNoLiIpCisgICAgICAobWVyZ2Utb3Jk
ZXJlZC1saXN0cworICAgICAgIChtYXBjYXIgKGxhbWJkYSAodHlwZSkKKyAgICAgICAgICAg
ICAgICAgKGNsLS1jbGFzcy1hbGxwYXJlbnRzIChjbC0tZmluZC1jbGFzcyB0eXBlKSkpCisg
ICAgICAgICAgICAgICBmb3VuZCkpKSkpCisKKyhkZWZ2YXIgY2wtLWRlcml2ZWQtdHlwZS1k
aXNwYXRjaC1tZW1vIChtYWtlLWhhc2gtdGFibGUgOndlYWtuZXNzICdrZXkpCisgICJNZW1v
aXphdGlvbiB0YWJsZSB1c2VkIGluIGBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3Qn
LiIpCisKKyhkZWZ1biBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QgKG1ldGhvZHMp
CisgICJHYXRoZXIgdGhlIGxpc3Qgb2YgZGVyaXZlZCB0eXBlcyBmcm9tIE1FVEhPRFMgc3Bl
Y2lhbGl6ZXJzLgorUmV0dXJuIHRoZSBsaXN0IG9mIHR5cGVzIHRvIGJlIGNoZWNrZWQgZHVy
aW5nIGRpc3BhdGNoIG9mIHRoZSBnZW5lcmljCitmdW5jdGlvbiB3aXRoIHRoZXNlIE1FVEhP
RFMuIgorICAod2l0aC1tZW1vaXphdGlvbiAoZ2V0aGFzaCBtZXRob2RzIGNsLS1kZXJpdmVk
LXR5cGUtZGlzcGF0Y2gtbWVtbykKKyAgICAobGV0ICh0eXBlcykKKyAgICAgIChkb2xpc3Qg
KG1ldGhvZCBtZXRob2RzKQorICAgICAgICAoZG9saXN0ICh0eXBlIChjbC0tZ2VuZXJpYy1t
ZXRob2Qtc3BlY2lhbGl6ZXJzIG1ldGhvZCkpCisgICAgICAgICAgKGFuZCAoc3ltYm9scCB0
eXBlKQorICAgICAgICAgICAgICAgKGNsLWRlcml2ZWQtdHlwZS1jbGFzcy1wIChjbC0tZmlu
ZC1jbGFzcyB0eXBlKSkKKyAgICAgICAgICAgICAgIChub3QgKG1lbXEgdHlwZSB0eXBlcykp
CisgICAgICAgICAgICAgICAocHVzaCB0eXBlIHR5cGVzKSkpKQorICAgICAgOzsgYGNsLS1k
ZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyB3aWxsIGVuc3VyZSB0aGF0IHR5cGVzIGFyZSBp
bgorICAgICAgOzsgdGhlIGV4cGVjdGVkIGRpc3BhdGNoIG9yZGVyLgorICAgICAgdHlwZXMp
KSkKIAogKGNsLWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS1kZXJpdmVkLXR5cGUt
Z2VuZXJhbGl6ZXIKICAgOzsgRklYTUU6IFRoaXMgcHJpb3JpdHkgY2FuJ3QgYmUgYWx3YXlz
IHJpZ2h0LiAgOi0oCkBAIC0xMDgwLDMxICsxMDc1LDI2IEBAIGNsLS1kZXJpdmVkLXR5cGUt
Z2VuZXJhbGl6ZXIKICAgOzsgRml4aW5nIHRoaXMgMTAwJSBpcyBpbXBvc3NpYmxlIHNvIHRo
aXMgZ2VuZXJhbGl6ZXIgaXMgY29uZGVtbmVkIHRvCiAgIDs7IHN1ZmZlciBmcm9tICJ1bmRl
ZmluZWQgbWV0aG9kIG9yZGVyaW5nIiBwcm9ibGVtcywgdW5sZXNzL3VudGlsIHdlCiAgIDs7
IHJlc3RyaWN0IGl0IHNvbWVob3cgdG8gYSBzdWJzZXQgdGhhdCB3ZSBjYW4gaGFuZGxlIHJl
bGlhYmx5LgotICAyMCA7OyAidHlwZW9mIiA8ICJjbC10eXBlcy1vZiIgPCAiaGVhZCIgcHJp
b3JpdHkKLSAgKGxhbWJkYSAob2JqICZyZXN0IF8pIGAoY2wtdHlwZXMtb2YgLG9iaiBjbC0t
ZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QpKQorICAyMCA7OyAidHlwZW9mIiA8ICJkZXJp
dmVkLXR5cGVzIiA8ICJoZWFkIiBwcmlvcml0eQorICAobGFtYmRhIChvYmogJm9wdGlvbmFs
IG1ldGhvZHMgJnJlc3QgXykKKyAgICBgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJz
CisgICAgICAsb2JqCisgICAgICA7OyBDaGVjayBvbmx5IGRlcml2ZWQgdHlwZXMgdXNlZCBh
cyBNRVRIT0RTIHNwZWNpYWxpemVycyBvZiB0aGUKKyAgICAgIDs7IGdlbmVyaWMgZnVuY3Rp
b24gY3VycmVudGx5IGNhbGxlZC4gIGBjbC1nZW5lcmljLWdlbmVyYWxpemVycycKKyAgICAg
IDs7IGZvciAiZGVyaXZlZCB0eXBlIiBlbnN1cmVzIHRoYXQgYXQgbGVhc3Qgb25lIHN1Y2gg
bWV0aG9kCisgICAgICA7OyBleGlzdHMuCisgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1kaXNw
YXRjaC1saXN0ICxtZXRob2RzKSkpCiAgIChsYW1iZGEgKHRhZyAmcmVzdCBfKSAoaWYgKGNv
bnNwIHRhZykgdGFnKSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gY2wtLWRlcml2ZWQt
dHlwZS1nZW5lcmFsaXplcnMgKHR5cGUpCiAgIDs7IE1ha2Ugc3VyZSB0aGlzIGRlcml2ZWQg
dHlwZSBjYW4gYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50cy4KLSAgKGxldCAoKGV4cGFuZGVy
IChvciAoZ2V0IHR5cGUgJ2NsLWRlZnR5cGUtaGFuZGxlcikKLSAgICAgICAgICAgICAgICAg
ICAgICAoZXJyb3IgIlR5cGUgJVMgbGFja3MgY2wtZGVmdHlwZS1oYW5kbGVyIiB0eXBlKSkp
KQotICAgIDs7IENoZWNrIHRoYXQgdGhlIHR5cGUgY2FuIGJlIHVzZWQgd2l0aG91dCBhcmd1
bWVudHMuCi0gICAgKGZ1bmNhbGwgZXhwYW5kZXIpCi0gICAgOzsgQ2hlY2sgdGhhdCB3ZSBo
YXZlIGEgcHJlY29tcHV0ZWQgcHJlZGljYXRlIHNpbmNlIHRoYXQncyB3aGF0Ci0gICAgOzsg
YGNsLXR5cGVzLW9mJyB1c2VzLgotICAgICh1bmxlc3MgKGdldCB0eXBlICdjbC1kZWZ0eXBl
LXNhdGlzZmllcykKLSAgICAgIChlcnJvciAiVHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNh
dGlzZmllcyIgdHlwZSkpKQotICA7OyBBZGQgYSBuZXcgZGlzcGF0Y2ggdHlwZSB0byB0aGUg
ZGlzcGF0Y2ggbGlzdCwgdGhlbgotICA7OyBzeW5jaHJvbml6ZSB3aXRoIGBjbC0tZGVyaXZl
ZC10eXBlLWxpc3QnIHNvIHRoYXQgYm90aCBsaXN0cyBmb2xsb3cKLSAgOzsgdGhlIHNhbWUg
dHlwZSBwcmVjZWRlbmNlIG9yZGVyLgotICA7OyBUaGUgYG1lcmdlLW9yZGVyZWQtbGlzdHMn
IGlzIGBjbC10eXBlcy1vZicgc2hvdWxkIHdlIG1ha2UgdGhpcwotICA7OyBvcmRlcmluZyB1
bm5lY2Vzc2FyeSwgYnV0IGl0J3Mgc3RpbGwgaGFuZHkgZm9yIGFsbCB0aG9zZSB0eXBlcwot
ICA7OyB0aGF0IGRvbid0IGRlY2xhcmUgdGhlaXIgcGFyZW50cy4KLSAgKHVubGVzcyAobWVt
cSB0eXBlIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCkKLSAgICAoc2V0cSBjbC0t
ZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QKLSAgICAgICAgICAoc2VxLWludGVyc2VjdGlv
biBjbC0tZGVyaXZlZC10eXBlLWxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y29ucyB0eXBlIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCkpKSkKKyAgKGZ1bmNh
bGwgKG9yIChnZXQgdHlwZSAnY2wtZGVmdHlwZS1oYW5kbGVyKQorICAgICAgICAgICAgICAg
KGVycm9yICJUeXBlICVTIGxhY2tzIGNsLWRlZnR5cGUtaGFuZGxlciIgdHlwZSkpKQorICA7
OyBDaGVjayB0aGF0IHdlIGhhdmUgYSBwcmVjb21wdXRlZCBwcmVkaWNhdGUgc2luY2UgdGhh
dCdzIHdoYXQKKyAgOzsgYGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyB1c2VzLgor
ICAob3IgKGdldCB0eXBlICdjbC1kZWZ0eXBlLXNhdGlzZmllcykKKyAgICAgIChlcnJvciAi
VHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNhdGlzZmllcyIgdHlwZSkpCiAgIChsaXN0IGNs
LS1kZXJpdmVkLXR5cGUtZ2VuZXJhbGl6ZXIpKQogCiA7Ozs7IFRyYWlsZXIKZGlmZiAtLWdp
dCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1nZW5lcmljLmVsIGIvbGlzcC9lbWFjcy1saXNwL2Ns
LWdlbmVyaWMuZWwKaW5kZXggZTgyMWIxNTM3OGIuLmY5MzNmMjZiMGI2IDEwMDY0NAotLS0g
YS9saXNwL2VtYWNzLWxpc3AvY2wtZ2VuZXJpYy5lbAorKysgYi9saXNwL2VtYWNzLWxpc3Av
Y2wtZ2VuZXJpYy5lbApAQCAtNzA4LDExICs3MDgsMTIgQEAgY2wtLWdlbmVyaWMtZ2V0LWRp
c3BhdGNoZXIKICAgICAobGV0KiAoKGRpc3BhdGNoLWFyZyAoY2FyIGRpc3BhdGNoKSkKICAg
ICAgICAgICAgKGdlbmVyYWxpemVycyAoY2RyIGRpc3BhdGNoKSkKICAgICAgICAgICAgKGxl
eGljYWwtYmluZGluZyB0KQorICAgICAgICAgICAobWV0aG9kcy1hcmcgKG1ha2Utc3ltYm9s
ICJtZXRob2RzIikpCiAgICAgICAgICAgICh0YWdjb2RlcwogICAgICAgICAgICAgKG1hcGNh
ciAobGFtYmRhIChnZW5lcmFsaXplcikKICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs
bCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29kZS1mdW5jdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsaXplcikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYXJnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YXJnIG1ldGhvZHMtYXJnKSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGl6ZXJzKSkK
ICAgICAgICAgICAgKHR5cGVzY29kZXMKICAgICAgICAgICAgIChtYXBjYXIKQEAgLTcyMSw3
ICs3MjIsNyBAQCBjbC0tZ2VuZXJpYy1nZXQtZGlzcGF0Y2hlcgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYWxpemVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICwo
ZnVuY2FsbCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29kZS1mdW5jdGlvbgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGl6ZXIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmcpKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2FyZyBtZXRob2RzLWFyZykpKQogICAgICAgICAgICAgIGdl
bmVyYWxpemVycykpCiAgICAgICAgICAgICh0YWctZXhwCiAgICAgICAgICAgICA7OyBNaW5v
ciBvcHRpbWl6YXRpb246IHNpbmNlIHRoaXMgdGFnLWV4cCBpcwpAQCAtNzQ1LDE0ICs3NDYs
MTQgQEAgY2wtLWdlbmVyaWMtZ2V0LWRpc3BhdGNoZXIKICAgICAgIDs7IG92ZXJraWxsOiBi
ZXR0ZXIganVzdCB1c2UgYSBgY2wtdHlwZXAnIHRlc3QuCiAgICAgICAoZnVuY2FsbAogICAg
ICAgIGNsLS1nZW5lcmljLWNvbXBpbGVyCi0gICAgICAgYChsYW1iZGEgKGdlbmVyaWMgZGlz
cGF0Y2hlcy1sZWZ0IG1ldGhvZHMpCisgICAgICAgYChsYW1iZGEgKGdlbmVyaWMgZGlzcGF0
Y2hlcy1sZWZ0ICxtZXRob2RzLWFyZykKICAgICAgICAgICAobGV0ICgobWV0aG9kLWNhY2hl
IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcWwpKSkKICAgICAgICAgICAgIChsYW1iZGEg
KCxAZml4ZWRhcmdzICZyZXN0IGFyZ3MpCiAgICAgICAgICAgICAgIChsZXQgLGJpbmRpbmdz
CiAgICAgICAgICAgICAgICAgKGFwcGx5ICh3aXRoLW1lbW9pemF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoZ2V0aGFzaCAsdGFnLWV4cCBtZXRob2QtY2FjaGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNsLS1nZW5lcmljLWNhY2hlLW1pc3MKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJpYyAnLGRpc3BhdGNoLWFyZyBkaXNwYXRjaGVzLWxl
ZnQgbWV0aG9kcworICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljICcsZGlzcGF0
Y2gtYXJnIGRpc3BhdGNoZXMtbGVmdCAsbWV0aG9kcy1hcmcKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLChpZiAoY2RyIHR5cGVzY29kZXMpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYChhcHBlbmQgLEB0eXBlc2NvZGVzKSAoY2FyIHR5cGVzY29kZXMpKSkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICxAZml4ZWRhcmdzIGFyZ3MpKSkpKSkpKSkKQEAgLTE0
MDMsNyArMTQwNCw3IEBAIGNsLS1nZW5lcmljLWRlcml2ZWQtc3BlY2lhbGl6ZXJzCiAgICAg
ICAgICAgKGRlcml2ZWQtbW9kZS1hbGwtcGFyZW50cyBtb2RlKSkpCiAKIChjbC1nZW5lcmlj
LWRlZmluZS1nZW5lcmFsaXplciBjbC0tZ2VuZXJpYy1kZXJpdmVkLWdlbmVyYWxpemVyCi0g
IDkwIChsYW1iZGEgKG5hbWUpIGAoYW5kIChzeW1ib2xwICxuYW1lKSAoZnVuY3Rpb25wICxu
YW1lKSAsbmFtZSkpCisgIDkwIChsYW1iZGEgKG5hbWUgJnJlc3QgXykgYChhbmQgKHN5bWJv
bHAgLG5hbWUpIChmdW5jdGlvbnAgLG5hbWUpICxuYW1lKSkKICAgIydjbC0tZ2VuZXJpYy1k
ZXJpdmVkLXNwZWNpYWxpemVycykKIAogKGNsLWRlZm1ldGhvZCBjbC1nZW5lcmljLWdlbmVy
YWxpemVycyAoKF9zcGVjaWFsaXplciAoaGVhZCBkZXJpdmVkLW1vZGUpKSkKZGlmZiAtLWdp
dCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1tYWNzLmVsIGIvbGlzcC9lbWFjcy1saXNwL2NsLW1h
Y3MuZWwKaW5kZXggNjNkODU2MjNmYmUuLmY2NWI3MzQ0ODMyIDEwMDY0NAotLS0gYS9saXNw
L2VtYWNzLWxpc3AvY2wtbWFjcy5lbAorKysgYi9saXNwL2VtYWNzLWxpc3AvY2wtbWFjcy5l
bApAQCAtMzgwNCwxMiArMzgwNCwzOSBAQCBjbC1kZWZ0eXBlCiAgICAgICAoY2wtY2FsbGYg
KGxhbWJkYSAoeCkgKGRlbHEgcGFyZW50LWRlY2wgeCkpIChjZHIgZGVjbGFyZXMpKQogICAg
ICAgKHdoZW4gKGVxdWFsIGRlY2xhcmVzICcoZGVjbGFyZSkpCiAgICAgICAgIChjbC1jYWxs
ZiAobGFtYmRhICh4KSAoZGVscSBkZWNsYXJlcyB4KSkgZGVjbHMpKSkKLSAgICAoYW5kIHBh
cmVudHMgYXJnbGlzdAotICAgICAgICAgKGVycm9yICJQYXJlbnRzIHNwZWNpZmllZCwgYnV0
IGFyZ2xpc3Qgbm90IGVtcHR5IikpCiAgICAgKGxldCogKChleHBhbmRlcgotICAgICAgICAg
ICAgYChjbC1mdW5jdGlvbiAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkgLEBk
ZWNscyAsQGZvcm1zKSkpCi0gICAgICAgICAgIDs7IEZJWE1FOiBQYXNzIGEgYmV0dGVyIGxl
eGljYWwgY29udGV4dC4KLSAgICAgICAgICAgKHNwZWNpZmllciAoaWdub3JlLWVycm9ycyAo
ZnVuY2FsbCAoZXZhbCBleHBhbmRlciB0KSkpKQorICAgICAgICAgICAgYChjbC1mdW5jdGlv
bgorICAgICAgICAgICAgICAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkgLEBk
ZWNscyAsQGZvcm1zKSkpCisgICAgICAgICAgIChzcGVjaWZpZXIKKyAgICAgICAgICAgIChj
b25kaXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICA7OyBGSVhNRTogUGFzcyBhIGJl
dHRlciBsZXhpY2FsIGNvbnRleHQuCisgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGV2YWwg
ZXhwYW5kZXIgdCkpCisgICAgICAgICAgICAgIDs7IFdlIHByZXZpb3VzbHkgc2lnbmFsZWQg
YW4gZXJyb3Igd2hlbiB0aGUgdHlwZSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgOzsgYm90
aCBub24tbmlsIHBhcmVudHMgYW5kIGFyZ2xpc3QsIGxpa2UgYHVuc2lnbmVkLWJ5dGUnCisg
ICAgICAgICAgICAgIDs7IGluIGJlbG93IGV4YW1wbGU6CisgICAgICAgICAgICAgIDs7Cisg
ICAgICAgICAgICAgIDs7IChjbC1kZWZ0eXBlIG15LWludGVnZXIgKCkKKyAgICAgICAgICAg
ICAgOzsgICAnaW50ZWdlcikKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgOzsg
KGNsLWRlZnR5cGUgdW5zaWduZWQtYnl0ZSAoJm9wdGlvbmFsIGJpdHMpCisgICAgICAgICAg
ICAgIDs7ICAgIlVuc2lnbmVkIGludGVnZXIuIgorICAgICAgICAgICAgICA7OyAgIChkZWNs
YXJlIChwYXJlbnRzIG15LWludGVnZXIpKQorICAgICAgICAgICAgICA7OyAgIGAoaW50ZWdl
ciAwICwoaWYgKG1lbXEgYml0cyAnKG5pbCAqKSkKKyAgICAgICAgICAgICAgOzsgICAgICAg
ICAgICAgICAgICAgIGJpdHMKKyAgICAgICAgICAgICAgOzsgICAgICAgICAgICAgICAgICAo
MS0gKGFzaCAxIGJpdHMpKSkpKQorICAgICAgICAgICAgICA7OyAKKyAgICAgICAgICAgICAg
OzsgSW4gb3JkZXIgdG8gYWNjZXB0IHRoZSBhYm92ZSAoY29ycmVjdCkgZGVmaW5pdGlvbiBv
ZgorICAgICAgICAgICAgICA7OyBgdW5zaWduZWQtYnl0ZScsIGNhbGwgdGhlIGV4cGFuZGVy
IHdpdGhvdXQgYXJndW1lbnRzIHRvCisgICAgICAgICAgICAgIDs7IGNoZWNrIGlmIHRoZSBh
cmdsaXN0IGlzIG1hbmRhdG9yeSBieSBjYXRjaGluZyBhCisgICAgICAgICAgICAgIDs7IGB3
cm9uZy1udW1iZXItb2YtYXJndW1lbnRzJyBlcnJvci4gIElmIHNvLCBhbmQgdGhlIHR5cGUK
KyAgICAgICAgICAgICAgOzsgc3BlY2lmaWVkIGJvdGggcGFyZW50cyBhbmQgYXJnbGlzdCwg
dGhlcmUgaXMgYSBnb29kCisgICAgICAgICAgICAgIDs7IGNoYW5jZSB0aGF0IHRoZSB0eXBl
IGlzIG5vdCBhdG9taWMsIHNvIHNpZ25hbCBpdDsKKyAgICAgICAgICAgICAgOzsgb3RoZXJ3
aXNlLCByZXR1cm4gbmlsIGFzIHByZXZpb3VzbHkuICBSZXBvcnQgYW55IG90aGVyCisgICAg
ICAgICAgICAgIDs7IGVycm9yIG9uIHR5cGUgZGVmaW5pdGlvbi4KKyAgICAgICAgICAgICAg
KHdyb25nLW51bWJlci1vZi1hcmd1bWVudHMKKyAgICAgICAgICAgICAgIChhbmQgcGFyZW50
cyBhcmdsaXN0IDs7IHR5cGUgaXMgbm90IGF0b21pYworICAgICAgICAgICAgICAgICAgICAo
ZXJyb3IgIlR5cGUgJVMgd2l0aCBwYXJlbnRzIG1heSBiZSBub3QgYXRvbWljOiAlUyIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgYXJnbGlzdCkpKSkpCiAgICAgICAgICAg
IChwcmVkaWNhdGUKICAgICAgICAgICAgIChwY2FzZSBzcGVjaWZpZXIKICAgICAgICAgICAg
ICAgKGAoc2F0aXNmaWVzICxmKSBgIycsZikKZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlz
cC9jbC1wcmVsb2FkZWQuZWwgYi9saXNwL2VtYWNzLWxpc3AvY2wtcHJlbG9hZGVkLmVsCmlu
ZGV4IDcxYjRhODYzYjMwLi41NTg4NTZiODdmZSAxMDA2NDQKLS0tIGEvbGlzcC9lbWFjcy1s
aXNwL2NsLXByZWxvYWRlZC5lbAorKysgYi9saXNwL2VtYWNzLWxpc3AvY2wtcHJlbG9hZGVk
LmVsCkBAIC00NzMsOSArNDczLDYgQEAgcHJpbWl0aXZlLWZ1bmN0aW9uCiAKIDs7OzsgU3Vw
cG9ydCBmb3IgYGNsLWRlZnR5cGUnLgogCi0oZGVmdmFyIGNsLS1kZXJpdmVkLXR5cGUtbGlz
dCBuaWwKLSAgIlByZWNlZGVuY2UgbGlzdCBvZiB0aGUgZGVmaW5lZCBjbC10eXBlcy4iKQot
CiA7OyBGSVhNRTogVGhlIGBjbC1kZWZ0eXBlLWhhbmRsZXInIHByb3BlcnR5IHNob3VsZCBh
cmd1YWJseSBiZSB0dXJuZWQKIDs7IGludG8gYSBmaWVsZCBvZiB0aGlzIHN0cnVjdCAoYnV0
IGl0IGhhcyBwZXJmb3JtYW5jZSBhbmQKIDs7IGNvbXBhdGliaWxpdHkgaW1wbGljYXRpb25z
LCBzbyBsZXQncyBub3QgbWFrZSB0aGF0IGNoYW5nZSBmb3Igbm93KS4KQEAgLTUxMSw3ICs1
MDgsOCBAQCBjbC0tZGVmaW5lLWRlcml2ZWQtdHlwZQogICAgICAgICAgIDs7ICJjb21wbGVt
ZW50IiBhbm90aGVyIGRlY2xhcmF0aW9uIG9mIHRoZSBzYW1lIHR5cGUsCiAgICAgICAgICAg
Ozsgc28gbWF5YmUgd2Ugc2hvdWxkIHR1cm4gdGhpcyBpbnRvIGEgd2FybmluZyAoYW5kCiAg
ICAgICAgICAgOzsgbm90IG92ZXJ3cml0ZSB0aGUgYGNsLS1maW5kLWNsYXNzJyBpbiB0aGF0
IGNhc2UpPwotICAgICAgICAgIChlcnJvciAiVHlwZSAlUyBhbHJlYWR5IGluIGFub3RoZXIg
Y2xhc3M6ICVTIiBuYW1lICh0eXBlLW9mIGNsYXNzKSkpKQorICAgICAgICAgIChlcnJvciAi
VHlwZSAlUyBhbHJlYWR5IGluIGFub3RoZXIgY2xhc3M6ICVTIgorICAgICAgICAgICAgICAg
ICBuYW1lICh0eXBlLW9mIGNsYXNzKSkpKQogICAgIDs7IFNldHVwIGEgdHlwZSBkZXNjcmlw
dG9yIGZvciBOQU1FLgogICAgIChzZXRmIChjbC0tZmluZC1jbGFzcyBuYW1lKQogICAgICAg
ICAgIChjbC0tZGVyaXZlZC10eXBlLWNsYXNzLW1ha2UKQEAgLTUyMSwxOSArNTE5LDcgQEAg
Y2wtLWRlZmluZS1kZXJpdmVkLXR5cGUKICAgICAgICAgICAgcGFyZW50cykpCiAgICAgKGRl
ZmluZS1zeW1ib2wtcHJvcCBuYW1lICdjbC1kZWZ0eXBlLWhhbmRsZXIgZXhwYW5kZXIpCiAg
ICAgKHdoZW4gcHJlZGljYXRlCi0gICAgICAoZGVmaW5lLXN5bWJvbC1wcm9wIG5hbWUgJ2Ns
LWRlZnR5cGUtc2F0aXNmaWVzIHByZWRpY2F0ZSkKLSAgICAgIDs7IElmIHRoZSB0eXBlIGNh
biBiZSB1c2VkIHdpdGhvdXQgYXJndW1lbnRzLCByZWNvcmQgaXQgZm9yCi0gICAgICA7OyB1
c2UgYnkgYGNsLXR5cGVzLW9mJy4KLSAgICAgIDs7IFRoZSBvcmRlciBpbiBgY2wtLWRlcml2
ZWQtdHlwZS1saXN0JyBpcyBpbXBvcnRhbnQsIGJ1dCB0aGUKLSAgICAgIDs7IGNvbnN0cnVj
dG9yIG9mIHRoZSBjbGFzcyBgY2wtdHlwZS1jbGFzcycgYWxyZWFkeSBlbnN1cmVzIHRoYXQK
LSAgICAgIDs7IHBhcmVudCB0eXBlcyBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIHRoZWlyICJj
aGlsZCIgdHlwZXMKLSAgICAgIDs7IChpLmUuIGFscmVhZHkgYWRkZWQgdG8gdGhlIGBjbC0t
ZGVyaXZlZC10eXBlLWxpc3QnIGZvciB0eXBlcwotICAgICAgOzsgZGVmaW5lZCB3aXRoIGBj
bC1kZWZ0eXBlJykuICBTbyBpdCBpcyBlbm91Z2ggdG8gc2ltcGx5IHB1c2gKLSAgICAgIDs7
IGEgbmV3IHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdC4KLSAgICAgIDs7IFJl
ZGVmaW5pdGlvbiBpcyBhIGNhbiBvZiB3b3JtcyBhbnl3YXksIHNvIHdlIGRvbid0IHRyeSB0
byBiZSBjbGV2ZXIKLSAgICAgIDs7IGluIHRoYXQgY2FzZS4KLSAgICAgIChvciAobWVtcSBu
YW1lIGNsLS1kZXJpdmVkLXR5cGUtbGlzdCkKLSAgICAgICAgICAocHVzaCBuYW1lIGNsLS1k
ZXJpdmVkLXR5cGUtbGlzdCkpKSkpCisgICAgICAoZGVmaW5lLXN5bWJvbC1wcm9wIG5hbWUg
J2NsLWRlZnR5cGUtc2F0aXNmaWVzIHByZWRpY2F0ZSkpKSkKIAogOzsgTWFrZSBzdXJlIGZ1
bmN0aW9ucyBkZWZpbmVkIHdpdGggY2wtZGVmc3Vic3QgY2FuIGJlIGlubGluZWQgZXZlbiBp
bgogOzsgcGFja2FnZXMgd2hpY2ggZG8gbm90IHJlcXVpcmUgQ0wuICBXZSBkb24ndCBwdXQg
YW4gYXV0b2xvYWQgY29va2llCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvZW1hY3MtbGlzcC9j
bC1leHRyYS10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9lbWFjcy1saXNwL2NsLWV4dHJhLXRlc3Rz
LmVsCmluZGV4IDUyOTBlZDlkMDRlLi5mMjk1MmQ1ZTQ1ZiAxMDA2NDQKLS0tIGEvdGVzdC9s
aXNwL2VtYWNzLWxpc3AvY2wtZXh0cmEtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL2VtYWNz
LWxpc3AvY2wtZXh0cmEtdGVzdHMuZWwKQEAgLTM5Miw3ICszOTIsNyBAQCBteS1mb28KICAg
ICAgICAgICAoY2wtY2FsbC1uZXh0LW1ldGhvZCkpKQogCiAoZXJ0LWRlZnRlc3QgY2wtdHlw
ZXMtdGVzdCAoKQotICAiVGVzdCB0eXBlcyBkZWZpbml0aW9uLCBjbC10eXBlcy1vZiBhbmQg
bWV0aG9kIGRpc3BhdGNoaW5nLiIKKyAgIlRlc3QgdHlwZXMgZGVmaW5pdGlvbiwgc3BlY2lh
bGl6ZXJzIGFuZCBtZXRob2QgZGlzcGF0Y2hpbmcuIgogCiAgIDs7IEludmFsaWQgREFHIGVy
cm9yCiAgIDs7IEZJWE1FOiBXZSBkb24ndCB0ZXN0IHRoYXQgYW55IG1vcmUuCkBAIC00MDUs
MjYgKzQwNSwzNSBAQCBjbC10eXBlcy10ZXN0CiAgIDs7ICAgbGV4aWNhbC1iaW5kaW5nCiAg
IDs7ICAgKSkKIAotICA7OyBUZXN0IHRoYXQgKGNsLXR5cGVzLW9mIDQpIGlzIChtdWx0aXBs
ZXMtb2YtNCBtdWx0aXBsZXMtb2YtMiAuLi4pCi0gIDs7IFRlc3QgdGhhdCAoY2wtdHlwZXMt
b2YgNikgaXMgKG11bHRpcGxlcy1vZi0zIG11bHRpcGxlcy1vZi0yIC4uLikKLSAgOzsgVGVz
dCB0aGF0IChjbC10eXBlcy1vZiAxMikgaXMgKG11bHRpcGxlcy1vZi00IG11bHRpcGxlcy1v
Zi0zIG11bHRpcGxlcy1vZi0yIC4uLikKKyAgOzsgV2l0aCBwb3NzaWJsZSAndHlwZXMnIGlu
IG11bHRpcGxlcy1vZi17MiwzLDR9IHZlcmlmeSB0aGF0OgogICAobGV0ICgodHlwZXMgJyht
dWx0aXBsZXMtb2YtMiBtdWx0aXBsZXMtb2YtMyBtdWx0aXBsZXMtb2YtNCkpKQorCisgICAg
OzsgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzICAyIHR5cGVzKSBpcyBtdWx0aXBs
ZXMtb2YtMgogICAgIChzaG91bGQgKGVxdWFsICcobXVsdGlwbGVzLW9mLTIpCi0JCSAgIChz
ZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiAyKSB0eXBlcykpKQorCQkgICAoc2VxLWlu
dGVyc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1zcGVj
aWFsaXplcnMgMiB0eXBlcykgdHlwZXMpKSkKIAorICAgIDs7IChjbC0tZGVyaXZlZC10eXBl
LXNwZWNpYWxpemVycyAgNCB0eXBlcykgaXMgbXVsdGlwbGVzLW9mLXs0LDJ9CiAgICAgKHNo
b3VsZCAoZXF1YWwgJyhtdWx0aXBsZXMtb2YtNCBtdWx0aXBsZXMtb2YtMikKLQkJICAgKHNl
cS1pbnRlcnNlY3Rpb24gKGNsLXR5cGVzLW9mIDQpIHR5cGVzKSkpCisJCSAgIChzZXEtaW50
ZXJzZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIChjbC0tZGVyaXZlZC10eXBlLXNwZWNp
YWxpemVycyA0IHR5cGVzKSB0eXBlcykpKQogCisgICAgOzsgKGNsLS1kZXJpdmVkLXR5cGUt
c3BlY2lhbGl6ZXJzICA2IHR5cGVzKSBpcyBtdWx0aXBsZXMtb2YtezMsMn0KICAgICAoc2hv
dWxkIChlcXVhbCAnKG11bHRpcGxlcy1vZi0zIG11bHRpcGxlcy1vZi0yKQotCQkgICAoc2Vx
LWludGVyc2VjdGlvbiAoY2wtdHlwZXMtb2YgNikgdHlwZXMpKSkKKwkJICAgKHNlcS1pbnRl
cnNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lh
bGl6ZXJzIDYgdHlwZXMpIHR5cGVzKSkpCiAKLSAgICAoc2hvdWxkIChtZW1iZXIgKHNlcS1p
bnRlcnNlY3Rpb24gKGNsLXR5cGVzLW9mIDEyKSB0eXBlcykKKyAgICA7OyAoY2wtLWRlcml2
ZWQtdHlwZS1zcGVjaWFsaXplcnMgMTIgdHlwZXMpIGlzIG11bHRpcGxlcy1vZi17NCwzLDJ9
CisgICAgKHNob3VsZCAobWVtYmVyIChzZXEtaW50ZXJzZWN0aW9uCisgICAgICAgICAgICAg
ICAgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMgMTIgdHlwZXMpIHR5cGVz
KQogCQkgICAgOzsgT3JkZXIgYmV0d2VlbiAzIGFuZCA0LzIgaXMgdW5kZWZpbmVkLgogCQkg
ICAgJygobXVsdGlwbGVzLW9mLTMgbXVsdGlwbGVzLW9mLTQgbXVsdGlwbGVzLW9mLTIpCiAJ
CSAgICAgIChtdWx0aXBsZXMtb2YtNCBtdWx0aXBsZXMtb2YtMiBtdWx0aXBsZXMtb2YtMykp
KSkKIAorICAgIDs7IChjbC0tZGVyaXZlZC10eXBlLXNwZWNpYWxpemVycyAgNSB0eXBlcykg
aXMgbm90IG9mIGFueSAndHlwZXMnCiAgICAgKHNob3VsZCAoZXF1YWwgJygpCi0JCSAgIChz
ZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiA1KSB0eXBlcykpKQorCQkgICAoc2VxLWlu
dGVyc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1zcGVj
aWFsaXplcnMgNSB0eXBlcykgdHlwZXMpKSkKICAgICApCiAKICAgOzs7IE1ldGhvZCBkaXNw
YXRjaGluZy4K
--------------G8BoZRMI1V70Dx8jvcncSM2j--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 25 Sep 2025 20:06:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 25 16:06:18 2025
Received: from localhost ([127.0.0.1]:59030 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v1sEL-000810-QP
for submit <at> debbugs.gnu.org; Thu, 25 Sep 2025 16:06:18 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:51637)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1v1sEB-00080b-Mp
for 77725 <at> debbugs.gnu.org; Thu, 25 Sep 2025 16:06:11 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 2603F441CF4;
Thu, 25 Sep 2025 16:06:01 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1758830758;
bh=m146SARioJ5MUDi5VeE+oezIyPJ7JYasuN78JWwZzF0=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=AGMnqCyPa33Y9Gmm91uP4lYi7V5th1h8Js/Zl3A1nU4LrTxAX2JRCFFcHdE+i2Tkp
xAf8zMQBs6n/YEzSokOES69d+VUaZgyKre5VLgtQoe5fJaRqAvc1oq92w+dPwyhuGl
is4B1aOsu/Qk2li7SPiXdXmYaTMnyEFJ3MN26WZEkV7ShBzHHxXc8nQNSZB2SiJb3N
1MZpmnbOJjf2pLG7I2hC2IO5sM7v/IUWBuLg3hLD4eYfIvGUwYR3xMducYH4o7zDg4
wlu3vYnWYU3fRO3y9j60QsK3VTV+Iyl9c4MO1rbMD4vup6ttJ3dzclbG8X6/ZOAn7B
aM9LCJAb8U+9Q==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id E7A1D441CFB;
Thu, 25 Sep 2025 16:05:58 -0400 (EDT)
Received: from alfajor
(bras-base-mtrlpq42zf4-grc-29-142-122-130-184.dsl.bell.ca [142.122.130.184])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id CB833120250;
Thu, 25 Sep 2025 16:05:58 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <4975d872-1f65-4d8d-a548-5b474aaf1d1c@HIDDEN>
Message-ID: <jwvqzvupb4x.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN>
<438393de-6706-48ff-b029-a94eeb59718c@HIDDEN>
<11647451-b3d3-4760-abe6-a053b4062213@HIDDEN>
<86jz2ub73d.fsf@HIDDEN> <jwv1pp19opg.fsf-monnier+emacs@HIDDEN>
<86cy84gg3u.fsf@HIDDEN> <868qi9ihyu.fsf@HIDDEN>
<4975d872-1f65-4d8d-a548-5b474aaf1d1c@HIDDEN>
Date: Thu, 25 Sep 2025 16:05:56 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.100 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
> index e821b15378b..f933f26b0b6 100644
> --- a/lisp/emacs-lisp/cl-generic.el
> +++ b/lisp/emacs-lisp/cl-generic.el
> @@ -708,11 +708,12 @@ cl--generic-get-dispatcher
> (let* ((dispatch-arg (car dispatch))
> (generalizers (cdr dispatch))
> (lexical-binding t)
> + (methods-arg (make-symbol "methods"))
> (tagcodes
> (mapcar (lambda (generalizer)
> (funcall (cl--generic-generalizer-tagcode-function
> generalizer)
> - 'arg))
> + 'arg methods-arg))
> generalizers))
> (typescodes
> (mapcar
This is the crux of the proposed change. Here are my thoughts about it:
- I would prefer if we exposed the list of specializers rather than the
list of methods (and even ideally only those specializers which use
the same generalizer), especially since that would be more precise (the
tagcode function doesn't know which arg is relevant so it has to look
at all the specializers of all the arguments).
- It means the list of specializers is made available late, not when the
tagcode is built but when it's evaluated (which is on the
critical-path).
+ because the list of methods/specializers is provided late, it means
the generated tagcode can be shared among several methods. IOW, the
cache of dispatchers is not affected.
- This change risks breaking existing tagcode-functions which don't expect
a second arg.
+ it's a simple/cheap change.
Overall, I'm undecided.
> diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
> index 63d85623fbe..86587093f63 100644
> --- a/lisp/emacs-lisp/cl-macs.el
> +++ b/lisp/emacs-lisp/cl-macs.el
> @@ -3804,12 +3804,17 @@ cl-deftype
> (cl-callf (lambda (x) (delq parent-decl x)) (cdr declares))
> (when (equal declares '(declare))
> (cl-callf (lambda (x) (delq declares x)) decls)))
> - (and parents arglist
> - (error "Parents specified, but arglist not empty"))
> (let* ((expander
> - `(cl-function (lambda (&cl-defs ('*) ,@arglist) ,@decls ,@forms)))
> - ;; FIXME: Pass a better lexical context.
> - (specifier (ignore-errors (funcall (eval expander t))))
> + `(cl-function
> + (lambda (&cl-defs ('*) ,@arglist) ,@decls ,@forms)))
> + (specifier
> + (condition-case nil
> + ;; FIXME: Pass a better lexical context.
> + (funcall (eval expander t))
> + (wrong-number-of-arguments
> + (and parents arglist ;; type is not atomic
> + (error "Type %S with parents is not atomic: %S"
> + name arglist)))))
> (predicate
> (pcase specifier
> (`(satisfies ,f) `#',f)
IIUC, this patch is orthogonal to the rest. Could you add a comment
explaining why a `wrong-number-of-arguments` error means that the "type
with parents" is not atomic?
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 21 Sep 2025 21:15:17 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 21 17:15:17 2025 Received: from localhost ([127.0.0.1]:57156 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v0ROt-00019I-KM for submit <at> debbugs.gnu.org; Sun, 21 Sep 2025 17:15:16 -0400 Received: from smtp-14.smtpout.orange.fr ([80.12.242.14]:40155 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1v0ROn-00014r-Jb for 77725 <at> debbugs.gnu.org; Sun, 21 Sep 2025 17:15:11 -0400 Received: from [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504] ([IPv6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]) by smtp.orange.fr with ESMTPA id 0ROjv9JXpsxYP0ROjv6uVA; Sun, 21 Sep 2025 23:15:06 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1758489306; bh=z0wA03V+tUhmpS01eNmc/4xCqqfupS4EnxwpWInsdMA=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=JyQLkzkArLGaXN0DG9gOF+CuPMfIMhMxXfTDfJqYYM84tm9cXTeZVvy6V8M0G7+ju HP5cKSvwaf/9Uzw8azJs6PVMGfK7ZW9yjIfQYd1JYJsNZ6zGZ3VhYfg+oe89QA25yu wSeq6n6NQN4U9tmaFEZPSMUn7PWOoGJxnSSYvSLfWUPvmQsKoYUSe26wZAq7ie7pnc jt5jMH+a+l5Plig06j7pQGiwMkMaFXxkCNO4dPhdSu5ds8T4szswvtR9/72FiYUQLI Q2R/fuxUguNTcxRj5pSLvqT+e0HeqxDgESFYUodcQo0xI4lzU6iWZAbfQZ7D8z4Ezw REOnXZIwMJMGw== X-ME-Helo: [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sun, 21 Sep 2025 23:15:06 +0200 X-ME-IP: 2a01:cb15:8915:8600:87c3:d46d:c911:d504 Content-Type: multipart/mixed; boundary="------------XKGvkDKydXzx4Xuiv2cB7JSZ" Message-ID: <4975d872-1f65-4d8d-a548-5b474aaf1d1c@HIDDEN> Date: Sun, 21 Sep 2025 23:15:05 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Eli Zaretskii <eliz@HIDDEN>, monnier@HIDDEN References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN> <438393de-6706-48ff-b029-a94eeb59718c@HIDDEN> <11647451-b3d3-4760-abe6-a053b4062213@HIDDEN> <86jz2ub73d.fsf@HIDDEN> <jwv1pp19opg.fsf-monnier+emacs@HIDDEN> <86cy84gg3u.fsf@HIDDEN> <868qi9ihyu.fsf@HIDDEN> Content-Language: fr From: David Ponce <da_vid@HIDDEN> In-Reply-To: <868qi9ihyu.fsf@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------XKGvkDKydXzx4Xuiv2cB7JSZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Le 2025-09-20 à 11:36, Eli Zaretskii a écrit : >> Cc: da_vid@HIDDEN, 77725 <at> debbugs.gnu.org >> Date: Sat, 06 Sep 2025 11:06:13 +0300 >> From: Eli Zaretskii <eliz@HIDDEN> >> >>> From: Stefan Monnier <monnier@HIDDEN> >>> Cc: David Ponce <da_vid@HIDDEN>, 77725 <at> debbugs.gnu.org >>> Date: Sun, 24 Aug 2025 03:14:21 -0400 >>> >>>> Stefan, any comments? >>> >>> [ Oops, sorry, putting it back on my TODO. ] >>> Soon, >> >> Ping! > > Ping! Ping! Hello, Please find attached the latest version of the patch, relative to the current master. I slightly improved `cl-deftype' to avoid masking unexpected errors when checking the atomicity of the defined type, by catching only `wrong-number-of-arguments' error instead of any `error', in the `condition-case'. The last changelog I proposed remains valid. I feel like all this work has now become a very low priority. At least it's working well for me. I still hope it leads to something eventually! Thank you. --------------XKGvkDKydXzx4Xuiv2cB7JSZ Content-Type: text/x-patch; charset=UTF-8; name="cl-types-V2-5.patch" Content-Disposition: attachment; filename="cl-types-V2-5.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt bGlzcC9jbC1leHRyYS5lbAppbmRleCA0YTk4MTlhMjAzOS4uMGQ2ZDI2NmM2NDYgMTAwNjQ0 Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp c3AvY2wtZXh0cmEuZWwKQEAgLTk3NCwyMiArOTc0LDE2IEBAIGNsLS1kZXNjcmliZS1jbGFz cy1zbG90cwogOzsgRXh0ZW5kIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgZGF0YSB0eXBlcyB3 aGljaCBhcmUgYWxzbyB2YWxpZAogOzsgYXJndW1lbnQgdHlwZXMgZm9yIGRpc3BhdGNoaW5n IGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcyAoc2VlIGFsc28KIDs7IDxodHRwczovL2RlYmJ1 Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9Nzc3MjU+KS4KLTs7Ci07OyBUaGUg bWFpbiBlbnRyeSBwb2ludHMgYXJlOgotOzsKLTs7IC0gYGNsLWRlZnR5cGUnLCB0aGF0IGRl ZmluZXMgbmV3IGRhdGEgdHlwZXMuCi07OwotOzsgLSBgY2wtdHlwZXMtb2YnLCB0aGF0IHJl dHVybnMgdGhlIHR5cGVzIGFuIG9iamVjdCBiZWxvbmdzIHRvLgogCiA7OyBFbnN1cmUgZWFj aCB0eXBlIHNhdGlzZmllcyBgZXFsJy4KLShkZWZ2YXIgY2wtLXR5cGVzLW9mLW1lbW8gKG1h a2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwpCi0gICJNZW1vaXphdGlvbiB0YWJsZSB1c2Vk IGluIGBjbC10eXBlcy1vZicuIikKLQotOzsgRklYTUU6IGBjbC10eXBlcy1vZicgQ1BVIGNv c3QgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIgb2YgdHlwZXMKLTs7IGRlZmluZWQg d2l0aCBgY2wtZGVmdHlwZScsIHNvIHRoZSBtb3JlIHBvcHVsYXIgaXQgZ2V0cywgdGhlIHNs b3dlcgotOzsgaXQgYmVjb21lcy4gIEFuZCBvZiBjb3Vyc2UsIHRoZSBjb3N0IG9mIGVhY2gg dHlwZSBjaGVjayBpcwotOzsgdW5ib3VuZGVkLCBzbyBhIHNpbmdsZSAiZXhwZW5zaXZlIiB0 eXBlIGNhbiBzbG93IGV2ZXJ5dGhpbmcgZG93bgotOzsgZnVydGhlci4KKyhkZWZ2YXIgY2wt LWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMtbWVtbyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0 ICdlcXVhbCkKKyAgIk1lbW9pemF0aW9uIHRhYmxlIHVzZWQgaW4gYGNsLS1kZXJpdmVkLXR5 cGUtc3BlY2lhbGl6ZXJzJy4iKQorCis7OyBGSVhNRTogYGNsLS1kZXJpdmVkLXR5cGUtc3Bl Y2lhbGl6ZXJzJyBDUFUgY29zdCBpcyBwcm9wb3J0aW9uYWwgdG8KKzs7IHRoZSBudW1iZXIg b2YgdHlwZXMgZGVmaW5lZCB3aXRoIGBjbC1kZWZ0eXBlJywgc28gdGhlIG1vcmUgcG9wdWxh ciBpdAorOzsgZ2V0cywgdGhlIHNsb3dlciBpdCBiZWNvbWVzLiAgQW5kIG9mIGNvdXJzZSwg dGhlIGNvc3Qgb2YgZWFjaCB0eXBlCis7OyBjaGVjayBpcyB1bmJvdW5kZWQsIHNvIGEgc2lu Z2xlICJleHBlbnNpdmUiIHR5cGUgY2FuIHNsb3cgZXZlcnl0aGluZworOzsgZG93biBmdXJ0 aGVyLgogOzsKIDs7IFRoZSB1c3VhbCBkaXNwYXRjaCBpcwogOzsKQEAgLTEwMjYsNDkgKzEw MjAsNTAgQEAgY2wtLXR5cGVzLW9mLW1lbW8KIDs7ICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBg dCcgImR1bW15IHBhcmVudCIuICBbIFdlIGNvdWxkIGV2ZW4gZ28gY3JhenkKIDs7ICAgYW5k IHRyeSBhbmQgZ3Vlc3MgUEFSRU5UUyB3aGVuIG5vdCBwcm92aWRlZCwgYnkgYW5hbHl6aW5n IHRoZQogOzsgICB0eXBlJ3MgZGVmaW5pdGlvbi4gXQotOzsgLSBpbiBgY2wtdHlwZXMtb2Yn IHN0YXJ0IGJ5IGNhbGxpbmcgYGNsLXR5cGUtb2YnLCB0aGVuIHVzZSB0aGUgbWFwCi07OyAg IHRvIGZpbmQgd2hpY2ggY2wtdHlwZXMgbWF5IG5lZWQgdG8gYmUgY2hlY2tlZC4KKzs7IC0g aW4gYGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyBzdGFydCBieSBjYWxsaW5nIGBj bC10eXBlLW9mJywKKzs7ICAgdGhlbiB1c2UgdGhlIG1hcCB0byBmaW5kIHdoaWNoIGNsLXR5 cGVzIG1heSBuZWVkIHRvIGJlIGNoZWNrZWQuCiA7OwogOzs7IyMjYXV0b2xvYWQKLShkZWZ1 biBjbC10eXBlcy1vZiAob2JqZWN0ICZvcHRpb25hbCB0eXBlcykKLSAgIlJldHVybiB0aGUg YXRvbWljIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgotUmV0dXJuIGFuIHVuaXF1ZSBsaXN0 IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCi1tb3N0IHNw ZWNpZmljIHR5cGUgdG8gdGhlIG1vc3QgZ2VuZXJhbC4KLVRZUEVTIGlzIGFuIGludGVybmFs IGFyZ3VtZW50LiIKLSAgKGxldCogKChmb3VuZCBuaWwpKQorKGRlZnVuIGNsLS1kZXJpdmVk LXR5cGUtc3BlY2lhbGl6ZXJzIChvYmplY3QgdHlwZXMpCisgICJSZXR1cm4gdGhlIGxpc3Qg b2Ygc3BlY2lhbGl6ZXJzIGZvciBPQkpFQ1QsIGRlcml2ZWQgZnJvbSBUWVBFUy4KK1JldHVy biBhbiB1bmlxdWUgKGVxKSBsaXN0IG9mIGF0b21pYyB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0 bywgb3JkZXJlZAorZnJvbSB0aGUgbW9zdCBzcGVjaWZpYyB0eXBlIHRvIHRoZSBtb3N0IGdl bmVyYWwuCitUWVBFUyBpcyBhIGxpc3Qgb2YgdHlwZXMgdGhhdCBPQkpFQ1QgY2FuIHBvdGVu dGlhbGx5IGJlbG9uZyB0by4iCisgIChsZXQqICgoZm91bmQgKGxpc3QgKGNsLXR5cGUtb2Yg b2JqZWN0KSkpKQogICAgIDs7IEJ1aWxkIGEgbGlzdCBvZiBhbGwgdHlwZXMgT0JKRUNUIGJl bG9uZ3MgdG8uCi0gICAgKGRvbGlzdCAodHlwZSAob3IgdHlwZXMgY2wtLWRlcml2ZWQtdHlw ZS1saXN0KSkKLSAgICAgIChsZXQgKChwcmVkIChnZXQgdHlwZSAnY2wtZGVmdHlwZS1zYXRp c2ZpZXMpKSkKLSAgICAgICAgKGFuZAotICAgICAgICAgOzsgSWYgT0JKRUNUIGlzIG9mIHR5 cGUsIGFkZCB0eXBlIHRvIHRoZSBtYXRjaGluZyBsaXN0LgotICAgICAgICAgKGlmIHR5cGVz Ci0gICAgICAgICAgICAgOzsgRm9yIG1ldGhvZCBkaXNwYXRjaCwgd2UgZG9uJ3QgbmVlZCB0 byBmaWx0ZXIgb3V0IGVycm9ycywKLSAgICAgICAgICAgICA7OyBzaW5jZSB3ZSBjYW4gcHJl c3VtZSB0aGF0IG1ldGhvZCBkaXNwYXRjaCBpcyB1c2VkIG9ubHkgb24KLSAgICAgICAgICAg ICA7OyBzYW5lbHktZGVmaW5lZCB0eXBlcy4KLSAgICAgICAgICAgICAoZnVuY2FsbCBwcmVk IG9iamVjdCkKLSAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlCi0g ICAgICAgICAgICAgICAoZnVuY2FsbCBwcmVkIG9iamVjdCkKLSAgICAgICAgICAgICAoZXJy b3IgKHNldHEgY2wtLWRlcml2ZWQtdHlwZS1saXN0Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgIChkZWxxIHR5cGUgY2wtLWRlcml2ZWQtdHlwZS1saXN0KSkKLSAgICAgICAgICAgICAg ICAgICAgKHdhcm4gICJjbC10eXBlcy1vZiAlUzogJXMiCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICB0eXBlIChlcnJvci1tZXNzYWdlLXN0cmluZyBlKSkKLSAgICAgICAgICAgICAg ICAgICAgbmlsKSkpCi0gICAgICAgICAocHVzaCB0eXBlIGZvdW5kKSkpKQotICAgIChwdXNo IChjbC10eXBlLW9mIG9iamVjdCkgZm91bmQpCi0gICAgOzsgUmV0dXJuIHRoZSBsaXN0IG9m IHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCB3aGljaCBpcyBhbHNvIHRoZSBsaXN0Ci0gICAg Ozsgb2Ygc3BlY2lmaWVycyBmb3IgT0JKRUNULiBUaGlzIG1lbW9pemF0aW9uIGhhcyB0d28g cHVycG9zZXM6CisgICAgKGRvbGlzdCAodHlwZSB0eXBlcykKKyAgICAgIDs7IElmIE9CSkVD VCBpcyBvZiB0eXBlLCBhZGQgdHlwZSB0byB0aGUgbWF0Y2hpbmcgbGlzdC4KKyAgICAgIChp ZiAoZnVuY2FsbCAoZ2V0IHR5cGUgJ2NsLWRlZnR5cGUtc2F0aXNmaWVzKSBvYmplY3QpCisg ICAgICAgICAgKHB1c2ggdHlwZSBmb3VuZCkpKQorICAgIDs7IFRoaXMgbWVtb2l6YXRpb24g aGFzIHR3byBwdXJwb3NlczoKICAgICA7OyAtIFNwZWVkIHVwIGNvbXB1dGF0aW9uLgogICAg IDs7IC0gTWFrZSBzdXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgKGVxKSBvYmplY3Qs IHNvIHRoYXQgdGhlCiAgICAgOzsgICBtZXRob2QgZGlzcGF0Y2gncyBvd24gY2FjaGluZyB3 b3JrcyBhcyBpdCBzaG91bGQuCi0gICAgKHdpdGgtbWVtb2l6YXRpb24gKGdldGhhc2ggZm91 bmQgY2wtLXR5cGVzLW9mLW1lbW8pCisgICAgKHdpdGgtbWVtb2l6YXRpb24gKGdldGhhc2gg Zm91bmQgY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMtbWVtbykKICAgICAgIDs7IENv bXB1dGUgYW4gb3JkZXJlZCBsaXN0IG9mIHR5cGVzIGZyb20gdGhlIERBRy4KLSAgICAgIChs ZXQgKGRhZykKLSAgICAgICAgKGRvbGlzdCAodHlwZSBmb3VuZCkKLSAgICAgICAgICAocHVz aCAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzIHR5cGUpKSBkYWcpKQot ICAgICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cyBkYWcpKSkpKQotCi0oZGVmdmFyIGNsLS1k ZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCBuaWwKLSAgIkxpc3Qgb2YgdHlwZXMgdGhhdCBu ZWVkIHRvIGJlIGNoZWNrZWQgZHVyaW5nIGRpc3BhdGNoLiIpCisgICAgICAobWVyZ2Utb3Jk ZXJlZC1saXN0cworICAgICAgIChtYXBjYXIgKGxhbWJkYSAodHlwZSkKKyAgICAgICAgICAg ICAgICAgKGNsLS1jbGFzcy1hbGxwYXJlbnRzIChjbC0tZmluZC1jbGFzcyB0eXBlKSkpCisg ICAgICAgICAgICAgICBmb3VuZCkpKSkpCisKKyhkZWZ2YXIgY2wtLWRlcml2ZWQtdHlwZS1k aXNwYXRjaC1tZW1vIChtYWtlLWhhc2gtdGFibGUgOndlYWtuZXNzICdrZXkpCisgICJNZW1v aXphdGlvbiB0YWJsZSB1c2VkIGluIGBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3Qn LiIpCisKKyhkZWZ1biBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QgKG1ldGhvZHMp CisgICJHYXRoZXIgdGhlIGxpc3Qgb2YgZGVyaXZlZCB0eXBlcyBmcm9tIE1FVEhPRFMgc3Bl Y2lhbGl6ZXJzLgorUmV0dXJuIHRoZSBsaXN0IG9mIHR5cGVzIHRvIGJlIGNoZWNrZWQgZHVy aW5nIGRpc3BhdGNoIG9mIHRoZSBnZW5lcmljCitmdW5jdGlvbiB3aXRoIHRoZXNlIE1FVEhP RFMuIgorICAod2l0aC1tZW1vaXphdGlvbiAoZ2V0aGFzaCBtZXRob2RzIGNsLS1kZXJpdmVk LXR5cGUtZGlzcGF0Y2gtbWVtbykKKyAgICAobGV0ICh0eXBlcykKKyAgICAgIChkb2xpc3Qg KG1ldGhvZCBtZXRob2RzKQorICAgICAgICAoZG9saXN0ICh0eXBlIChjbC0tZ2VuZXJpYy1t ZXRob2Qtc3BlY2lhbGl6ZXJzIG1ldGhvZCkpCisgICAgICAgICAgKGFuZCAoc3ltYm9scCB0 eXBlKQorICAgICAgICAgICAgICAgKGNsLWRlcml2ZWQtdHlwZS1jbGFzcy1wIChjbC0tZmlu ZC1jbGFzcyB0eXBlKSkKKyAgICAgICAgICAgICAgIChub3QgKG1lbXEgdHlwZSB0eXBlcykp CisgICAgICAgICAgICAgICAocHVzaCB0eXBlIHR5cGVzKSkpKQorICAgICAgOzsgYGNsLS1k ZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyB3aWxsIGVuc3VyZSB0aGF0IHR5cGVzIGFyZSBp bgorICAgICAgOzsgdGhlIGV4cGVjdGVkIGRpc3BhdGNoIG9yZGVyLgorICAgICAgdHlwZXMp KSkKIAogKGNsLWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS1kZXJpdmVkLXR5cGUt Z2VuZXJhbGl6ZXIKICAgOzsgRklYTUU6IFRoaXMgcHJpb3JpdHkgY2FuJ3QgYmUgYWx3YXlz IHJpZ2h0LiAgOi0oCkBAIC0xMDgwLDMxICsxMDc1LDI2IEBAIGNsLS1kZXJpdmVkLXR5cGUt Z2VuZXJhbGl6ZXIKICAgOzsgRml4aW5nIHRoaXMgMTAwJSBpcyBpbXBvc3NpYmxlIHNvIHRo aXMgZ2VuZXJhbGl6ZXIgaXMgY29uZGVtbmVkIHRvCiAgIDs7IHN1ZmZlciBmcm9tICJ1bmRl ZmluZWQgbWV0aG9kIG9yZGVyaW5nIiBwcm9ibGVtcywgdW5sZXNzL3VudGlsIHdlCiAgIDs7 IHJlc3RyaWN0IGl0IHNvbWVob3cgdG8gYSBzdWJzZXQgdGhhdCB3ZSBjYW4gaGFuZGxlIHJl bGlhYmx5LgotICAyMCA7OyAidHlwZW9mIiA8ICJjbC10eXBlcy1vZiIgPCAiaGVhZCIgcHJp b3JpdHkKLSAgKGxhbWJkYSAob2JqICZyZXN0IF8pIGAoY2wtdHlwZXMtb2YgLG9iaiBjbC0t ZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QpKQorICAyMCA7OyAidHlwZW9mIiA8ICJkZXJp dmVkLXR5cGVzIiA8ICJoZWFkIiBwcmlvcml0eQorICAobGFtYmRhIChvYmogJm9wdGlvbmFs IG1ldGhvZHMgJnJlc3QgXykKKyAgICBgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJz CisgICAgICAsb2JqCisgICAgICA7OyBDaGVjayBvbmx5IGRlcml2ZWQgdHlwZXMgdXNlZCBh cyBNRVRIT0RTIHNwZWNpYWxpemVycyBvZiB0aGUKKyAgICAgIDs7IGdlbmVyaWMgZnVuY3Rp b24gY3VycmVudGx5IGNhbGxlZC4gIGBjbC1nZW5lcmljLWdlbmVyYWxpemVycycKKyAgICAg IDs7IGZvciAiZGVyaXZlZCB0eXBlIiBlbnN1cmVzIHRoYXQgYXQgbGVhc3Qgb25lIHN1Y2gg bWV0aG9kCisgICAgICA7OyBleGlzdHMuCisgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1kaXNw YXRjaC1saXN0ICxtZXRob2RzKSkpCiAgIChsYW1iZGEgKHRhZyAmcmVzdCBfKSAoaWYgKGNv bnNwIHRhZykgdGFnKSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gY2wtLWRlcml2ZWQt dHlwZS1nZW5lcmFsaXplcnMgKHR5cGUpCiAgIDs7IE1ha2Ugc3VyZSB0aGlzIGRlcml2ZWQg dHlwZSBjYW4gYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50cy4KLSAgKGxldCAoKGV4cGFuZGVy IChvciAoZ2V0IHR5cGUgJ2NsLWRlZnR5cGUtaGFuZGxlcikKLSAgICAgICAgICAgICAgICAg ICAgICAoZXJyb3IgIlR5cGUgJVMgbGFja3MgY2wtZGVmdHlwZS1oYW5kbGVyIiB0eXBlKSkp KQotICAgIDs7IENoZWNrIHRoYXQgdGhlIHR5cGUgY2FuIGJlIHVzZWQgd2l0aG91dCBhcmd1 bWVudHMuCi0gICAgKGZ1bmNhbGwgZXhwYW5kZXIpCi0gICAgOzsgQ2hlY2sgdGhhdCB3ZSBo YXZlIGEgcHJlY29tcHV0ZWQgcHJlZGljYXRlIHNpbmNlIHRoYXQncyB3aGF0Ci0gICAgOzsg YGNsLXR5cGVzLW9mJyB1c2VzLgotICAgICh1bmxlc3MgKGdldCB0eXBlICdjbC1kZWZ0eXBl LXNhdGlzZmllcykKLSAgICAgIChlcnJvciAiVHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNh dGlzZmllcyIgdHlwZSkpKQotICA7OyBBZGQgYSBuZXcgZGlzcGF0Y2ggdHlwZSB0byB0aGUg ZGlzcGF0Y2ggbGlzdCwgdGhlbgotICA7OyBzeW5jaHJvbml6ZSB3aXRoIGBjbC0tZGVyaXZl ZC10eXBlLWxpc3QnIHNvIHRoYXQgYm90aCBsaXN0cyBmb2xsb3cKLSAgOzsgdGhlIHNhbWUg dHlwZSBwcmVjZWRlbmNlIG9yZGVyLgotICA7OyBUaGUgYG1lcmdlLW9yZGVyZWQtbGlzdHMn IGlzIGBjbC10eXBlcy1vZicgc2hvdWxkIHdlIG1ha2UgdGhpcwotICA7OyBvcmRlcmluZyB1 bm5lY2Vzc2FyeSwgYnV0IGl0J3Mgc3RpbGwgaGFuZHkgZm9yIGFsbCB0aG9zZSB0eXBlcwot ICA7OyB0aGF0IGRvbid0IGRlY2xhcmUgdGhlaXIgcGFyZW50cy4KLSAgKHVubGVzcyAobWVt cSB0eXBlIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCkKLSAgICAoc2V0cSBjbC0t ZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QKLSAgICAgICAgICAoc2VxLWludGVyc2VjdGlv biBjbC0tZGVyaXZlZC10eXBlLWxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y29ucyB0eXBlIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCkpKSkKKyAgKGZ1bmNh bGwgKG9yIChnZXQgdHlwZSAnY2wtZGVmdHlwZS1oYW5kbGVyKQorICAgICAgICAgICAgICAg KGVycm9yICJUeXBlICVTIGxhY2tzIGNsLWRlZnR5cGUtaGFuZGxlciIgdHlwZSkpKQorICA7 OyBDaGVjayB0aGF0IHdlIGhhdmUgYSBwcmVjb21wdXRlZCBwcmVkaWNhdGUgc2luY2UgdGhh dCdzIHdoYXQKKyAgOzsgYGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyB1c2VzLgor ICAob3IgKGdldCB0eXBlICdjbC1kZWZ0eXBlLXNhdGlzZmllcykKKyAgICAgIChlcnJvciAi VHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNhdGlzZmllcyIgdHlwZSkpCiAgIChsaXN0IGNs LS1kZXJpdmVkLXR5cGUtZ2VuZXJhbGl6ZXIpKQogCiA7Ozs7IFRyYWlsZXIKZGlmZiAtLWdp dCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1nZW5lcmljLmVsIGIvbGlzcC9lbWFjcy1saXNwL2Ns LWdlbmVyaWMuZWwKaW5kZXggZTgyMWIxNTM3OGIuLmY5MzNmMjZiMGI2IDEwMDY0NAotLS0g YS9saXNwL2VtYWNzLWxpc3AvY2wtZ2VuZXJpYy5lbAorKysgYi9saXNwL2VtYWNzLWxpc3Av Y2wtZ2VuZXJpYy5lbApAQCAtNzA4LDExICs3MDgsMTIgQEAgY2wtLWdlbmVyaWMtZ2V0LWRp c3BhdGNoZXIKICAgICAobGV0KiAoKGRpc3BhdGNoLWFyZyAoY2FyIGRpc3BhdGNoKSkKICAg ICAgICAgICAgKGdlbmVyYWxpemVycyAoY2RyIGRpc3BhdGNoKSkKICAgICAgICAgICAgKGxl eGljYWwtYmluZGluZyB0KQorICAgICAgICAgICAobWV0aG9kcy1hcmcgKG1ha2Utc3ltYm9s ICJtZXRob2RzIikpCiAgICAgICAgICAgICh0YWdjb2RlcwogICAgICAgICAgICAgKG1hcGNh ciAobGFtYmRhIChnZW5lcmFsaXplcikKICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs bCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29kZS1mdW5jdGlvbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsaXplcikKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnYXJnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn YXJnIG1ldGhvZHMtYXJnKSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGl6ZXJzKSkK ICAgICAgICAgICAgKHR5cGVzY29kZXMKICAgICAgICAgICAgIChtYXBjYXIKQEAgLTcyMSw3 ICs3MjIsNyBAQCBjbC0tZ2VuZXJpYy1nZXQtZGlzcGF0Y2hlcgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdlbmVyYWxpemVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICwo ZnVuY2FsbCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29kZS1mdW5jdGlvbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGl6ZXIpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmcpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2FyZyBtZXRob2RzLWFyZykpKQogICAgICAgICAgICAgIGdl bmVyYWxpemVycykpCiAgICAgICAgICAgICh0YWctZXhwCiAgICAgICAgICAgICA7OyBNaW5v ciBvcHRpbWl6YXRpb246IHNpbmNlIHRoaXMgdGFnLWV4cCBpcwpAQCAtNzQ1LDE0ICs3NDYs MTQgQEAgY2wtLWdlbmVyaWMtZ2V0LWRpc3BhdGNoZXIKICAgICAgIDs7IG92ZXJraWxsOiBi ZXR0ZXIganVzdCB1c2UgYSBgY2wtdHlwZXAnIHRlc3QuCiAgICAgICAoZnVuY2FsbAogICAg ICAgIGNsLS1nZW5lcmljLWNvbXBpbGVyCi0gICAgICAgYChsYW1iZGEgKGdlbmVyaWMgZGlz cGF0Y2hlcy1sZWZ0IG1ldGhvZHMpCisgICAgICAgYChsYW1iZGEgKGdlbmVyaWMgZGlzcGF0 Y2hlcy1sZWZ0ICxtZXRob2RzLWFyZykKICAgICAgICAgICAobGV0ICgobWV0aG9kLWNhY2hl IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcWwpKSkKICAgICAgICAgICAgIChsYW1iZGEg KCxAZml4ZWRhcmdzICZyZXN0IGFyZ3MpCiAgICAgICAgICAgICAgIChsZXQgLGJpbmRpbmdz CiAgICAgICAgICAgICAgICAgKGFwcGx5ICh3aXRoLW1lbW9pemF0aW9uCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ2V0aGFzaCAsdGFnLWV4cCBtZXRob2QtY2FjaGUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNsLS1nZW5lcmljLWNhY2hlLW1pc3MKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2VuZXJpYyAnLGRpc3BhdGNoLWFyZyBkaXNwYXRjaGVzLWxl ZnQgbWV0aG9kcworICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljICcsZGlzcGF0 Y2gtYXJnIGRpc3BhdGNoZXMtbGVmdCAsbWV0aG9kcy1hcmcKICAgICAgICAgICAgICAgICAg ICAgICAgICAgLChpZiAoY2RyIHR5cGVzY29kZXMpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYChhcHBlbmQgLEB0eXBlc2NvZGVzKSAoY2FyIHR5cGVzY29kZXMpKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICxAZml4ZWRhcmdzIGFyZ3MpKSkpKSkpKSkKQEAgLTE0 MDMsNyArMTQwNCw3IEBAIGNsLS1nZW5lcmljLWRlcml2ZWQtc3BlY2lhbGl6ZXJzCiAgICAg ICAgICAgKGRlcml2ZWQtbW9kZS1hbGwtcGFyZW50cyBtb2RlKSkpCiAKIChjbC1nZW5lcmlj LWRlZmluZS1nZW5lcmFsaXplciBjbC0tZ2VuZXJpYy1kZXJpdmVkLWdlbmVyYWxpemVyCi0g IDkwIChsYW1iZGEgKG5hbWUpIGAoYW5kIChzeW1ib2xwICxuYW1lKSAoZnVuY3Rpb25wICxu YW1lKSAsbmFtZSkpCisgIDkwIChsYW1iZGEgKG5hbWUgJnJlc3QgXykgYChhbmQgKHN5bWJv bHAgLG5hbWUpIChmdW5jdGlvbnAgLG5hbWUpICxuYW1lKSkKICAgIydjbC0tZ2VuZXJpYy1k ZXJpdmVkLXNwZWNpYWxpemVycykKIAogKGNsLWRlZm1ldGhvZCBjbC1nZW5lcmljLWdlbmVy YWxpemVycyAoKF9zcGVjaWFsaXplciAoaGVhZCBkZXJpdmVkLW1vZGUpKSkKZGlmZiAtLWdp dCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1tYWNzLmVsIGIvbGlzcC9lbWFjcy1saXNwL2NsLW1h Y3MuZWwKaW5kZXggNjNkODU2MjNmYmUuLjg2NTg3MDkzZjYzIDEwMDY0NAotLS0gYS9saXNw L2VtYWNzLWxpc3AvY2wtbWFjcy5lbAorKysgYi9saXNwL2VtYWNzLWxpc3AvY2wtbWFjcy5l bApAQCAtMzgwNCwxMiArMzgwNCwxNyBAQCBjbC1kZWZ0eXBlCiAgICAgICAoY2wtY2FsbGYg KGxhbWJkYSAoeCkgKGRlbHEgcGFyZW50LWRlY2wgeCkpIChjZHIgZGVjbGFyZXMpKQogICAg ICAgKHdoZW4gKGVxdWFsIGRlY2xhcmVzICcoZGVjbGFyZSkpCiAgICAgICAgIChjbC1jYWxs ZiAobGFtYmRhICh4KSAoZGVscSBkZWNsYXJlcyB4KSkgZGVjbHMpKSkKLSAgICAoYW5kIHBh cmVudHMgYXJnbGlzdAotICAgICAgICAgKGVycm9yICJQYXJlbnRzIHNwZWNpZmllZCwgYnV0 IGFyZ2xpc3Qgbm90IGVtcHR5IikpCiAgICAgKGxldCogKChleHBhbmRlcgotICAgICAgICAg ICAgYChjbC1mdW5jdGlvbiAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkgLEBk ZWNscyAsQGZvcm1zKSkpCi0gICAgICAgICAgIDs7IEZJWE1FOiBQYXNzIGEgYmV0dGVyIGxl eGljYWwgY29udGV4dC4KLSAgICAgICAgICAgKHNwZWNpZmllciAoaWdub3JlLWVycm9ycyAo ZnVuY2FsbCAoZXZhbCBleHBhbmRlciB0KSkpKQorICAgICAgICAgICAgYChjbC1mdW5jdGlv bgorICAgICAgICAgICAgICAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkgLEBk ZWNscyAsQGZvcm1zKSkpCisgICAgICAgICAgIChzcGVjaWZpZXIKKyAgICAgICAgICAgIChj b25kaXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICA7OyBGSVhNRTogUGFzcyBhIGJl dHRlciBsZXhpY2FsIGNvbnRleHQuCisgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGV2YWwg ZXhwYW5kZXIgdCkpCisgICAgICAgICAgICAgICh3cm9uZy1udW1iZXItb2YtYXJndW1lbnRz CisgICAgICAgICAgICAgICAoYW5kIHBhcmVudHMgYXJnbGlzdCA7OyB0eXBlIGlzIG5vdCBh dG9taWMKKyAgICAgICAgICAgICAgICAgICAgKGVycm9yICJUeXBlICVTIHdpdGggcGFyZW50 cyBpcyBub3QgYXRvbWljOiAlUyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUg YXJnbGlzdCkpKSkpCiAgICAgICAgICAgIChwcmVkaWNhdGUKICAgICAgICAgICAgIChwY2Fz ZSBzcGVjaWZpZXIKICAgICAgICAgICAgICAgKGAoc2F0aXNmaWVzICxmKSBgIycsZikKZGlm ZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1wcmVsb2FkZWQuZWwgYi9saXNwL2VtYWNz LWxpc3AvY2wtcHJlbG9hZGVkLmVsCmluZGV4IDcxYjRhODYzYjMwLi41NTg4NTZiODdmZSAx MDA2NDQKLS0tIGEvbGlzcC9lbWFjcy1saXNwL2NsLXByZWxvYWRlZC5lbAorKysgYi9saXNw L2VtYWNzLWxpc3AvY2wtcHJlbG9hZGVkLmVsCkBAIC00NzMsOSArNDczLDYgQEAgcHJpbWl0 aXZlLWZ1bmN0aW9uCiAKIDs7OzsgU3VwcG9ydCBmb3IgYGNsLWRlZnR5cGUnLgogCi0oZGVm dmFyIGNsLS1kZXJpdmVkLXR5cGUtbGlzdCBuaWwKLSAgIlByZWNlZGVuY2UgbGlzdCBvZiB0 aGUgZGVmaW5lZCBjbC10eXBlcy4iKQotCiA7OyBGSVhNRTogVGhlIGBjbC1kZWZ0eXBlLWhh bmRsZXInIHByb3BlcnR5IHNob3VsZCBhcmd1YWJseSBiZSB0dXJuZWQKIDs7IGludG8gYSBm aWVsZCBvZiB0aGlzIHN0cnVjdCAoYnV0IGl0IGhhcyBwZXJmb3JtYW5jZSBhbmQKIDs7IGNv bXBhdGliaWxpdHkgaW1wbGljYXRpb25zLCBzbyBsZXQncyBub3QgbWFrZSB0aGF0IGNoYW5n ZSBmb3Igbm93KS4KQEAgLTUxMSw3ICs1MDgsOCBAQCBjbC0tZGVmaW5lLWRlcml2ZWQtdHlw ZQogICAgICAgICAgIDs7ICJjb21wbGVtZW50IiBhbm90aGVyIGRlY2xhcmF0aW9uIG9mIHRo ZSBzYW1lIHR5cGUsCiAgICAgICAgICAgOzsgc28gbWF5YmUgd2Ugc2hvdWxkIHR1cm4gdGhp cyBpbnRvIGEgd2FybmluZyAoYW5kCiAgICAgICAgICAgOzsgbm90IG92ZXJ3cml0ZSB0aGUg YGNsLS1maW5kLWNsYXNzJyBpbiB0aGF0IGNhc2UpPwotICAgICAgICAgIChlcnJvciAiVHlw ZSAlUyBhbHJlYWR5IGluIGFub3RoZXIgY2xhc3M6ICVTIiBuYW1lICh0eXBlLW9mIGNsYXNz KSkpKQorICAgICAgICAgIChlcnJvciAiVHlwZSAlUyBhbHJlYWR5IGluIGFub3RoZXIgY2xh c3M6ICVTIgorICAgICAgICAgICAgICAgICBuYW1lICh0eXBlLW9mIGNsYXNzKSkpKQogICAg IDs7IFNldHVwIGEgdHlwZSBkZXNjcmlwdG9yIGZvciBOQU1FLgogICAgIChzZXRmIChjbC0t ZmluZC1jbGFzcyBuYW1lKQogICAgICAgICAgIChjbC0tZGVyaXZlZC10eXBlLWNsYXNzLW1h a2UKQEAgLTUyMSwxOSArNTE5LDcgQEAgY2wtLWRlZmluZS1kZXJpdmVkLXR5cGUKICAgICAg ICAgICAgcGFyZW50cykpCiAgICAgKGRlZmluZS1zeW1ib2wtcHJvcCBuYW1lICdjbC1kZWZ0 eXBlLWhhbmRsZXIgZXhwYW5kZXIpCiAgICAgKHdoZW4gcHJlZGljYXRlCi0gICAgICAoZGVm aW5lLXN5bWJvbC1wcm9wIG5hbWUgJ2NsLWRlZnR5cGUtc2F0aXNmaWVzIHByZWRpY2F0ZSkK LSAgICAgIDs7IElmIHRoZSB0eXBlIGNhbiBiZSB1c2VkIHdpdGhvdXQgYXJndW1lbnRzLCBy ZWNvcmQgaXQgZm9yCi0gICAgICA7OyB1c2UgYnkgYGNsLXR5cGVzLW9mJy4KLSAgICAgIDs7 IFRoZSBvcmRlciBpbiBgY2wtLWRlcml2ZWQtdHlwZS1saXN0JyBpcyBpbXBvcnRhbnQsIGJ1 dCB0aGUKLSAgICAgIDs7IGNvbnN0cnVjdG9yIG9mIHRoZSBjbGFzcyBgY2wtdHlwZS1jbGFz cycgYWxyZWFkeSBlbnN1cmVzIHRoYXQKLSAgICAgIDs7IHBhcmVudCB0eXBlcyBtdXN0IGJl IGRlZmluZWQgYmVmb3JlIHRoZWlyICJjaGlsZCIgdHlwZXMKLSAgICAgIDs7IChpLmUuIGFs cmVhZHkgYWRkZWQgdG8gdGhlIGBjbC0tZGVyaXZlZC10eXBlLWxpc3QnIGZvciB0eXBlcwot ICAgICAgOzsgZGVmaW5lZCB3aXRoIGBjbC1kZWZ0eXBlJykuICBTbyBpdCBpcyBlbm91Z2gg dG8gc2ltcGx5IHB1c2gKLSAgICAgIDs7IGEgbmV3IHR5cGUgYXQgdGhlIGJlZ2lubmluZyBv ZiB0aGUgbGlzdC4KLSAgICAgIDs7IFJlZGVmaW5pdGlvbiBpcyBhIGNhbiBvZiB3b3JtcyBh bnl3YXksIHNvIHdlIGRvbid0IHRyeSB0byBiZSBjbGV2ZXIKLSAgICAgIDs7IGluIHRoYXQg Y2FzZS4KLSAgICAgIChvciAobWVtcSBuYW1lIGNsLS1kZXJpdmVkLXR5cGUtbGlzdCkKLSAg ICAgICAgICAocHVzaCBuYW1lIGNsLS1kZXJpdmVkLXR5cGUtbGlzdCkpKSkpCisgICAgICAo ZGVmaW5lLXN5bWJvbC1wcm9wIG5hbWUgJ2NsLWRlZnR5cGUtc2F0aXNmaWVzIHByZWRpY2F0 ZSkpKSkKIAogOzsgTWFrZSBzdXJlIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGggY2wtZGVmc3Vi c3QgY2FuIGJlIGlubGluZWQgZXZlbiBpbgogOzsgcGFja2FnZXMgd2hpY2ggZG8gbm90IHJl cXVpcmUgQ0wuICBXZSBkb24ndCBwdXQgYW4gYXV0b2xvYWQgY29va2llCmRpZmYgLS1naXQg YS90ZXN0L2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9l bWFjcy1saXNwL2NsLWV4dHJhLXRlc3RzLmVsCmluZGV4IDUyOTBlZDlkMDRlLi5mMjk1MmQ1 ZTQ1ZiAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL2VtYWNzLWxpc3AvY2wtZXh0cmEtdGVzdHMu ZWwKKysrIGIvdGVzdC9saXNwL2VtYWNzLWxpc3AvY2wtZXh0cmEtdGVzdHMuZWwKQEAgLTM5 Miw3ICszOTIsNyBAQCBteS1mb28KICAgICAgICAgICAoY2wtY2FsbC1uZXh0LW1ldGhvZCkp KQogCiAoZXJ0LWRlZnRlc3QgY2wtdHlwZXMtdGVzdCAoKQotICAiVGVzdCB0eXBlcyBkZWZp bml0aW9uLCBjbC10eXBlcy1vZiBhbmQgbWV0aG9kIGRpc3BhdGNoaW5nLiIKKyAgIlRlc3Qg dHlwZXMgZGVmaW5pdGlvbiwgc3BlY2lhbGl6ZXJzIGFuZCBtZXRob2QgZGlzcGF0Y2hpbmcu IgogCiAgIDs7IEludmFsaWQgREFHIGVycm9yCiAgIDs7IEZJWE1FOiBXZSBkb24ndCB0ZXN0 IHRoYXQgYW55IG1vcmUuCkBAIC00MDUsMjYgKzQwNSwzNSBAQCBjbC10eXBlcy10ZXN0CiAg IDs7ICAgbGV4aWNhbC1iaW5kaW5nCiAgIDs7ICAgKSkKIAotICA7OyBUZXN0IHRoYXQgKGNs LXR5cGVzLW9mIDQpIGlzIChtdWx0aXBsZXMtb2YtNCBtdWx0aXBsZXMtb2YtMiAuLi4pCi0g IDs7IFRlc3QgdGhhdCAoY2wtdHlwZXMtb2YgNikgaXMgKG11bHRpcGxlcy1vZi0zIG11bHRp cGxlcy1vZi0yIC4uLikKLSAgOzsgVGVzdCB0aGF0IChjbC10eXBlcy1vZiAxMikgaXMgKG11 bHRpcGxlcy1vZi00IG11bHRpcGxlcy1vZi0zIG11bHRpcGxlcy1vZi0yIC4uLikKKyAgOzsg V2l0aCBwb3NzaWJsZSAndHlwZXMnIGluIG11bHRpcGxlcy1vZi17MiwzLDR9IHZlcmlmeSB0 aGF0OgogICAobGV0ICgodHlwZXMgJyhtdWx0aXBsZXMtb2YtMiBtdWx0aXBsZXMtb2YtMyBt dWx0aXBsZXMtb2YtNCkpKQorCisgICAgOzsgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6 ZXJzICAyIHR5cGVzKSBpcyBtdWx0aXBsZXMtb2YtMgogICAgIChzaG91bGQgKGVxdWFsICco bXVsdGlwbGVzLW9mLTIpCi0JCSAgIChzZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiAy KSB0eXBlcykpKQorCQkgICAoc2VxLWludGVyc2VjdGlvbgorICAgICAgICAgICAgICAgICAg ICAoY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMgMiB0eXBlcykgdHlwZXMpKSkKIAor ICAgIDs7IChjbC0tZGVyaXZlZC10eXBlLXNwZWNpYWxpemVycyAgNCB0eXBlcykgaXMgbXVs dGlwbGVzLW9mLXs0LDJ9CiAgICAgKHNob3VsZCAoZXF1YWwgJyhtdWx0aXBsZXMtb2YtNCBt dWx0aXBsZXMtb2YtMikKLQkJICAgKHNlcS1pbnRlcnNlY3Rpb24gKGNsLXR5cGVzLW9mIDQp IHR5cGVzKSkpCisJCSAgIChzZXEtaW50ZXJzZWN0aW9uCisgICAgICAgICAgICAgICAgICAg IChjbC0tZGVyaXZlZC10eXBlLXNwZWNpYWxpemVycyA0IHR5cGVzKSB0eXBlcykpKQogCisg ICAgOzsgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzICA2IHR5cGVzKSBpcyBtdWx0 aXBsZXMtb2YtezMsMn0KICAgICAoc2hvdWxkIChlcXVhbCAnKG11bHRpcGxlcy1vZi0zIG11 bHRpcGxlcy1vZi0yKQotCQkgICAoc2VxLWludGVyc2VjdGlvbiAoY2wtdHlwZXMtb2YgNikg dHlwZXMpKSkKKwkJICAgKHNlcS1pbnRlcnNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAg KGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzIDYgdHlwZXMpIHR5cGVzKSkpCiAKLSAg ICAoc2hvdWxkIChtZW1iZXIgKHNlcS1pbnRlcnNlY3Rpb24gKGNsLXR5cGVzLW9mIDEyKSB0 eXBlcykKKyAgICA7OyAoY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMgMTIgdHlwZXMp IGlzIG11bHRpcGxlcy1vZi17NCwzLDJ9CisgICAgKHNob3VsZCAobWVtYmVyIChzZXEtaW50 ZXJzZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1zcGVj aWFsaXplcnMgMTIgdHlwZXMpIHR5cGVzKQogCQkgICAgOzsgT3JkZXIgYmV0d2VlbiAzIGFu ZCA0LzIgaXMgdW5kZWZpbmVkLgogCQkgICAgJygobXVsdGlwbGVzLW9mLTMgbXVsdGlwbGVz LW9mLTQgbXVsdGlwbGVzLW9mLTIpCiAJCSAgICAgIChtdWx0aXBsZXMtb2YtNCBtdWx0aXBs ZXMtb2YtMiBtdWx0aXBsZXMtb2YtMykpKSkKIAorICAgIDs7IChjbC0tZGVyaXZlZC10eXBl LXNwZWNpYWxpemVycyAgNSB0eXBlcykgaXMgbm90IG9mIGFueSAndHlwZXMnCiAgICAgKHNo b3VsZCAoZXF1YWwgJygpCi0JCSAgIChzZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiA1 KSB0eXBlcykpKQorCQkgICAoc2VxLWludGVyc2VjdGlvbgorICAgICAgICAgICAgICAgICAg ICAoY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMgNSB0eXBlcykgdHlwZXMpKSkKICAg ICApCiAKICAgOzs7IE1ldGhvZCBkaXNwYXRjaGluZy4K --------------XKGvkDKydXzx4Xuiv2cB7JSZ--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 20 Sep 2025 09:36:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 20 05:36:22 2025 Received: from localhost ([127.0.0.1]:44307 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uzu10-0002qU-6e for submit <at> debbugs.gnu.org; Sat, 20 Sep 2025 05:36:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39396) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uzu0x-0002q6-Fb for 77725 <at> debbugs.gnu.org; Sat, 20 Sep 2025 05:36:19 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1uzu0r-0006Lo-EW; Sat, 20 Sep 2025 05:36:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=waD1b7ywzkKmI8ScysFubpmWcFok3CKeE5FLSq+2Qcw=; b=oxem02m2c7bZ 85FtoWQuiAtHtX6l+eJjZtzX+KUqfEYir8y+QV0DWKr/vL+cdeaHTc6YKN7me6RkpaHT+pqIK8m74 wbP22mCXtBolphgh1I93kGelASi7DiWehUcrwTgTvrJBt9Jocvi+8Gx3uFsCRYN9kgOiy2iNXJLem OhfwOnar3JMDXP840xPgtBIGb4YH+24Pow5Hiyw0o5EyjYHPjdb5hLQcSorA27VteyA1hcAMM+EdI w2hyAMjOz/LGcHpeM0yh7iLwLPYhYVU7PK6eYZ/TXiM6wqwvLSbl8oBorgSwG3rQSyYyQLTo7mz9q t/TiqoJvNAuAKgEhcLjcTg==; Date: Sat, 20 Sep 2025 12:36:09 +0300 Message-Id: <868qi9ihyu.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: monnier@HIDDEN In-Reply-To: <86cy84gg3u.fsf@HIDDEN> (message from Eli Zaretskii on Sat, 06 Sep 2025 11:06:13 +0300) Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN> <438393de-6706-48ff-b029-a94eeb59718c@HIDDEN> <11647451-b3d3-4760-abe6-a053b4062213@HIDDEN> <86jz2ub73d.fsf@HIDDEN> <jwv1pp19opg.fsf-monnier+emacs@HIDDEN> <86cy84gg3u.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77725 Cc: da_vid@HIDDEN, 77725 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Cc: da_vid@HIDDEN, 77725 <at> debbugs.gnu.org > Date: Sat, 06 Sep 2025 11:06:13 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > From: Stefan Monnier <monnier@HIDDEN> > > Cc: David Ponce <da_vid@HIDDEN>, 77725 <at> debbugs.gnu.org > > Date: Sun, 24 Aug 2025 03:14:21 -0400 > > > > > Stefan, any comments? > > > > [ Oops, sorry, putting it back on my TODO. ] > > Soon, > > Ping! Ping! Ping!
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 6 Sep 2025 08:06:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 06 04:06:26 2025 Received: from localhost ([127.0.0.1]:33821 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uunwI-0000wO-1z for submit <at> debbugs.gnu.org; Sat, 06 Sep 2025 04:06:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44056) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uunwE-0000w5-JB for 77725 <at> debbugs.gnu.org; Sat, 06 Sep 2025 04:06:23 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1uunw7-0007tz-QG; Sat, 06 Sep 2025 04:06:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=aMBI8E4H3754EamK19p2XiBFDRBdkzoRLNzrMX568X8=; b=Qug4IvCbvZms wEWr2VIyZ7wsdIF1kgWf2/Ny/tjkiPt0zwInIHn4ZSMmsprcppNFO/ZtYmgF8N0UZnZlStIx6Liwq YtsRel1ggXXWtY4P35tDvhXqcXrjanKUzbElkPmfdGaWlj87RDWXtBet7EL+w06sADdKCxE8A/M4C zWFRPjZctfStOq8/kqV34MagmxA/hZwbfFk+9+CxpX1EFS+Z37LOf6TepFZ8OvlCm7aclR/nvBL0c Yppgp3kyd1XsNVYozg4gZKDJjitPSdcjLFI3Z9v2NaLZ5bnrzwXDmE1VeDyc6JkgXR7xUBqnksOe6 JMXyyVsJq0kiJN7NyvTv4g==; Date: Sat, 06 Sep 2025 11:06:13 +0300 Message-Id: <86cy84gg3u.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwv1pp19opg.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Sun, 24 Aug 2025 03:14:21 -0400) Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN> <438393de-6706-48ff-b029-a94eeb59718c@HIDDEN> <11647451-b3d3-4760-abe6-a053b4062213@HIDDEN> <86jz2ub73d.fsf@HIDDEN> <jwv1pp19opg.fsf-monnier+emacs@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77725 Cc: da_vid@HIDDEN, 77725 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: David Ponce <da_vid@HIDDEN>, 77725 <at> debbugs.gnu.org > Date: Sun, 24 Aug 2025 03:14:21 -0400 > > > Stefan, any comments? > > [ Oops, sorry, putting it back on my TODO. ] > Soon, Ping!
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 24 Aug 2025 07:14:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Aug 24 03:14:34 2025
Received: from localhost ([127.0.0.1]:43186 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uq4vy-00060Y-4J
for submit <at> debbugs.gnu.org; Sun, 24 Aug 2025 03:14:34 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:10367)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uq4vv-000606-Q8
for 77725 <at> debbugs.gnu.org; Sun, 24 Aug 2025 03:14:32 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id DF5F54408F6;
Sun, 24 Aug 2025 03:14:25 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1756019665;
bh=Na/R84TAs+g1hhB1mKqnqoMyYz4GhBAvwsp0vuvLOt4=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=IyZ8udf5nQ/in6lUC4bE3Xx7vf6OAGRLnmozn/YsTs9YaKK9FK6TMhEsATRy+Y3FK
6u/hOTjd4cDIRjgkX4HkPSR2GmBFZhsyYxjtiQ/yNPtg5mKoU3vIwn5rnkbvJrZXeH
HvDt+YRgjMHyaEWuYwrkHtoV+j6ravzUR5xz9IQabX6KH1dWVi/bC2eop1hul/WtRe
N/Yedst+yiLVSlQqEuIVX+ukvYq8mL23Zp3Pb3wGQRnSFibNPn48U6rlozwvbtKZ+G
QnyeAFeVSKvmtebYe8n7yFizUxLVYujr7q5GNCoV4Eg1sVAriTcI5BMCeHeBFQbbPz
vtE3KkuQnuvFA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 16D4144077C;
Sun, 24 Aug 2025 03:14:25 -0400 (EDT)
Received: from asado (dyn.144-85-186-084.dsl.vtx.ch [144.85.186.84])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 008E712047F;
Sun, 24 Aug 2025 03:14:23 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <86jz2ub73d.fsf@HIDDEN>
Message-ID: <jwv1pp19opg.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN>
<438393de-6706-48ff-b029-a94eeb59718c@HIDDEN>
<11647451-b3d3-4760-abe6-a053b4062213@HIDDEN>
<86jz2ub73d.fsf@HIDDEN>
Date: Sun, 24 Aug 2025 03:14:21 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL 0.046 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: David Ponce <da_vid@HIDDEN>, 77725 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Stefan, any comments?
[ Oops, sorry, putting it back on my TODO. ]
Soon,
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 23 Aug 2025 11:39:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Aug 23 07:39:18 2025 Received: from localhost ([127.0.0.1]:38885 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1upmac-0002jM-62 for submit <at> debbugs.gnu.org; Sat, 23 Aug 2025 07:39:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49444) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1upmaV-0002j0-D2 for 77725 <at> debbugs.gnu.org; Sat, 23 Aug 2025 07:39:15 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1upmaO-0003IV-Sz; Sat, 23 Aug 2025 07:39:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=z/RcJ+qn851+3Y/IafsU1JVxd1hZUQjdIEL3IkHSdEM=; b=TOXKt008KUBs AiSLTjU7yL7MI1bBBZk2biq3ft9mMkA14KCCvq4j204bRZi59K0Cy0uiXsJbRTOE6iwZO5qXqCRSD IJiCZic+YaiLqxs61LUobazUwqA3ZB5PEZm7Ua8s56QiaLl7vLWlciBJUajESOV1Y6eqybXNABPEC oDOqFTVwEwbFS/xk2UAQR2nG40An5blfC9ZMqXjwiHwkPNy2lAKTi61gmiXJne86l48uQ1qJyKenK Cx1Ol6E0M3JjeyFR7P+XO6rVrfFL//U642g0fLxjEzoCdH82bxHYEl2eF/o1f9DqMG08Z/RKwAT4Z zDWRR5mIvi70EHhJFYmy0w==; Date: Sat, 23 Aug 2025 14:39:02 +0300 Message-Id: <86jz2ub73d.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: David Ponce <da_vid@HIDDEN> In-Reply-To: <11647451-b3d3-4760-abe6-a053b4062213@HIDDEN> (message from David Ponce on Mon, 11 Aug 2025 17:42:34 +0200) Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN> <438393de-6706-48ff-b029-a94eeb59718c@HIDDEN> <11647451-b3d3-4760-abe6-a053b4062213@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, monnier@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Date: Mon, 11 Aug 2025 17:42:34 +0200 > From: David Ponce <da_vid@HIDDEN> > Cc: 77725 <at> debbugs.gnu.org > > Hello Stefan, Eli, > > Please find attached the last patch I proposed to speed up and > simplify dispatching of methods with derived types specializers, > refreshed against the current master. I also wrote this change log > proposal: > > 2025-08-11 David Ponce <da_vid@HIDDEN> > > To speed up dispatch of methods with derived types specializers, > limit the list of types that need to be checked to those used in > methods specializers of the called generic function. > > * lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher): Add > an optional second argument to the tagcode function to receive the > methods of the called generic function. > (cl--generic-derived-generalizer): Fix arglist of the tagcode > function. > > * lisp/emacs-lisp/cl-extra.el > (cl--derived-type-specializers-memo): Rename `cl--types-of-memo'. > Update doc string. Update callers. > (cl--derived-type-specializers): Rename `cl-types-of'. Make a > private function with a mandatory argument to receive the list of > dispatch types to check. Now that ill-defined type only impact > the methods that use it, it is useless to filter out errors here: > the usual debugging tools are enough to analyze and fix such > ill-defined type. > (cl--derived-type-dispatch-memo): New variable. > (cl--derived-type-dispatch-list): Change variable to be a function > that compute the list of derived types from methods specializers. > (cl--derived-type-generalizer): Call it in the tagcode function. > (cl--derived-type-generalizers): Simplify accordingly. > > * lisp/emacs-lisp/cl-macs.el (cl-deftype): Accept atomic derived > type with both optional arguments and parents. > > * lisp/emacs-lisp/cl-preloaded.el (cl--derived-type-list): Remove. > (cl--define-derived-type): Simplify accordingly. > > * test/lisp/emacs-lisp/cl-extra-tests.el (cl-types-test): Replace > `cl-types-of' by `cl--derived-type-specializers'. > > FYI, I've been using Emacs master for weeks with this patch applied > and my Elisp code using dispatched methods on derived types works > perfectly, with very good performance :-) > > If you agree, it might be worth applying this patch to master so other > people can react? > > Thanks & regards > David Stefan, any comments?
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 11 Aug 2025 15:42:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 11 11:42:45 2025
Received: from localhost ([127.0.0.1]:49807 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1ulUfc-0005QG-FU
for submit <at> debbugs.gnu.org; Mon, 11 Aug 2025 11:42:45 -0400
Received: from smtp-27.smtpout.orange.fr ([80.12.242.27]:57245
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1ulUfW-0005Pv-FC
for 77725 <at> debbugs.gnu.org; Mon, 11 Aug 2025 11:42:41 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id lUfSuZzHKsl3llUfTuJYFY; Mon, 11 Aug 2025 17:42:36 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1754926956;
bh=hQ5esNusuZYpYKZsOCOYCmJnxeyq030rnEdvDTODiM8=;
h=Message-ID:Date:MIME-Version:Subject:From:To;
b=Sy2oSxpgLWuHVvDwi5CXcSy7ZEpUfxRqghtpbPHKoJY73DiEy1s8/CWUjTpqt2Eek
rtq488BTMpZtAckwBycjp27QLa/b55esrCG1VuPCzizjllHntgL70sK9ISM6/GrDU7
4xDJB3xYb2Yig1pItAQXozkDt5c+SvMFfuufMW3Nm/HMC7qBy+Rt98Ip7xbW14TTzW
kQtSkBBC/B4DsBkrrqStJany87MmJcUJmwfU8WbdaTH92Ke5ogbQbqRac6tdtMtNCY
6k4OjbMmRbFPjYJvopXjy+5VRfgAhV2O8wcU6N1rchQuBsbwtiUi12U6ZXP+0eR8az
jOgeuRRfzbPrg==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Mon, 11 Aug 2025 17:42:36 +0200
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------CBf1v5dNIjshFLx0C8a0TD00"
Message-ID: <11647451-b3d3-4760-abe6-a053b4062213@HIDDEN>
Date: Mon, 11 Aug 2025 17:42:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
From: David Ponce <da_vid@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN>
<438393de-6706-48ff-b029-a94eeb59718c@HIDDEN>
Content-Language: fr
In-Reply-To: <438393de-6706-48ff-b029-a94eeb59718c@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
This is a multi-part message in MIME format.
--------------CBf1v5dNIjshFLx0C8a0TD00
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Hello Stefan, Eli,
Please find attached the last patch I proposed to speed up and
simplify dispatching of methods with derived types specializers,
refreshed against the current master. I also wrote this change log
proposal:
2025-08-11 David Ponce <da_vid@HIDDEN>
To speed up dispatch of methods with derived types specializers,
limit the list of types that need to be checked to those used in
methods specializers of the called generic function.
* lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher): Add
an optional second argument to the tagcode function to receive the
methods of the called generic function.
(cl--generic-derived-generalizer): Fix arglist of the tagcode
function.
* lisp/emacs-lisp/cl-extra.el
(cl--derived-type-specializers-memo): Rename `cl--types-of-memo'.
Update doc string. Update callers.
(cl--derived-type-specializers): Rename `cl-types-of'. Make a
private function with a mandatory argument to receive the list of
dispatch types to check. Now that ill-defined type only impact
the methods that use it, it is useless to filter out errors here:
the usual debugging tools are enough to analyze and fix such
ill-defined type.
(cl--derived-type-dispatch-memo): New variable.
(cl--derived-type-dispatch-list): Change variable to be a function
that compute the list of derived types from methods specializers.
(cl--derived-type-generalizer): Call it in the tagcode function.
(cl--derived-type-generalizers): Simplify accordingly.
* lisp/emacs-lisp/cl-macs.el (cl-deftype): Accept atomic derived
type with both optional arguments and parents.
* lisp/emacs-lisp/cl-preloaded.el (cl--derived-type-list): Remove.
(cl--define-derived-type): Simplify accordingly.
* test/lisp/emacs-lisp/cl-extra-tests.el (cl-types-test): Replace
`cl-types-of' by `cl--derived-type-specializers'.
FYI, I've been using Emacs master for weeks with this patch applied
and my Elisp code using dispatched methods on derived types works
perfectly, with very good performance :-)
If you agree, it might be worth applying this patch to master so other
people can react?
Thanks & regards
David
P.S.: I also wrote this function which is not really necessary for
operation, but which I find very useful to know the list of derived
types used by a generic function. If it can be useful to others:
(defun cl--generic-derived-dispatch-types (name)
"Return derived types that dispatch the generic function NAME."
(cl--derived-type-dispatch-list
(cl--generic-method-table
(cl--generic name))))
--------------CBf1v5dNIjshFLx0C8a0TD00
Content-Type: text/x-patch; charset=UTF-8; name="cl-types-V2-2.patch"
Content-Disposition: attachment; filename="cl-types-V2-2.patch"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt
bGlzcC9jbC1leHRyYS5lbAppbmRleCA0YTk4MTlhMjAzOS4uMGQ2ZDI2NmM2NDYgMTAwNjQ0
Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp
c3AvY2wtZXh0cmEuZWwKQEAgLTk3NCwyMiArOTc0LDE2IEBAIGNsLS1kZXNjcmliZS1jbGFz
cy1zbG90cwogOzsgRXh0ZW5kIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgZGF0YSB0eXBlcyB3
aGljaCBhcmUgYWxzbyB2YWxpZAogOzsgYXJndW1lbnQgdHlwZXMgZm9yIGRpc3BhdGNoaW5n
IGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcyAoc2VlIGFsc28KIDs7IDxodHRwczovL2RlYmJ1
Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9Nzc3MjU+KS4KLTs7Ci07OyBUaGUg
bWFpbiBlbnRyeSBwb2ludHMgYXJlOgotOzsKLTs7IC0gYGNsLWRlZnR5cGUnLCB0aGF0IGRl
ZmluZXMgbmV3IGRhdGEgdHlwZXMuCi07OwotOzsgLSBgY2wtdHlwZXMtb2YnLCB0aGF0IHJl
dHVybnMgdGhlIHR5cGVzIGFuIG9iamVjdCBiZWxvbmdzIHRvLgogCiA7OyBFbnN1cmUgZWFj
aCB0eXBlIHNhdGlzZmllcyBgZXFsJy4KLShkZWZ2YXIgY2wtLXR5cGVzLW9mLW1lbW8gKG1h
a2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwpCi0gICJNZW1vaXphdGlvbiB0YWJsZSB1c2Vk
IGluIGBjbC10eXBlcy1vZicuIikKLQotOzsgRklYTUU6IGBjbC10eXBlcy1vZicgQ1BVIGNv
c3QgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIgb2YgdHlwZXMKLTs7IGRlZmluZWQg
d2l0aCBgY2wtZGVmdHlwZScsIHNvIHRoZSBtb3JlIHBvcHVsYXIgaXQgZ2V0cywgdGhlIHNs
b3dlcgotOzsgaXQgYmVjb21lcy4gIEFuZCBvZiBjb3Vyc2UsIHRoZSBjb3N0IG9mIGVhY2gg
dHlwZSBjaGVjayBpcwotOzsgdW5ib3VuZGVkLCBzbyBhIHNpbmdsZSAiZXhwZW5zaXZlIiB0
eXBlIGNhbiBzbG93IGV2ZXJ5dGhpbmcgZG93bgotOzsgZnVydGhlci4KKyhkZWZ2YXIgY2wt
LWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMtbWVtbyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0
ICdlcXVhbCkKKyAgIk1lbW9pemF0aW9uIHRhYmxlIHVzZWQgaW4gYGNsLS1kZXJpdmVkLXR5
cGUtc3BlY2lhbGl6ZXJzJy4iKQorCis7OyBGSVhNRTogYGNsLS1kZXJpdmVkLXR5cGUtc3Bl
Y2lhbGl6ZXJzJyBDUFUgY29zdCBpcyBwcm9wb3J0aW9uYWwgdG8KKzs7IHRoZSBudW1iZXIg
b2YgdHlwZXMgZGVmaW5lZCB3aXRoIGBjbC1kZWZ0eXBlJywgc28gdGhlIG1vcmUgcG9wdWxh
ciBpdAorOzsgZ2V0cywgdGhlIHNsb3dlciBpdCBiZWNvbWVzLiAgQW5kIG9mIGNvdXJzZSwg
dGhlIGNvc3Qgb2YgZWFjaCB0eXBlCis7OyBjaGVjayBpcyB1bmJvdW5kZWQsIHNvIGEgc2lu
Z2xlICJleHBlbnNpdmUiIHR5cGUgY2FuIHNsb3cgZXZlcnl0aGluZworOzsgZG93biBmdXJ0
aGVyLgogOzsKIDs7IFRoZSB1c3VhbCBkaXNwYXRjaCBpcwogOzsKQEAgLTEwMjYsNDkgKzEw
MjAsNTAgQEAgY2wtLXR5cGVzLW9mLW1lbW8KIDs7ICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBg
dCcgImR1bW15IHBhcmVudCIuICBbIFdlIGNvdWxkIGV2ZW4gZ28gY3JhenkKIDs7ICAgYW5k
IHRyeSBhbmQgZ3Vlc3MgUEFSRU5UUyB3aGVuIG5vdCBwcm92aWRlZCwgYnkgYW5hbHl6aW5n
IHRoZQogOzsgICB0eXBlJ3MgZGVmaW5pdGlvbi4gXQotOzsgLSBpbiBgY2wtdHlwZXMtb2Yn
IHN0YXJ0IGJ5IGNhbGxpbmcgYGNsLXR5cGUtb2YnLCB0aGVuIHVzZSB0aGUgbWFwCi07OyAg
IHRvIGZpbmQgd2hpY2ggY2wtdHlwZXMgbWF5IG5lZWQgdG8gYmUgY2hlY2tlZC4KKzs7IC0g
aW4gYGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyBzdGFydCBieSBjYWxsaW5nIGBj
bC10eXBlLW9mJywKKzs7ICAgdGhlbiB1c2UgdGhlIG1hcCB0byBmaW5kIHdoaWNoIGNsLXR5
cGVzIG1heSBuZWVkIHRvIGJlIGNoZWNrZWQuCiA7OwogOzs7IyMjYXV0b2xvYWQKLShkZWZ1
biBjbC10eXBlcy1vZiAob2JqZWN0ICZvcHRpb25hbCB0eXBlcykKLSAgIlJldHVybiB0aGUg
YXRvbWljIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgotUmV0dXJuIGFuIHVuaXF1ZSBsaXN0
IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCi1tb3N0IHNw
ZWNpZmljIHR5cGUgdG8gdGhlIG1vc3QgZ2VuZXJhbC4KLVRZUEVTIGlzIGFuIGludGVybmFs
IGFyZ3VtZW50LiIKLSAgKGxldCogKChmb3VuZCBuaWwpKQorKGRlZnVuIGNsLS1kZXJpdmVk
LXR5cGUtc3BlY2lhbGl6ZXJzIChvYmplY3QgdHlwZXMpCisgICJSZXR1cm4gdGhlIGxpc3Qg
b2Ygc3BlY2lhbGl6ZXJzIGZvciBPQkpFQ1QsIGRlcml2ZWQgZnJvbSBUWVBFUy4KK1JldHVy
biBhbiB1bmlxdWUgKGVxKSBsaXN0IG9mIGF0b21pYyB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0
bywgb3JkZXJlZAorZnJvbSB0aGUgbW9zdCBzcGVjaWZpYyB0eXBlIHRvIHRoZSBtb3N0IGdl
bmVyYWwuCitUWVBFUyBpcyBhIGxpc3Qgb2YgdHlwZXMgdGhhdCBPQkpFQ1QgY2FuIHBvdGVu
dGlhbGx5IGJlbG9uZyB0by4iCisgIChsZXQqICgoZm91bmQgKGxpc3QgKGNsLXR5cGUtb2Yg
b2JqZWN0KSkpKQogICAgIDs7IEJ1aWxkIGEgbGlzdCBvZiBhbGwgdHlwZXMgT0JKRUNUIGJl
bG9uZ3MgdG8uCi0gICAgKGRvbGlzdCAodHlwZSAob3IgdHlwZXMgY2wtLWRlcml2ZWQtdHlw
ZS1saXN0KSkKLSAgICAgIChsZXQgKChwcmVkIChnZXQgdHlwZSAnY2wtZGVmdHlwZS1zYXRp
c2ZpZXMpKSkKLSAgICAgICAgKGFuZAotICAgICAgICAgOzsgSWYgT0JKRUNUIGlzIG9mIHR5
cGUsIGFkZCB0eXBlIHRvIHRoZSBtYXRjaGluZyBsaXN0LgotICAgICAgICAgKGlmIHR5cGVz
Ci0gICAgICAgICAgICAgOzsgRm9yIG1ldGhvZCBkaXNwYXRjaCwgd2UgZG9uJ3QgbmVlZCB0
byBmaWx0ZXIgb3V0IGVycm9ycywKLSAgICAgICAgICAgICA7OyBzaW5jZSB3ZSBjYW4gcHJl
c3VtZSB0aGF0IG1ldGhvZCBkaXNwYXRjaCBpcyB1c2VkIG9ubHkgb24KLSAgICAgICAgICAg
ICA7OyBzYW5lbHktZGVmaW5lZCB0eXBlcy4KLSAgICAgICAgICAgICAoZnVuY2FsbCBwcmVk
IG9iamVjdCkKLSAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlCi0g
ICAgICAgICAgICAgICAoZnVuY2FsbCBwcmVkIG9iamVjdCkKLSAgICAgICAgICAgICAoZXJy
b3IgKHNldHEgY2wtLWRlcml2ZWQtdHlwZS1saXN0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgIChkZWxxIHR5cGUgY2wtLWRlcml2ZWQtdHlwZS1saXN0KSkKLSAgICAgICAgICAgICAg
ICAgICAgKHdhcm4gICJjbC10eXBlcy1vZiAlUzogJXMiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlIChlcnJvci1tZXNzYWdlLXN0cmluZyBlKSkKLSAgICAgICAgICAgICAg
ICAgICAgbmlsKSkpCi0gICAgICAgICAocHVzaCB0eXBlIGZvdW5kKSkpKQotICAgIChwdXNo
IChjbC10eXBlLW9mIG9iamVjdCkgZm91bmQpCi0gICAgOzsgUmV0dXJuIHRoZSBsaXN0IG9m
IHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCB3aGljaCBpcyBhbHNvIHRoZSBsaXN0Ci0gICAg
Ozsgb2Ygc3BlY2lmaWVycyBmb3IgT0JKRUNULiBUaGlzIG1lbW9pemF0aW9uIGhhcyB0d28g
cHVycG9zZXM6CisgICAgKGRvbGlzdCAodHlwZSB0eXBlcykKKyAgICAgIDs7IElmIE9CSkVD
VCBpcyBvZiB0eXBlLCBhZGQgdHlwZSB0byB0aGUgbWF0Y2hpbmcgbGlzdC4KKyAgICAgIChp
ZiAoZnVuY2FsbCAoZ2V0IHR5cGUgJ2NsLWRlZnR5cGUtc2F0aXNmaWVzKSBvYmplY3QpCisg
ICAgICAgICAgKHB1c2ggdHlwZSBmb3VuZCkpKQorICAgIDs7IFRoaXMgbWVtb2l6YXRpb24g
aGFzIHR3byBwdXJwb3NlczoKICAgICA7OyAtIFNwZWVkIHVwIGNvbXB1dGF0aW9uLgogICAg
IDs7IC0gTWFrZSBzdXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgKGVxKSBvYmplY3Qs
IHNvIHRoYXQgdGhlCiAgICAgOzsgICBtZXRob2QgZGlzcGF0Y2gncyBvd24gY2FjaGluZyB3
b3JrcyBhcyBpdCBzaG91bGQuCi0gICAgKHdpdGgtbWVtb2l6YXRpb24gKGdldGhhc2ggZm91
bmQgY2wtLXR5cGVzLW9mLW1lbW8pCisgICAgKHdpdGgtbWVtb2l6YXRpb24gKGdldGhhc2gg
Zm91bmQgY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMtbWVtbykKICAgICAgIDs7IENv
bXB1dGUgYW4gb3JkZXJlZCBsaXN0IG9mIHR5cGVzIGZyb20gdGhlIERBRy4KLSAgICAgIChs
ZXQgKGRhZykKLSAgICAgICAgKGRvbGlzdCAodHlwZSBmb3VuZCkKLSAgICAgICAgICAocHVz
aCAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzIHR5cGUpKSBkYWcpKQot
ICAgICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cyBkYWcpKSkpKQotCi0oZGVmdmFyIGNsLS1k
ZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCBuaWwKLSAgIkxpc3Qgb2YgdHlwZXMgdGhhdCBu
ZWVkIHRvIGJlIGNoZWNrZWQgZHVyaW5nIGRpc3BhdGNoLiIpCisgICAgICAobWVyZ2Utb3Jk
ZXJlZC1saXN0cworICAgICAgIChtYXBjYXIgKGxhbWJkYSAodHlwZSkKKyAgICAgICAgICAg
ICAgICAgKGNsLS1jbGFzcy1hbGxwYXJlbnRzIChjbC0tZmluZC1jbGFzcyB0eXBlKSkpCisg
ICAgICAgICAgICAgICBmb3VuZCkpKSkpCisKKyhkZWZ2YXIgY2wtLWRlcml2ZWQtdHlwZS1k
aXNwYXRjaC1tZW1vIChtYWtlLWhhc2gtdGFibGUgOndlYWtuZXNzICdrZXkpCisgICJNZW1v
aXphdGlvbiB0YWJsZSB1c2VkIGluIGBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3Qn
LiIpCisKKyhkZWZ1biBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QgKG1ldGhvZHMp
CisgICJHYXRoZXIgdGhlIGxpc3Qgb2YgZGVyaXZlZCB0eXBlcyBmcm9tIE1FVEhPRFMgc3Bl
Y2lhbGl6ZXJzLgorUmV0dXJuIHRoZSBsaXN0IG9mIHR5cGVzIHRvIGJlIGNoZWNrZWQgZHVy
aW5nIGRpc3BhdGNoIG9mIHRoZSBnZW5lcmljCitmdW5jdGlvbiB3aXRoIHRoZXNlIE1FVEhP
RFMuIgorICAod2l0aC1tZW1vaXphdGlvbiAoZ2V0aGFzaCBtZXRob2RzIGNsLS1kZXJpdmVk
LXR5cGUtZGlzcGF0Y2gtbWVtbykKKyAgICAobGV0ICh0eXBlcykKKyAgICAgIChkb2xpc3Qg
KG1ldGhvZCBtZXRob2RzKQorICAgICAgICAoZG9saXN0ICh0eXBlIChjbC0tZ2VuZXJpYy1t
ZXRob2Qtc3BlY2lhbGl6ZXJzIG1ldGhvZCkpCisgICAgICAgICAgKGFuZCAoc3ltYm9scCB0
eXBlKQorICAgICAgICAgICAgICAgKGNsLWRlcml2ZWQtdHlwZS1jbGFzcy1wIChjbC0tZmlu
ZC1jbGFzcyB0eXBlKSkKKyAgICAgICAgICAgICAgIChub3QgKG1lbXEgdHlwZSB0eXBlcykp
CisgICAgICAgICAgICAgICAocHVzaCB0eXBlIHR5cGVzKSkpKQorICAgICAgOzsgYGNsLS1k
ZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyB3aWxsIGVuc3VyZSB0aGF0IHR5cGVzIGFyZSBp
bgorICAgICAgOzsgdGhlIGV4cGVjdGVkIGRpc3BhdGNoIG9yZGVyLgorICAgICAgdHlwZXMp
KSkKIAogKGNsLWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS1kZXJpdmVkLXR5cGUt
Z2VuZXJhbGl6ZXIKICAgOzsgRklYTUU6IFRoaXMgcHJpb3JpdHkgY2FuJ3QgYmUgYWx3YXlz
IHJpZ2h0LiAgOi0oCkBAIC0xMDgwLDMxICsxMDc1LDI2IEBAIGNsLS1kZXJpdmVkLXR5cGUt
Z2VuZXJhbGl6ZXIKICAgOzsgRml4aW5nIHRoaXMgMTAwJSBpcyBpbXBvc3NpYmxlIHNvIHRo
aXMgZ2VuZXJhbGl6ZXIgaXMgY29uZGVtbmVkIHRvCiAgIDs7IHN1ZmZlciBmcm9tICJ1bmRl
ZmluZWQgbWV0aG9kIG9yZGVyaW5nIiBwcm9ibGVtcywgdW5sZXNzL3VudGlsIHdlCiAgIDs7
IHJlc3RyaWN0IGl0IHNvbWVob3cgdG8gYSBzdWJzZXQgdGhhdCB3ZSBjYW4gaGFuZGxlIHJl
bGlhYmx5LgotICAyMCA7OyAidHlwZW9mIiA8ICJjbC10eXBlcy1vZiIgPCAiaGVhZCIgcHJp
b3JpdHkKLSAgKGxhbWJkYSAob2JqICZyZXN0IF8pIGAoY2wtdHlwZXMtb2YgLG9iaiBjbC0t
ZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QpKQorICAyMCA7OyAidHlwZW9mIiA8ICJkZXJp
dmVkLXR5cGVzIiA8ICJoZWFkIiBwcmlvcml0eQorICAobGFtYmRhIChvYmogJm9wdGlvbmFs
IG1ldGhvZHMgJnJlc3QgXykKKyAgICBgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJz
CisgICAgICAsb2JqCisgICAgICA7OyBDaGVjayBvbmx5IGRlcml2ZWQgdHlwZXMgdXNlZCBh
cyBNRVRIT0RTIHNwZWNpYWxpemVycyBvZiB0aGUKKyAgICAgIDs7IGdlbmVyaWMgZnVuY3Rp
b24gY3VycmVudGx5IGNhbGxlZC4gIGBjbC1nZW5lcmljLWdlbmVyYWxpemVycycKKyAgICAg
IDs7IGZvciAiZGVyaXZlZCB0eXBlIiBlbnN1cmVzIHRoYXQgYXQgbGVhc3Qgb25lIHN1Y2gg
bWV0aG9kCisgICAgICA7OyBleGlzdHMuCisgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1kaXNw
YXRjaC1saXN0ICxtZXRob2RzKSkpCiAgIChsYW1iZGEgKHRhZyAmcmVzdCBfKSAoaWYgKGNv
bnNwIHRhZykgdGFnKSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gY2wtLWRlcml2ZWQt
dHlwZS1nZW5lcmFsaXplcnMgKHR5cGUpCiAgIDs7IE1ha2Ugc3VyZSB0aGlzIGRlcml2ZWQg
dHlwZSBjYW4gYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50cy4KLSAgKGxldCAoKGV4cGFuZGVy
IChvciAoZ2V0IHR5cGUgJ2NsLWRlZnR5cGUtaGFuZGxlcikKLSAgICAgICAgICAgICAgICAg
ICAgICAoZXJyb3IgIlR5cGUgJVMgbGFja3MgY2wtZGVmdHlwZS1oYW5kbGVyIiB0eXBlKSkp
KQotICAgIDs7IENoZWNrIHRoYXQgdGhlIHR5cGUgY2FuIGJlIHVzZWQgd2l0aG91dCBhcmd1
bWVudHMuCi0gICAgKGZ1bmNhbGwgZXhwYW5kZXIpCi0gICAgOzsgQ2hlY2sgdGhhdCB3ZSBo
YXZlIGEgcHJlY29tcHV0ZWQgcHJlZGljYXRlIHNpbmNlIHRoYXQncyB3aGF0Ci0gICAgOzsg
YGNsLXR5cGVzLW9mJyB1c2VzLgotICAgICh1bmxlc3MgKGdldCB0eXBlICdjbC1kZWZ0eXBl
LXNhdGlzZmllcykKLSAgICAgIChlcnJvciAiVHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNh
dGlzZmllcyIgdHlwZSkpKQotICA7OyBBZGQgYSBuZXcgZGlzcGF0Y2ggdHlwZSB0byB0aGUg
ZGlzcGF0Y2ggbGlzdCwgdGhlbgotICA7OyBzeW5jaHJvbml6ZSB3aXRoIGBjbC0tZGVyaXZl
ZC10eXBlLWxpc3QnIHNvIHRoYXQgYm90aCBsaXN0cyBmb2xsb3cKLSAgOzsgdGhlIHNhbWUg
dHlwZSBwcmVjZWRlbmNlIG9yZGVyLgotICA7OyBUaGUgYG1lcmdlLW9yZGVyZWQtbGlzdHMn
IGlzIGBjbC10eXBlcy1vZicgc2hvdWxkIHdlIG1ha2UgdGhpcwotICA7OyBvcmRlcmluZyB1
bm5lY2Vzc2FyeSwgYnV0IGl0J3Mgc3RpbGwgaGFuZHkgZm9yIGFsbCB0aG9zZSB0eXBlcwot
ICA7OyB0aGF0IGRvbid0IGRlY2xhcmUgdGhlaXIgcGFyZW50cy4KLSAgKHVubGVzcyAobWVt
cSB0eXBlIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCkKLSAgICAoc2V0cSBjbC0t
ZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QKLSAgICAgICAgICAoc2VxLWludGVyc2VjdGlv
biBjbC0tZGVyaXZlZC10eXBlLWxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y29ucyB0eXBlIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCkpKSkKKyAgKGZ1bmNh
bGwgKG9yIChnZXQgdHlwZSAnY2wtZGVmdHlwZS1oYW5kbGVyKQorICAgICAgICAgICAgICAg
KGVycm9yICJUeXBlICVTIGxhY2tzIGNsLWRlZnR5cGUtaGFuZGxlciIgdHlwZSkpKQorICA7
OyBDaGVjayB0aGF0IHdlIGhhdmUgYSBwcmVjb21wdXRlZCBwcmVkaWNhdGUgc2luY2UgdGhh
dCdzIHdoYXQKKyAgOzsgYGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyB1c2VzLgor
ICAob3IgKGdldCB0eXBlICdjbC1kZWZ0eXBlLXNhdGlzZmllcykKKyAgICAgIChlcnJvciAi
VHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNhdGlzZmllcyIgdHlwZSkpCiAgIChsaXN0IGNs
LS1kZXJpdmVkLXR5cGUtZ2VuZXJhbGl6ZXIpKQogCiA7Ozs7IFRyYWlsZXIKZGlmZiAtLWdp
dCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1nZW5lcmljLmVsIGIvbGlzcC9lbWFjcy1saXNwL2Ns
LWdlbmVyaWMuZWwKaW5kZXggZDAyZDBkNmMyYTQuLjM5MjRkYWJlYWVkIDEwMDY0NAotLS0g
YS9saXNwL2VtYWNzLWxpc3AvY2wtZ2VuZXJpYy5lbAorKysgYi9saXNwL2VtYWNzLWxpc3Av
Y2wtZ2VuZXJpYy5lbApAQCAtNzA2LDExICs3MDYsMTIgQEAgY2wtLWdlbmVyaWMtZ2V0LWRp
c3BhdGNoZXIKICAgICAobGV0KiAoKGRpc3BhdGNoLWFyZyAoY2FyIGRpc3BhdGNoKSkKICAg
ICAgICAgICAgKGdlbmVyYWxpemVycyAoY2RyIGRpc3BhdGNoKSkKICAgICAgICAgICAgKGxl
eGljYWwtYmluZGluZyB0KQorICAgICAgICAgICAobWV0aG9kcy1hcmcgKG1ha2Utc3ltYm9s
ICJtZXRob2RzIikpCiAgICAgICAgICAgICh0YWdjb2RlcwogICAgICAgICAgICAgKG1hcGNh
ciAobGFtYmRhIChnZW5lcmFsaXplcikKICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs
bCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29kZS1mdW5jdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsaXplcikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYXJnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YXJnIG1ldGhvZHMtYXJnKSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGl6ZXJzKSkK
ICAgICAgICAgICAgKHR5cGVzY29kZXMKICAgICAgICAgICAgIChtYXBjYXIKQEAgLTcxOSw3
ICs3MjAsNyBAQCBjbC0tZ2VuZXJpYy1nZXQtZGlzcGF0Y2hlcgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYWxpemVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICwo
ZnVuY2FsbCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29kZS1mdW5jdGlvbgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGl6ZXIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmcpKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2FyZyBtZXRob2RzLWFyZykpKQogICAgICAgICAgICAgIGdl
bmVyYWxpemVycykpCiAgICAgICAgICAgICh0YWctZXhwCiAgICAgICAgICAgICA7OyBNaW5v
ciBvcHRpbWl6YXRpb246IHNpbmNlIHRoaXMgdGFnLWV4cCBpcwpAQCAtNzQzLDE0ICs3NDQs
MTQgQEAgY2wtLWdlbmVyaWMtZ2V0LWRpc3BhdGNoZXIKICAgICAgIDs7IG92ZXJraWxsOiBi
ZXR0ZXIganVzdCB1c2UgYSBgY2wtdHlwZXAnIHRlc3QuCiAgICAgICAoZnVuY2FsbAogICAg
ICAgIGNsLS1nZW5lcmljLWNvbXBpbGVyCi0gICAgICAgYChsYW1iZGEgKGdlbmVyaWMgZGlz
cGF0Y2hlcy1sZWZ0IG1ldGhvZHMpCisgICAgICAgYChsYW1iZGEgKGdlbmVyaWMgZGlzcGF0
Y2hlcy1sZWZ0ICxtZXRob2RzLWFyZykKICAgICAgICAgICAobGV0ICgobWV0aG9kLWNhY2hl
IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcWwpKSkKICAgICAgICAgICAgIChsYW1iZGEg
KCxAZml4ZWRhcmdzICZyZXN0IGFyZ3MpCiAgICAgICAgICAgICAgIChsZXQgLGJpbmRpbmdz
CiAgICAgICAgICAgICAgICAgKGFwcGx5ICh3aXRoLW1lbW9pemF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoZ2V0aGFzaCAsdGFnLWV4cCBtZXRob2QtY2FjaGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNsLS1nZW5lcmljLWNhY2hlLW1pc3MKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJpYyAnLGRpc3BhdGNoLWFyZyBkaXNwYXRjaGVzLWxl
ZnQgbWV0aG9kcworICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljICcsZGlzcGF0
Y2gtYXJnIGRpc3BhdGNoZXMtbGVmdCAsbWV0aG9kcy1hcmcKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLChpZiAoY2RyIHR5cGVzY29kZXMpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYChhcHBlbmQgLEB0eXBlc2NvZGVzKSAoY2FyIHR5cGVzY29kZXMpKSkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICxAZml4ZWRhcmdzIGFyZ3MpKSkpKSkpKSkKQEAgLTE0
MDEsNyArMTQwMiw3IEBAIGNsLS1nZW5lcmljLWRlcml2ZWQtc3BlY2lhbGl6ZXJzCiAgICAg
ICAgICAgKGRlcml2ZWQtbW9kZS1hbGwtcGFyZW50cyBtb2RlKSkpCiAKIChjbC1nZW5lcmlj
LWRlZmluZS1nZW5lcmFsaXplciBjbC0tZ2VuZXJpYy1kZXJpdmVkLWdlbmVyYWxpemVyCi0g
IDkwIChsYW1iZGEgKG5hbWUpIGAoYW5kIChzeW1ib2xwICxuYW1lKSAoZnVuY3Rpb25wICxu
YW1lKSAsbmFtZSkpCisgIDkwIChsYW1iZGEgKG5hbWUgJnJlc3QgXykgYChhbmQgKHN5bWJv
bHAgLG5hbWUpIChmdW5jdGlvbnAgLG5hbWUpICxuYW1lKSkKICAgIydjbC0tZ2VuZXJpYy1k
ZXJpdmVkLXNwZWNpYWxpemVycykKIAogKGNsLWRlZm1ldGhvZCBjbC1nZW5lcmljLWdlbmVy
YWxpemVycyAoKF9zcGVjaWFsaXplciAoaGVhZCBkZXJpdmVkLW1vZGUpKSkKZGlmZiAtLWdp
dCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1tYWNzLmVsIGIvbGlzcC9lbWFjcy1saXNwL2NsLW1h
Y3MuZWwKaW5kZXggMDhhNmNiZjIwOWQuLjYyYzMyODMzN2NjIDEwMDY0NAotLS0gYS9saXNw
L2VtYWNzLWxpc3AvY2wtbWFjcy5lbAorKysgYi9saXNwL2VtYWNzLWxpc3AvY2wtbWFjcy5l
bApAQCAtMzgwNCwxMiArMzgwNCwxNyBAQCBjbC1kZWZ0eXBlCiAgICAgICAoY2wtY2FsbGYg
KGxhbWJkYSAoeCkgKGRlbHEgcGFyZW50LWRlY2wgeCkpIChjZHIgZGVjbGFyZXMpKQogICAg
ICAgKHdoZW4gKGVxdWFsIGRlY2xhcmVzICcoZGVjbGFyZSkpCiAgICAgICAgIChjbC1jYWxs
ZiAobGFtYmRhICh4KSAoZGVscSBkZWNsYXJlcyB4KSkgZGVjbHMpKSkKLSAgICAoYW5kIHBh
cmVudHMgYXJnbGlzdAotICAgICAgICAgKGVycm9yICJQYXJlbnRzIHNwZWNpZmllZCwgYnV0
IGFyZ2xpc3Qgbm90IGVtcHR5IikpCiAgICAgKGxldCogKChleHBhbmRlcgotICAgICAgICAg
ICAgYChjbC1mdW5jdGlvbiAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkgLEBk
ZWNscyAsQGZvcm1zKSkpCi0gICAgICAgICAgIDs7IEZJWE1FOiBQYXNzIGEgYmV0dGVyIGxl
eGljYWwgY29udGV4dC4KLSAgICAgICAgICAgKHNwZWNpZmllciAoaWdub3JlLWVycm9ycyAo
ZnVuY2FsbCAoZXZhbCBleHBhbmRlciB0KSkpKQorICAgICAgICAgICAgYChjbC1mdW5jdGlv
bgorICAgICAgICAgICAgICAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkgLEBk
ZWNscyAsQGZvcm1zKSkpCisgICAgICAgICAgIChzcGVjaWZpZXIKKyAgICAgICAgICAgIChj
b25kaXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICA7OyBGSVhNRTogUGFzcyBhIGJl
dHRlciBsZXhpY2FsIGNvbnRleHQuCisgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGV2YWwg
ZXhwYW5kZXIgdCkpCisgICAgICAgICAgICAgIChlcnJvcgorICAgICAgICAgICAgICAgKGlm
IHBhcmVudHMKKyAgICAgICAgICAgICAgICAgICAoZXJyb3IgIlR5cGUgJVMgd2l0aCBwYXJl
bnRzIGlzIG5vdCBhdG9taWM6ICVTIgorICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
IGFyZ2xpc3QpKSkpKQogICAgICAgICAgICAocHJlZGljYXRlCiAgICAgICAgICAgICAocGNh
c2Ugc3BlY2lmaWVyCiAgICAgICAgICAgICAgIChgKHNhdGlzZmllcyAsZikgYCMnLGYpCmRp
ZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3AvY2wtcHJlbG9hZGVkLmVsIGIvbGlzcC9lbWFj
cy1saXNwL2NsLXByZWxvYWRlZC5lbAppbmRleCA3MWI0YTg2M2IzMC4uNTU4ODU2Yjg3ZmUg
MTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1wcmVsb2FkZWQuZWwKKysrIGIvbGlz
cC9lbWFjcy1saXNwL2NsLXByZWxvYWRlZC5lbApAQCAtNDczLDkgKzQ3Myw2IEBAIHByaW1p
dGl2ZS1mdW5jdGlvbgogCiA7Ozs7IFN1cHBvcnQgZm9yIGBjbC1kZWZ0eXBlJy4KIAotKGRl
ZnZhciBjbC0tZGVyaXZlZC10eXBlLWxpc3QgbmlsCi0gICJQcmVjZWRlbmNlIGxpc3Qgb2Yg
dGhlIGRlZmluZWQgY2wtdHlwZXMuIikKLQogOzsgRklYTUU6IFRoZSBgY2wtZGVmdHlwZS1o
YW5kbGVyJyBwcm9wZXJ0eSBzaG91bGQgYXJndWFibHkgYmUgdHVybmVkCiA7OyBpbnRvIGEg
ZmllbGQgb2YgdGhpcyBzdHJ1Y3QgKGJ1dCBpdCBoYXMgcGVyZm9ybWFuY2UgYW5kCiA7OyBj
b21wYXRpYmlsaXR5IGltcGxpY2F0aW9ucywgc28gbGV0J3Mgbm90IG1ha2UgdGhhdCBjaGFu
Z2UgZm9yIG5vdykuCkBAIC01MTEsNyArNTA4LDggQEAgY2wtLWRlZmluZS1kZXJpdmVkLXR5
cGUKICAgICAgICAgICA7OyAiY29tcGxlbWVudCIgYW5vdGhlciBkZWNsYXJhdGlvbiBvZiB0
aGUgc2FtZSB0eXBlLAogICAgICAgICAgIDs7IHNvIG1heWJlIHdlIHNob3VsZCB0dXJuIHRo
aXMgaW50byBhIHdhcm5pbmcgKGFuZAogICAgICAgICAgIDs7IG5vdCBvdmVyd3JpdGUgdGhl
IGBjbC0tZmluZC1jbGFzcycgaW4gdGhhdCBjYXNlKT8KLSAgICAgICAgICAoZXJyb3IgIlR5
cGUgJVMgYWxyZWFkeSBpbiBhbm90aGVyIGNsYXNzOiAlUyIgbmFtZSAodHlwZS1vZiBjbGFz
cykpKSkKKyAgICAgICAgICAoZXJyb3IgIlR5cGUgJVMgYWxyZWFkeSBpbiBhbm90aGVyIGNs
YXNzOiAlUyIKKyAgICAgICAgICAgICAgICAgbmFtZSAodHlwZS1vZiBjbGFzcykpKSkKICAg
ICA7OyBTZXR1cCBhIHR5cGUgZGVzY3JpcHRvciBmb3IgTkFNRS4KICAgICAoc2V0ZiAoY2wt
LWZpbmQtY2xhc3MgbmFtZSkKICAgICAgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1jbGFzcy1t
YWtlCkBAIC01MjEsMTkgKzUxOSw3IEBAIGNsLS1kZWZpbmUtZGVyaXZlZC10eXBlCiAgICAg
ICAgICAgIHBhcmVudHMpKQogICAgIChkZWZpbmUtc3ltYm9sLXByb3AgbmFtZSAnY2wtZGVm
dHlwZS1oYW5kbGVyIGV4cGFuZGVyKQogICAgICh3aGVuIHByZWRpY2F0ZQotICAgICAgKGRl
ZmluZS1zeW1ib2wtcHJvcCBuYW1lICdjbC1kZWZ0eXBlLXNhdGlzZmllcyBwcmVkaWNhdGUp
Ci0gICAgICA7OyBJZiB0aGUgdHlwZSBjYW4gYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50cywg
cmVjb3JkIGl0IGZvcgotICAgICAgOzsgdXNlIGJ5IGBjbC10eXBlcy1vZicuCi0gICAgICA7
OyBUaGUgb3JkZXIgaW4gYGNsLS1kZXJpdmVkLXR5cGUtbGlzdCcgaXMgaW1wb3J0YW50LCBi
dXQgdGhlCi0gICAgICA7OyBjb25zdHJ1Y3RvciBvZiB0aGUgY2xhc3MgYGNsLXR5cGUtY2xh
c3MnIGFscmVhZHkgZW5zdXJlcyB0aGF0Ci0gICAgICA7OyBwYXJlbnQgdHlwZXMgbXVzdCBi
ZSBkZWZpbmVkIGJlZm9yZSB0aGVpciAiY2hpbGQiIHR5cGVzCi0gICAgICA7OyAoaS5lLiBh
bHJlYWR5IGFkZGVkIHRvIHRoZSBgY2wtLWRlcml2ZWQtdHlwZS1saXN0JyBmb3IgdHlwZXMK
LSAgICAgIDs7IGRlZmluZWQgd2l0aCBgY2wtZGVmdHlwZScpLiAgU28gaXQgaXMgZW5vdWdo
IHRvIHNpbXBseSBwdXNoCi0gICAgICA7OyBhIG5ldyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcg
b2YgdGhlIGxpc3QuCi0gICAgICA7OyBSZWRlZmluaXRpb24gaXMgYSBjYW4gb2Ygd29ybXMg
YW55d2F5LCBzbyB3ZSBkb24ndCB0cnkgdG8gYmUgY2xldmVyCi0gICAgICA7OyBpbiB0aGF0
IGNhc2UuCi0gICAgICAob3IgKG1lbXEgbmFtZSBjbC0tZGVyaXZlZC10eXBlLWxpc3QpCi0g
ICAgICAgICAgKHB1c2ggbmFtZSBjbC0tZGVyaXZlZC10eXBlLWxpc3QpKSkpKQorICAgICAg
KGRlZmluZS1zeW1ib2wtcHJvcCBuYW1lICdjbC1kZWZ0eXBlLXNhdGlzZmllcyBwcmVkaWNh
dGUpKSkpCiAKIDs7IE1ha2Ugc3VyZSBmdW5jdGlvbnMgZGVmaW5lZCB3aXRoIGNsLWRlZnN1
YnN0IGNhbiBiZSBpbmxpbmVkIGV2ZW4gaW4KIDs7IHBhY2thZ2VzIHdoaWNoIGRvIG5vdCBy
ZXF1aXJlIENMLiAgV2UgZG9uJ3QgcHV0IGFuIGF1dG9sb2FkIGNvb2tpZQpkaWZmIC0tZ2l0
IGEvdGVzdC9saXNwL2VtYWNzLWxpc3AvY2wtZXh0cmEtdGVzdHMuZWwgYi90ZXN0L2xpc3Av
ZW1hY3MtbGlzcC9jbC1leHRyYS10ZXN0cy5lbAppbmRleCA1MjkwZWQ5ZDA0ZS4uZjI5NTJk
NWU0NWYgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9lbWFjcy1saXNwL2NsLWV4dHJhLXRlc3Rz
LmVsCisrKyBiL3Rlc3QvbGlzcC9lbWFjcy1saXNwL2NsLWV4dHJhLXRlc3RzLmVsCkBAIC0z
OTIsNyArMzkyLDcgQEAgbXktZm9vCiAgICAgICAgICAgKGNsLWNhbGwtbmV4dC1tZXRob2Qp
KSkKIAogKGVydC1kZWZ0ZXN0IGNsLXR5cGVzLXRlc3QgKCkKLSAgIlRlc3QgdHlwZXMgZGVm
aW5pdGlvbiwgY2wtdHlwZXMtb2YgYW5kIG1ldGhvZCBkaXNwYXRjaGluZy4iCisgICJUZXN0
IHR5cGVzIGRlZmluaXRpb24sIHNwZWNpYWxpemVycyBhbmQgbWV0aG9kIGRpc3BhdGNoaW5n
LiIKIAogICA7OyBJbnZhbGlkIERBRyBlcnJvcgogICA7OyBGSVhNRTogV2UgZG9uJ3QgdGVz
dCB0aGF0IGFueSBtb3JlLgpAQCAtNDA1LDI2ICs0MDUsMzUgQEAgY2wtdHlwZXMtdGVzdAog
ICA7OyAgIGxleGljYWwtYmluZGluZwogICA7OyAgICkpCiAKLSAgOzsgVGVzdCB0aGF0IChj
bC10eXBlcy1vZiA0KSBpcyAobXVsdGlwbGVzLW9mLTQgbXVsdGlwbGVzLW9mLTIgLi4uKQot
ICA7OyBUZXN0IHRoYXQgKGNsLXR5cGVzLW9mIDYpIGlzIChtdWx0aXBsZXMtb2YtMyBtdWx0
aXBsZXMtb2YtMiAuLi4pCi0gIDs7IFRlc3QgdGhhdCAoY2wtdHlwZXMtb2YgMTIpIGlzICht
dWx0aXBsZXMtb2YtNCBtdWx0aXBsZXMtb2YtMyBtdWx0aXBsZXMtb2YtMiAuLi4pCisgIDs7
IFdpdGggcG9zc2libGUgJ3R5cGVzJyBpbiBtdWx0aXBsZXMtb2YtezIsMyw0fSB2ZXJpZnkg
dGhhdDoKICAgKGxldCAoKHR5cGVzICcobXVsdGlwbGVzLW9mLTIgbXVsdGlwbGVzLW9mLTMg
bXVsdGlwbGVzLW9mLTQpKSkKKworICAgIDs7IChjbC0tZGVyaXZlZC10eXBlLXNwZWNpYWxp
emVycyAgMiB0eXBlcykgaXMgbXVsdGlwbGVzLW9mLTIKICAgICAoc2hvdWxkIChlcXVhbCAn
KG11bHRpcGxlcy1vZi0yKQotCQkgICAoc2VxLWludGVyc2VjdGlvbiAoY2wtdHlwZXMtb2Yg
MikgdHlwZXMpKSkKKwkJICAgKHNlcS1pbnRlcnNlY3Rpb24KKyAgICAgICAgICAgICAgICAg
ICAgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzIDIgdHlwZXMpIHR5cGVzKSkpCiAK
KyAgICA7OyAoY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMgIDQgdHlwZXMpIGlzIG11
bHRpcGxlcy1vZi17NCwyfQogICAgIChzaG91bGQgKGVxdWFsICcobXVsdGlwbGVzLW9mLTQg
bXVsdGlwbGVzLW9mLTIpCi0JCSAgIChzZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiA0
KSB0eXBlcykpKQorCQkgICAoc2VxLWludGVyc2VjdGlvbgorICAgICAgICAgICAgICAgICAg
ICAoY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMgNCB0eXBlcykgdHlwZXMpKSkKIAor
ICAgIDs7IChjbC0tZGVyaXZlZC10eXBlLXNwZWNpYWxpemVycyAgNiB0eXBlcykgaXMgbXVs
dGlwbGVzLW9mLXszLDJ9CiAgICAgKHNob3VsZCAoZXF1YWwgJyhtdWx0aXBsZXMtb2YtMyBt
dWx0aXBsZXMtb2YtMikKLQkJICAgKHNlcS1pbnRlcnNlY3Rpb24gKGNsLXR5cGVzLW9mIDYp
IHR5cGVzKSkpCisJCSAgIChzZXEtaW50ZXJzZWN0aW9uCisgICAgICAgICAgICAgICAgICAg
IChjbC0tZGVyaXZlZC10eXBlLXNwZWNpYWxpemVycyA2IHR5cGVzKSB0eXBlcykpKQogCi0g
ICAgKHNob3VsZCAobWVtYmVyIChzZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiAxMikg
dHlwZXMpCisgICAgOzsgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzIDEyIHR5cGVz
KSBpcyBtdWx0aXBsZXMtb2YtezQsMywyfQorICAgIChzaG91bGQgKG1lbWJlciAoc2VxLWlu
dGVyc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAgKGNsLS1kZXJpdmVkLXR5cGUtc3Bl
Y2lhbGl6ZXJzIDEyIHR5cGVzKSB0eXBlcykKIAkJICAgIDs7IE9yZGVyIGJldHdlZW4gMyBh
bmQgNC8yIGlzIHVuZGVmaW5lZC4KIAkJICAgICcoKG11bHRpcGxlcy1vZi0zIG11bHRpcGxl
cy1vZi00IG11bHRpcGxlcy1vZi0yKQogCQkgICAgICAobXVsdGlwbGVzLW9mLTQgbXVsdGlw
bGVzLW9mLTIgbXVsdGlwbGVzLW9mLTMpKSkpCiAKKyAgICA7OyAoY2wtLWRlcml2ZWQtdHlw
ZS1zcGVjaWFsaXplcnMgIDUgdHlwZXMpIGlzIG5vdCBvZiBhbnkgJ3R5cGVzJwogICAgIChz
aG91bGQgKGVxdWFsICcoKQotCQkgICAoc2VxLWludGVyc2VjdGlvbiAoY2wtdHlwZXMtb2Yg
NSkgdHlwZXMpKSkKKwkJICAgKHNlcS1pbnRlcnNlY3Rpb24KKyAgICAgICAgICAgICAgICAg
ICAgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzIDUgdHlwZXMpIHR5cGVzKSkpCiAg
ICAgKQogCiAgIDs7OyBNZXRob2QgZGlzcGF0Y2hpbmcuCg==
--------------CBf1v5dNIjshFLx0C8a0TD00--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 5 Jun 2025 09:15:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 05 05:15:08 2025
Received: from localhost ([127.0.0.1]:58899 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uN6gk-0007RK-U0
for submit <at> debbugs.gnu.org; Thu, 05 Jun 2025 05:15:08 -0400
Received: from smtp-73.smtpout.orange.fr ([80.12.242.73]:60791
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uN6gg-0007QL-Ad
for 77725 <at> debbugs.gnu.org; Thu, 05 Jun 2025 05:15:04 -0400
Received: from [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]
([IPv6:2a01:cb15:8915:8600:87c3:d46d:c911:d504])
by smtp.orange.fr with ESMTPA
id N6gduMIWSXQs6N6gdu8OmX; Thu, 05 Jun 2025 11:15:00 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1749114900;
bh=nsxOJ06FZNzjUoeKGwRTQWv9YDaCEfuqj9wbcdbmOMc=;
h=Message-ID:Date:MIME-Version:Subject:From:To;
b=qtMPrTrwwAzUg4OutBnvLFTJ+V78w3jtyir1Z2WV//UEFeedvQJt2RhnFMsRlf+fX
PUeB8IC/7dpETnkltLMOlAXYqhWQB0SHdd7eOb+9LSkUFUL/9sqpS4GrTSq8LgUw4M
DMgHIzpqKsO/S9JATmW8a8mJpBiQH0YOOI39EMQ2RiEJUz1JjrzC9kNuqb7rcajGIP
rO2kzWSmzWKSnEUElKbaQFuG7InZ2KpeOGX4zQ1iuoc45V4D2vfWIXmwfYzdH8Z4Wu
NK1UqN2VSRjU2WlW5+jyoxRdV6nvD/fCbwIb46MNGtichoUdKwl04KvtwHwpUuorzc
hQL26g/JJHtCg==
X-ME-Helo: [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Thu, 05 Jun 2025 11:15:00 +0200
X-ME-IP: 2a01:cb15:8915:8600:87c3:d46d:c911:d504
Content-Type: multipart/mixed; boundary="------------oC6gbK3DvOl9bE0RVCRQzgKA"
Message-ID: <438393de-6706-48ff-b029-a94eeb59718c@HIDDEN>
Date: Thu, 5 Jun 2025 11:14:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
From: David Ponce <da_vid@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN>
Content-Language: fr, en-US
In-Reply-To: <86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
This is a multi-part message in MIME format.
--------------oC6gbK3DvOl9bE0RVCRQzgKA
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
On 2025-05-24 12:52, David Ponce wrote:
> Hello Stefan,
>
> Please find below the proposal for a new approach to speed up dispatch
> of methods with derived type specializers.
Hello Stefan,
Following our last exchange in French, to feed our discussion more
concretely, please find attached a new patch that explore further the
idea of removing the global variable `cl--derived-type-list', and make
`cl-types-of' a private function named `cl--derived-type-specializers'
with a mandatory argument to receive the list of dispatch types to
check.
The patch also improve a little the `cl-deftype' macro to allow
dispatching of atomic derived type with both optional
arguments and parents, like in this example:
(cl-deftype my-integer ()
'integer)
;; Currently the below declaration is not valid because ARGLIST and
;; PARENTS are both non-nil.
(cl-deftype unsigned-byte (&optional bits)
"Unsigned integer."
(declare (parents my-integer))
`(integer 0 ,(if (memq bits '(nil *)) bits (1- (ash 1 bits)))))
(cl-defmethod test-byte ((this my-integer))
(format "%S is an integer" this))
(cl-defmethod test-byte ((this unsigned-byte))
(format "%S is an unsigned byte - %s" this
(cl-call-next-method)))
David
--------------oC6gbK3DvOl9bE0RVCRQzgKA
Content-Type: text/x-patch; charset=UTF-8; name="cl-types-V2.patch"
Content-Disposition: attachment; filename="cl-types-V2.patch"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt
bGlzcC9jbC1leHRyYS5lbAppbmRleCAxZmUwNDExMDYyZi4uNmNhY2ZmZDg2MTkgMTAwNjQ0
Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp
c3AvY2wtZXh0cmEuZWwKQEAgLTk3MCwyMiArOTcwLDE2IEBAIGNsLS1kZXNjcmliZS1jbGFz
cy1zbG90cwogOzsgRXh0ZW5kIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgZGF0YSB0eXBlcyB3
aGljaCBhcmUgYWxzbyB2YWxpZAogOzsgYXJndW1lbnQgdHlwZXMgZm9yIGRpc3BhdGNoaW5n
IGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcyAoc2VlIGFsc28KIDs7IDxodHRwczovL2RlYmJ1
Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9Nzc3MjU+KS4KLTs7Ci07OyBUaGUg
bWFpbiBlbnRyeSBwb2ludHMgYXJlOgotOzsKLTs7IC0gYGNsLWRlZnR5cGUnLCB0aGF0IGRl
ZmluZXMgbmV3IGRhdGEgdHlwZXMuCi07OwotOzsgLSBgY2wtdHlwZXMtb2YnLCB0aGF0IHJl
dHVybnMgdGhlIHR5cGVzIGFuIG9iamVjdCBiZWxvbmdzIHRvLgogCiA7OyBFbnN1cmUgZWFj
aCB0eXBlIHNhdGlzZmllcyBgZXFsJy4KLShkZWZ2YXIgY2wtLXR5cGVzLW9mLW1lbW8gKG1h
a2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwpCi0gICJNZW1vaXphdGlvbiB0YWJsZSB1c2Vk
IGluIGBjbC10eXBlcy1vZicuIikKLQotOzsgRklYTUU6IGBjbC10eXBlcy1vZicgQ1BVIGNv
c3QgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIgb2YgdHlwZXMKLTs7IGRlZmluZWQg
d2l0aCBgY2wtZGVmdHlwZScsIHNvIHRoZSBtb3JlIHBvcHVsYXIgaXQgZ2V0cywgdGhlIHNs
b3dlcgotOzsgaXQgYmVjb21lcy4gIEFuZCBvZiBjb3Vyc2UsIHRoZSBjb3N0IG9mIGVhY2gg
dHlwZSBjaGVjayBpcwotOzsgdW5ib3VuZGVkLCBzbyBhIHNpbmdsZSAiZXhwZW5zaXZlIiB0
eXBlIGNhbiBzbG93IGV2ZXJ5dGhpbmcgZG93bgotOzsgZnVydGhlci4KKyhkZWZ2YXIgY2wt
LWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMtbWVtbyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0
ICdlcXVhbCkKKyAgIk1lbW9pemF0aW9uIHRhYmxlIHVzZWQgaW4gYGNsLS1kZXJpdmVkLXR5
cGUtc3BlY2lhbGl6ZXJzJy4iKQorCis7OyBGSVhNRTogYGNsLS1kZXJpdmVkLXR5cGUtc3Bl
Y2lhbGl6ZXJzJyBDUFUgY29zdCBpcyBwcm9wb3J0aW9uYWwgdG8KKzs7IHRoZSBudW1iZXIg
b2YgdHlwZXMgZGVmaW5lZCB3aXRoIGBjbC1kZWZ0eXBlJywgc28gdGhlIG1vcmUgcG9wdWxh
ciBpdAorOzsgZ2V0cywgdGhlIHNsb3dlciBpdCBiZWNvbWVzLiAgQW5kIG9mIGNvdXJzZSwg
dGhlIGNvc3Qgb2YgZWFjaCB0eXBlCis7OyBjaGVjayBpcyB1bmJvdW5kZWQsIHNvIGEgc2lu
Z2xlICJleHBlbnNpdmUiIHR5cGUgY2FuIHNsb3cgZXZlcnl0aGluZworOzsgZG93biBmdXJ0
aGVyLgogOzsKIDs7IFRoZSB1c3VhbCBkaXNwYXRjaCBpcwogOzsKQEAgLTEwMjIsNDkgKzEw
MTYsNTAgQEAgY2wtLXR5cGVzLW9mLW1lbW8KIDs7ICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBg
dCcgImR1bW15IHBhcmVudCIuICBbIFdlIGNvdWxkIGV2ZW4gZ28gY3JhenkKIDs7ICAgYW5k
IHRyeSBhbmQgZ3Vlc3MgUEFSRU5UUyB3aGVuIG5vdCBwcm92aWRlZCwgYnkgYW5hbHl6aW5n
IHRoZQogOzsgICB0eXBlJ3MgZGVmaW5pdGlvbi4gXQotOzsgLSBpbiBgY2wtdHlwZXMtb2Yn
IHN0YXJ0IGJ5IGNhbGxpbmcgYGNsLXR5cGUtb2YnLCB0aGVuIHVzZSB0aGUgbWFwCi07OyAg
IHRvIGZpbmQgd2hpY2ggY2wtdHlwZXMgbWF5IG5lZWQgdG8gYmUgY2hlY2tlZC4KKzs7IC0g
aW4gYGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyBzdGFydCBieSBjYWxsaW5nIGBj
bC10eXBlLW9mJywKKzs7ICAgdGhlbiB1c2UgdGhlIG1hcCB0byBmaW5kIHdoaWNoIGNsLXR5
cGVzIG1heSBuZWVkIHRvIGJlIGNoZWNrZWQuCiA7OwogOzs7IyMjYXV0b2xvYWQKLShkZWZ1
biBjbC10eXBlcy1vZiAob2JqZWN0ICZvcHRpb25hbCB0eXBlcykKLSAgIlJldHVybiB0aGUg
YXRvbWljIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgotUmV0dXJuIGFuIHVuaXF1ZSBsaXN0
IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCi1tb3N0IHNw
ZWNpZmljIHR5cGUgdG8gdGhlIG1vc3QgZ2VuZXJhbC4KLVRZUEVTIGlzIGFuIGludGVybmFs
IGFyZ3VtZW50LiIKLSAgKGxldCogKChmb3VuZCBuaWwpKQorKGRlZnVuIGNsLS1kZXJpdmVk
LXR5cGUtc3BlY2lhbGl6ZXJzIChvYmplY3QgdHlwZXMpCisgICJSZXR1cm4gdGhlIGxpc3Qg
b2Ygc3BlY2lhbGl6ZXJzIGZvciBPQkpFQ1QsIGRlcml2ZWQgZnJvbSBUWVBFUy4KK1JldHVy
biBhbiB1bmlxdWUgKGVxKSBsaXN0IG9mIGF0b21pYyB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0
bywgb3JkZXJlZAorZnJvbSB0aGUgbW9zdCBzcGVjaWZpYyB0eXBlIHRvIHRoZSBtb3N0IGdl
bmVyYWwuCitUWVBFUyBpcyBhIGxpc3Qgb2YgdHlwZXMgdGhhdCBPQkpFQ1QgY2FuIHBvdGVu
dGlhbGx5IGJlbG9uZyB0by4iCisgIChsZXQqICgoZm91bmQgKGxpc3QgKGNsLXR5cGUtb2Yg
b2JqZWN0KSkpKQogICAgIDs7IEJ1aWxkIGEgbGlzdCBvZiBhbGwgdHlwZXMgT0JKRUNUIGJl
bG9uZ3MgdG8uCi0gICAgKGRvbGlzdCAodHlwZSAob3IgdHlwZXMgY2wtLWRlcml2ZWQtdHlw
ZS1saXN0KSkKLSAgICAgIChsZXQgKChwcmVkIChnZXQgdHlwZSAnY2wtZGVmdHlwZS1zYXRp
c2ZpZXMpKSkKLSAgICAgICAgKGFuZAotICAgICAgICAgOzsgSWYgT0JKRUNUIGlzIG9mIHR5
cGUsIGFkZCB0eXBlIHRvIHRoZSBtYXRjaGluZyBsaXN0LgotICAgICAgICAgKGlmIHR5cGVz
Ci0gICAgICAgICAgICAgOzsgRm9yIG1ldGhvZCBkaXNwYXRjaCwgd2UgZG9uJ3QgbmVlZCB0
byBmaWx0ZXIgb3V0IGVycm9ycywKLSAgICAgICAgICAgICA7OyBzaW5jZSB3ZSBjYW4gcHJl
c3VtZSB0aGF0IG1ldGhvZCBkaXNwYXRjaCBpcyB1c2VkIG9ubHkgb24KLSAgICAgICAgICAg
ICA7OyBzYW5lbHktZGVmaW5lZCB0eXBlcy4KLSAgICAgICAgICAgICAoZnVuY2FsbCBwcmVk
IG9iamVjdCkKLSAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlCi0g
ICAgICAgICAgICAgICAoZnVuY2FsbCBwcmVkIG9iamVjdCkKLSAgICAgICAgICAgICAoZXJy
b3IgKHNldHEgY2wtLWRlcml2ZWQtdHlwZS1saXN0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgIChkZWxxIHR5cGUgY2wtLWRlcml2ZWQtdHlwZS1saXN0KSkKLSAgICAgICAgICAgICAg
ICAgICAgKHdhcm4gICJjbC10eXBlcy1vZiAlUzogJXMiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlIChlcnJvci1tZXNzYWdlLXN0cmluZyBlKSkKLSAgICAgICAgICAgICAg
ICAgICAgbmlsKSkpCi0gICAgICAgICAocHVzaCB0eXBlIGZvdW5kKSkpKQotICAgIChwdXNo
IChjbC10eXBlLW9mIG9iamVjdCkgZm91bmQpCi0gICAgOzsgUmV0dXJuIHRoZSBsaXN0IG9m
IHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCB3aGljaCBpcyBhbHNvIHRoZSBsaXN0Ci0gICAg
Ozsgb2Ygc3BlY2lmaWVycyBmb3IgT0JKRUNULiBUaGlzIG1lbW9pemF0aW9uIGhhcyB0d28g
cHVycG9zZXM6CisgICAgKGRvbGlzdCAodHlwZSB0eXBlcykKKyAgICAgIDs7IElmIE9CSkVD
VCBpcyBvZiB0eXBlLCBhZGQgdHlwZSB0byB0aGUgbWF0Y2hpbmcgbGlzdC4KKyAgICAgIChp
ZiAoZnVuY2FsbCAoZ2V0IHR5cGUgJ2NsLWRlZnR5cGUtc2F0aXNmaWVzKSBvYmplY3QpCisg
ICAgICAgICAgKHB1c2ggdHlwZSBmb3VuZCkpKQorICAgIDs7IFRoaXMgbWVtb2l6YXRpb24g
aGFzIHR3byBwdXJwb3NlczoKICAgICA7OyAtIFNwZWVkIHVwIGNvbXB1dGF0aW9uLgogICAg
IDs7IC0gTWFrZSBzdXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgKGVxKSBvYmplY3Qs
IHNvIHRoYXQgdGhlCiAgICAgOzsgICBtZXRob2QgZGlzcGF0Y2gncyBvd24gY2FjaGluZyB3
b3JrcyBhcyBpdCBzaG91bGQuCi0gICAgKHdpdGgtbWVtb2l6YXRpb24gKGdldGhhc2ggZm91
bmQgY2wtLXR5cGVzLW9mLW1lbW8pCisgICAgKHdpdGgtbWVtb2l6YXRpb24gKGdldGhhc2gg
Zm91bmQgY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMtbWVtbykKICAgICAgIDs7IENv
bXB1dGUgYW4gb3JkZXJlZCBsaXN0IG9mIHR5cGVzIGZyb20gdGhlIERBRy4KLSAgICAgIChs
ZXQgKGRhZykKLSAgICAgICAgKGRvbGlzdCAodHlwZSBmb3VuZCkKLSAgICAgICAgICAocHVz
aCAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzIHR5cGUpKSBkYWcpKQot
ICAgICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cyBkYWcpKSkpKQotCi0oZGVmdmFyIGNsLS1k
ZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCBuaWwKLSAgIkxpc3Qgb2YgdHlwZXMgdGhhdCBu
ZWVkIHRvIGJlIGNoZWNrZWQgZHVyaW5nIGRpc3BhdGNoLiIpCisgICAgICAobWVyZ2Utb3Jk
ZXJlZC1saXN0cworICAgICAgIChtYXBjYXIgKGxhbWJkYSAodHlwZSkKKyAgICAgICAgICAg
ICAgICAgKGNsLS1jbGFzcy1hbGxwYXJlbnRzIChjbC0tZmluZC1jbGFzcyB0eXBlKSkpCisg
ICAgICAgICAgICAgICBmb3VuZCkpKSkpCisKKyhkZWZ2YXIgY2wtLWRlcml2ZWQtdHlwZS1k
aXNwYXRjaC1tZW1vIChtYWtlLWhhc2gtdGFibGUgOndlYWtuZXNzICdrZXkpCisgICJNZW1v
aXphdGlvbiB0YWJsZSB1c2VkIGluIGBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3Qn
LiIpCisKKyhkZWZ1biBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QgKG1ldGhvZHMp
CisgICJHYXRoZXIgdGhlIGxpc3Qgb2YgZGVyaXZlZCB0eXBlcyBmcm9tIE1FVEhPRFMgc3Bl
Y2lhbGl6ZXJzLgorUmV0dXJuIHRoZSBsaXN0IG9mIHR5cGVzIHRvIGJlIGNoZWNrZWQgZHVy
aW5nIGRpc3BhdGNoIG9mIHRoZSBnZW5lcmljCitmdW5jdGlvbiB3aXRoIHRoZXNlIE1FVEhP
RFMuIgorICAod2l0aC1tZW1vaXphdGlvbiAoZ2V0aGFzaCBtZXRob2RzIGNsLS1kZXJpdmVk
LXR5cGUtZGlzcGF0Y2gtbWVtbykKKyAgICAobGV0ICh0eXBlcykKKyAgICAgIChkb2xpc3Qg
KG1ldGhvZCBtZXRob2RzKQorICAgICAgICAoZG9saXN0ICh0eXBlIChjbC0tZ2VuZXJpYy1t
ZXRob2Qtc3BlY2lhbGl6ZXJzIG1ldGhvZCkpCisgICAgICAgICAgKGFuZCAoc3ltYm9scCB0
eXBlKQorICAgICAgICAgICAgICAgKGNsLWRlcml2ZWQtdHlwZS1jbGFzcy1wIChjbC0tZmlu
ZC1jbGFzcyB0eXBlKSkKKyAgICAgICAgICAgICAgIChub3QgKG1lbXEgdHlwZSB0eXBlcykp
CisgICAgICAgICAgICAgICAocHVzaCB0eXBlIHR5cGVzKSkpKQorICAgICAgOzsgYGNsLS1k
ZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyB3aWxsIGVuc3VyZSB0aGF0IHR5cGVzIGFyZSBp
bgorICAgICAgOzsgdGhlIGV4cGVjdGVkIGRpc3BhdGNoIG9yZGVyLgorICAgICAgdHlwZXMp
KSkKIAogKGNsLWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS1kZXJpdmVkLXR5cGUt
Z2VuZXJhbGl6ZXIKICAgOzsgRklYTUU6IFRoaXMgcHJpb3JpdHkgY2FuJ3QgYmUgYWx3YXlz
IHJpZ2h0LiAgOi0oCkBAIC0xMDc2LDMxICsxMDcxLDI2IEBAIGNsLS1kZXJpdmVkLXR5cGUt
Z2VuZXJhbGl6ZXIKICAgOzsgRml4aW5nIHRoaXMgMTAwJSBpcyBpbXBvc3NpYmxlIHNvIHRo
aXMgZ2VuZXJhbGl6ZXIgaXMgY29uZGVtbmVkIHRvCiAgIDs7IHN1ZmZlciBmcm9tICJ1bmRl
ZmluZWQgbWV0aG9kIG9yZGVyaW5nIiBwcm9ibGVtcywgdW5sZXNzL3VudGlsIHdlCiAgIDs7
IHJlc3RyaWN0IGl0IHNvbWVob3cgdG8gYSBzdWJzZXQgdGhhdCB3ZSBjYW4gaGFuZGxlIHJl
bGlhYmx5LgotICAyMCA7OyAidHlwZW9mIiA8ICJjbC10eXBlcy1vZiIgPCAiaGVhZCIgcHJp
b3JpdHkKLSAgKGxhbWJkYSAob2JqICZyZXN0IF8pIGAoY2wtdHlwZXMtb2YgLG9iaiBjbC0t
ZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QpKQorICAyMCA7OyAidHlwZW9mIiA8ICJkZXJp
dmVkLXR5cGVzIiA8ICJoZWFkIiBwcmlvcml0eQorICAobGFtYmRhIChvYmogJm9wdGlvbmFs
IG1ldGhvZHMgJnJlc3QgXykKKyAgICBgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJz
CisgICAgICAsb2JqCisgICAgICA7OyBDaGVjayBvbmx5IGRlcml2ZWQgdHlwZXMgdXNlZCBh
cyBNRVRIT0RTIHNwZWNpYWxpemVycyBvZiB0aGUKKyAgICAgIDs7IGdlbmVyaWMgZnVuY3Rp
b24gY3VycmVudGx5IGNhbGxlZC4gIGBjbC1nZW5lcmljLWdlbmVyYWxpemVycycKKyAgICAg
IDs7IGZvciAiZGVyaXZlZCB0eXBlIiBlbnN1cmVzIHRoYXQgYXQgbGVhc3Qgb25lIHN1Y2gg
bWV0aG9kCisgICAgICA7OyBleGlzdHMuCisgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1kaXNw
YXRjaC1saXN0ICxtZXRob2RzKSkpCiAgIChsYW1iZGEgKHRhZyAmcmVzdCBfKSAoaWYgKGNv
bnNwIHRhZykgdGFnKSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gY2wtLWRlcml2ZWQt
dHlwZS1nZW5lcmFsaXplcnMgKHR5cGUpCiAgIDs7IE1ha2Ugc3VyZSB0aGlzIGRlcml2ZWQg
dHlwZSBjYW4gYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50cy4KLSAgKGxldCAoKGV4cGFuZGVy
IChvciAoZ2V0IHR5cGUgJ2NsLWRlZnR5cGUtaGFuZGxlcikKLSAgICAgICAgICAgICAgICAg
ICAgICAoZXJyb3IgIlR5cGUgJVMgbGFja3MgY2wtZGVmdHlwZS1oYW5kbGVyIiB0eXBlKSkp
KQotICAgIDs7IENoZWNrIHRoYXQgdGhlIHR5cGUgY2FuIGJlIHVzZWQgd2l0aG91dCBhcmd1
bWVudHMuCi0gICAgKGZ1bmNhbGwgZXhwYW5kZXIpCi0gICAgOzsgQ2hlY2sgdGhhdCB3ZSBo
YXZlIGEgcHJlY29tcHV0ZWQgcHJlZGljYXRlIHNpbmNlIHRoYXQncyB3aGF0Ci0gICAgOzsg
YGNsLXR5cGVzLW9mJyB1c2VzLgotICAgICh1bmxlc3MgKGdldCB0eXBlICdjbC1kZWZ0eXBl
LXNhdGlzZmllcykKLSAgICAgIChlcnJvciAiVHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNh
dGlzZmllcyIgdHlwZSkpKQotICA7OyBBZGQgYSBuZXcgZGlzcGF0Y2ggdHlwZSB0byB0aGUg
ZGlzcGF0Y2ggbGlzdCwgdGhlbgotICA7OyBzeW5jaHJvbml6ZSB3aXRoIGBjbC0tZGVyaXZl
ZC10eXBlLWxpc3QnIHNvIHRoYXQgYm90aCBsaXN0cyBmb2xsb3cKLSAgOzsgdGhlIHNhbWUg
dHlwZSBwcmVjZWRlbmNlIG9yZGVyLgotICA7OyBUaGUgYG1lcmdlLW9yZGVyZWQtbGlzdHMn
IGlzIGBjbC10eXBlcy1vZicgc2hvdWxkIHdlIG1ha2UgdGhpcwotICA7OyBvcmRlcmluZyB1
bm5lY2Vzc2FyeSwgYnV0IGl0J3Mgc3RpbGwgaGFuZHkgZm9yIGFsbCB0aG9zZSB0eXBlcwot
ICA7OyB0aGF0IGRvbid0IGRlY2xhcmUgdGhlaXIgcGFyZW50cy4KLSAgKHVubGVzcyAobWVt
cSB0eXBlIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCkKLSAgICAoc2V0cSBjbC0t
ZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QKLSAgICAgICAgICAoc2VxLWludGVyc2VjdGlv
biBjbC0tZGVyaXZlZC10eXBlLWxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y29ucyB0eXBlIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCkpKSkKKyAgKGZ1bmNh
bGwgKG9yIChnZXQgdHlwZSAnY2wtZGVmdHlwZS1oYW5kbGVyKQorICAgICAgICAgICAgICAg
KGVycm9yICJUeXBlICVTIGxhY2tzIGNsLWRlZnR5cGUtaGFuZGxlciIgdHlwZSkpKQorICA7
OyBDaGVjayB0aGF0IHdlIGhhdmUgYSBwcmVjb21wdXRlZCBwcmVkaWNhdGUgc2luY2UgdGhh
dCdzIHdoYXQKKyAgOzsgYGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzJyB1c2VzLgor
ICAob3IgKGdldCB0eXBlICdjbC1kZWZ0eXBlLXNhdGlzZmllcykKKyAgICAgIChlcnJvciAi
VHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNhdGlzZmllcyIgdHlwZSkpCiAgIChsaXN0IGNs
LS1kZXJpdmVkLXR5cGUtZ2VuZXJhbGl6ZXIpKQogCiA7Ozs7IFRyYWlsZXIKZGlmZiAtLWdp
dCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1nZW5lcmljLmVsIGIvbGlzcC9lbWFjcy1saXNwL2Ns
LWdlbmVyaWMuZWwKaW5kZXggNGM2YzZhMDAwN2MuLjZjYzk4ZjY5YTJhIDEwMDY0NAotLS0g
YS9saXNwL2VtYWNzLWxpc3AvY2wtZ2VuZXJpYy5lbAorKysgYi9saXNwL2VtYWNzLWxpc3Av
Y2wtZ2VuZXJpYy5lbApAQCAtNzA0LDExICs3MDQsMTIgQEAgY2wtLWdlbmVyaWMtZ2V0LWRp
c3BhdGNoZXIKICAgICAobGV0KiAoKGRpc3BhdGNoLWFyZyAoY2FyIGRpc3BhdGNoKSkKICAg
ICAgICAgICAgKGdlbmVyYWxpemVycyAoY2RyIGRpc3BhdGNoKSkKICAgICAgICAgICAgKGxl
eGljYWwtYmluZGluZyB0KQorICAgICAgICAgICAobWV0aG9kcy1hcmcgKG1ha2Utc3ltYm9s
ICJtZXRob2RzIikpCiAgICAgICAgICAgICh0YWdjb2RlcwogICAgICAgICAgICAgKG1hcGNh
ciAobGFtYmRhIChnZW5lcmFsaXplcikKICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs
bCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29kZS1mdW5jdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsaXplcikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYXJnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YXJnIG1ldGhvZHMtYXJnKSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGl6ZXJzKSkK
ICAgICAgICAgICAgKHR5cGVzY29kZXMKICAgICAgICAgICAgIChtYXBjYXIKQEAgLTcxNyw3
ICs3MTgsNyBAQCBjbC0tZ2VuZXJpYy1nZXQtZGlzcGF0Y2hlcgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYWxpemVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICwo
ZnVuY2FsbCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29kZS1mdW5jdGlvbgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGl6ZXIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmcpKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2FyZyBtZXRob2RzLWFyZykpKQogICAgICAgICAgICAgIGdl
bmVyYWxpemVycykpCiAgICAgICAgICAgICh0YWctZXhwCiAgICAgICAgICAgICA7OyBNaW5v
ciBvcHRpbWl6YXRpb246IHNpbmNlIHRoaXMgdGFnLWV4cCBpcwpAQCAtNzQxLDE0ICs3NDIs
MTQgQEAgY2wtLWdlbmVyaWMtZ2V0LWRpc3BhdGNoZXIKICAgICAgIDs7IG92ZXJraWxsOiBi
ZXR0ZXIganVzdCB1c2UgYSBgY2wtdHlwZXAnIHRlc3QuCiAgICAgICAoZnVuY2FsbAogICAg
ICAgIGNsLS1nZW5lcmljLWNvbXBpbGVyCi0gICAgICAgYChsYW1iZGEgKGdlbmVyaWMgZGlz
cGF0Y2hlcy1sZWZ0IG1ldGhvZHMpCisgICAgICAgYChsYW1iZGEgKGdlbmVyaWMgZGlzcGF0
Y2hlcy1sZWZ0ICxtZXRob2RzLWFyZykKICAgICAgICAgICAobGV0ICgobWV0aG9kLWNhY2hl
IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcWwpKSkKICAgICAgICAgICAgIChsYW1iZGEg
KCxAZml4ZWRhcmdzICZyZXN0IGFyZ3MpCiAgICAgICAgICAgICAgIChsZXQgLGJpbmRpbmdz
CiAgICAgICAgICAgICAgICAgKGFwcGx5ICh3aXRoLW1lbW9pemF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoZ2V0aGFzaCAsdGFnLWV4cCBtZXRob2QtY2FjaGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNsLS1nZW5lcmljLWNhY2hlLW1pc3MKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJpYyAnLGRpc3BhdGNoLWFyZyBkaXNwYXRjaGVzLWxl
ZnQgbWV0aG9kcworICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljICcsZGlzcGF0
Y2gtYXJnIGRpc3BhdGNoZXMtbGVmdCAsbWV0aG9kcy1hcmcKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLChpZiAoY2RyIHR5cGVzY29kZXMpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYChhcHBlbmQgLEB0eXBlc2NvZGVzKSAoY2FyIHR5cGVzY29kZXMpKSkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICxAZml4ZWRhcmdzIGFyZ3MpKSkpKSkpKSkKQEAgLTEz
OTksNyArMTQwMCw3IEBAIGNsLS1nZW5lcmljLWRlcml2ZWQtc3BlY2lhbGl6ZXJzCiAgICAg
ICAgICAgKGRlcml2ZWQtbW9kZS1hbGwtcGFyZW50cyBtb2RlKSkpCiAKIChjbC1nZW5lcmlj
LWRlZmluZS1nZW5lcmFsaXplciBjbC0tZ2VuZXJpYy1kZXJpdmVkLWdlbmVyYWxpemVyCi0g
IDkwIChsYW1iZGEgKG5hbWUpIGAoYW5kIChzeW1ib2xwICxuYW1lKSAoZnVuY3Rpb25wICxu
YW1lKSAsbmFtZSkpCisgIDkwIChsYW1iZGEgKG5hbWUgJnJlc3QgXykgYChhbmQgKHN5bWJv
bHAgLG5hbWUpIChmdW5jdGlvbnAgLG5hbWUpICxuYW1lKSkKICAgIydjbC0tZ2VuZXJpYy1k
ZXJpdmVkLXNwZWNpYWxpemVycykKIAogKGNsLWRlZm1ldGhvZCBjbC1nZW5lcmljLWdlbmVy
YWxpemVycyAoKF9zcGVjaWFsaXplciAoaGVhZCBkZXJpdmVkLW1vZGUpKSkKZGlmZiAtLWdp
dCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1tYWNzLmVsIGIvbGlzcC9lbWFjcy1saXNwL2NsLW1h
Y3MuZWwKaW5kZXggYTA3NjAxMmNkMzAuLmQwNzZlYmI3ZjE1IDEwMDY0NAotLS0gYS9saXNw
L2VtYWNzLWxpc3AvY2wtbWFjcy5lbAorKysgYi9saXNwL2VtYWNzLWxpc3AvY2wtbWFjcy5l
bApAQCAtMzc5NywxMiArMzc5NywxNyBAQCBjbC1kZWZ0eXBlCiAgICAgICAoY2wtY2FsbGYg
KGxhbWJkYSAoeCkgKGRlbHEgcGFyZW50LWRlY2wgeCkpIChjZHIgZGVjbGFyZXMpKQogICAg
ICAgKHdoZW4gKGVxdWFsIGRlY2xhcmVzICcoZGVjbGFyZSkpCiAgICAgICAgIChjbC1jYWxs
ZiAobGFtYmRhICh4KSAoZGVscSBkZWNsYXJlcyB4KSkgZGVjbHMpKSkKLSAgICAoYW5kIHBh
cmVudHMgYXJnbGlzdAotICAgICAgICAgKGVycm9yICJQYXJlbnRzIHNwZWNpZmllZCwgYnV0
IGFyZ2xpc3Qgbm90IGVtcHR5IikpCiAgICAgKGxldCogKChleHBhbmRlcgotICAgICAgICAg
ICAgYChjbC1mdW5jdGlvbiAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkgLEBk
ZWNscyAsQGZvcm1zKSkpCi0gICAgICAgICAgIDs7IEZJWE1FOiBQYXNzIGEgYmV0dGVyIGxl
eGljYWwgY29udGV4dC4KLSAgICAgICAgICAgKHNwZWNpZmllciAoaWdub3JlLWVycm9ycyAo
ZnVuY2FsbCAoZXZhbCBleHBhbmRlciB0KSkpKQorICAgICAgICAgICAgYChjbC1mdW5jdGlv
bgorICAgICAgICAgICAgICAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkgLEBk
ZWNscyAsQGZvcm1zKSkpCisgICAgICAgICAgIChzcGVjaWZpZXIKKyAgICAgICAgICAgIChj
b25kaXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICA7OyBGSVhNRTogUGFzcyBhIGJl
dHRlciBsZXhpY2FsIGNvbnRleHQuCisgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGV2YWwg
ZXhwYW5kZXIgdCkpCisgICAgICAgICAgICAgIChlcnJvcgorICAgICAgICAgICAgICAgKGlm
IHBhcmVudHMKKyAgICAgICAgICAgICAgICAgICAoZXJyb3IgIlR5cGUgJVMgd2l0aCBwYXJl
bnRzIGlzIG5vdCBhdG9taWM6ICVTIgorICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
IGFyZ2xpc3QpKSkpKQogICAgICAgICAgICAocHJlZGljYXRlCiAgICAgICAgICAgICAocGNh
c2Ugc3BlY2lmaWVyCiAgICAgICAgICAgICAgIChgKHNhdGlzZmllcyAsZikgYCMnLGYpCmRp
ZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3AvY2wtcHJlbG9hZGVkLmVsIGIvbGlzcC9lbWFj
cy1saXNwL2NsLXByZWxvYWRlZC5lbAppbmRleCAyNjNhOWI4NTIyNS4uNWEwNDI1YTA3ZTYg
MTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1wcmVsb2FkZWQuZWwKKysrIGIvbGlz
cC9lbWFjcy1saXNwL2NsLXByZWxvYWRlZC5lbApAQCAtNDY3LDkgKzQ2Nyw2IEBAIHByaW1p
dGl2ZS1mdW5jdGlvbgogCiA7Ozs7IFN1cHBvcnQgZm9yIGBjbC1kZWZ0eXBlJy4KIAotKGRl
ZnZhciBjbC0tZGVyaXZlZC10eXBlLWxpc3QgbmlsCi0gICJQcmVjZWRlbmNlIGxpc3Qgb2Yg
dGhlIGRlZmluZWQgY2wtdHlwZXMuIikKLQogOzsgRklYTUU6IFRoZSBgY2wtZGVmdHlwZS1o
YW5kbGVyJyBwcm9wZXJ0eSBzaG91bGQgYXJndWFibHkgYmUgdHVybmVkCiA7OyBpbnRvIGEg
ZmllbGQgb2YgdGhpcyBzdHJ1Y3QgKGJ1dCBpdCBoYXMgcGVyZm9ybWFuY2UgYW5kCiA7OyBj
b21wYXRpYmlsaXR5IGltcGxpY2F0aW9ucywgc28gbGV0J3Mgbm90IG1ha2UgdGhhdCBjaGFu
Z2UgZm9yIG5vdykuCkBAIC01MDUsNyArNTAyLDggQEAgY2wtLWRlZmluZS1kZXJpdmVkLXR5
cGUKICAgICAgICAgICA7OyAiY29tcGxlbWVudCIgYW5vdGhlciBkZWNsYXJhdGlvbiBvZiB0
aGUgc2FtZSB0eXBlLAogICAgICAgICAgIDs7IHNvIG1heWJlIHdlIHNob3VsZCB0dXJuIHRo
aXMgaW50byBhIHdhcm5pbmcgKGFuZAogICAgICAgICAgIDs7IG5vdCBvdmVyd3JpdGUgdGhl
IGBjbC0tZmluZC1jbGFzcycgaW4gdGhhdCBjYXNlKT8KLSAgICAgICAgICAoZXJyb3IgIlR5
cGUgJVMgYWxyZWFkeSBpbiBhbm90aGVyIGNsYXNzOiAlUyIgbmFtZSAodHlwZS1vZiBjbGFz
cykpKSkKKyAgICAgICAgICAoZXJyb3IgIlR5cGUgJVMgYWxyZWFkeSBpbiBhbm90aGVyIGNs
YXNzOiAlUyIKKyAgICAgICAgICAgICAgICAgbmFtZSAodHlwZS1vZiBjbGFzcykpKSkKICAg
ICA7OyBTZXR1cCBhIHR5cGUgZGVzY3JpcHRvciBmb3IgTkFNRS4KICAgICAoc2V0ZiAoY2wt
LWZpbmQtY2xhc3MgbmFtZSkKICAgICAgICAgICAoY2wtLWRlcml2ZWQtdHlwZS1jbGFzcy1t
YWtlCkBAIC01MTUsMTkgKzUxMyw3IEBAIGNsLS1kZWZpbmUtZGVyaXZlZC10eXBlCiAgICAg
ICAgICAgIHBhcmVudHMpKQogICAgIChkZWZpbmUtc3ltYm9sLXByb3AgbmFtZSAnY2wtZGVm
dHlwZS1oYW5kbGVyIGV4cGFuZGVyKQogICAgICh3aGVuIHByZWRpY2F0ZQotICAgICAgKGRl
ZmluZS1zeW1ib2wtcHJvcCBuYW1lICdjbC1kZWZ0eXBlLXNhdGlzZmllcyBwcmVkaWNhdGUp
Ci0gICAgICA7OyBJZiB0aGUgdHlwZSBjYW4gYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50cywg
cmVjb3JkIGl0IGZvcgotICAgICAgOzsgdXNlIGJ5IGBjbC10eXBlcy1vZicuCi0gICAgICA7
OyBUaGUgb3JkZXIgaW4gYGNsLS1kZXJpdmVkLXR5cGUtbGlzdCcgaXMgaW1wb3J0YW50LCBi
dXQgdGhlCi0gICAgICA7OyBjb25zdHJ1Y3RvciBvZiB0aGUgY2xhc3MgYGNsLXR5cGUtY2xh
c3MnIGFscmVhZHkgZW5zdXJlcyB0aGF0Ci0gICAgICA7OyBwYXJlbnQgdHlwZXMgbXVzdCBi
ZSBkZWZpbmVkIGJlZm9yZSB0aGVpciAiY2hpbGQiIHR5cGVzCi0gICAgICA7OyAoaS5lLiBh
bHJlYWR5IGFkZGVkIHRvIHRoZSBgY2wtLWRlcml2ZWQtdHlwZS1saXN0JyBmb3IgdHlwZXMK
LSAgICAgIDs7IGRlZmluZWQgd2l0aCBgY2wtZGVmdHlwZScpLiAgU28gaXQgaXMgZW5vdWdo
IHRvIHNpbXBseSBwdXNoCi0gICAgICA7OyBhIG5ldyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcg
b2YgdGhlIGxpc3QuCi0gICAgICA7OyBSZWRlZmluaXRpb24gaXMgYSBjYW4gb2Ygd29ybXMg
YW55d2F5LCBzbyB3ZSBkb24ndCB0cnkgdG8gYmUgY2xldmVyCi0gICAgICA7OyBpbiB0aGF0
IGNhc2UuCi0gICAgICAob3IgKG1lbXEgbmFtZSBjbC0tZGVyaXZlZC10eXBlLWxpc3QpCi0g
ICAgICAgICAgKHB1c2ggbmFtZSBjbC0tZGVyaXZlZC10eXBlLWxpc3QpKSkpKQorICAgICAg
KGRlZmluZS1zeW1ib2wtcHJvcCBuYW1lICdjbC1kZWZ0eXBlLXNhdGlzZmllcyBwcmVkaWNh
dGUpKSkpCiAKIDs7IE1ha2Ugc3VyZSBmdW5jdGlvbnMgZGVmaW5lZCB3aXRoIGNsLWRlZnN1
YnN0IGNhbiBiZSBpbmxpbmVkIGV2ZW4gaW4KIDs7IHBhY2thZ2VzIHdoaWNoIGRvIG5vdCBy
ZXF1aXJlIENMLiAgV2UgZG9uJ3QgcHV0IGFuIGF1dG9sb2FkIGNvb2tpZQpkaWZmIC0tZ2l0
IGEvdGVzdC9saXNwL2VtYWNzLWxpc3AvY2wtZXh0cmEtdGVzdHMuZWwgYi90ZXN0L2xpc3Av
ZW1hY3MtbGlzcC9jbC1leHRyYS10ZXN0cy5lbAppbmRleCA2MjgwYmUwNmNiYi4uYjIyMjkx
NzU0MDQgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9lbWFjcy1saXNwL2NsLWV4dHJhLXRlc3Rz
LmVsCisrKyBiL3Rlc3QvbGlzcC9lbWFjcy1saXNwL2NsLWV4dHJhLXRlc3RzLmVsCkBAIC0z
OTIsNyArMzkyLDcgQEAgbXktZm9vCiAgICAgICAgICAgKGNsLWNhbGwtbmV4dC1tZXRob2Qp
KSkKIAogKGVydC1kZWZ0ZXN0IGNsLXR5cGVzLXRlc3QgKCkKLSAgIlRlc3QgdHlwZXMgZGVm
aW5pdGlvbiwgY2wtdHlwZXMtb2YgYW5kIG1ldGhvZCBkaXNwYXRjaGluZy4iCisgICJUZXN0
IHR5cGVzIGRlZmluaXRpb24sIHNwZWNpYWxpemVycyBhbmQgbWV0aG9kIGRpc3BhdGNoaW5n
LiIKIAogICA7OyBJbnZhbGlkIERBRyBlcnJvcgogICA7OyBGSVhNRTogV2UgZG9uJ3QgdGVz
dCB0aGF0IGFueSBtb3JlLgpAQCAtNDA1LDI2ICs0MDUsMzUgQEAgY2wtdHlwZXMtdGVzdAog
ICA7OyAgIGxleGljYWwtYmluZGluZwogICA7OyAgICkpCiAKLSAgOzsgVGVzdCB0aGF0IChj
bC10eXBlcy1vZiA0KSBpcyAobXVsdGlwbGVzLW9mLTQgbXVsdGlwbGVzLW9mLTIgLi4uKQot
ICA7OyBUZXN0IHRoYXQgKGNsLXR5cGVzLW9mIDYpIGlzIChtdWx0aXBsZXMtb2YtMyBtdWx0
aXBsZXMtb2YtMiAuLi4pCi0gIDs7IFRlc3QgdGhhdCAoY2wtdHlwZXMtb2YgMTIpIGlzICht
dWx0aXBsZXMtb2YtNCBtdWx0aXBsZXMtb2YtMyBtdWx0aXBsZXMtb2YtMiAuLi4pCisgIDs7
IFdpdGggcG9zc2libGUgJ3R5cGVzJyBpbiBtdWx0aXBsZXMtb2YtezIsMyw0fSB2ZXJpZnkg
dGhhdDoKICAgKGxldCAoKHR5cGVzICcobXVsdGlwbGVzLW9mLTIgbXVsdGlwbGVzLW9mLTMg
bXVsdGlwbGVzLW9mLTQpKSkKKworICAgIDs7IChjbC0tZGVyaXZlZC10eXBlLXNwZWNpYWxp
emVycyAgMiB0eXBlcykgaXMgbXVsdGlwbGVzLW9mLTIKICAgICAoc2hvdWxkIChlcXVhbCAn
KG11bHRpcGxlcy1vZi0yKQotCQkgICAoc2VxLWludGVyc2VjdGlvbiAoY2wtdHlwZXMtb2Yg
MikgdHlwZXMpKSkKKwkJICAgKHNlcS1pbnRlcnNlY3Rpb24KKyAgICAgICAgICAgICAgICAg
ICAgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzIDIgdHlwZXMpIHR5cGVzKSkpCiAK
KyAgICA7OyAoY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMgIDQgdHlwZXMpIGlzIG11
bHRpcGxlcy1vZi17NCwyfQogICAgIChzaG91bGQgKGVxdWFsICcobXVsdGlwbGVzLW9mLTQg
bXVsdGlwbGVzLW9mLTIpCi0JCSAgIChzZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiA0
KSB0eXBlcykpKQorCQkgICAoc2VxLWludGVyc2VjdGlvbgorICAgICAgICAgICAgICAgICAg
ICAoY2wtLWRlcml2ZWQtdHlwZS1zcGVjaWFsaXplcnMgNCB0eXBlcykgdHlwZXMpKSkKIAor
ICAgIDs7IChjbC0tZGVyaXZlZC10eXBlLXNwZWNpYWxpemVycyAgNiB0eXBlcykgaXMgbXVs
dGlwbGVzLW9mLXszLDJ9CiAgICAgKHNob3VsZCAoZXF1YWwgJyhtdWx0aXBsZXMtb2YtMyBt
dWx0aXBsZXMtb2YtMikKLQkJICAgKHNlcS1pbnRlcnNlY3Rpb24gKGNsLXR5cGVzLW9mIDYp
IHR5cGVzKSkpCisJCSAgIChzZXEtaW50ZXJzZWN0aW9uCisgICAgICAgICAgICAgICAgICAg
IChjbC0tZGVyaXZlZC10eXBlLXNwZWNpYWxpemVycyA2IHR5cGVzKSB0eXBlcykpKQogCi0g
ICAgKHNob3VsZCAobWVtYmVyIChzZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiAxMikg
dHlwZXMpCisgICAgOzsgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzIDEyIHR5cGVz
KSBpcyBtdWx0aXBsZXMtb2YtezQsMywyfQorICAgIChzaG91bGQgKG1lbWJlciAoc2VxLWlu
dGVyc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAgKGNsLS1kZXJpdmVkLXR5cGUtc3Bl
Y2lhbGl6ZXJzIDEyIHR5cGVzKSB0eXBlcykKIAkJICAgIDs7IE9yZGVyIGJldHdlZW4gMyBh
bmQgNC8yIGlzIHVuZGVmaW5lZC4KIAkJICAgICcoKG11bHRpcGxlcy1vZi0zIG11bHRpcGxl
cy1vZi00IG11bHRpcGxlcy1vZi0yKQogCQkgICAgICAobXVsdGlwbGVzLW9mLTQgbXVsdGlw
bGVzLW9mLTIgbXVsdGlwbGVzLW9mLTMpKSkpCiAKKyAgICA7OyAoY2wtLWRlcml2ZWQtdHlw
ZS1zcGVjaWFsaXplcnMgIDUgdHlwZXMpIGlzIG5vdCBvZiBhbnkgJ3R5cGVzJwogICAgIChz
aG91bGQgKGVxdWFsICcoKQotCQkgICAoc2VxLWludGVyc2VjdGlvbiAoY2wtdHlwZXMtb2Yg
NSkgdHlwZXMpKSkKKwkJICAgKHNlcS1pbnRlcnNlY3Rpb24KKyAgICAgICAgICAgICAgICAg
ICAgKGNsLS1kZXJpdmVkLXR5cGUtc3BlY2lhbGl6ZXJzIDUgdHlwZXMpIHR5cGVzKSkpCiAg
ICAgKQogCiAgIDs7OyBNZXRob2QgZGlzcGF0Y2hpbmcuCg==
--------------oC6gbK3DvOl9bE0RVCRQzgKA--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 24 May 2025 10:52:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 24 06:52:16 2025
Received: from localhost ([127.0.0.1]:57817 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uImUB-0007WE-Fu
for submit <at> debbugs.gnu.org; Sat, 24 May 2025 06:52:16 -0400
Received: from smtp-18.smtpout.orange.fr ([80.12.242.18]:48949
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uImU7-0007W3-Vq
for 77725 <at> debbugs.gnu.org; Sat, 24 May 2025 06:52:14 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id ImU4uxCr1MqmCImU4u0uy5; Sat, 24 May 2025 12:52:09 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1748083929;
bh=WfD/eQI8Eq3zncUhTlTNY8S+QVaN2rRQTkal3qjXK+M=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=VWUJgq4jTSBmWe81HU3ApPIhbC8xTtdnrSZ1vDb01Sq4uWhb+QGeP+ObHv7UDE5De
ytBz1sUkOVZm/5b07YPL92d2hBmQjNZz39mSUoEkh3ZkR/sylNxGc1ZxWk+x3drHPh
S1biWmAyuiHt1gXpwYkJmqi6fT5M1QTvraesvXVIbM3fSuphn7y+RvQpAnOiVQkPWe
qOj5GuegbWIm5ivrjydYOZpzxQHQqyhAbJnbCNYH8a9r9RQv8b2xfSAhNVopbJtLs5
Q88s/MJQexSbb95nZhm9YZzNOvW0S4i9/NxhWe9PCt7eB1YtjtuffKtUYkBpEfsxZ/
0CzLA/PPQvDQA==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Sat, 24 May 2025 12:52:09 +0200
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------v5i8Op77CS0RxRWWKSeE4qEg"
Message-ID: <86663e79-b23a-4945-a585-03aacee4e8d8@HIDDEN>
Date: Sat, 24 May 2025 12:52:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
This is a multi-part message in MIME format.
--------------v5i8Op77CS0RxRWWKSeE4qEg
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Hello Stefan,
Please find below the proposal for a new approach to speed up dispatch
of methods with derived type specializers.
Currently, to dispatch a method with derived type specializers, all
the derived types of all such methods are checked. This is not very
efficient when the number of methods using derived types becomes high.
My reasoning is that to achieve the same only the method specializers
of the called generic function need to be checked. For instance to
dispatch the below generic function `foo:
(cl-defmethod foo ((arg1 A) (arg2 B))
...
)
(cl-defmethod foo ((arg1 A) (arg2 C))
...
)
It is enough to test that the type of the objects passed to `foo'
belongs to the list of derived types (A B C).
Thus, the number of types to check will depend on the number of
different derived types "specializers" used in methods defined for one
generic function. IMO, this number should remain very reasonable for
a given generic function.
The other advantage of this approach is that it limits the impact of
an ill-defined type to only the methods that use it, making error
handling in `cl-types-of' unnecessary.
It turns out that the dispatcher produced by the function
`cl--generic-get-dispatcher' already captures the list of methods of
the called generic function in its lexical environment. So I modified
`cl--generic-get-dispatcher' to be able to pass this method list to
the tagcode function via an optional additional argument. Then, I
modified the tagcode function of `cl--derived-type-generalizer' to
compute a "dispatch" list from the list of methods defined for the
called generic function. This calculation is memoized to save time,
since the methods of a generic function shouldn't change much, except
perhaps during development. Finally, I simplified the `cl-types-of'
function by removing error handling, no longer really useful here.
The tests in `cl-types-test' pass with the new implementation, which
also works well in some of my libraries I use daily :-)
I hope I didn't miss anything important!
Your opinion will obviously be more than welcome ;-)
Patch attached and a possible change log below.
Thanks!
David
2025-05-24 David Ponce <da_vid@HIDDEN>
To speed up dispatch of methods with derived types specializers,
limit the list of types that need to be checked to those used in
methods specializers of the called generic function.
* lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher): Add
an optional second argument to the tagcode function to receive the
methods of the called generic function.
(cl--generic-derived-generalizer): Fix arglist of the tagcode
function.
* lisp/emacs-lisp/cl-extra.el (cl-types-of): There is no need to
filter out errors: we can assume that the dispatch method is used
only on sanely-defined types; when "cl-types-of" is called
directly, whe can use the usual debugging tools to analyze and fix
ill-defined types.
(cl--derived-type-dispatch-memo): New variable.
(cl--derived-type-dispatch-list): Replace variable by a function.
(cl--derived-type-generalizer): Call it in the tagcode function.
(cl--derived-type-generalizers): Simplify.
--------------v5i8Op77CS0RxRWWKSeE4qEg
Content-Type: text/x-patch; charset=UTF-8; name="cl-types-V0.patch"
Content-Disposition: attachment; filename="cl-types-V0.patch"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt
bGlzcC9jbC1leHRyYS5lbAppbmRleCAxZmUwNDExMDYyZi4uNTI4OTcwMmE5Y2UgMTAwNjQ0
Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp
c3AvY2wtZXh0cmEuZWwKQEAgLTEwMzQsMjIgKzEwMzQsOSBAQCBjbC10eXBlcy1vZgogICAo
bGV0KiAoKGZvdW5kIG5pbCkpCiAgICAgOzsgQnVpbGQgYSBsaXN0IG9mIGFsbCB0eXBlcyBP
QkpFQ1QgYmVsb25ncyB0by4KICAgICAoZG9saXN0ICh0eXBlIChvciB0eXBlcyBjbC0tZGVy
aXZlZC10eXBlLWxpc3QpKQotICAgICAgKGxldCAoKHByZWQgKGdldCB0eXBlICdjbC1kZWZ0
eXBlLXNhdGlzZmllcykpKQotICAgICAgICAoYW5kCi0gICAgICAgICA7OyBJZiBPQkpFQ1Qg
aXMgb2YgdHlwZSwgYWRkIHR5cGUgdG8gdGhlIG1hdGNoaW5nIGxpc3QuCi0gICAgICAgICAo
aWYgdHlwZXMKLSAgICAgICAgICAgICA7OyBGb3IgbWV0aG9kIGRpc3BhdGNoLCB3ZSBkb24n
dCBuZWVkIHRvIGZpbHRlciBvdXQgZXJyb3JzLAotICAgICAgICAgICAgIDs7IHNpbmNlIHdl
IGNhbiBwcmVzdW1lIHRoYXQgbWV0aG9kIGRpc3BhdGNoIGlzIHVzZWQgb25seSBvbgotICAg
ICAgICAgICAgIDs7IHNhbmVseS1kZWZpbmVkIHR5cGVzLgotICAgICAgICAgICAgIChmdW5j
YWxsIHByZWQgb2JqZWN0KQotICAgICAgICAgICAoY29uZGl0aW9uLWNhc2UtdW5sZXNzLWRl
YnVnIGUKLSAgICAgICAgICAgICAgIChmdW5jYWxsIHByZWQgb2JqZWN0KQotICAgICAgICAg
ICAgIChlcnJvciAoc2V0cSBjbC0tZGVyaXZlZC10eXBlLWxpc3QKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGRlbHEgdHlwZSBjbC0tZGVyaXZlZC10eXBlLWxpc3QpKQotICAgICAg
ICAgICAgICAgICAgICAod2FybiAgImNsLXR5cGVzLW9mICVTOiAlcyIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGUgKGVycm9yLW1lc3NhZ2Utc3RyaW5nIGUpKQotICAgICAg
ICAgICAgICAgICAgICBuaWwpKSkKLSAgICAgICAgIChwdXNoIHR5cGUgZm91bmQpKSkpCisg
ICAgICA7OyBJZiBPQkpFQ1QgaXMgb2YgdHlwZSwgYWRkIHR5cGUgdG8gdGhlIG1hdGNoaW5n
IGxpc3QuCisgICAgICAoaWYgKGZ1bmNhbGwgKGdldCB0eXBlICdjbC1kZWZ0eXBlLXNhdGlz
Zmllcykgb2JqZWN0KQorICAgICAgICAgIChwdXNoIHR5cGUgZm91bmQpKSkKICAgICAocHVz
aCAoY2wtdHlwZS1vZiBvYmplY3QpIGZvdW5kKQogICAgIDs7IFJldHVybiB0aGUgbGlzdCBv
ZiB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0bywgd2hpY2ggaXMgYWxzbyB0aGUgbGlzdAogICAg
IDs7IG9mIHNwZWNpZmllcnMgZm9yIE9CSkVDVC4gVGhpcyBtZW1vaXphdGlvbiBoYXMgdHdv
IHB1cnBvc2VzOgpAQCAtMTA2Myw4ICsxMDUwLDI0IEBAIGNsLXR5cGVzLW9mCiAgICAgICAg
ICAgKHB1c2ggKGNsLS1jbGFzcy1hbGxwYXJlbnRzIChjbC0tZmluZC1jbGFzcyB0eXBlKSkg
ZGFnKSkKICAgICAgICAgKG1lcmdlLW9yZGVyZWQtbGlzdHMgZGFnKSkpKSkKIAotKGRlZnZh
ciBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLWxpc3QgbmlsCi0gICJMaXN0IG9mIHR5cGVz
IHRoYXQgbmVlZCB0byBiZSBjaGVja2VkIGR1cmluZyBkaXNwYXRjaC4iKQorKGRlZnZhciBj
bC0tZGVyaXZlZC10eXBlLWRpc3BhdGNoLW1lbW8gKG1ha2UtaGFzaC10YWJsZSA6d2Vha25l
c3MgJ2tleSkKKyAgIk1lbW9pemF0aW9uIHRhYmxlIHVzZWQgaW4gYGNsLS1kZXJpdmVkLXR5
cGUtZGlzcGF0Y2gtbGlzdCcuIikKKworKGRlZnVuIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0
Y2gtbGlzdCAobWV0aG9kcykKKyAgIkdhdGhlciB0aGUgbGlzdCBvZiBkZXJpdmVkIHR5cGVz
IGZyb20gTUVUSE9EUyBzcGVjaWFsaXplcnMuCitSZXR1cm4gdGhlIGxpc3Qgb2YgdHlwZXMg
dG8gYmUgY2hlY2tlZCBkdXJpbmcgZGlzcGF0Y2ggb2YgdGhlIGdlbmVyaWMKK2Z1bmN0aW9u
IHdpdGggdGhlc2UgTUVUSE9EUy4iCisgICh3aXRoLW1lbW9pemF0aW9uIChnZXRoYXNoIG1l
dGhvZHMgY2wtLWRlcml2ZWQtdHlwZS1kaXNwYXRjaC1tZW1vKQorICAgIChsZXQgKHR5cGVz
KQorICAgICAgKGRvbGlzdCAobWV0aG9kIG1ldGhvZHMpCisgICAgICAgIChkb2xpc3QgKHR5
cGUgKGNsLS1nZW5lcmljLW1ldGhvZC1zcGVjaWFsaXplcnMgbWV0aG9kKSkKKyAgICAgICAg
ICAoYW5kIChzeW1ib2xwIHR5cGUpCisgICAgICAgICAgICAgICAoY2wtZGVyaXZlZC10eXBl
LWNsYXNzLXAgKGNsLS1maW5kLWNsYXNzIHR5cGUpKQorICAgICAgICAgICAgICAgKG5vdCAo
bWVtcSB0eXBlIHR5cGVzKSkKKyAgICAgICAgICAgICAgIChwdXNoIHR5cGUgdHlwZXMpKSkp
CisgICAgICA7OyBUaGVyZSBpcyBubyBuZWVkIHRvIHNvcnQgdGhlIHJlc3VsdCBsaXN0LiAg
YGNsLXR5cGVzLW9mJyB3aWxsCisgICAgICA7OyBlbnN1cmUgdGhhdCB0eXBlcyBhcmUgaW4g
dGhlIGV4cGVjdGVkIGRpc3BhdGNoIG9yZGVyLgorICAgICAgdHlwZXMpKSkKIAogKGNsLWdl
bmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS1kZXJpdmVkLXR5cGUtZ2VuZXJhbGl6ZXIK
ICAgOzsgRklYTUU6IFRoaXMgcHJpb3JpdHkgY2FuJ3QgYmUgYWx3YXlzIHJpZ2h0LiAgOi0o
CkBAIC0xMDc3LDMwICsxMDgwLDE5IEBAIGNsLS1kZXJpdmVkLXR5cGUtZ2VuZXJhbGl6ZXIK
ICAgOzsgc3VmZmVyIGZyb20gInVuZGVmaW5lZCBtZXRob2Qgb3JkZXJpbmciIHByb2JsZW1z
LCB1bmxlc3MvdW50aWwgd2UKICAgOzsgcmVzdHJpY3QgaXQgc29tZWhvdyB0byBhIHN1YnNl
dCB0aGF0IHdlIGNhbiBoYW5kbGUgcmVsaWFibHkuCiAgIDIwIDs7ICJ0eXBlb2YiIDwgImNs
LXR5cGVzLW9mIiA8ICJoZWFkIiBwcmlvcml0eQotICAobGFtYmRhIChvYmogJnJlc3QgXykg
YChjbC10eXBlcy1vZiAsb2JqIGNsLS1kZXJpdmVkLXR5cGUtZGlzcGF0Y2gtbGlzdCkpCisg
IChsYW1iZGEgKG9iaiAmb3B0aW9uYWwgbWV0aG9kcyAmcmVzdCBfKQorICAgIGAoY2wtdHlw
ZXMtb2YgLG9iaiAoY2wtLWRlcml2ZWQtdHlwZS1kaXNwYXRjaC1saXN0ICxtZXRob2RzKSkp
CiAgIChsYW1iZGEgKHRhZyAmcmVzdCBfKSAoaWYgKGNvbnNwIHRhZykgdGFnKSkpCiAKIDs7
OyMjI2F1dG9sb2FkCiAoZGVmdW4gY2wtLWRlcml2ZWQtdHlwZS1nZW5lcmFsaXplcnMgKHR5
cGUpCiAgIDs7IE1ha2Ugc3VyZSB0aGlzIGRlcml2ZWQgdHlwZSBjYW4gYmUgdXNlZCB3aXRo
b3V0IGFyZ3VtZW50cy4KLSAgKGxldCAoKGV4cGFuZGVyIChvciAoZ2V0IHR5cGUgJ2NsLWRl
ZnR5cGUtaGFuZGxlcikKLSAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIlR5cGUgJVMg
bGFja3MgY2wtZGVmdHlwZS1oYW5kbGVyIiB0eXBlKSkpKQotICAgIDs7IENoZWNrIHRoYXQg
dGhlIHR5cGUgY2FuIGJlIHVzZWQgd2l0aG91dCBhcmd1bWVudHMuCi0gICAgKGZ1bmNhbGwg
ZXhwYW5kZXIpCi0gICAgOzsgQ2hlY2sgdGhhdCB3ZSBoYXZlIGEgcHJlY29tcHV0ZWQgcHJl
ZGljYXRlIHNpbmNlIHRoYXQncyB3aGF0Ci0gICAgOzsgYGNsLXR5cGVzLW9mJyB1c2VzLgot
ICAgICh1bmxlc3MgKGdldCB0eXBlICdjbC1kZWZ0eXBlLXNhdGlzZmllcykKLSAgICAgIChl
cnJvciAiVHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNhdGlzZmllcyIgdHlwZSkpKQotICA7
OyBBZGQgYSBuZXcgZGlzcGF0Y2ggdHlwZSB0byB0aGUgZGlzcGF0Y2ggbGlzdCwgdGhlbgot
ICA7OyBzeW5jaHJvbml6ZSB3aXRoIGBjbC0tZGVyaXZlZC10eXBlLWxpc3QnIHNvIHRoYXQg
Ym90aCBsaXN0cyBmb2xsb3cKLSAgOzsgdGhlIHNhbWUgdHlwZSBwcmVjZWRlbmNlIG9yZGVy
LgotICA7OyBUaGUgYG1lcmdlLW9yZGVyZWQtbGlzdHMnIGlzIGBjbC10eXBlcy1vZicgc2hv
dWxkIHdlIG1ha2UgdGhpcwotICA7OyBvcmRlcmluZyB1bm5lY2Vzc2FyeSwgYnV0IGl0J3Mg
c3RpbGwgaGFuZHkgZm9yIGFsbCB0aG9zZSB0eXBlcwotICA7OyB0aGF0IGRvbid0IGRlY2xh
cmUgdGhlaXIgcGFyZW50cy4KLSAgKHVubGVzcyAobWVtcSB0eXBlIGNsLS1kZXJpdmVkLXR5
cGUtZGlzcGF0Y2gtbGlzdCkKLSAgICAoc2V0cSBjbC0tZGVyaXZlZC10eXBlLWRpc3BhdGNo
LWxpc3QKLSAgICAgICAgICAoc2VxLWludGVyc2VjdGlvbiBjbC0tZGVyaXZlZC10eXBlLWxp
c3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyB0eXBlIGNsLS1kZXJpdmVk
LXR5cGUtZGlzcGF0Y2gtbGlzdCkpKSkKKyAgKGZ1bmNhbGwgKG9yIChnZXQgdHlwZSAnY2wt
ZGVmdHlwZS1oYW5kbGVyKQorICAgICAgICAgICAgICAgKGVycm9yICJUeXBlICVTIGxhY2tz
IGNsLWRlZnR5cGUtaGFuZGxlciIgdHlwZSkpKQorICA7OyBDaGVjayB0aGF0IHdlIGhhdmUg
YSBwcmVjb21wdXRlZCBwcmVkaWNhdGUgc2luY2UgdGhhdCdzIHdoYXQKKyAgOzsgYGNsLXR5
cGVzLW9mJyB1c2VzLgorICAob3IgKGdldCB0eXBlICdjbC1kZWZ0eXBlLXNhdGlzZmllcykK
KyAgICAgIChlcnJvciAiVHlwZSAlUyBsYWNrcyBjbC1kZWZ0eXBlLXNhdGlzZmllcyIgdHlw
ZSkpCiAgIChsaXN0IGNsLS1kZXJpdmVkLXR5cGUtZ2VuZXJhbGl6ZXIpKQogCiA7Ozs7IFRy
YWlsZXIKZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1nZW5lcmljLmVsIGIvbGlz
cC9lbWFjcy1saXNwL2NsLWdlbmVyaWMuZWwKaW5kZXggNGM2YzZhMDAwN2MuLjZjYzk4ZjY5
YTJhIDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3AvY2wtZ2VuZXJpYy5lbAorKysgYi9s
aXNwL2VtYWNzLWxpc3AvY2wtZ2VuZXJpYy5lbApAQCAtNzA0LDExICs3MDQsMTIgQEAgY2wt
LWdlbmVyaWMtZ2V0LWRpc3BhdGNoZXIKICAgICAobGV0KiAoKGRpc3BhdGNoLWFyZyAoY2Fy
IGRpc3BhdGNoKSkKICAgICAgICAgICAgKGdlbmVyYWxpemVycyAoY2RyIGRpc3BhdGNoKSkK
ICAgICAgICAgICAgKGxleGljYWwtYmluZGluZyB0KQorICAgICAgICAgICAobWV0aG9kcy1h
cmcgKG1ha2Utc3ltYm9sICJtZXRob2RzIikpCiAgICAgICAgICAgICh0YWdjb2RlcwogICAg
ICAgICAgICAgKG1hcGNhciAobGFtYmRhIChnZW5lcmFsaXplcikKICAgICAgICAgICAgICAg
ICAgICAgICAoZnVuY2FsbCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29kZS1mdW5j
dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsaXplcikKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJnKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYXJnIG1ldGhvZHMtYXJnKSkKICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhbGl6ZXJzKSkKICAgICAgICAgICAgKHR5cGVzY29kZXMKICAgICAgICAgICAgICht
YXBjYXIKQEAgLTcxNyw3ICs3MTgsNyBAQCBjbC0tZ2VuZXJpYy1nZXQtZGlzcGF0Y2hlcgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWxpemVyKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICwoZnVuY2FsbCAoY2wtLWdlbmVyaWMtZ2VuZXJhbGl6ZXItdGFnY29k
ZS1mdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
bGl6ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmcpKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyZyBtZXRob2RzLWFyZykpKQog
ICAgICAgICAgICAgIGdlbmVyYWxpemVycykpCiAgICAgICAgICAgICh0YWctZXhwCiAgICAg
ICAgICAgICA7OyBNaW5vciBvcHRpbWl6YXRpb246IHNpbmNlIHRoaXMgdGFnLWV4cCBpcwpA
QCAtNzQxLDE0ICs3NDIsMTQgQEAgY2wtLWdlbmVyaWMtZ2V0LWRpc3BhdGNoZXIKICAgICAg
IDs7IG92ZXJraWxsOiBiZXR0ZXIganVzdCB1c2UgYSBgY2wtdHlwZXAnIHRlc3QuCiAgICAg
ICAoZnVuY2FsbAogICAgICAgIGNsLS1nZW5lcmljLWNvbXBpbGVyCi0gICAgICAgYChsYW1i
ZGEgKGdlbmVyaWMgZGlzcGF0Y2hlcy1sZWZ0IG1ldGhvZHMpCisgICAgICAgYChsYW1iZGEg
KGdlbmVyaWMgZGlzcGF0Y2hlcy1sZWZ0ICxtZXRob2RzLWFyZykKICAgICAgICAgICAobGV0
ICgobWV0aG9kLWNhY2hlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcWwpKSkKICAgICAg
ICAgICAgIChsYW1iZGEgKCxAZml4ZWRhcmdzICZyZXN0IGFyZ3MpCiAgICAgICAgICAgICAg
IChsZXQgLGJpbmRpbmdzCiAgICAgICAgICAgICAgICAgKGFwcGx5ICh3aXRoLW1lbW9pemF0
aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0aGFzaCAsdGFnLWV4cCBtZXRo
b2QtY2FjaGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLS1nZW5lcmljLWNhY2hl
LW1pc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJpYyAnLGRpc3BhdGNoLWFy
ZyBkaXNwYXRjaGVzLWxlZnQgbWV0aG9kcworICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmljICcsZGlzcGF0Y2gtYXJnIGRpc3BhdGNoZXMtbGVmdCAsbWV0aG9kcy1hcmcKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLChpZiAoY2RyIHR5cGVzY29kZXMpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYChhcHBlbmQgLEB0eXBlc2NvZGVzKSAoY2FyIHR5
cGVzY29kZXMpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICxAZml4ZWRhcmdzIGFyZ3Mp
KSkpKSkpKSkKQEAgLTEzOTksNyArMTQwMCw3IEBAIGNsLS1nZW5lcmljLWRlcml2ZWQtc3Bl
Y2lhbGl6ZXJzCiAgICAgICAgICAgKGRlcml2ZWQtbW9kZS1hbGwtcGFyZW50cyBtb2RlKSkp
CiAKIChjbC1nZW5lcmljLWRlZmluZS1nZW5lcmFsaXplciBjbC0tZ2VuZXJpYy1kZXJpdmVk
LWdlbmVyYWxpemVyCi0gIDkwIChsYW1iZGEgKG5hbWUpIGAoYW5kIChzeW1ib2xwICxuYW1l
KSAoZnVuY3Rpb25wICxuYW1lKSAsbmFtZSkpCisgIDkwIChsYW1iZGEgKG5hbWUgJnJlc3Qg
XykgYChhbmQgKHN5bWJvbHAgLG5hbWUpIChmdW5jdGlvbnAgLG5hbWUpICxuYW1lKSkKICAg
IydjbC0tZ2VuZXJpYy1kZXJpdmVkLXNwZWNpYWxpemVycykKIAogKGNsLWRlZm1ldGhvZCBj
bC1nZW5lcmljLWdlbmVyYWxpemVycyAoKF9zcGVjaWFsaXplciAoaGVhZCBkZXJpdmVkLW1v
ZGUpKSkK
--------------v5i8Op77CS0RxRWWKSeE4qEg--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 21 May 2025 19:00:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 21 15:00:08 2025 Received: from localhost ([127.0.0.1]:52598 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uHofd-00038H-LR for submit <at> debbugs.gnu.org; Wed, 21 May 2025 15:00:08 -0400 Received: from smtp-81.smtpout.orange.fr ([80.12.242.81]:49993 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uHofP-00034f-Nn for 77725 <at> debbugs.gnu.org; Wed, 21 May 2025 14:59:53 -0400 Received: from [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504] ([IPv6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]) by smtp.orange.fr with ESMTPA id HofMuEjU6lRx3HofMulXjj; Wed, 21 May 2025 20:59:49 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1747853990; bh=a3ws0D+r6lwPDCcCBP4tXn8TTfK3l+1o0uXmbAOa4mU=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=H+2v4PEwmi8w3FskebBM3BP+q8PfEVqb0EZNIguIJ0ecGhK7lhrVQScuIznl9YDEG i7IKKn5+ow8lp42Cuh6cWctJKnRNeiyeylS5hIJYD3MTYVt0ShOJubYbr4H4btL1Vp CwWIRrx+ebrXmRQkE1q7i9SlugC6yu7YE/c/ogu2o9+qfYQ2nauOd6lhNJ5s37900n ca+zCW/4gIvrsl5j2sWjCdVgYf4ryGab3DYe3ZhyMi8S10qiuiyTIMvT4BjqpzMlNw xEKL1Vff8oZnhEHUUuugLXIVywRRyKzbuY2aDsWVemvs0bcCZZvOAgHVRubwDZYDfJ srW4lutW3/Mog== X-ME-Helo: [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 21 May 2025 20:59:50 +0200 X-ME-IP: 2a01:cb15:8915:8600:87c3:d46d:c911:d504 Message-ID: <15ebc3df-5e5f-4836-bf48-89c8a9326391@HIDDEN> Date: Wed, 21 May 2025 20:59:48 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN> <jwv1psrvruk.fsf-monnier+emacs@HIDDEN> <692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN> <jwvcycb2q3i.fsf-monnier+emacs@HIDDEN> <4d5dc0dd-fd91-491b-9b3d-9249da30249d@HIDDEN> <jwvplg86373.fsf-monnier+emacs@HIDDEN> <b0f8812e-5a21-45da-9835-302c13dce5a9@HIDDEN> <a51f5eca-71c9-4729-9fee-31b20cf3a790@HIDDEN> <jwvfrh0mfrl.fsf-monnier+emacs@HIDDEN> <6ce1101a-367e-4459-8994-7f809775b068@HIDDEN> <jwv1psivvpl.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwv1psivvpl.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-05-21 17:30, Stefan Monnier wrote: >> My code is slightly more complex to correctly handle recursive errors: >> >> 1. Avoid disabling again and again the type in error following nested >> `condition-case'. Currently cleanup is just a `delq', but maybe in >> the future it could be more, or delegated to a user function, for >> example. So, IMO, the behavior should be consistent, and >> regardless of the error, 1 error => 1 cleanup ;-) > > To me, this smells of over-engineering. Replacing 4 lines of code with 5 is not what I would call over-engineering ;-) > >> 2. Clearly mention the type in error to help fixing the issue. >> >> For instance eval this derived type definition, badly recursive: >> >> (cl-deftype T1 () >> `(satisfies ,(lambda (o) (memq 'T1 (cl-types-of o))))) >> >> Then: (cl-types-of "any-object") >> >> My proposal shows this message in the echo area: >> >> Error on derived type: T1, (excessive-lisp-nesting 1601) > > Errors here should be rare (and get ever more rare the more this > functionality is used), so I don't think we should focus on making error > messages pretty. We should just focus on making them not debilitating > while still allowing the usual debugging tools to do their job. I was not focusing on making error messages pretty but error data useful ;-) > > [ Also, I don't think the above error is representative of the kind of > errors we should expect to see. ] That's fine with me. After all, it was just a suggestion ;-) David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 21 May 2025 15:31:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 21 11:31:02 2025
Received: from localhost ([127.0.0.1]:50534 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uHlPJ-0006yU-AZ
for submit <at> debbugs.gnu.org; Wed, 21 May 2025 11:31:01 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:20726)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uHlPD-0006xg-8f
for 77725 <at> debbugs.gnu.org; Wed, 21 May 2025 11:30:55 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id B58E84410BC;
Wed, 21 May 2025 11:30:49 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1747841448;
bh=PLnQpbUO/3OQuafoRaA3lucHEcfInlHATN3nid12ib4=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=EFBrgfPgtsYNvrnwaafjvbjF9jn1rnBPVqTiP+jp79RqRxkDBn7FOc1vAy0EoXHSd
YnI7QUC99JfzTAdfMzvU/yfDXKGV0dIaJ0bwEZh9WeHv+EyTGHVlJLaS8qVaG08ANW
mhr85pUWb9oqqdXH2521rf1LYmtI2NvA6paTSz4erpg+JDHRWj5sGbUKv2XWNbXNcL
4g8qGqrycPrJDdJB+kMTiMTuDijnHbXDmGdRpM3Br+4V8pOl8i2dVOKCdiP+7a6zsn
cvh+cKRep1D+7+RwDdLYjqEonrCbXxUdA4bAcZFWIHDhzGAxk/Xbk+0YZ33I9JIxhX
ANSwMjZqMlWlQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 34965441030;
Wed, 21 May 2025 11:30:48 -0400 (EDT)
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 23EF81203B3;
Wed, 21 May 2025 11:30:48 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <6ce1101a-367e-4459-8994-7f809775b068@HIDDEN>
Message-ID: <jwv1psivvpl.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN>
<jwv1psrvruk.fsf-monnier+emacs@HIDDEN>
<692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN>
<jwvcycb2q3i.fsf-monnier+emacs@HIDDEN>
<4d5dc0dd-fd91-491b-9b3d-9249da30249d@HIDDEN>
<jwvplg86373.fsf-monnier+emacs@HIDDEN>
<b0f8812e-5a21-45da-9835-302c13dce5a9@HIDDEN>
<a51f5eca-71c9-4729-9fee-31b20cf3a790@HIDDEN>
<jwvfrh0mfrl.fsf-monnier+emacs@HIDDEN>
<6ce1101a-367e-4459-8994-7f809775b068@HIDDEN>
Date: Wed, 21 May 2025 11:30:47 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL 0.165 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> My code is slightly more complex to correctly handle recursive errors:
>
> 1. Avoid disabling again and again the type in error following nested
> `condition-case'. Currently cleanup is just a `delq', but maybe in
> the future it could be more, or delegated to a user function, for
> example. So, IMO, the behavior should be consistent, and
> regardless of the error, 1 error => 1 cleanup ;-)
To me, this smells of over-engineering.
> 2. Clearly mention the type in error to help fixing the issue.
>
> For instance eval this derived type definition, badly recursive:
>
> (cl-deftype T1 ()
> `(satisfies ,(lambda (o) (memq 'T1 (cl-types-of o)))))
>
> Then: (cl-types-of "any-object")
>
> My proposal shows this message in the echo area:
>
> Error on derived type: T1, (excessive-lisp-nesting 1601)
Errors here should be rare (and get ever more rare the more this
functionality is used), so I don't think we should focus on making error
messages pretty. We should just focus on making them not debilitating
while still allowing the usual debugging tools to do their job.
[ Also, I don't think the above error is representative of the kind of
errors we should expect to see. ]
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 21 May 2025 09:00:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 21 05:00:19 2025
Received: from localhost ([127.0.0.1]:44853 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uHfJC-00010y-HQ
for submit <at> debbugs.gnu.org; Wed, 21 May 2025 05:00:19 -0400
Received: from smtp-81.smtpout.orange.fr ([80.12.242.81]:60181
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uHfJ8-0000vq-Ha
for 77725 <at> debbugs.gnu.org; Wed, 21 May 2025 05:00:16 -0400
Received: from [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]
([IPv6:2a01:cb15:8915:8600:87c3:d46d:c911:d504])
by smtp.orange.fr with ESMTPA
id HfJ5umrolmFgSHfJ5u8hsr; Wed, 21 May 2025 11:00:12 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1747818012;
bh=TxGvHqThHmr2/1L9Sb/dQ371MaPIGKGa6vBK0ym8arg=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=SOuTxD+s37ax9mryjgGWx8AF6CItEEHc4U7IQoEdI98vEIWgJfbPMODbBNoQULy4l
97dO+JUUHfJ20RPoSffG/g6LJxlwqeUHvrgyZLrtijQGR/IIBfl4J2DNoaxr9GswNJ
iC+WHm0k3F7NvAhP4DjYoDsXTZLkwJt/s+Xkt1giu523a9tsJe6zS9OfxLgSR8Ix4G
TSluXqWyeMjmVeefzwocd8BM8MDnLsb+dPAUMw8cxe5dtu9gIS6vIBb/rRYVQZUiSA
bRu/wGZnjOnioJ6LaByMQ/9Z+VWWQ5basf4fS0QyWBZnIxZjIRKnwir630IidRKLdQ
IM7KmC0db9CQw==
X-ME-Helo: [IPV6:2a01:cb15:8915:8600:87c3:d46d:c911:d504]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Wed, 21 May 2025 11:00:12 +0200
X-ME-IP: 2a01:cb15:8915:8600:87c3:d46d:c911:d504
Content-Type: multipart/mixed; boundary="------------qkGmssQTL9lKkNkp9yhvNiBn"
Message-ID: <6ce1101a-367e-4459-8994-7f809775b068@HIDDEN>
Date: Wed, 21 May 2025 11:00:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN>
<jwv1psrvruk.fsf-monnier+emacs@HIDDEN>
<692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN>
<jwvcycb2q3i.fsf-monnier+emacs@HIDDEN>
<4d5dc0dd-fd91-491b-9b3d-9249da30249d@HIDDEN>
<jwvplg86373.fsf-monnier+emacs@HIDDEN>
<b0f8812e-5a21-45da-9835-302c13dce5a9@HIDDEN>
<a51f5eca-71c9-4729-9fee-31b20cf3a790@HIDDEN>
<jwvfrh0mfrl.fsf-monnier+emacs@HIDDEN>
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwvfrh0mfrl.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
This is a multi-part message in MIME format.
--------------qkGmssQTL9lKkNkp9yhvNiBn
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
On 2025-05-20 00:05, Stefan Monnier wrote:
>> ;;;###autoload
>> (defun cl-types-of (object &optional types)
>> "Return the atomic types OBJECT belongs to.
>> @@ -1044,11 +1046,18 @@ cl-types-of
>> (funcall pred object)
>> (condition-case-unless-debug e
>> (funcall pred object)
>> - (error (setq cl--derived-type-list
>> - (delq type cl--derived-type-list))
>> - (warn "cl-types-of %S: %s"
>> - type (error-message-string e))
>> - nil)))
>> + ;; Catching `cl-type-error' means it comes from recursive
>> + ;; calls to `cl-types-of', so propagate the error until
>> + ;; escaping the outermost call to `cl-types-of'.
>> + (cl-type-error
>> + (signal (car e) (cdr e)))
>> + (error
>> + ;; If checking TYPE signals an error, disable TYPE and
>> + ;; signal a `cl-type-error' error mentioning TYPE and
>> + ;; the underlying error.
>> + (setq cl--derived-type-list
>> + (delq type cl--derived-type-list))
>> + (signal 'cl-type-error (list type e)))))
>> (push type found))))
>> (push (cl-type-of object) found)
>> ;; Return the list of types OBJECT belongs to, which is also the list
>
> Hmm... usually we have two preoccupations:
>
> - Notify the existence of a problem.
> - Try and provide "graceful degradation", i.e. still do something
> useful, despite the problem.
> - Make it easy to debug.
>
> Both the "before" and "after" versions of the code above seem to satisfy
> those needs in more or less the same way, but your new code is more
> complex, so I'm wondering what do you see as the advantage?
>
> BTW, a related option is to do something like:
>
> (let ((error t))
> (unwind-protect
> (prog1 (funcall pred object)
> (setq error nil))
> (when error
> (setq cl--derived-type-list
> (delq type cl--derived-type-list)))))
>
>
My code is slightly more complex to correctly handle recursive errors:
1. Avoid disabling again and again the type in error following nested
`condition-case'. Currently cleanup is just a `delq', but maybe in
the future it could be more, or delegated to a user function, for
example. So, IMO, the behavior should be consistent, and
regardless of the error, 1 error => 1 cleanup ;-)
2. Clearly mention the type in error to help fixing the issue.
For instance eval this derived type definition, badly recursive:
(cl-deftype T1 ()
`(satisfies ,(lambda (o) (memq 'T1 (cl-types-of o)))))
Then: (cl-types-of "any-object")
My proposal shows this message in the echo area:
Error on derived type: T1, (excessive-lisp-nesting 1601)
And this line in the *Message* buffer:
forward-sexp-default-function: Error on derived type: T1, (excessive-lisp-nesting 1601)
Your `unwind' proposal shows this message in the echo area:
Args out of range: 79, 83
And these lines in the *Message* buffer:
cl-prin1: (error "Lisp nesting exceeds ‘max-lisp-eval-depth’") [10 times]
make-text-button: Args out of range: 79, 83
If my proposal is too complex, at least, the current behavior using
`warn' is better.
Thanks
David
I reattached my patch where an autoload cookie was missing.
--------------qkGmssQTL9lKkNkp9yhvNiBn
Content-Type: text/x-patch; charset=UTF-8; name="cl-extra-V2.patch"
Content-Disposition: attachment; filename="cl-extra-V2.patch"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt
bGlzcC9jbC1leHRyYS5lbAppbmRleCAxZmUwNDExMDYyZi4uYWU4MzNlNzA5YWQgMTAwNjQ0
Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp
c3AvY2wtZXh0cmEuZWwKQEAgLTEwMjUsNiArMTAyNSw5IEBAIGNsLS10eXBlcy1vZi1tZW1v
CiA7OyAtIGluIGBjbC10eXBlcy1vZicgc3RhcnQgYnkgY2FsbGluZyBgY2wtdHlwZS1vZics
IHRoZW4gdXNlIHRoZSBtYXAKIDs7ICAgdG8gZmluZCB3aGljaCBjbC10eXBlcyBtYXkgbmVl
ZCB0byBiZSBjaGVja2VkLgogOzsKKzs7OyMjI2F1dG9sb2FkCisoZGVmaW5lLWVycm9yICdj
bC10eXBlLWVycm9yICJFcnJvciBvbiBkZXJpdmVkIHR5cGUiKQorCiA7OzsjIyNhdXRvbG9h
ZAogKGRlZnVuIGNsLXR5cGVzLW9mIChvYmplY3QgJm9wdGlvbmFsIHR5cGVzKQogICAiUmV0
dXJuIHRoZSBhdG9taWMgdHlwZXMgT0JKRUNUIGJlbG9uZ3MgdG8uCkBAIC0xMDQ0LDExICsx
MDQ3LDE4IEBAIGNsLXR5cGVzLW9mCiAgICAgICAgICAgICAgKGZ1bmNhbGwgcHJlZCBvYmpl
Y3QpCiAgICAgICAgICAgIChjb25kaXRpb24tY2FzZS11bmxlc3MtZGVidWcgZQogICAgICAg
ICAgICAgICAgKGZ1bmNhbGwgcHJlZCBvYmplY3QpCi0gICAgICAgICAgICAgKGVycm9yIChz
ZXRxIGNsLS1kZXJpdmVkLXR5cGUtbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAo
ZGVscSB0eXBlIGNsLS1kZXJpdmVkLXR5cGUtbGlzdCkpCi0gICAgICAgICAgICAgICAgICAg
ICh3YXJuICAiY2wtdHlwZXMtb2YgJVM6ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZSAoZXJyb3ItbWVzc2FnZS1zdHJpbmcgZSkpCi0gICAgICAgICAgICAgICAgICAg
IG5pbCkpKQorICAgICAgICAgICAgIDs7IENhdGNoaW5nIGBjbC10eXBlLWVycm9yJyBtZWFu
cyBpdCBjb21lcyBmcm9tIHJlY3Vyc2l2ZQorICAgICAgICAgICAgIDs7IGNhbGxzIHRvIGBj
bC10eXBlcy1vZicsIHNvIHByb3BhZ2F0ZSB0aGUgZXJyb3IgdW50aWwKKyAgICAgICAgICAg
ICA7OyBlc2NhcGluZyB0aGUgb3V0ZXJtb3N0IGNhbGwgdG8gYGNsLXR5cGVzLW9mJy4KKyAg
ICAgICAgICAgICAoY2wtdHlwZS1lcnJvcgorICAgICAgICAgICAgICAoc2lnbmFsIChjYXIg
ZSkgKGNkciBlKSkpCisgICAgICAgICAgICAgKGVycm9yCisgICAgICAgICAgICAgIDs7IElm
IGNoZWNraW5nIFRZUEUgc2lnbmFscyBhbiBlcnJvciwgZGlzYWJsZSBUWVBFIGFuZAorICAg
ICAgICAgICAgICA7OyBzaWduYWwgYSBgY2wtdHlwZS1lcnJvcicgZXJyb3IgbWVudGlvbmlu
ZyBUWVBFIGFuZAorICAgICAgICAgICAgICA7OyB0aGUgdW5kZXJseWluZyBlcnJvci4KKyAg
ICAgICAgICAgICAgKHNldHEgY2wtLWRlcml2ZWQtdHlwZS1saXN0CisgICAgICAgICAgICAg
ICAgICAgIChkZWxxIHR5cGUgY2wtLWRlcml2ZWQtdHlwZS1saXN0KSkKKyAgICAgICAgICAg
ICAgKHNpZ25hbCAnY2wtdHlwZS1lcnJvciAobGlzdCB0eXBlIGUpKSkpKQogICAgICAgICAg
KHB1c2ggdHlwZSBmb3VuZCkpKSkKICAgICAocHVzaCAoY2wtdHlwZS1vZiBvYmplY3QpIGZv
dW5kKQogICAgIDs7IFJldHVybiB0aGUgbGlzdCBvZiB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0
bywgd2hpY2ggaXMgYWxzbyB0aGUgbGlzdAo=
--------------qkGmssQTL9lKkNkp9yhvNiBn--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 19 May 2025 22:05:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 19 18:05:16 2025
Received: from localhost ([127.0.0.1]:46782 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uH8bk-0001nE-BA
for submit <at> debbugs.gnu.org; Mon, 19 May 2025 18:05:16 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:18310)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uH8bg-0001ib-Sz
for 77725 <at> debbugs.gnu.org; Mon, 19 May 2025 18:05:13 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C21C980891;
Mon, 19 May 2025 18:05:06 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1747692304;
bh=3CjMsgeDGe+fFzCxEDfKdOFoKX43jG9tDSsm6uzCPho=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=EpHnwY5MbHVglreXWdhjsWNTx7V1Dxh0O3fXyU2xFGchK8q+yazDO3/1m/RQMjq96
Hj9/+yVtaxuH+GGXnljKdSGdNukXoHTztM/zkLNsLcqZ4KSOFc46xtg+qD9XxqZE6X
mOqjgsIgcvMdkX/iKby2L+kX0aOtaEgNYxA26tMkvLBTaphNwfiCZs968ux1oL7mzU
XKvR4G9umiIM/85pULvXn+K5JsgZ7WlkRZq5GmRmXDQYKGv4zypN+QSq8fYYp4m4vs
ZheQ7j0TCcFSGYghnZcUPv/ZYmhq2giC6JO5tnAVHIGc7f+lKBhZp9O8+7rmg6ZeIe
oA0RlNsYUsKJA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id B3ECD8013C;
Mon, 19 May 2025 18:05:04 -0400 (EDT)
Received: from alfajor (104-195-232-56.cpe.teksavvy.com [104.195.232.56])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 7AB3E120588;
Mon, 19 May 2025 18:05:04 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <a51f5eca-71c9-4729-9fee-31b20cf3a790@HIDDEN>
Message-ID: <jwvfrh0mfrl.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN>
<jwv1psrvruk.fsf-monnier+emacs@HIDDEN>
<692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN>
<jwvcycb2q3i.fsf-monnier+emacs@HIDDEN>
<4d5dc0dd-fd91-491b-9b3d-9249da30249d@HIDDEN>
<jwvplg86373.fsf-monnier+emacs@HIDDEN>
<b0f8812e-5a21-45da-9835-302c13dce5a9@HIDDEN>
<a51f5eca-71c9-4729-9fee-31b20cf3a790@HIDDEN>
Date: Mon, 19 May 2025 18:05:03 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.107 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> ;;;###autoload
> (defun cl-types-of (object &optional types)
> "Return the atomic types OBJECT belongs to.
> @@ -1044,11 +1046,18 @@ cl-types-of
> (funcall pred object)
> (condition-case-unless-debug e
> (funcall pred object)
> - (error (setq cl--derived-type-list
> - (delq type cl--derived-type-list))
> - (warn "cl-types-of %S: %s"
> - type (error-message-string e))
> - nil)))
> + ;; Catching `cl-type-error' means it comes from recursive
> + ;; calls to `cl-types-of', so propagate the error until
> + ;; escaping the outermost call to `cl-types-of'.
> + (cl-type-error
> + (signal (car e) (cdr e)))
> + (error
> + ;; If checking TYPE signals an error, disable TYPE and
> + ;; signal a `cl-type-error' error mentioning TYPE and
> + ;; the underlying error.
> + (setq cl--derived-type-list
> + (delq type cl--derived-type-list))
> + (signal 'cl-type-error (list type e)))))
> (push type found))))
> (push (cl-type-of object) found)
> ;; Return the list of types OBJECT belongs to, which is also the list
Hmm... usually we have two preoccupations:
- Notify the existence of a problem.
- Try and provide "graceful degradation", i.e. still do something
useful, despite the problem.
- Make it easy to debug.
Both the "before" and "after" versions of the code above seem to satisfy
those needs in more or less the same way, but your new code is more
complex, so I'm wondering what do you see as the advantage?
BTW, a related option is to do something like:
(let ((error t))
(unwind-protect
(prog1 (funcall pred object)
(setq error nil))
(when error
(setq cl--derived-type-list
(delq type cl--derived-type-list)))))
- Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 19 May 2025 08:08:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 19 04:08:26 2025 Received: from localhost ([127.0.0.1]:37074 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uGvXt-0005Bj-Lh for submit <at> debbugs.gnu.org; Mon, 19 May 2025 04:08:26 -0400 Received: from smtp-22.smtpout.orange.fr ([80.12.242.22]:37593 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uGvXp-0005BR-7Q for 77725 <at> debbugs.gnu.org; Mon, 19 May 2025 04:08:22 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id GvXmuWjwgZnQBGvXmu2zpO; Mon, 19 May 2025 10:08:19 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1747642099; bh=A34DqERBywt+BZJuWmkUk/VkpVoWEeFdAA6BaJW0mRY=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=XFFeZsoyblLPRwfqMGs+HopZ2205p3XednKO5SPi+7gmRsHC1oqwEYlJy899oj/dZ tPeL5mrPCfn6Qm7B8IzClJkpBeFEV6BV8xriDmkooYebP1gt3I3GcUYg/X1N2eQ8VV coy1RwxyKINkVmySAMC8dke6r3Az2LxmsYARCUHpdvnbLwHcGbbKsw4OABXZMrfrQS fvWfIYMAW8QMyW9XU7vJJoFu5YtD7S1SQE5HXEqZO1BdIi1KX/g2eNDuY4SueYbgoo h94zO1cVa6zH80VDTAEmAWNSL2bMr60/AljIMj4m22U1XW9S6YNshLJXRX8Muj4BlG YPNtU5qLX4TCw== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Mon, 19 May 2025 10:08:19 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------VIPuip3a20cU3D3cKlR0ivhi" Message-ID: <a51f5eca-71c9-4729-9fee-31b20cf3a790@HIDDEN> Date: Mon, 19 May 2025 10:08:17 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? From: David Ponce <da_vid@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN> <jwv1psrvruk.fsf-monnier+emacs@HIDDEN> <692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN> <jwvcycb2q3i.fsf-monnier+emacs@HIDDEN> <4d5dc0dd-fd91-491b-9b3d-9249da30249d@HIDDEN> <jwvplg86373.fsf-monnier+emacs@HIDDEN> <b0f8812e-5a21-45da-9835-302c13dce5a9@HIDDEN> Content-Language: fr, en-US In-Reply-To: <b0f8812e-5a21-45da-9835-302c13dce5a9@HIDDEN> X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.0 (--) This is a multi-part message in MIME format. --------------VIPuip3a20cU3D3cKlR0ivhi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit > Please find attached a proposal to improve error handling in > `cl-types-of'. Ultimately, I think you were right and it is better to > simply report derived type errors to the caller and abort processing, > but while also preventing their recurrence as much as possible :-) > > So my proposal is to still handle any error on a derived type, in > order to disable the type as is currently done by removing it from the > list of types; but, instead of warn, raise a new `cl-type-error' > mentioning the type in error and the underlying error. Here are some > simple examples for you to observe the result. > > (cl-deftype T1 () > '(satisfies plusp)) > > (cl-types-of -0.5) > => (real float number number-or-marker atom t) > > (cl-types-of 12) > => (T1 real base-char character fixnum natnum integer number integer-or-marker number-or-marker atom t) > > (cl-types-of "12") > => Error on derived type: T1, (wrong-type-argument number-or-marker-p "12") > > (cl-deftype T2 () > `(satisfies ,(lambda (o) (memq 'T1 (cl-types-of o))))) > > (cl-types-of "12") > => Error on derived type: T2, (excessive-lisp-nesting 1601) > > Does it make sense? Please find attached a better patch, and a possible change log below. Thanks David 2025-05-19 David Ponce <da_vid@HIDDEN> Signal a `cl-type-error' instead of warning when a derived type encounters an error. * lisp/emacs-lisp/cl-extra.el (cl-type-error): New error symbol. (cl-types-of): Use it. --------------VIPuip3a20cU3D3cKlR0ivhi Content-Type: text/x-patch; charset=UTF-8; name="cl-extra-V1.patch" Content-Disposition: attachment; filename="cl-extra-V1.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt bGlzcC9jbC1leHRyYS5lbAppbmRleCAxZmUwNDExMDYyZi4uN2MwMTlkMTNmM2QgMTAwNjQ0 Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp c3AvY2wtZXh0cmEuZWwKQEAgLTEwMjUsNiArMTAyNSw4IEBAIGNsLS10eXBlcy1vZi1tZW1v CiA7OyAtIGluIGBjbC10eXBlcy1vZicgc3RhcnQgYnkgY2FsbGluZyBgY2wtdHlwZS1vZics IHRoZW4gdXNlIHRoZSBtYXAKIDs7ICAgdG8gZmluZCB3aGljaCBjbC10eXBlcyBtYXkgbmVl ZCB0byBiZSBjaGVja2VkLgogOzsKKyhkZWZpbmUtZXJyb3IgJ2NsLXR5cGUtZXJyb3IgIkVy cm9yIG9uIGRlcml2ZWQgdHlwZSIpCisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gY2wtdHlw ZXMtb2YgKG9iamVjdCAmb3B0aW9uYWwgdHlwZXMpCiAgICJSZXR1cm4gdGhlIGF0b21pYyB0 eXBlcyBPQkpFQ1QgYmVsb25ncyB0by4KQEAgLTEwNDQsMTEgKzEwNDYsMTggQEAgY2wtdHlw ZXMtb2YKICAgICAgICAgICAgICAoZnVuY2FsbCBwcmVkIG9iamVjdCkKICAgICAgICAgICAg KGNvbmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlCiAgICAgICAgICAgICAgICAoZnVuY2Fs bCBwcmVkIG9iamVjdCkKLSAgICAgICAgICAgICAoZXJyb3IgKHNldHEgY2wtLWRlcml2ZWQt dHlwZS1saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxxIHR5cGUgY2wtLWRl cml2ZWQtdHlwZS1saXN0KSkKLSAgICAgICAgICAgICAgICAgICAgKHdhcm4gICJjbC10eXBl cy1vZiAlUzogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIChlcnJvci1t ZXNzYWdlLXN0cmluZyBlKSkKLSAgICAgICAgICAgICAgICAgICAgbmlsKSkpCisgICAgICAg ICAgICAgOzsgQ2F0Y2hpbmcgYGNsLXR5cGUtZXJyb3InIG1lYW5zIGl0IGNvbWVzIGZyb20g cmVjdXJzaXZlCisgICAgICAgICAgICAgOzsgY2FsbHMgdG8gYGNsLXR5cGVzLW9mJywgc28g cHJvcGFnYXRlIHRoZSBlcnJvciB1bnRpbAorICAgICAgICAgICAgIDs7IGVzY2FwaW5nIHRo ZSBvdXRlcm1vc3QgY2FsbCB0byBgY2wtdHlwZXMtb2YnLgorICAgICAgICAgICAgIChjbC10 eXBlLWVycm9yCisgICAgICAgICAgICAgIChzaWduYWwgKGNhciBlKSAoY2RyIGUpKSkKKyAg ICAgICAgICAgICAoZXJyb3IKKyAgICAgICAgICAgICAgOzsgSWYgY2hlY2tpbmcgVFlQRSBz aWduYWxzIGFuIGVycm9yLCBkaXNhYmxlIFRZUEUgYW5kCisgICAgICAgICAgICAgIDs7IHNp Z25hbCBhIGBjbC10eXBlLWVycm9yJyBlcnJvciBtZW50aW9uaW5nIFRZUEUgYW5kCisgICAg ICAgICAgICAgIDs7IHRoZSB1bmRlcmx5aW5nIGVycm9yLgorICAgICAgICAgICAgICAoc2V0 cSBjbC0tZGVyaXZlZC10eXBlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgKGRlbHEgdHlw ZSBjbC0tZGVyaXZlZC10eXBlLWxpc3QpKQorICAgICAgICAgICAgICAoc2lnbmFsICdjbC10 eXBlLWVycm9yIChsaXN0IHR5cGUgZSkpKSkpCiAgICAgICAgICAocHVzaCB0eXBlIGZvdW5k KSkpKQogICAgIChwdXNoIChjbC10eXBlLW9mIG9iamVjdCkgZm91bmQpCiAgICAgOzsgUmV0 dXJuIHRoZSBsaXN0IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCB3aGljaCBpcyBhbHNv IHRoZSBsaXN0Cg== --------------VIPuip3a20cU3D3cKlR0ivhi--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 17 May 2025 14:41:33 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 17 10:41:33 2025 Received: from localhost ([127.0.0.1]:49553 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uGIjE-0002Tk-KZ for submit <at> debbugs.gnu.org; Sat, 17 May 2025 10:41:33 -0400 Received: from smtp-82.smtpout.orange.fr ([80.12.242.82]:39183 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uGIj9-0002TJ-Fh for 77725 <at> debbugs.gnu.org; Sat, 17 May 2025 10:41:29 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id GIj6uUCMFGZFxGIj6ubaZ5; Sat, 17 May 2025 16:41:25 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1747492885; bh=QTncSS8OCgO9ajzRlNJCMC/w6rcvIGkGZADH4h2frw0=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=qx7lE5Vv1ZEdajN28puXWhaU8NuHK7dVcRSg+PCpRrXbqMufdKtbnQXzvfL0ZrVuf rDP2Nu06DEN9NwkiWKqxBjcrQKBrMsAh4qi/4FsKMyCd00B020zWGFbnBe/n84fG/I qpgfmLSY5HOk7Z2VP9jGYoiX0LTwObhWu/VuYEuzcuEQPMK95ZUDCjVVJ+yRy4glsV hoSEiQ6UWzI82whvnDCbqIiUKToFemUzA0/wr4Vf8cYcWe+CLtay1eCVuGvd6+qKNb XR8OpQTU9lKHrP7Ft62FcgUX6emEp/8mKWNdworYFNi2uBAaMOJtEfQXu7bESmt8Fe PrhA0DYhfEVmw== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sat, 17 May 2025 16:41:25 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------WuYezNscc5mE1rJH8KVvB4Jq" Message-ID: <b0f8812e-5a21-45da-9835-302c13dce5a9@HIDDEN> Date: Sat, 17 May 2025 16:41:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN> <jwv1psrvruk.fsf-monnier+emacs@HIDDEN> <692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN> <jwvcycb2q3i.fsf-monnier+emacs@HIDDEN> <4d5dc0dd-fd91-491b-9b3d-9249da30249d@HIDDEN> <jwvplg86373.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvplg86373.fsf-monnier+emacs@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------WuYezNscc5mE1rJH8KVvB4Jq Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit [...] >> That's fine with me. I asked because it seemed to me that it wasn't >> recommended to load cl-macs but rather cl-lib. > > Yes, but that worked OK because in order to *use* those types you needed > to use `cl-deftype` or `cl-typep`, both of which are autoloaded from > `cl-macs.el`. You are right, I forgot that, sorry. >>> Some of those types are virtually never used, so maybe we'll want to >>> move some but not all? >> To be honest, I don't know if/when these types are used. > > `grep` can provide some answers to that question. 🙂 Sure ;-) Please find attached a proposal to improve error handling in `cl-types-of'. Ultimately, I think you were right and it is better to simply report derived type errors to the caller and abort processing, but while also preventing their recurrence as much as possible :-) So my proposal is to still handle any error on a derived type, in order to disable the type as is currently done by removing it from the list of types; but, instead of warn, raise a new `cl-type-error' mentioning the type in error and the underlying error. Here are some simple examples for you to observe the result. (cl-deftype T1 () '(satisfies plusp)) (cl-types-of -0.5) => (real float number number-or-marker atom t) (cl-types-of 12) => (T1 real base-char character fixnum natnum integer number integer-or-marker number-or-marker atom t) (cl-types-of "12") => Error on derived type: T1, (wrong-type-argument number-or-marker-p "12") (cl-deftype T2 () `(satisfies ,(lambda (o) (memq 'T1 (cl-types-of o))))) (cl-types-of "12") => Error on derived type: T2, (excessive-lisp-nesting 1601) Does it make sense? Thanks! David --------------WuYezNscc5mE1rJH8KVvB4Jq Content-Type: text/x-patch; charset=UTF-8; name="cl-extra.patch" Content-Disposition: attachment; filename="cl-extra.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt bGlzcC9jbC1leHRyYS5lbAppbmRleCAxZmUwNDExMDYyZi4uY2JmODFlYTZlMGYgMTAwNjQ0 Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp c3AvY2wtZXh0cmEuZWwKQEAgLTEwMjUsNiArMTAyNSw4IEBAIGNsLS10eXBlcy1vZi1tZW1v CiA7OyAtIGluIGBjbC10eXBlcy1vZicgc3RhcnQgYnkgY2FsbGluZyBgY2wtdHlwZS1vZics IHRoZW4gdXNlIHRoZSBtYXAKIDs7ICAgdG8gZmluZCB3aGljaCBjbC10eXBlcyBtYXkgbmVl ZCB0byBiZSBjaGVja2VkLgogOzsKKyhkZWZpbmUtZXJyb3IgJ2NsLXR5cGUtZXJyb3IgIkVy cm9yIG9uIGRlcml2ZWQgdHlwZSIpCisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gY2wtdHlw ZXMtb2YgKG9iamVjdCAmb3B0aW9uYWwgdHlwZXMpCiAgICJSZXR1cm4gdGhlIGF0b21pYyB0 eXBlcyBPQkpFQ1QgYmVsb25ncyB0by4KQEAgLTEwNDQsMTEgKzEwNDYsMTcgQEAgY2wtdHlw ZXMtb2YKICAgICAgICAgICAgICAoZnVuY2FsbCBwcmVkIG9iamVjdCkKICAgICAgICAgICAg KGNvbmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlCiAgICAgICAgICAgICAgICAoZnVuY2Fs bCBwcmVkIG9iamVjdCkKLSAgICAgICAgICAgICAoZXJyb3IgKHNldHEgY2wtLWRlcml2ZWQt dHlwZS1saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxxIHR5cGUgY2wtLWRl cml2ZWQtdHlwZS1saXN0KSkKLSAgICAgICAgICAgICAgICAgICAgKHdhcm4gICJjbC10eXBl cy1vZiAlUzogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIChlcnJvci1t ZXNzYWdlLXN0cmluZyBlKSkKLSAgICAgICAgICAgICAgICAgICAgbmlsKSkpCisgICAgICAg ICAgICAgKGVycm9yCisgICAgICAgICAgICAgIDs7IElmIGNoZWNraW5nIFRZUEUgc2lnbmFs cyBhbiBlcnJvciwgZGlzYWJsZSBUWVBFIGFuZAorICAgICAgICAgICAgICA7OyBzaWduYWwg YSBgY2wtdHlwZS1lcnJvcicgZXJyb3IgbWVudGlvbmluZyBUWVBFIGFuZAorICAgICAgICAg ICAgICA7OyB0aGUgdW5kZXJseWluZyBlcnJvci4gIENhdGNoaW5nIGBjbC10eXBlLWVycm9y JyBtZWFucworICAgICAgICAgICAgICA7OyBpdCBjb21lcyBmcm9tIHJlY3Vyc2l2ZSBjYWxs cyB0byBgY2wtdHlwZXMtb2YnLCBzbworICAgICAgICAgICAgICA7OyBwcm9wYWdhdGUgaXQg dG8gdGhlIG91dGVybW9zdCBjYWxsIHRvIGBjbC10eXBlcy1vZicuCisgICAgICAgICAgICAg IChpZiAoZXEgKGNhciBlKSAnY2wtdHlwZS1lcnJvcikKKyAgICAgICAgICAgICAgICAgIChz aWduYWwgKGNhciBlKSAoY2RyIGUpKQorICAgICAgICAgICAgICAgIChzZXRxIGNsLS1kZXJp dmVkLXR5cGUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgIChkZWxxIHR5cGUgY2wtLWRl cml2ZWQtdHlwZS1saXN0KSkKKyAgICAgICAgICAgICAgICAoc2lnbmFsICdjbC10eXBlLWVy cm9yIChsaXN0IHR5cGUgZSkpKSkpKQogICAgICAgICAgKHB1c2ggdHlwZSBmb3VuZCkpKSkK ICAgICAocHVzaCAoY2wtdHlwZS1vZiBvYmplY3QpIGZvdW5kKQogICAgIDs7IFJldHVybiB0 aGUgbGlzdCBvZiB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0bywgd2hpY2ggaXMgYWxzbyB0aGUg bGlzdAo= --------------WuYezNscc5mE1rJH8KVvB4Jq--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 16 May 2025 14:30:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 16 10:30:21 2025
Received: from localhost ([127.0.0.1]:39466 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uFw4q-00078M-Co
for submit <at> debbugs.gnu.org; Fri, 16 May 2025 10:30:20 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:23471)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uFw4e-00074Z-QM
for 77725 <at> debbugs.gnu.org; Fri, 16 May 2025 10:30:14 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 47D598092E;
Fri, 16 May 2025 10:30:02 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1747405801;
bh=CFf+5vLjTZFCQREROvMxEt8FFyd1vQgyx0H8mwjU7+k=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=VTeIi388JTLPG5fA302sJjPhT/KzmTRpzAyQK0s+cZUEIYPtO94QPGEcPgekJxId/
NwEOD1Xqre44L7mUUb0nb82+PmnOSh5pd9Z+3YwVhpTm4Nhioi0Mb0hLL3/hV2eg3c
CFRs6yFU2JSoPH3F6E51XCVoaOM8O69n6asXaNBIgC2KBi3CJXRn/AqEAAH6/eBkQn
J0zsiCDKBdy9sCkrgwZDKUJBTA0u8YHvtGqMYawswbeWnPCZOx1FmCwk5YHmACrZqb
xbvLgEAsoUF9jYBj7MxoBhIwUiB1Og40xFN1nv0ILVNU+nCkbpcAdiNV2NQwB9lF0z
kxjD4AaTq8L4g==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 5B317801CC;
Fri, 16 May 2025 10:30:01 -0400 (EDT)
Received: from alfajor (unknown [23.233.149.155])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 3CFE012029A;
Fri, 16 May 2025 10:30:01 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <4d5dc0dd-fd91-491b-9b3d-9249da30249d@HIDDEN>
Message-ID: <jwvplg86373.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN>
<jwv1psrvruk.fsf-monnier+emacs@HIDDEN>
<692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN>
<jwvcycb2q3i.fsf-monnier+emacs@HIDDEN>
<4d5dc0dd-fd91-491b-9b3d-9249da30249d@HIDDEN>
Date: Fri, 16 May 2025 10:30:00 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.189 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>>> So, to create the predefined derived types, it seems that cl-macs
>>> needs to be explicitly loaded. I wonder if this is the expected
>>> behavior?
>> Agreed. But this is the way it's been defined since times immemorial,
>> so I'm not sure we want to change it. I'm not saying we don't, because
>> the new features mean that the circumstances have changed, but I think
>> I'd rather see first how things play out.
> That's fine with me. I asked because it seemed to me that it wasn't
> recommended to load cl-macs but rather cl-lib.
Yes, but that worked OK because in order to *use* those types you needed
to use `cl-deftype` or `cl-typep`, both of which are autoloaded from
`cl-macs.el`.
>> Some of those types are virtually never used, so maybe we'll want to
>> move some but not all?
> To be honest, I don't know if/when these types are used.
`grep` can provide some answers to that question. =F0=9F=99=82
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 15 May 2025 05:02:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu May 15 01:02:31 2025 Received: from localhost ([127.0.0.1]:49405 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uFQjm-0005Eq-Ai for submit <at> debbugs.gnu.org; Thu, 15 May 2025 01:02:31 -0400 Received: from smtp-30.smtpout.orange.fr ([80.12.242.30]:59399 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uFQji-0005E0-MS for 77725 <at> debbugs.gnu.org; Thu, 15 May 2025 01:02:27 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id FQjfuGP9B5ZigFQjguEB8y; Thu, 15 May 2025 07:02:25 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1747285345; bh=0JVFehceV5w23nST/IhK6J8Wi3Cc9+MUBxD5PU0LSAY=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=oQyG+EVsJZkiCNB/CSCQQbZz611mHvlt+zWLmdZHJOBwNwYiP3xJMCflv0Q846PB5 xbgkgDC3FON2vqOo+yvgEl/ZPeDHhrwNzTNSCMDBouxWr4QHOf8R5W1asL3oc62GwC xO9FiijFMMWVU0MgZ4seNOL/OyVFoTKpyAiKU68Hq3AhkAfusdXBhirNCq2PYaMg92 bLJ18XkTuaUR+3xP+9f1fFf190gOKQN3YoVZA88QkoGtJ+qPrsQby03D5qUU0EPyo6 P0lLO2MCBEDetu2htf932zMy5rgK4RUL207P380yhhH4iGVy1dZEKOABFeuUVhFOpL 0zQLtvV2mj7pw== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Thu, 15 May 2025 07:02:25 +0200 X-ME-IP: 90.112.40.65 Message-ID: <4d5dc0dd-fd91-491b-9b3d-9249da30249d@HIDDEN> Date: Thu, 15 May 2025 07:02:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN> <jwv1psrvruk.fsf-monnier+emacs@HIDDEN> <692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN> <jwvcycb2q3i.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvcycb2q3i.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-05-14 18:28, Stefan Monnier wrote: >> So, to create the predefined derived types, it seems that cl-macs >> needs to be explicitly loaded. I wonder if this is the expected >> behavior? > > Agreed. But this is the way it's been defined since times immemorial, > so I'm not sure we want to change it. I'm not saying we don't, because > the new features mean that the circumstances have changed, but I think > I'd rather see first how things play out. That's fine with me. I asked because it seemed to me that it wasn't recommended to load cl-macs but rather cl-lib. > Some of those types are virtually never used, so maybe we'll want to > move some but not all? To be honest, I don't know if/when these types are used. Thanks David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 14 May 2025 16:29:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 14 12:29:13 2025
Received: from localhost ([127.0.0.1]:44648 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uFEyn-0002XJ-BR
for submit <at> debbugs.gnu.org; Wed, 14 May 2025 12:29:13 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:34940)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uFEyj-0002X3-JA
for 77725 <at> debbugs.gnu.org; Wed, 14 May 2025 12:29:10 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id AF3C0441011;
Wed, 14 May 2025 12:29:02 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1747240137;
bh=KOPiOasVMyQHIJyE2I6sqPriqOWStB8mLf5z67Y96YU=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=cMTwEeemIjtYvirCIsmCwULf+lfCyz3RCEZdFqLyDYewO8J55SZVKvYEmgwrzz14a
TC5Vwh9QICk+WN8tH1+aD7R/rv6kMDl0UGpdLQTfAjIAbiizeOSsQLVS8cZpcdGxQ/
LI3BGYwjTiy4DQW7/29H+aP6LxpoRtRtn+oFQoIRjwTOm4bFUhVah16r9NL5xOXUPO
DLLuhWe3NTwcGoEiZYNbE0HdTWse/Mo4JJyA8JigsNTzegZODycq4ycP+7SAJnOLxT
cWAfDgNbVjCYkNtqJcx5Pi/pGxMxsT/8twxqCO7iNNDGbf6L+KsDTz7BwsF6nZIFtn
muaESm2+021Zw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id A25D4440BB5;
Wed, 14 May 2025 12:28:57 -0400 (EDT)
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 8D98A120401;
Wed, 14 May 2025 12:28:57 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN>
Message-ID: <jwvcycb2q3i.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN>
<jwv1psrvruk.fsf-monnier+emacs@HIDDEN>
<692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN>
Date: Wed, 14 May 2025 12:28:57 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL 0.175 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> So, to create the predefined derived types, it seems that cl-macs
> needs to be explicitly loaded. I wonder if this is the expected
> behavior?
Agreed. But this is the way it's been defined since times immemorial,
so I'm not sure we want to change it. I'm not saying we don't, because
the new features mean that the circumstances have changed, but I think
I'd rather see first how things play out.
Some of those types are virtually never used, so maybe we'll want to
move some but not all?
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 14 May 2025 08:48:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 14 04:48:04 2025 Received: from localhost ([127.0.0.1]:39124 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uF7mV-0004Vs-Qm for submit <at> debbugs.gnu.org; Wed, 14 May 2025 04:48:04 -0400 Received: from smtp-77.smtpout.orange.fr ([80.12.242.77]:36179 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uF7mS-0004VB-Sm for 77725 <at> debbugs.gnu.org; Wed, 14 May 2025 04:48:01 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id F7mQuJCL3z7r1F7mQukzgd; Wed, 14 May 2025 10:47:59 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1747212479; bh=+tHitEMt5EGjI1IGOOm0OxNVE7sWWURFGR917NLpP8Q=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=RpeFg6F7AxbFdS6fadUQlxbl1vvDEcu6BqEEMV2shVVOetc7xrcUF9MgkT8o/LzYC mNci+csmTBG40pY67S/70nQLD/PuJAXac93kl51ByrV5TlIxTk4WR13gup0NlM9gTm 0rbQTOwAZvL0ccVOcf9rK68IKBN2gtsyQQcP+dyR99K/i/V46pSpJeLdJra7tpRm1z cfskFbpTIwdmQmy9nhTVlt+9w6kTxbwftq2tMW57A9s0jYOW86wogR647lRCPveSpm SC16hxAz1GHGQx2l1QISduFEI4UDQ6va2+E3BwC4AQkoWZMlbCGEvrITdgpJOyfmDg 1/1xsIN57f7eg== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 14 May 2025 10:47:59 +0200 X-ME-IP: 90.112.40.65 Message-ID: <692c94ce-8f27-4096-9201-f1a37d0a7b41@HIDDEN> Date: Wed, 14 May 2025 10:47:57 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN> <fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN> <jwv1psrvruk.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwv1psrvruk.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-05-14 04:39, Stefan Monnier wrote: >> - (unless (fboundp 'cl--define-derived-type) >> + (when (fboundp 'cl--define-derived-type) > > Duh! > > > Stefan > It's better now, thanks for committing the fix. But I'm still not sure about the current behavior. After "make bootstrap", run "emacs -Q" and evaluate the below recipe in the *scratch* buffer: cl--derived-type-list => nil (require 'cl-lib) => cl-lib cl--derived-type-list => nil (require 'cl-macs) => cl-macs cl--derived-type-list => (real command keyword extended-char base-char character natnum) So, to create the predefined derived types, it seems that cl-macs needs to be explicitly loaded. I wonder if this is the expected behavior? David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 14 May 2025 02:39:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 13 22:39:23 2025
Received: from localhost ([127.0.0.1]:37706 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uF21j-00088X-5h
for submit <at> debbugs.gnu.org; Tue, 13 May 2025 22:39:23 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:3935)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uF21h-00088J-66
for 77725 <at> debbugs.gnu.org; Tue, 13 May 2025 22:39:21 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id EBE7580758;
Tue, 13 May 2025 22:39:14 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1747190353;
bh=hW/hoQyXnWePQrOB9KzTKQ3jhhVXppWmDW+KtsIphZo=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=D6PLItRhm7J3LrpOm+pGDFqe3O7GXDuCKC++5S8vFuw7MKOHgHBUURoSVWqSHczvP
dlMRxYxi5e44ZFxCSVOZ2A0thBQ/IeDnlM4Zi5fU+/K5cJEtC+jIQK6DLKpLVbxTwp
q4edKCWP9MHmY85IWP2634ImtGiQcOk2RQVSC3Io88i1O7n/ilb9dk2r/0yo1fT/Vk
GJeDC84C1LGgrRzAAINiNHFSdd/wnnYF/oKMrnLfUvuDbmHx8/MSgTxduP316rIsH2
ci8VUsDffBnxQ3/Zxhs0SdJgMwwj+yswg1qG3RXMKMl90R0iNzRMEV672E+k7Wtu3K
N9AR45s5Obv0A==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id B6C9A806EF;
Tue, 13 May 2025 22:39:13 -0400 (EDT)
Received: from pastel (104-195-232-56.cpe.teksavvy.com [104.195.232.56])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 6890C120415;
Tue, 13 May 2025 22:39:13 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN>
Message-ID: <jwv1psrvruk.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
<fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN>
Date: Tue, 13 May 2025 22:39:12 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.094 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> - (unless (fboundp 'cl--define-derived-type)
> + (when (fboundp 'cl--define-derived-type)
Duh!
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 13 May 2025 16:04:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 13 12:04:13 2025
Received: from localhost ([127.0.0.1]:32824 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uEs72-0000RI-QK
for submit <at> debbugs.gnu.org; Tue, 13 May 2025 12:04:13 -0400
Received: from smtp-22.smtpout.orange.fr ([80.12.242.22]:54025
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uEs70-0000R5-5c
for 77725 <at> debbugs.gnu.org; Tue, 13 May 2025 12:04:11 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id Es6xu39Jno5ZmEs6xuV4vN; Tue, 13 May 2025 18:04:08 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1747152248;
bh=hFvMJtGxV442mQuzy+BYMGEL7ohPNKdk6mHva/YmmiM=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=feMVzBUHuBCtST41rt365YUvGgwklrrv/CF6hxwW1FhEjGFuhSsPeAWmsmvxQucsP
MHYPcHl2Ubo4f5CiFpaoGz1hR7baGAoe7hxF8EMscZdxK6vjT7DiaAcb6/gwcqbtn5
fuXW28LuDpgwRew8B/Pzv3jGZrPVK4adY3pWCXGyxI0fMG6bK0S7AZqnzV0vE1kVqQ
txZJwERLIECbMMqY/pLFFZJ3jtJcOsog4zyExxQmhhOvo6QElTvD/MYwvSbgUWJRTA
Y33TJ/6WXh+Nmit9judoK1u904jXMA7XIzLi4yRDa5t0Ep3xD5kTBac/j/V6DI0NmR
LsVcO2iIzY8ZQ==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Tue, 13 May 2025 18:04:08 +0200
X-ME-IP: 90.112.40.65
Message-ID: <fbca840b-42b3-48e3-8131-24a3002a54a4@HIDDEN>
Date: Tue, 13 May 2025 18:04:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
<jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Hi Stefan,
It seems that since your commit below:
commit dfafe1830f06634ec779fd62f7081d4cc4f6d3e7
lisp/emacs-lisp/cl-macs.el (cl--define-derived-type): Fix partial bootstrap
None of the derived types mentioned in cl-macs.el are created anymore.
Even after "make bootstrap".
The patch below fixed the problem for me, so I'm wondering if, when you
wrote "unless," you actually meant "when" ;-)
Thanks!
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index d086afc49e4..d594b3cb233 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -3820,7 +3820,7 @@ cl-deftype
;; Thanks to `eval-and-compile', `cl--define-derived-type' is needed
;; both at compile-time and at runtime, so we need to double-check.
(static-if (not (fboundp 'cl--define-derived-type)) nil
- (unless (fboundp 'cl--define-derived-type)
+ (when (fboundp 'cl--define-derived-type)
(cl-deftype natnum () (declare (parents integer)) '(satisfies natnump))
(cl-deftype character () (declare (parents fixnum natnum))
'(and fixnum natnum))
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 8 May 2025 21:32:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu May 08 17:32:16 2025
Received: from localhost ([127.0.0.1]:33076 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uD8ql-000543-JI
for submit <at> debbugs.gnu.org; Thu, 08 May 2025 17:32:16 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:38475)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uD8qi-00053e-PZ
for 77725 <at> debbugs.gnu.org; Thu, 08 May 2025 17:32:13 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id BB3A4808C2;
Thu, 8 May 2025 17:32:06 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1746739925;
bh=2Tnn5/2eMMk2LRTlnsPIKhR1YDuu//Jg8uZgoGMVP5U=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=QGctWH+Ls9QOkgnhpO6+ni0BPZoUr2o5PxpZdC3HHGD8NqZKNwIhFNgoXoz1Kj85c
wKzakX9u2UBhx0SJ8XRddxPl/zR5dkhbP8aHi4NnzqUodwINCGHy6kTjx/ikSQmfCO
szz4KY9/14/aSr/I9OkwYlorm5eOYOdHmufOQWO5gXgcj+ZZBUEH52O0yX+Oc5lUd9
YqSgaBbRTIchfRsV7AOooJduszhniN0keNeiD0qjI1cnHwODBrPagw9oIEMjeaSbqM
bQQ2qFnggcA0c42cPI/+gQXdxu7YTzJ6Khc4ain0BjNG61IG4J1GlPSCw12xqfLW0T
GZ3BZCxJzAl4A==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C2383806BF;
Thu, 8 May 2025 17:32:05 -0400 (EDT)
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id AA1C01202AB;
Thu, 8 May 2025 17:32:05 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
Message-ID: <jwvtt5uzu2r.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
<jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
<708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN>
Date: Thu, 08 May 2025 17:31:57 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL 0.187 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
Now that it's in `master`, you can think of the next steps:
- Make it more efficient. By following the `parents` you can collect
the set of built-in type in its ancestry and from that compute the set
of types that `cl-type-of` might return for which there's a change
that the current type applies. Basically: walk up the `parents` chain
until the first built-in type. And from there, walk *down* from that
"parent built-in type" to collect all its descendants: if `cl-type-of`
returns a type which is not among those collected types, then we know
the value is not in our type.
E.g. `natnum` would have `integer` as parent, so we'd collect
`integer`, `fixnum`, and `bignum` as the possible types.
We could then have a hash-table indexed by built-in type giving the
set of possible derived types, and we'd add `natnum` to all
three entries (we may be able to skip `integer`, tho currently we
don't keep track of which built-in types are abstract like `integer`
and which ones are concrete (meaning that `cl-type-of` may return
it)).
So `cl-types-of` could start by indexing in the hash-table and then
only test the possibly relevant derived types.
- Make it more automatic: we should be able to guess the `parents`
automatically in many cases. Just look for `(and TYPE1 TYPE2 ...)`
and you immediately know that TYPE1 and TYPE2 are parents.
- Make it better behaved: E.g. if after defining `natnum` I define
`my-foo` as `(or natnum symbol)`, then `my-foo` is less specific
than `natnum` but it will appear first in the list, because I defined
it afterwards.
To resolve this, I think we need to support a `children` declaration,
in addition to the `parents` declaration. Then again maybe we don't
need a declaration for that and we can extract that info by looking
for types of the form `(or TYPE1 TYPE2 ...)`. But we still then need
to make use of that information to properly order the types.
Another way to look at this is to try and implement `cl-subtypep`.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 8 May 2025 15:27:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu May 08 11:27:22 2025 Received: from localhost ([127.0.0.1]:58883 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uD39e-0007Lb-1q for submit <at> debbugs.gnu.org; Thu, 08 May 2025 11:27:22 -0400 Received: from smtp-70.smtpout.orange.fr ([80.12.242.70]:33291 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uD39a-0007LO-37 for 77725 <at> debbugs.gnu.org; Thu, 08 May 2025 11:27:19 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id D39WuxdzwzRwXD39Wu9ZXx; Thu, 08 May 2025 17:27:16 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746718036; bh=KIdMDXg2BQp0rXaZ5DVcr87p0Uc896b8R6eFC4vvmc8=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=T39dwIRnwUlHxeGdHC8sdxo6TH8J0vzZFNN3pR6yGBVdQ/z+FN4C1+tDjomPVE8bQ GE+DoygFvSTXtLd1EyCqgFkxMsXnpSRQtsSJu/f83ZVCyxbMrekI89hXOLAF7NTKGv p9tBxHgY5EkFzB9PfkMSXrwJJ3G+xib/Sy0wrhj3HvioY3Yrmupk4d12tc52jT7oHv GoWjjj+8ewbadPYHZ/j8HW2LWGr/GnSTgzInxEZILm0CKYswbyBfpOstkDZDU43aKB VJWKRJOD/jG9fTMd6wfsiM3MeuXam2nqwEksbdm30vXDp7xnzvjaz3H3BDE1fF99mi eQN1C3cMnvjvA== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Thu, 08 May 2025 17:27:16 +0200 X-ME-IP: 90.112.40.65 Message-ID: <708544b9-6b78-4a2a-8627-00a18fdc93ce@HIDDEN> Date: Thu, 8 May 2025 17:27:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN> <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN> <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-05-08 16:56, Stefan Monnier wrote: >> (cl-defmethod cl-generic-generalizers :extra "derived-types" (type) >> "Support for dispatch on derived types, i.e. defined with `cl-deftype'." >> (if (and (symbolp type) (cl-derived-type-class-p (cl--find-class type)) >> ;; Make sure this derived type can be used without arguments. >> (let ((expander (get type 'cl-deftype-handler))) >> (and expander (with-demoted-errors "%S" (funcall expander))))) >> (cl--derived-type-generalizers type) >> (cl-call-next-method))) >> >> Could now be simplified like this: >> >> (cl-defmethod cl-generic-generalizers :extra "derived-types" (type) >> "Support for dispatch on derived types, i.e. defined with `cl-deftype'." >> (if (and (symbolp type) (cl-derived-type-class-p (cl--find-class type)) >> ;; Make sure this derived type can be used without arguments. >> (memq type cl--derived-type-list)) ;; <<<<<<<<<<<<<<<<<<< >> (cl--derived-type-generalizers type) >> (cl-call-next-method))) > > Yes, or we could check (get type 'cl-deftype-satisfies), but I think > here if (funcall expander) signals an error we want the user to know, > because when (cl-derived-type-class-p (cl--find-class type)) is true, it > means *we* are the generalizer that should be in charge and an expander > error means there's an error elsewhere, most likely in TYPE itself. > That's also why I changed the `ignore-errors` to `with-demoted-errors`. > Ah, OK, it makes sense. Thank you! > Actually, I think this expander test should be moved to > `cl--derived-type-generalizers` so we don't keep trying with > other generalizers. It would be better, yes. Have a nice day. David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 8 May 2025 14:56:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu May 08 10:56:35 2025
Received: from localhost ([127.0.0.1]:58709 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uD2fq-0005Pm-Sb
for submit <at> debbugs.gnu.org; Thu, 08 May 2025 10:56:35 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:64068)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uD2fh-0005Oy-3O
for 77725 <at> debbugs.gnu.org; Thu, 08 May 2025 10:56:28 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 8F21A441201;
Thu, 8 May 2025 10:56:18 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1746716177;
bh=rIu5CyGjXMhyZtsCsNWb1YVTTJsy6jDYXnl0zBaDdXI=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=RwMP75IsU6v8UM8qb39ZrxyB6GzZmFzXB88jw5g1lT/iDTK7zArwU8gm3H1CVwSDi
g1EQ3DHmCxno7ED7QX7rBoVxonPHqZKQsCD+SpboD9hpfc0APxuOAIempo571BZgGR
C2SbNmSSkxvtxeBWGr39VIXvEYycEg85tIVuiNXWf3Ca8JwI1jlfIJYzPOm591AyeV
z63BeV+0SnbfyI6ZnDiyVM42jEs79ZWCRIq6W//l1vQqkrWosqa+fOjlvS1nzzSpws
286jw74cSEBygeNn+gfxWkprFKeJ5uX/YG+tMlJsQltuTbTc+HsjMAvD3/IQ0R59hn
6/9pV/nzem5tg==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 69E304411B3;
Thu, 8 May 2025 10:56:17 -0400 (EDT)
Received: from pastel (104-195-232-56.cpe.teksavvy.com [104.195.232.56])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 2C2B112024D;
Thu, 8 May 2025 10:56:17 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
Message-ID: <jwvbjs3p33r.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
<22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
Date: Thu, 08 May 2025 10:56:16 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.043 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> (cl-defmethod cl-generic-generalizers :extra "derived-types" (type)
> "Support for dispatch on derived types, i.e. defined with `cl-deftype'."
> (if (and (symbolp type) (cl-derived-type-class-p (cl--find-class type))
> ;; Make sure this derived type can be used without arguments.
> (let ((expander (get type 'cl-deftype-handler)))
> (and expander (with-demoted-errors "%S" (funcall expander)))))
> (cl--derived-type-generalizers type)
> (cl-call-next-method)))
>
> Could now be simplified like this:
>
> (cl-defmethod cl-generic-generalizers :extra "derived-types" (type)
> "Support for dispatch on derived types, i.e. defined with `cl-deftype'."
> (if (and (symbolp type) (cl-derived-type-class-p (cl--find-class type))
> ;; Make sure this derived type can be used without arguments.
> (memq type cl--derived-type-list)) ;; <<<<<<<<<<<<<<<<<<<
> (cl--derived-type-generalizers type)
> (cl-call-next-method)))
Yes, or we could check (get type 'cl-deftype-satisfies), but I think
here if (funcall expander) signals an error we want the user to know,
because when (cl-derived-type-class-p (cl--find-class type)) is true, it
means *we* are the generalizer that should be in charge and an expander
error means there's an error elsewhere, most likely in TYPE itself.
That's also why I changed the `ignore-errors` to `with-demoted-errors`.
Actually, I think this expander test should be moved to
`cl--derived-type-generalizers` so we don't keep trying with
other generalizers.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 8 May 2025 11:55:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu May 08 07:55:20 2025
Received: from localhost ([127.0.0.1]:54985 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uCzqS-0006N4-34
for submit <at> debbugs.gnu.org; Thu, 08 May 2025 07:55:20 -0400
Received: from smtp-77.smtpout.orange.fr ([80.12.242.77]:41131
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uCzqO-0006Mm-R5
for 77725 <at> debbugs.gnu.org; Thu, 08 May 2025 07:55:17 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id CzqLubQqTz7r1CzqLuBL7n; Thu, 08 May 2025 13:55:15 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1746705315;
bh=NZC4QrtSpM4NquTo9rAM87cjAvkA4GUrMMxKyV7HXNk=;
h=Message-ID:Date:MIME-Version:Subject:From:To;
b=VjjZ35vBcNTAtA7m9iqj2TvtB5TZ1OpqjOO5MxE5difDcBEYvTxVHH75wjnF04QsM
7Acv9B9Wr5xNw6jJsSa8FfuLbs/VaEI7YJHZMEtyoa+rkzwLqq5QZlWGIEh2x40QIy
C+eW4o33p3hbZtqWtJdkhwfrTDreAgTHq8RWCo8N7L0QGY30mgFmxj11mQQ/+jC4Rh
n51z/hWuN+2H3FID0y16lD9IqeAnwQJPQPlYDxEH351z8Lq82oajo+r3YlouKJ2ds7
KDkTERptcIH30KTGmTtFe6DOoqFzSIq1WqJfLkocHHSE10pcJE2JIsoJjb0B/2mY43
fYSO8bB4dhsXQ==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Thu, 08 May 2025 13:55:15 +0200
X-ME-IP: 90.112.40.65
Message-ID: <22341629-e6d5-45af-b5d4-501d171464e4@HIDDEN>
Date: Thu, 8 May 2025 13:55:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
From: David Ponce <da_vid@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
<jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
<b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
Content-Language: fr, en-US
In-Reply-To: <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Just to let you know that I now switched my own libraries to use the
builtin derived types, and they work nicely :-)
I am following your last (great) changes on master, and I wonder if
the method `cl-generic-generalizers' in cl-lib:
(cl-defmethod cl-generic-generalizers :extra "derived-types" (type)
"Support for dispatch on derived types, i.e. defined with `cl-deftype'."
(if (and (symbolp type) (cl-derived-type-class-p (cl--find-class type))
;; Make sure this derived type can be used without arguments.
(let ((expander (get type 'cl-deftype-handler)))
(and expander (with-demoted-errors "%S" (funcall expander)))))
(cl--derived-type-generalizers type)
(cl-call-next-method)))
Could now be simplified like this:
(cl-defmethod cl-generic-generalizers :extra "derived-types" (type)
"Support for dispatch on derived types, i.e. defined with `cl-deftype'."
(if (and (symbolp type) (cl-derived-type-class-p (cl--find-class type))
;; Make sure this derived type can be used without arguments.
(memq type cl--derived-type-list)) ;; <<<<<<<<<<<<<<<<<<<
(cl--derived-type-generalizers type)
(cl-call-next-method)))
Because `cl--define-derived-type' ensures that only type without
arguments are in `cl--derived-type-list'. This will also ensure
that the type had no error (otherwise it would have been removed
from `cl--derived-type-list'), for free ;-)
Thanks!
David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 7 May 2025 19:33:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 07 15:33:14 2025 Received: from localhost ([127.0.0.1]:47969 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uCkW1-0001Gp-KT for submit <at> debbugs.gnu.org; Wed, 07 May 2025 15:33:13 -0400 Received: from smtp-74.smtpout.orange.fr ([80.12.242.74]:54787 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uCkVx-0001GQ-7S for 77725 <at> debbugs.gnu.org; Wed, 07 May 2025 15:33:10 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id CkVuuvgFMqLdVCkVuu9PoU; Wed, 07 May 2025 21:33:07 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746646387; bh=mymBZKN5n5CxH1JiEJiQlqruvrHhFMtMUJ8uUxFRChc=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=A45gtJkEg/gdKA3FY414RXs+U4rSEto3Et1MG4PlK7n5UEx/EIbEONv6ixefiXXuM JIvJsDhs1RiBZVsJd/O/U1vVTUWj1+cEL1UPXCcDZxVRwcNdvbuPm63z4KSEU0OW+U iULUnQ67NUqdlVxC6Oiz4noo5DChiVRYw66IjhNDvVROTgw2yiLornEXEAtjsU4k62 C3fMwulEkzf5EFzaFfMWqWzzbuyRKJOMvX/o8AGHCZtGQuMHMxwQMCxTry2QI4yqT1 7WAFS11vmeMZpdqWm495+TqjycRGYd5DcMhgrNSuW7nDowdqionheGniMtVN88O2+D D2GOFdPeFS2Aw== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 07 May 2025 21:33:07 +0200 X-ME-IP: 90.112.40.65 Message-ID: <b1c2d10c-d9e9-4caa-b5d4-de0836e91c7c@HIDDEN> Date: Wed, 7 May 2025 21:33:05 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN> <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwva57o2qqr.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-05-07 20:59, Stefan Monnier wrote: >> On the other hand, I don't see what advantage there is in allowing the >> definition of new methods based on a type that cannot be dispatched >> because it is in error. Unless perhaps these methods become functional >> again without doing anything when the type definition has been >> fixed. In this case, I agree it is better not to block >> anything. So I will rely on your experience in this area ;-) > > I'm just being optimistic. > It may turn out you were right, in which case we'll revisit > this decision. Make sense :-) > > In the mean time I did some renaming to use the term "derived type", > added some docs, and pushed the result to `master`. You did an impressive work! Thank you so much for making this breakthrough for Emacs possible! David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 7 May 2025 18:59:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 07 14:59:50 2025
Received: from localhost ([127.0.0.1]:47703 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uCjzh-0007VM-Nt
for submit <at> debbugs.gnu.org; Wed, 07 May 2025 14:59:50 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:23379)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uCjzf-0007V8-Oo
for 77725 <at> debbugs.gnu.org; Wed, 07 May 2025 14:59:48 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id D14F5808AD;
Wed, 7 May 2025 14:59:41 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1746644381;
bh=mPllUvHQPaFhLAzcrDQjCgV85nUTFuDrIh13+sGQ+2c=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=AoHlmA0RcE4SGTsgO644y5P5tT799YRgr0PwLoTdPwupUG+O9fG2YVBwv6VUxoJqi
uWJMuAP8EZWqe2ihErMe+hJ/cnviuvNtJgfxlShz74eQ/P808uYISL8b/TgcbBv2Ty
GqO/+89Xo+/RzVJUjsiQzn5yffG2yHTgV3UArTWOneVdjJ/P4fu475RApzPs94MaMn
MLLwV00cW6YfJwsRLq3NjEZIRaXPiJXW1OkoXIMoYnRuYvqkrwMRRxrNJpL59HO/sg
aMrj2tEJP0WBlNst9mum6GnYyd/PX66GUcveRvayBrd1B7U3bqUSJX+1AYDgX1l/eF
dxjI+22Yy6F3A==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 04ACE8087C;
Wed, 7 May 2025 14:59:41 -0400 (EDT)
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id E8E5C12049E;
Wed, 7 May 2025 14:59:40 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
Message-ID: <jwva57o2qqr.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
<jwvldr82z24.fsf-monnier+emacs@HIDDEN>
<33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN>
Date: Wed, 07 May 2025 14:59:40 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL 0.188 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> On the other hand, I don't see what advantage there is in allowing the
> definition of new methods based on a type that cannot be dispatched
> because it is in error. Unless perhaps these methods become functional
> again without doing anything when the type definition has been
> fixed. In this case, I agree it is better not to block
> anything. So I will rely on your experience in this area ;-)
I'm just being optimistic.
It may turn out you were right, in which case we'll revisit
this decision.
In the mean time I did some renaming to use the term "derived type",
added some docs, and pushed the result to `master`.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 7 May 2025 17:06:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 07 13:06:36 2025 Received: from localhost ([127.0.0.1]:46633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uCiE7-00008E-8d for submit <at> debbugs.gnu.org; Wed, 07 May 2025 13:06:36 -0400 Received: from smtp-30.smtpout.orange.fr ([80.12.242.30]:51777 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uCiDv-00007L-5W for 77725 <at> debbugs.gnu.org; Wed, 07 May 2025 13:06:32 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id CiDrur6cD7KAkCiDsup6se; Wed, 07 May 2025 19:06:21 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746637581; bh=c8vuoYiBqURjxPWBzNcGG5ZZ86LwhufaiCI6hL3fJdI=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=Z/JSjEljJbN4Tq9jLH9n5wLrY9WlCexy0QAPs4dW69tTDqa7Jv7LvWo/8D/0GQ3Py yN+49LKg8/WS6A0N0d+Wg2IYp8y7ccGTPLS8tIlL9HYYLpGrRZl/kNrijGn+wKQqKx 3FerhRR7uJ5cFt/Ge0IzEOlCqZwruXVv2IYvLX4B7GlTKQoDB2u3plZ/KWGIFeAbpt Gpaaal8HkhMDLXXQbMlBv/yo+gT33Cb3WkdxBdROc/Ca7WhUFnqSm3W6AG6344MjDL KUBtN9Vz+wX5pCmqC+cDpbABw3nA+Y4QmIiq0YA9dCcnBVnTxHCVsakN0fOwcYwuLN vmMpHIk1kv+nQ== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 07 May 2025 19:06:21 +0200 X-ME-IP: 90.112.40.65 Message-ID: <33c05701-fb38-4819-b103-64fde1d9e493@HIDDEN> Date: Wed, 7 May 2025 19:06:19 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN> <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> <jwvldr82z24.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvldr82z24.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-05-07 18:19, Stefan Monnier wrote: >> Yes, `message' will definitely work better, but errors will be less >> highlighted. But a message is always better than nothing ;-) >> >> I wouldn't want ill-defined types entering infinite recursion to >> break error handling, just because the depth limit is reached, > > As I said, this is a general problem. Do you have reasons to believe it > is much more prevalent here than elsewhere? Without error handling, types that follow a type in error will not be considered, so the corresponding methods will not be dispatched, so other errors, etc. I tried to issue a plain `message' instead of calling `warn', and it works nicely without the need to increase recursion depth in relevant cases. Valid types are still usable, and the message clearly mention the type that encountered a problem, and what the problem is. So, for me, it is a clear benefit ;-) [...] > I like `mapcar`, but indeed here we do want the reversal that > dolist+push gives us "for free". I haven't pushed your patch yet > because git.sv.gnu.org is not responding, but I'll do it "soonish". Thank you! >> Please find attached another small patch for the method >> `cl-generic-generalizers' in cl-lib.el. >> >> It ensures that the derived type is still present in the >> `cl--type-list', in order to signal an "unkonw specializer" >> error, if the type was removed from the list because it >> was in error. > > But this can lead to the weird "unknown specializer" error for a type > which *is* known (just defined poorly enough that it signaled an error > at some point). On the other hand, I don't see what advantage there is in allowing the definition of new methods based on a type that cannot be dispatched because it is in error. Unless perhaps these methods become functional again without doing anything when the type definition has been fixed. In this case, I agree it is better not to block anything. So I will rely on your experience in this area ;-) David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 7 May 2025 16:19:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 07 12:19:36 2025
Received: from localhost ([127.0.0.1]:46229 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uChUe-0005Xp-4j
for submit <at> debbugs.gnu.org; Wed, 07 May 2025 12:19:36 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:38019)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uChUX-0005XF-Uy
for 77725 <at> debbugs.gnu.org; Wed, 07 May 2025 12:19:30 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 0FFAD808AD;
Wed, 7 May 2025 12:19:24 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1746634763;
bh=kExtpf1tyiy/OA7TU5MVM5vBT0dZRouTtk8+9pWo958=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=HScFHVp396tsuJyEh+gzZaMI33fdjiOg2VF8zTZBLnEmAAzwOSjmBuZuZ9WspjQTV
SQAQW0kMb7m0rBYjrMSceD2XdUayqqM+OggpQEqmWmMcV5jnkFj3VD2fxnERs1+P+W
q18z1EhI7RPo5RyXAO/7ovvIgjemu7d6YXvT7KjuztLnHv41YoSNmQpVFX9xZZaUsl
9ca+HXgOQKAqvd6HBmlOSOph2AhnUCjkJgmpdpsC4XNwO7h57GWi8TOtd/W1oZz3P0
ZyExXvIO7Py5ufYB0FD0os1dqs3YX0Hfxq7oULqXEpBAStma4idXadIGJ/KBsqI9b5
uqA0jMC1VhVag==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id EC50D80191;
Wed, 7 May 2025 12:19:22 -0400 (EDT)
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id D5F681204C0;
Wed, 7 May 2025 12:19:22 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
Message-ID: <jwvldr82z24.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
<fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
Date: Wed, 07 May 2025 12:19:22 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL 0.193 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>>> (condition-case-unless-debug e
>>> (cl-typep object type)
>>> - (error (setq cl--type-list (delq type cl--type-list))
>>> - (warn "cl-types-of %S: %s"
>>> - type (error-message-string e)))))
>>> + (error
>>> + ;; Temporarily raise the recursion limit to avoid
>>> + ;; another recursion error while processing error.
>>> + (let ((max-lisp-eval-depth (+ 800 max-lisp-eval-depth)))
>> We almost never do that in ELisp except in very specific circumstances
>> where we decide it's really worth the trouble (even in though in theory
>> it could be necessary in pretty much all error handlers).
>> Is there a reason why it's more necessary here than usual?
>> Maybe a simpler fix is to replace `warn` with `message`?
>
> Yes, `message' will definitely work better, but errors will be less
> highlighted. But a message is always better than nothing ;-)
>
> I wouldn't want ill-defined types entering infinite recursion to
> break error handling, just because the depth limit is reached,
As I said, this is a general problem. Do you have reasons to believe it
is much more prevalent here than elsewhere?
Also, to some extent it could be fixed in a general way (and indeed we
do have code in `Fsignal` to bump up the depth limit when running some
of the error handling code, so it may just need to be adjusted to cover
more cases).
Maybe it should be a separate bug-report/feature-request.
> thus preventing `warn' to be called. And no error handling in
> `cl-types-of' is not an option IMHO, because Emacs risks to become
> unusable if methods based on cl-types, used for example in a display
> context, crash.
To the extend the method dispatch only looks at types used in existing
methods, this shouldn't be a big issue: hopefully a method wouldn't use
a type whose definition is broken, and if it does we'd hopefully
discover it quickly so it would be fixed quickly as well.
> In fact, I don't like the idea of =E2=80=8B=E2=80=8Bwell-defined
> things being disrupted by ill-defined ones ;-)
But there's a trade-off. Also it's easier to add error checking after
the fact than to remove it after the fact, so I'd strongly prefer to let
errors be signaled for now.
> While testing, I discovered two nasty bugs in `cl-types-of' illustrated
> by the following recipe:
>
> (cl-deftype T1 ()
> "Ill-defined type."
> '(satisfies unknown-predicate))
>
> (cl-types-of 12)
> Raise this warning as expected:
> Warning (emacs): cl-types-of T1: Symbol=E2=80=99s function definition is =
void: unknown-predicate
>
> But returns this incorrect list of types:
> =3D> (T1 kmacro-register frame-register fixnum integer number
> integer-or-marker number-or-marker atom t)
Oops, good catch, thanks.
> (cl-defmethod test-T1 ((obj T1))
> (format "test-T1 %S" obj))
> Should signal an "unknown specializer" for T1, but do not.
I don't think it should: T1 *is* a known specializer. It's just one
whose definition is broken, but we'll only discover that when we
actually try to use it.
> The second problem is a nasty side effect of `nreverse' which
> causes a wrong key pushed in the `gtype--unique' hash table.
Duh, indeed!
> The attached patch solved both issues for me. To compute the DAG,
> I preferred to use a `dolist' loop rather than a `mapcar'+`reverse'
> combination, to avoid going through the list twice.
I like `mapcar`, but indeed here we do want the reversal that
dolist+push gives us "for free". I haven't pushed your patch yet
because git.sv.gnu.org is not responding, but I'll do it "soonish".
> Please find attached another small patch for the method
> `cl-generic-generalizers' in cl-lib.el.
>
> It ensures that the derived type is still present in the
> `cl--type-list', in order to signal an "unkonw specializer"
> error, if the type was removed from the list because it
> was in error.
But this can lead to the weird "unknown specializer" error for a type
which *is* known (just defined poorly enough that it signaled an error
at some point).
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 7 May 2025 13:40:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 07 09:40:38 2025 Received: from localhost ([127.0.0.1]:42620 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uCf0n-0003IJ-Nu for submit <at> debbugs.gnu.org; Wed, 07 May 2025 09:40:38 -0400 Received: from smtp-82.smtpout.orange.fr ([80.12.242.82]:49589 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uCf0k-0003Hx-HF for 77725 <at> debbugs.gnu.org; Wed, 07 May 2025 09:40:35 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id Cf0hu3pcLoRemCf0huWvrd; Wed, 07 May 2025 15:40:32 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746625232; bh=RvoxFiAo8zaLB4vCeDgcEwnE90DNE5HST0jjkejqyhU=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=RJKijevK5jfxlxoc0mBjnKStsIjtYAd5fc0sULGyZW9z29YHAXyCFL+rn3Ie/n9mu MABEz1oki0Y/yXC2had9UYVz1wBqQQ22u54xRayKaQbMFRlh6p5N9+9GyHPpJ66mkB gvmyJArAfUZEZYXUBn3DtcpsNNw13bYEYKyrJrIEIUTSsLKBfzWF8jBKn06OYhU3Zr r3YL8USR80KNS6vVu52/rqpMkZkMPTXlI/xO/K682ig7ctNvMvJD+HX0QQxNb8g3Dj gyzyxLvvcWYTLvcoUF+b5nFEi/Lve3J7KKGKX/956xFGWGHa8r+KTRIAtqvaw9Rn53 dGy5BK6S1/3FA== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 07 May 2025 15:40:32 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------zaecVHtFFAdTWxh3ziXuRte4" Message-ID: <4d19714d-15f7-4b36-a0ae-50982ed79098@HIDDEN> Date: Wed, 7 May 2025 15:40:31 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? From: David Ponce <da_vid@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN> <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN> <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> Content-Language: fr, en-US In-Reply-To: <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------zaecVHtFFAdTWxh3ziXuRte4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Please find attached another small patch for the method `cl-generic-generalizers' in cl-lib.el. It ensures that the derived type is still present in the `cl--type-list', in order to signal an "unkonw specializer" error, if the type was removed from the list because it was in error. David --------------zaecVHtFFAdTWxh3ziXuRte4 Content-Type: text/x-patch; charset=UTF-8; name="cl-lib.patch" Content-Disposition: attachment; filename="cl-lib.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1saWIuZWwgYi9saXNwL2VtYWNzLWxp c3AvY2wtbGliLmVsCmluZGV4IDJkZTgxMzExMzgwLi5kN2U2OGE4NTJlZiAxMDA2NDQKLS0t IGEvbGlzcC9lbWFjcy1saXNwL2NsLWxpYi5lbAorKysgYi9saXNwL2VtYWNzLWxpc3AvY2wt bGliLmVsCkBAIC01NzAsNyArNTcwLDEwIEBAIGNsLXBhaXJsaXMKICAgKGNsLWRlZm1ldGhv ZCBjbC1nZW5lcmljLWdlbmVyYWxpemVycyA6ZXh0cmEgImNsLXR5cGVzLW9mIiAodHlwZSkK ICAgICAiU3VwcG9ydCBmb3IgZGlzcGF0Y2ggb24gY2wtdHlwZXMuIgogICAgIChpZiAoYW5k IChzeW1ib2xwIHR5cGUpIChjbC10eXBlLWNsYXNzLXAgKGNsLS1maW5kLWNsYXNzIHR5cGUp KQotICAgICAgICAgICAgIDs7IE1ha2Ugc3VyZSB0aGlzIGRlcml2ZWQgdHlwZSBjYW4gYmUg dXNlZCB3aXRob3V0IGFyZ3VtZW50cy4KKyAgICAgICAgICAgICA7OyBNYWtlIHN1cmUgdGhp cyBkZXJpdmVkIHR5cGUgaXMgc3RpbGwgaW4gdGhlIHByZWNlZGVuY2UKKyAgICAgICAgICAg ICA7OyBsaXN0IChub3QgcmVtb3ZlZCBiZWNhdXNlIGluIGVycm9yKSwgYW5kIGNhbiBiZSB1 c2VkCisgICAgICAgICAgICAgOzsgd2l0aG91dCBhcmd1bWVudHMuCisgICAgICAgICAgICAg KG1lbXEgdHlwZSBjbC0tdHlwZS1saXN0KQogICAgICAgICAgICAgIChsZXQgKChleHBhbmRl ciAoZ2V0IHR5cGUgJ2NsLWRlZnR5cGUtaGFuZGxlcikpKQogICAgICAgICAgICAgICAgKGFu ZCBleHBhbmRlciAoaWdub3JlLWVycm9ycyAoZnVuY2FsbCBleHBhbmRlcikpKSkpCiAgICAg ICAgIChjbC0tdHlwZS1nZW5lcmFsaXplcnMgdHlwZSkK --------------zaecVHtFFAdTWxh3ziXuRte4--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 7 May 2025 10:36:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed May 07 06:36:10 2025
Received: from localhost ([127.0.0.1]:41278 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uCc8H-00030p-4D
for submit <at> debbugs.gnu.org; Wed, 07 May 2025 06:36:09 -0400
Received: from smtp-77.smtpout.orange.fr ([80.12.242.77]:43035
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uCc8A-0002zf-6E
for 77725 <at> debbugs.gnu.org; Wed, 07 May 2025 06:36:06 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id Cc87uTZOTz7r1Cc87uWJmz; Wed, 07 May 2025 12:36:00 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1746614160;
bh=YrwN+ac1Yji/5DJBqHjfn/epVcm0sFpExF4alaO+VL8=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=S82TAUZn5DMQNeeudRU3yOJE856DpOdK0wAhlLPOpRW3ga1n1N1Jsa9NFQMhu1k/h
F03U8/R6+yvXcI0lxEvgqSKmnTz2VloOXKbpLoOl+KgvHaNFHigLdaNxZD66fx9r1v
rMW6JmB3gt46ZrjP5Aat8f33gApoDmpoBfQQq4xrepbpVPZecc830T77+iWJ2/LsqU
chKrThyroJw4eJMJEtSfbB7RFjFrDTQHLUcSNsxPt4E3pTQDpv0FeneDFwXQot2viD
xl15Ah0mFfl24nZws+W/MolT6FJQ2vFrceHJshnhNzAJCOFr5CUvGTEGGsqMF3yKSV
l+HmxvpjfqbiQ==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Wed, 07 May 2025 12:36:00 +0200
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------6v2RATdRuyV3gQpVI07m1chJ"
Message-ID: <fc282dc1-4ffc-4b04-a5b3-2a878d5d2ba2@HIDDEN>
Date: Wed, 7 May 2025 12:35:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
<jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
This is a multi-part message in MIME format.
--------------6v2RATdRuyV3gQpVI07m1chJ
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
On 2025-05-07 04:51, Stefan Monnier wrote:
[...]
>> I guess a general solution is much more complex than what I thought.
>> And maybe risk to be more costly than the current implementation
>> without set of cl-types.
>
> There's probably some way to do better than the naïve loop we have now,
> but ... we can keep that for later.
OK. I wonder if a intermediate acceptable solution could be to manually
map builtin types returned by `type-of' to a symbol that identifies an
unique set of cl-types? But, as you say we can keep that for later ;-)
>> Please find attached a patch proposal for the branch. Mainly to
>> ensure that types not suitable for cl-defmethod (erroneous type or
>> type with arguments) will signal an "Unknown specializer" error when
>> trying to use them as argument type in cl-defmethod.
>
> Good point. But see below.
>
>> (condition-case-unless-debug e
>> (cl-typep object type)
>> - (error (setq cl--type-list (delq type cl--type-list))
>> - (warn "cl-types-of %S: %s"
>> - type (error-message-string e)))))
>> + (error
>> + ;; Temporarily raise the recursion limit to avoid
>> + ;; another recursion error while processing error.
>> + (let ((max-lisp-eval-depth (+ 800 max-lisp-eval-depth)))
>
> We almost never do that in ELisp except in very specific circumstances
> where we decide it's really worth the trouble (even in though in theory
> it could be necessary in pretty much all error handlers).
> Is there a reason why it's more necessary here than usual?
> Maybe a simpler fix is to replace `warn` with `message`?
Yes, `message' will definitely work better, but errors will be less
highlighted. But a message is always better than nothing ;-)
I wouldn't want ill-defined types entering infinite recursion to
break error handling, just because the depth limit is reached,
thus preventing `warn' to be called. And no error handling in
`cl-types-of' is not an option IMHO, because Emacs risks to become
unusable if methods based on cl-types, used for example in a display
context, crash. In fact, I don't like the idea of well-defined
things being disrupted by ill-defined ones ;-)
>
>> + ;; Remove the type in error from valid specializers.
>> + (cl-remprop type 'cl--class)
>
> I think that's rather drastic. Just because it signals errors in
> `cl-types-of` doesn't mean it can't be useful in other places.
>
>> + (setq cl--type-dispatch-list (delq type cl--type-dispatch-list))
>
> Why do we need this? The `(if types` test above presumes that we're OK
> with the assumption that we don't need to catch/silence errors for types
> in `cl--type-dispatch-list`.
I just wanted to keep both lists consistent. If a type is no longer in
the main list, it shouldn't be in the dispatch list either. But maybe
your last change to `cl-generic-generalizers` is enough?
>
>> --- a/lisp/emacs-lisp/cl-macs.el
>> +++ b/lisp/emacs-lisp/cl-macs.el
>> @@ -3816,18 +3816,22 @@ cl-deftype
>> (cl-callf (lambda (x) (delq declares x)) decls)))
>> (and parents arglist
>> (error "Parents specified, but arglist not empty"))
>> - `(eval-and-compile ;;cl-eval-when (compile load eval)
>> - ;; FIXME: Where should `cl--type-deftype' go? Currently, code
>> - ;; using `cl-deftype' can use (eval-when-compile (require
>> - ;; 'cl-lib)), so `cl--type-deftype' needs to go either to
>> - ;; `cl-preloaded.el' or it should be autoloaded even when
>> - ;; `cl-lib' is not loaded.
>> - (cl--type-deftype ',name ',parents ',arglist ,docstring)
>> - (define-symbol-prop ',name 'cl-deftype-handler
>> - (cl-function
>> - (lambda (&cl-defs ('*) ,@arglist)
>> - ,@decls
>> - ,@forms))))))
>> + ;; Don't register types that can't be used without arguments for
>> + ;; dispatch. They'd signal errors in `cl-types-of'!
>> + (let ((noarg (memq (car arglist) '(nil &rest &optional &keys))))
>> + ;;(or noarg (message "Can't dispatch type with argument, `%S'" name))
>> + `(eval-and-compile ;;cl-eval-when (compile load eval)
>> + ;; FIXME: Where should `cl--type-deftype' go? Currently, code
>> + ;; using `cl-deftype' can use (eval-when-compile (require
>> + ;; 'cl-lib)), so `cl--type-deftype' needs to go either to
>> + ;; `cl-preloaded.el' or it should be autoloaded even when
>> + ;; `cl-lib' is not loaded.
>> + ,@(if noarg `((cl--type-deftype ',name ',parents ,docstring)))
>> + (define-symbol-prop ',name 'cl-deftype-handler
>> + (cl-function
>> + (lambda (&cl-defs ('*) ,@arglist)
>> + ,@decls
>> + ,@forms)))))))
>
> I intend to use the `cl--type-class` struct in `cl--class` for purposes
> like browsing types (via `C-h o`) like we can do already for structs and
> built-in types, so we should register the types with `cl--type-deftype`
> regardless if they can be used for dispatch.
>
> So I installed an alternative solution to this problem in
> `cl-generic-generalizers`, we call the `cl-type-handler` to make sure
> it's valid to use the type without arguments.
I didn't know that. Fine for me.
While testing, I discovered two nasty bugs in `cl-types-of' illustrated
by the following recipe:
(cl-deftype T1 ()
"Ill-defined type."
'(satisfies unknown-predicate))
(cl-types-of 12)
Raise this warning as expected:
Warning (emacs): cl-types-of T1: Symbol’s function definition is void: unknown-predicate
But returns this incorrect list of types:
=> (T1 kmacro-register frame-register fixnum integer number integer-or-marker number-or-marker atom t)
(cl-defmethod test-T1 ((obj T1))
(format "test-T1 %S" obj))
Should signal an "unknown specializer" for T1, but do not.
Even worse:
(test-T1 nil) => No applicable method, as expected
(test-T1 12) => "test-T1 12" which is plain wrong
This because always return a wrong cached value from `cl--type-unique':
(cl-types-of 12)
=> (T1 kmacro-register frame-register fixnum integer number integer-or-marker number-or-marker atom t)
The first problem is that the error handler didn't return nil, so
the type in error is pushed in `found'.
The second problem is a nasty side effect of `nreverse' which
causes a wrong key pushed in the `gtype--unique' hash table.
The attached patch solved both issues for me. To compute the DAG,
I preferred to use a `dolist' loop rather than a `mapcar'+`reverse'
combination, to avoid going through the list twice.
David
--------------6v2RATdRuyV3gQpVI07m1chJ
Content-Type: text/x-patch; charset=UTF-8; name="cl-types-of.patch"
Content-Disposition: attachment; filename="cl-types-of.patch"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt
bGlzcC9jbC1leHRyYS5lbAppbmRleCBiZDdiYjk2ZGQ2YS4uZjIzMmYwNjcxOGUgMTAwNjQ0
Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp
c3AvY2wtZXh0cmEuZWwKQEAgLTEwMzUsMjQgKzEwMzUsMjYgQEAgY2wtdHlwZXMtb2YKICAg
ICAgIChhbmQKICAgICAgICA7OyBJZiBPQkpFQ1QgaXMgb2YgdHlwZSwgYWRkIHR5cGUgdG8g
dGhlIG1hdGNoaW5nIGxpc3QuCiAgICAgICAgKGlmIHR5cGVzCi0gICAgICAgICAgIDs7IEZv
ciBtZXRob2QgZGlzcGF0Y2gsIHdlIGRvbid0IG5lZWQgdG8gZmlsdGVyIG91dCBlcnJvcnMs
IHNpbmNlCi0gICAgICAgICAgIDs7IHdlIGNhbiBwcmVzdW1lIHRoYXQgbWV0aG9kIGRpc3Bh
dGNoIGlzIHVzZWQgb25seSBvbgorICAgICAgICAgICA7OyBGb3IgbWV0aG9kIGRpc3BhdGNo
LCB3ZSBkb24ndCBuZWVkIHRvIGZpbHRlciBvdXQgZXJyb3JzLAorICAgICAgICAgICA7OyBz
aW5jZSB3ZSBjYW4gcHJlc3VtZSB0aGF0IG1ldGhvZCBkaXNwYXRjaCBpcyB1c2VkIG9ubHkg
b24KICAgICAgICAgICAgOzsgc2FuZWx5LWRlZmluZWQgdHlwZXMuCiAgICAgICAgICAgIChj
bC10eXBlcCBvYmplY3QgdHlwZSkKICAgICAgICAgIChjb25kaXRpb24tY2FzZS11bmxlc3Mt
ZGVidWcgZQogICAgICAgICAgICAgIChjbC10eXBlcCBvYmplY3QgdHlwZSkKICAgICAgICAg
ICAgKGVycm9yIChzZXRxIGNsLS10eXBlLWxpc3QgKGRlbHEgdHlwZSBjbC0tdHlwZS1saXN0
KSkKICAgICAgICAgICAgICAgICAgICh3YXJuICAiY2wtdHlwZXMtb2YgJVM6ICVzIgotICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKGVycm9yLW1lc3NhZ2Utc3RyaW5nIGUpKSkp
KQorICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKGVycm9yLW1lc3NhZ2Utc3RyaW5n
IGUpKQorICAgICAgICAgICAgICAgICAgbmlsKSkpCiAgICAgICAgKHB1c2ggdHlwZSBmb3Vu
ZCkpKQogICAgIChwdXNoIChjbC10eXBlLW9mIG9iamVjdCkgZm91bmQpCiAgICAgOzsgUmV0
dXJuIGFuIHVuaXF1ZSB2YWx1ZSBvZiB0aGUgbGlzdCBvZiB0eXBlcyBPQkpFQ1QgYmVsb25n
cyB0bywKICAgICA7OyB3aGljaCBpcyBhbHNvIHRoZSBsaXN0IG9mIHNwZWNpZmllcnMgZm9y
IE9CSkVDVC4KICAgICAod2l0aC1tZW1vaXphdGlvbiAoZ2V0aGFzaCBmb3VuZCBjbC0tdHlw
ZS11bmlxdWUpCiAgICAgICA7OyBDb21wdXRlIGFuIG9yZGVyZWQgbGlzdCBvZiB0eXBlcyBm
cm9tIHRoZSBEQUcuCi0gICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cwotICAgICAgIChtYXBj
YXIgKGxhbWJkYSAodHlwZSkgKGNsLS1jbGFzcy1hbGxwYXJlbnRzIChjbC0tZmluZC1jbGFz
cyB0eXBlKSkpCi0gICAgICAgICAgICAgICAobnJldmVyc2UgZm91bmQpKSkpKSkKKyAgICAg
IChsZXQgKGRhZykKKyAgICAgICAgKGRvbGlzdCAodHlwZSBmb3VuZCkKKyAgICAgICAgICAo
cHVzaCAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzIHR5cGUpKSBkYWcp
KQorICAgICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cyBkYWcpKSkpKQogCiAoZGVmdmFyIGNs
LS10eXBlLWRpc3BhdGNoLWxpc3QgbmlsCiAgICJMaXN0IG9mIHR5cGVzIHRoYXQgbmVlZCB0
byBiZSBjaGVja2VkIGR1cmluZyBkaXNwYXRjaC4iKQo=
--------------6v2RATdRuyV3gQpVI07m1chJ--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 7 May 2025 02:51:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 06 22:51:12 2025
Received: from localhost ([127.0.0.1]:37361 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uCUsJ-0001k7-S0
for submit <at> debbugs.gnu.org; Tue, 06 May 2025 22:51:12 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:11614)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uCUsG-0001jq-I1
for 77725 <at> debbugs.gnu.org; Tue, 06 May 2025 22:51:09 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 9F2AF80891;
Tue, 6 May 2025 22:51:02 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1746586261;
bh=H79WAOMP9Mnwc/KeuEMNc1jimRoFTGDcTteFlAswF1c=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=hd+wDKE2fWZ0rpglD/4BU1Svu4EV9XlqaJ+sidx5jaceXjm+1I+Jh4pJvQBdRXCCv
l/V6asFYntpTgrgbG0EoO7WeXNpQVwxr7+GyHtBCDxiTQZuW4GE18XO6m4ygEhVKiD
tMIdBE3VfFeZbL6xGqlTVu4kq45SIjhMUChD+wQhZDuRbsVW9MI2aFRVDHmwCOKr7D
Q3uCSW9Sa9dwb072nNstZCQ+pBPN/aLlAX7QdCQI6z3feIqYxikmj/Tjexc9vtkoSg
JRQ28YF/nHsBou283HzVCaPCinYg5EP/Tx0iSvRAkjBbK3wtrJHa4FaII1agGiSnho
ueJliX8HTkzEw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 70D9B80152;
Tue, 6 May 2025 22:51:01 -0400 (EDT)
Received: from pastel (104-195-232-56.cpe.teksavvy.com [104.195.232.56])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 3F5C8120568;
Tue, 6 May 2025 22:51:01 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
Message-ID: <jwv4ixxrw9q.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
<jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
<57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN>
Date: Tue, 06 May 2025 22:51:00 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.066 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>>> Debugger entered--Lisp error: (void-function kmacro-register-p)
>>> kmacro-register-p(2)
>>> cl-typep(2 (satisfies kmacro-register-p))
>>> cl-typep(2 kmacro-register)
>>> cl-types-of(2)
>>> (seq-intersection (cl-types-of 2) types)
>>> [...]
>> That's an incorrect `cl-deftype` call. AFAIK this was in `register.el`
>> but I actually removed it from there with:
>> commit b1407b41a16c4a3ec15c88be91ba0ae1e65c212e
>> Author: Stefan Monnier <monnier@HIDDEN>
>> Date: Tue Apr 29 16:04:54 2025 -0400
>> register.el: Remove bogus deftypes and fix associated
>> methods
>> * lisp/register.el (frame-register, kmacro-register):
>> Remove bogus deftypes.
>> (register--type) <oclosure>: Fix kmacro method and generalize i=
t to
>> any OClosure.
>> (register--type) <frameset-register>: Fix method and move it to=
...
>> * lisp/frameset.el (register--type) <frameset-register>: ... he=
re,
>> where `frameset-register` is defined.
>> I guess I need to rebase the `cl-types` branch. =F0=9F=99=82
>
> I also see a similar error with type `frame-register':
>
> "cl-types-of frame-register: Symbol=E2=80=99s function definition is void=
: frameset-register-p"
IIUC: Same error, at the same place, fixed by the same commit, yes. =F0=9F=
=99=82
> I guess a general solution is much more complex than what I thought.
> And maybe risk to be more costly than the current implementation
> without set of cl-types.
There's probably some way to do better than the na=C3=AFve loop we have now,
but ... we can keep that for later.
> Please find attached a patch proposal for the branch. Mainly to
> ensure that types not suitable for cl-defmethod (erroneous type or
> type with arguments) will signal an "Unknown specializer" error when
> trying to use them as argument type in cl-defmethod.
Good point. But see below.
> (condition-case-unless-debug e
> (cl-typep object type)
> - (error (setq cl--type-list (delq type cl--type-list))
> - (warn "cl-types-of %S: %s"
> - type (error-message-string e)))))
> + (error
> + ;; Temporarily raise the recursion limit to avoid
> + ;; another recursion error while processing error.
> + (let ((max-lisp-eval-depth (+ 800 max-lisp-eval-depth)))
We almost never do that in ELisp except in very specific circumstances
where we decide it's really worth the trouble (even in though in theory
it could be necessary in pretty much all error handlers).
Is there a reason why it's more necessary here than usual?
Maybe a simpler fix is to replace `warn` with `message`?
> + ;; Remove the type in error from valid specializers.
> + (cl-remprop type 'cl--class)
I think that's rather drastic. Just because it signals errors in
`cl-types-of` doesn't mean it can't be useful in other places.
> + (setq cl--type-dispatch-list (delq type cl--type-dispatch-=
list))
Why do we need this? The `(if types` test above presumes that we're OK
with the assumption that we don't need to catch/silence errors for types
in `cl--type-dispatch-list`.
> --- a/lisp/emacs-lisp/cl-macs.el
> +++ b/lisp/emacs-lisp/cl-macs.el
> @@ -3816,18 +3816,22 @@ cl-deftype
> (cl-callf (lambda (x) (delq declares x)) decls)))
> (and parents arglist
> (error "Parents specified, but arglist not empty"))
> - `(eval-and-compile ;;cl-eval-when (compile load eval)
> - ;; FIXME: Where should `cl--type-deftype' go? Currently, code
> - ;; using `cl-deftype' can use (eval-when-compile (require
> - ;; 'cl-lib)), so `cl--type-deftype' needs to go either to
> - ;; `cl-preloaded.el' or it should be autoloaded even when
> - ;; `cl-lib' is not loaded.
> - (cl--type-deftype ',name ',parents ',arglist ,docstring)
> - (define-symbol-prop ',name 'cl-deftype-handler
> - (cl-function
> - (lambda (&cl-defs ('*) ,@arglist)
> - ,@decls
> - ,@forms))))))
> + ;; Don't register types that can't be used without arguments for
> + ;; dispatch. They'd signal errors in `cl-types-of'!
> + (let ((noarg (memq (car arglist) '(nil &rest &optional &keys))))
> + ;;(or noarg (message "Can't dispatch type with argument, `%S'" nam=
e))
> + `(eval-and-compile ;;cl-eval-when (compile load eval)
> + ;; FIXME: Where should `cl--type-deftype' go? Currently, code
> + ;; using `cl-deftype' can use (eval-when-compile (require
> + ;; 'cl-lib)), so `cl--type-deftype' needs to go either to
> + ;; `cl-preloaded.el' or it should be autoloaded even when
> + ;; `cl-lib' is not loaded.
> + ,@(if noarg `((cl--type-deftype ',name ',parents ,docstring)))
> + (define-symbol-prop ',name 'cl-deftype-handler
> + (cl-function
> + (lambda (&cl-defs ('*) ,@arglist)
> + ,@decls
> + ,@forms)))))))
I intend to use the `cl--type-class` struct in `cl--class` for purposes
like browsing types (via `C-h o`) like we can do already for structs and
built-in types, so we should register the types with `cl--type-deftype`
regardless if they can be used for dispatch.
So I installed an alternative solution to this problem in
`cl-generic-generalizers`, we call the `cl-type-handler` to make sure
it's valid to use the type without arguments.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 6 May 2025 16:54:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 06 12:54:12 2025 Received: from localhost ([127.0.0.1]:60573 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uCLYZ-0003t5-Cn for submit <at> debbugs.gnu.org; Tue, 06 May 2025 12:54:12 -0400 Received: from smtp-75.smtpout.orange.fr ([80.12.242.75]:52801 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uCLYV-0003sl-1o for 77725 <at> debbugs.gnu.org; Tue, 06 May 2025 12:54:09 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id CLYPu3VOA0HdMCLYSu4gXf; Tue, 06 May 2025 18:54:05 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746550445; bh=n6McElmvGrZsSjzMKJJhwsJPzp+hixIsKHUYjdbQ6xA=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=BkcOtdeH1wuVLthiMHzOtewVA6TEngDl8zPrbvea4QrNZehS/HoAsy221eoOsMaAX m8gMRAljy4ATmFET5vB7+3MhCCe3zap6kKO33v1RBHw00pcKTB/fJB1LdhnE2FqlKf d3TVpxUDVEtCN8l9wCWMTano/5gnH4APJQB5Yt928UUmLkXxDSbDqdm0tg/xmpVtjC POi2vbfNGRzZt7Xn67J1s76Pb7kkgLgxT8VF2CtmlWfyu+svanApJ+VpWynFFitYHu hZl5BMqdq0sluS5J5iPzo3tf6YbNrA4ikFjTuaQSyldtzS4WbAo5NUoT/QHDbqw9pS p2bWUhHVPn82A== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Tue, 06 May 2025 18:54:05 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------auNjIiFWrdoiJkvYXcI2btOv" Message-ID: <57f97300-10d8-47e4-8be7-4487a6e42c2c@HIDDEN> Date: Tue, 6 May 2025 18:54:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN> <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvldr9spz1.fsf-monnier+emacs@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------auNjIiFWrdoiJkvYXcI2btOv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025-05-06 17:55, Stefan Monnier wrote: >> Debugger entered--Lisp error: (void-function kmacro-register-p) >> kmacro-register-p(2) >> cl-typep(2 (satisfies kmacro-register-p)) >> cl-typep(2 kmacro-register) >> cl-types-of(2) >> (seq-intersection (cl-types-of 2) types) >> [...] > > That's an incorrect `cl-deftype` call. AFAIK this was in `register.el` > but I actually removed it from there with: > > commit b1407b41a16c4a3ec15c88be91ba0ae1e65c212e > Author: Stefan Monnier <monnier@HIDDEN> > Date: Tue Apr 29 16:04:54 2025 -0400 > > register.el: Remove bogus deftypes and fix associated methods > > * lisp/register.el (frame-register, kmacro-register): Remove bogus deftypes. > (register--type) <oclosure>: Fix kmacro method and generalize it to > any OClosure. > (register--type) <frameset-register>: Fix method and move it to ... > * lisp/frameset.el (register--type) <frameset-register>: ... here, > where `frameset-register` is defined. > > I guess I need to rebase the `cl-types` branch. 🙂 I also see a similar error with type `frame-register': "cl-types-of frame-register: Symbol’s function definition is void: frameset-register-p" > >>>> (cl-types-of 'button) => button match `icon' type, so the `cl--type-flag' >>>> of `icon' is set to `symbol' (cl-type-of or root-type of `button') >>>> >>>> (cl-types-of 12) => `root-type' of 12 is `fixnum', so cl-types-of doesn't >>>> waste time checking if 12 if of type `icon', because we are sure it cannot >>>> match (their root-types are different). An so on with other types whose >>>> root-type is known. >>> That makes a lot of sense, indeed. >>> But ... does it work for: >>> (cl-deftype my-pair () >>> `(and number (satisfies ,(lambda (x) (zerop (logand x 1)))))) >>> (cl-types-of (expt 2 128)) => (expt 2 128) matches `my-pair` type, so >>> the `cl--type-flag` of `my-pair` is set to `bignum`. Now when I try >>> (cl-types-of 4) won't it skip `my-pair` because (cl-type-of 4) is not >>> `bignum`? What am I missing? >> >> Good point! The problem is that the type returned by `cl-type-of' is too >> specific. If I instead use `type-of' to map a set of cl-types to a >> built-in type, your example above works as expected, as do other >> categories I've tested, like symbol, cons, string, etc. >> Using `type-of' to determine a set of cl-types seems like a good >> compromise to me. WDYT? > > That just solves some occurrences, but not all: > > (cl-deftype my-pair-length () > `(and sequence (satisfies ,(lambda (x) (zerop (logand (length x) 1)))))) > > and now (cl-types-of [1 2]) will set `cl--type-flag` to > `vector` so (cl-types-of "ab") will miss `my-pair-length`! > > If you want more cases, think of > > (cl-deftype my-foo () > '(or TYPE1 TYPE2)) Of course, you are right ;-) I guess a general solution is much more complex than what I thought. And maybe risk to be more costly than the current implementation without set of cl-types. Please find attached a patch proposal for the branch. Mainly to ensure that types not suitable for cl-defmethod (erroneous type or type with arguments) will signal an "Unknown specializer" error when trying to use them as argument type in cl-defmethod. Also to improve handling of errors with recursive types that can lead to error in the error handler in `cl-types-of', because the maximum recursion limit is reached. 2025-05-06 David Ponce <da_vid@HIDDEN> * lisp/emacs-lisp/cl-lib.el (cl-generic-generalizers :extra "cl-types-of"): Fix indentation. * lisp/emacs-lisp/cl-macs.el (cl-deftype): Don't register types that can't be used without arguments, so they are not valid types for method arguments. * lisp/emacs-lisp/cl-extra.el (cl--type-dispatch-list): Move definition before first use. (cl-types-of): Temporarily raise the recursion limit in error handler. Remove the type in error from valid specializers. * lisp/emacs-lisp/cl-preloaded.el (cl--type-deftype): Remove the ARGLIST argument, no more used. Don't exclude here types that can't be used without arguments. Thanks! --------------auNjIiFWrdoiJkvYXcI2btOv Content-Type: text/x-patch; charset=UTF-8; name="cl-types-V1.patch" Content-Disposition: attachment; filename="cl-types-V1.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbCBiL2xpc3AvZW1hY3Mt bGlzcC9jbC1leHRyYS5lbAppbmRleCBiZDdiYjk2ZGQ2YS4uMWE2MjgzNThiNTIgMTAwNjQ0 Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1leHRyYS5lbAorKysgYi9saXNwL2VtYWNzLWxp c3AvY2wtZXh0cmEuZWwKQEAgLTk4MSw2ICs5ODEsOSBAQCBjbC0tZGVzY3JpYmUtY2xhc3Mt c2xvdHMKIChkZWZ2YXIgY2wtLXR5cGUtdW5pcXVlIChtYWtlLWhhc2gtdGFibGUgOnRlc3Qg J2VxdWFsKQogICAiUmVjb3JkIGFuIHVuaXF1ZSB2YWx1ZSBvZiBlYWNoIHR5cGUuIikKIAor KGRlZnZhciBjbC0tdHlwZS1kaXNwYXRjaC1saXN0IG5pbAorICAiTGlzdCBvZiB0eXBlcyB0 aGF0IG5lZWQgdG8gYmUgY2hlY2tlZCBkdXJpbmcgZGlzcGF0Y2guIikKKwogOzsgRklYTUU6 IGBjbC10eXBlcy1vZicgQ1BVIGNvc3QgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIg b2YgdHlwZXMKIDs7IGRlZmluZWQgd2l0aCBgY2wtZGVmdHlwZScsIHNvIHRoZSBtb3JlIHBv cHVsYXIgaXQgZ2V0cywgdGhlIHNsb3dlcgogOzsgaXQgYmVjb21lcy4gIEFuZCBvZiBjb3Vy c2UsIHRoZSBjb3N0IG9mIGVhY2ggdHlwZSBjaGVjayBpcwpAQCAtMTAyOSwyMSArMTAzMiwy OCBAQCBjbC10eXBlcy1vZgogUmV0dXJuIGFuIHVuaXF1ZSBsaXN0IG9mIHR5cGVzIE9CSkVD VCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCiBtb3N0IHNwZWNpZmljIHR5cGUgdG8g dGhlIG1vc3QgZ2VuZXJhbC4KIFRZUEVTIGlzIGFuIGludGVybmFsIGFyZ3VtZW50LiIKLSAg KGxldCogKChmb3VuZCBuaWwpKQorICAobGV0ICgoZm91bmQgbmlsKSkKICAgICA7OyBCdWls ZCBhIGxpc3Qgb2YgYWxsIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgogICAgIChkb2xpc3Qg KHR5cGUgKG9yIHR5cGVzIGNsLS10eXBlLWxpc3QpKQogICAgICAgKGFuZAogICAgICAgIDs7 IElmIE9CSkVDVCBpcyBvZiB0eXBlLCBhZGQgdHlwZSB0byB0aGUgbWF0Y2hpbmcgbGlzdC4K ICAgICAgICAoaWYgdHlwZXMKLSAgICAgICAgICAgOzsgRm9yIG1ldGhvZCBkaXNwYXRjaCwg d2UgZG9uJ3QgbmVlZCB0byBmaWx0ZXIgb3V0IGVycm9ycywgc2luY2UKLSAgICAgICAgICAg Ozsgd2UgY2FuIHByZXN1bWUgdGhhdCBtZXRob2QgZGlzcGF0Y2ggaXMgdXNlZCBvbmx5IG9u Ci0gICAgICAgICAgIDs7IHNhbmVseS1kZWZpbmVkIHR5cGVzLgorICAgICAgICAgICA7OyBG b3IgbWV0aG9kIGRpc3BhdGNoLCB3ZSBkb24ndCBuZWVkIHRvIGZpbHRlciBvdXQgZXJyb3Jz LAorICAgICAgICAgICA7OyBzaW5jZSB3ZSBjYW4gcHJlc3VtZSB0aGF0IG1ldGhvZCBkaXNw YXRjaCBpcyB1c2VkIG9ubHkKKyAgICAgICAgICAgOzsgb24gc2FuZWx5LWRlZmluZWQgdHlw ZXMuCiAgICAgICAgICAgIChjbC10eXBlcCBvYmplY3QgdHlwZSkKICAgICAgICAgIChjb25k aXRpb24tY2FzZS11bmxlc3MtZGVidWcgZQogICAgICAgICAgICAgIChjbC10eXBlcCBvYmpl Y3QgdHlwZSkKLSAgICAgICAgICAgKGVycm9yIChzZXRxIGNsLS10eXBlLWxpc3QgKGRlbHEg dHlwZSBjbC0tdHlwZS1saXN0KSkKLSAgICAgICAgICAgICAgICAgICh3YXJuICAiY2wtdHlw ZXMtb2YgJVM6ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKGVycm9yLW1l c3NhZ2Utc3RyaW5nIGUpKSkpKQorICAgICAgICAgICAoZXJyb3IKKyAgICAgICAgICAgIDs7 IFRlbXBvcmFyaWx5IHJhaXNlIHRoZSByZWN1cnNpb24gbGltaXQgdG8gYXZvaWQKKyAgICAg ICAgICAgIDs7IGFub3RoZXIgcmVjdXJzaW9uIGVycm9yIHdoaWxlIHByb2Nlc3NpbmcgZXJy b3IuCisgICAgICAgICAgICAobGV0ICgobWF4LWxpc3AtZXZhbC1kZXB0aCAoKyA4MDAgbWF4 LWxpc3AtZXZhbC1kZXB0aCkpKQorICAgICAgICAgICAgICA7OyBSZW1vdmUgdGhlIHR5cGUg aW4gZXJyb3IgZnJvbSB2YWxpZCBzcGVjaWFsaXplcnMuCisgICAgICAgICAgICAgIChjbC1y ZW1wcm9wIHR5cGUgJ2NsLS1jbGFzcykKKyAgICAgICAgICAgICAgKHNldHEgY2wtLXR5cGUt ZGlzcGF0Y2gtbGlzdCAoZGVscSB0eXBlIGNsLS10eXBlLWRpc3BhdGNoLWxpc3QpKQorICAg ICAgICAgICAgICAoc2V0cSBjbC0tdHlwZS1saXN0IChkZWxxIHR5cGUgY2wtLXR5cGUtbGlz dCkpCisgICAgICAgICAgICAgICh3YXJuICAiY2wtdHlwZXMtb2YgJVM6ICVzIiB0eXBlIChl cnJvci1tZXNzYWdlLXN0cmluZyBlKSkKKyAgICAgICAgICAgICAgbmlsKSkpKQogICAgICAg IChwdXNoIHR5cGUgZm91bmQpKSkKICAgICAocHVzaCAoY2wtdHlwZS1vZiBvYmplY3QpIGZv dW5kKQogICAgIDs7IFJldHVybiBhbiB1bmlxdWUgdmFsdWUgb2YgdGhlIGxpc3Qgb2YgdHlw ZXMgT0JKRUNUIGJlbG9uZ3MgdG8sCkBAIC0xMDU0LDkgKzEwNjQsNiBAQCBjbC10eXBlcy1v ZgogICAgICAgIChtYXBjYXIgKGxhbWJkYSAodHlwZSkgKGNsLS1jbGFzcy1hbGxwYXJlbnRz IChjbC0tZmluZC1jbGFzcyB0eXBlKSkpCiAgICAgICAgICAgICAgICAobnJldmVyc2UgZm91 bmQpKSkpKSkKIAotKGRlZnZhciBjbC0tdHlwZS1kaXNwYXRjaC1saXN0IG5pbAotICAiTGlz dCBvZiB0eXBlcyB0aGF0IG5lZWQgdG8gYmUgY2hlY2tlZCBkdXJpbmcgZGlzcGF0Y2guIikK LQogKGNsLWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS10eXBlLWdlbmVyYWxpemVy CiAgIDs7IEZJWE1FOiBUaGlzIHByaW9yaXR5IGNhbid0IGJlIGFsd2F5cyByaWdodC4gIDot KAogICA7OyBFLmcuIGEgbWV0aG9kIGRpc3BhdGNoaW5nIG9uIGEgdHlwZSBsaWtlIChvciBu dW1iZXIgZnVuY3Rpb24pLApkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL2NsLWxpYi5l bCBiL2xpc3AvZW1hY3MtbGlzcC9jbC1saWIuZWwKaW5kZXggZmYwMTQ5NjVlYjkuLjExOGRj NzI2NThjIDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3AvY2wtbGliLmVsCisrKyBiL2xp c3AvZW1hY3MtbGlzcC9jbC1saWIuZWwKQEAgLTU2OCwxMCArNTY4LDEwIEBAIGNsLXBhaXJs aXMKICAgICBuaWwKICAgKGRlY2xhcmUtZnVuY3Rpb24gY2wtLXR5cGUtZ2VuZXJhbGl6ZXJz ICJjbC1leHRyYSIgKHR5cGUpKQogICAoY2wtZGVmbWV0aG9kIGNsLWdlbmVyaWMtZ2VuZXJh bGl6ZXJzIDpleHRyYSAiY2wtdHlwZXMtb2YiICh0eXBlKQotICAiU3VwcG9ydCBmb3IgZGlz cGF0Y2ggb24gY2wtdHlwZXMuIgotICAoaWYgKGFuZCAoc3ltYm9scCB0eXBlKSAoY2wtdHlw ZS1jbGFzcy1wIChjbC0tZmluZC1jbGFzcyB0eXBlKSkpCi0gICAgICAoY2wtLXR5cGUtZ2Vu ZXJhbGl6ZXJzIHR5cGUpCi0gICAgKGNsLWNhbGwtbmV4dC1tZXRob2QpKSkpCisgICAgIlN1 cHBvcnQgZm9yIGRpc3BhdGNoIG9uIGNsLXR5cGVzLiIKKyAgICAoaWYgKGFuZCAoc3ltYm9s cCB0eXBlKSAoY2wtdHlwZS1jbGFzcy1wIChjbC0tZmluZC1jbGFzcyB0eXBlKSkpCisgICAg ICAgIChjbC0tdHlwZS1nZW5lcmFsaXplcnMgdHlwZSkKKyAgICAgIChjbC1jYWxsLW5leHQt bWV0aG9kKSkpKQogCiAoZGVmdW4gY2wtLW9sZC1zdHJ1Y3QtdHlwZS1vZiAob3JpZy1mdW4g b2JqZWN0KQogICAob3IgKGFuZCAodmVjdG9ycCBvYmplY3QpICg+IChsZW5ndGggb2JqZWN0 KSAwKQpkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL2NsLW1hY3MuZWwgYi9saXNwL2Vt YWNzLWxpc3AvY2wtbWFjcy5lbAppbmRleCA0MjRlYmUyYzdhZC4uMDliY2ZhODBiNzcgMTAw NjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1tYWNzLmVsCisrKyBiL2xpc3AvZW1hY3Mt bGlzcC9jbC1tYWNzLmVsCkBAIC0zODE2LDE4ICszODE2LDIyIEBAIGNsLWRlZnR5cGUKICAg ICAgICAgKGNsLWNhbGxmIChsYW1iZGEgKHgpIChkZWxxIGRlY2xhcmVzIHgpKSBkZWNscykp KQogICAgIChhbmQgcGFyZW50cyBhcmdsaXN0CiAgICAgICAgICAoZXJyb3IgIlBhcmVudHMg c3BlY2lmaWVkLCBidXQgYXJnbGlzdCBub3QgZW1wdHkiKSkKLSAgICBgKGV2YWwtYW5kLWNv bXBpbGUgOztjbC1ldmFsLXdoZW4gKGNvbXBpbGUgbG9hZCBldmFsKQotICAgICAgIDs7IEZJ WE1FOiBXaGVyZSBzaG91bGQgYGNsLS10eXBlLWRlZnR5cGUnIGdvPyAgQ3VycmVudGx5LCBj b2RlCi0gICAgICAgOzsgdXNpbmcgYGNsLWRlZnR5cGUnIGNhbiB1c2UgKGV2YWwtd2hlbi1j b21waWxlIChyZXF1aXJlCi0gICAgICAgOzsgJ2NsLWxpYikpLCBzbyBgY2wtLXR5cGUtZGVm dHlwZScgbmVlZHMgdG8gZ28gZWl0aGVyIHRvCi0gICAgICAgOzsgYGNsLXByZWxvYWRlZC5l bCcgb3IgaXQgc2hvdWxkIGJlIGF1dG9sb2FkZWQgZXZlbiB3aGVuCi0gICAgICAgOzsgYGNs LWxpYicgaXMgbm90IGxvYWRlZC4KLSAgICAgICAoY2wtLXR5cGUtZGVmdHlwZSAnLG5hbWUg JyxwYXJlbnRzICcsYXJnbGlzdCAsZG9jc3RyaW5nKQotICAgICAgIChkZWZpbmUtc3ltYm9s LXByb3AgJyxuYW1lICdjbC1kZWZ0eXBlLWhhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjbC1mdW5jdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1i ZGEgKCZjbC1kZWZzICgnKikgLEBhcmdsaXN0KQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLEBkZWNscwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLEBmb3Jtcykp KSkpKQorICAgIDs7IERvbid0IHJlZ2lzdGVyIHR5cGVzIHRoYXQgY2FuJ3QgYmUgdXNlZCB3 aXRob3V0IGFyZ3VtZW50cyBmb3IKKyAgICA7OyBkaXNwYXRjaC4gIFRoZXknZCBzaWduYWwg ZXJyb3JzIGluIGBjbC10eXBlcy1vZichCisgICAgKGxldCAoKG5vYXJnIChtZW1xIChjYXIg YXJnbGlzdCkgJyhuaWwgJnJlc3QgJm9wdGlvbmFsICZrZXlzKSkpKQorICAgICAgOzsob3Ig bm9hcmcgKG1lc3NhZ2UgIkNhbid0IGRpc3BhdGNoIHR5cGUgd2l0aCBhcmd1bWVudCwgYCVT JyIgbmFtZSkpCisgICAgICBgKGV2YWwtYW5kLWNvbXBpbGUgOztjbC1ldmFsLXdoZW4gKGNv bXBpbGUgbG9hZCBldmFsKQorICAgICAgICAgOzsgRklYTUU6IFdoZXJlIHNob3VsZCBgY2wt LXR5cGUtZGVmdHlwZScgZ28/ICBDdXJyZW50bHksIGNvZGUKKyAgICAgICAgIDs7IHVzaW5n IGBjbC1kZWZ0eXBlJyBjYW4gdXNlIChldmFsLXdoZW4tY29tcGlsZSAocmVxdWlyZQorICAg ICAgICAgOzsgJ2NsLWxpYikpLCBzbyBgY2wtLXR5cGUtZGVmdHlwZScgbmVlZHMgdG8gZ28g ZWl0aGVyIHRvCisgICAgICAgICA7OyBgY2wtcHJlbG9hZGVkLmVsJyBvciBpdCBzaG91bGQg YmUgYXV0b2xvYWRlZCBldmVuIHdoZW4KKyAgICAgICAgIDs7IGBjbC1saWInIGlzIG5vdCBs b2FkZWQuCisgICAgICAgICAsQChpZiBub2FyZyBgKChjbC0tdHlwZS1kZWZ0eXBlICcsbmFt ZSAnLHBhcmVudHMgLGRvY3N0cmluZykpKQorICAgICAgICAgKGRlZmluZS1zeW1ib2wtcHJv cCAnLG5hbWUgJ2NsLWRlZnR5cGUtaGFuZGxlcgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2wtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1i ZGEgKCZjbC1kZWZzICgnKikgLEBhcmdsaXN0KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAsQGRlY2xzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxAZm9y bXMpKSkpKSkpCiAKIChzdGF0aWMtaWYgKG5vdCAoZmJvdW5kcCAnY2wtLXR5cGUtZGVmdHlw ZSkpCiAgICAgbmlsIDs7IENhbid0IGRlZmluZSBpdCB5ZXQhCmRpZmYgLS1naXQgYS9saXNw L2VtYWNzLWxpc3AvY2wtcHJlbG9hZGVkLmVsIGIvbGlzcC9lbWFjcy1saXNwL2NsLXByZWxv YWRlZC5lbAppbmRleCAwNDQ3MTkxYmJjNy4uZjRlYTQ3NTZkMGMgMTAwNjQ0Ci0tLSBhL2xp c3AvZW1hY3MtbGlzcC9jbC1wcmVsb2FkZWQuZWwKKysrIGIvbGlzcC9lbWFjcy1saXNwL2Ns LXByZWxvYWRlZC5lbApAQCAtNDkxLDcgKzQ5MSw3IEBAIGNsLS10eXBlLWxpc3QKICAgICAg KDpjb3BpZXIgbmlsKSkKICAgIlR5cGUgZGVzY3JpcHRvcnMgZm9yIHR5cGVzIGRlZmluZWQg YnkgYGNsLWRlZnR5cGUnLiIpCiAKLShkZWZ1biBjbC0tdHlwZS1kZWZ0eXBlIChuYW1lIHBh cmVudHMgYXJnbGlzdCAmb3B0aW9uYWwgZG9jc3RyaW5nKQorKGRlZnVuIGNsLS10eXBlLWRl ZnR5cGUgKG5hbWUgcGFyZW50cyAmb3B0aW9uYWwgZG9jc3RyaW5nKQogICAiUmVnaXN0ZXIg Y2wtdHlwZSB3aXRoIE5BTUUgZm9yIG1ldGhvZCBkaXNwYXRjaGluZy4KIFBBUkVOVFMgaXMg YSBsaXN0IG9mIHR5cGVzIE5BTUUgaXMgYSBzdWJ0eXBlIG9mLCBvciBuaWwuCiBET0NTVFJJ TkcgaXMgYW4gb3B0aW9uYWwgZG9jdW1lbnRhdGlvbiBzdHJpbmcuIgpAQCAtNTI1LDkgKzUy NSw2IEBAIGNsLS10eXBlLWRlZnR5cGUKICAgICA7OyBwcm9ibGVtIHRoYXQgYWZmZWN0cyBh bGwgdHlwZXMgYW5kIHRoYXQgd2UgZG9uJ3QgcmVhbGx5IHRyeQogICAgIDs7IHRvIHNvbHZl IGN1cnJlbnRseS4KICAgICAob3IgKG1lbXEgbmFtZSBjbC0tdHlwZS1saXN0KQotICAgICAg ICA7OyBFeGNsdWRlIHR5cGVzIHRoYXQgY2FuJ3QgYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50 cy4KLSAgICAgICAgOzsgVGhleSdkIHNpZ25hbCBlcnJvcnMgaW4gYGNsLXR5cGVzLW9mJyEK LSAgICAgICAgKG5vdCAobWVtcSAoY2FyIGFyZ2xpc3QpICcobmlsICZyZXN0ICZvcHRpb25h bCAma2V5cykpKQogICAgICAgICAocHVzaCBuYW1lIGNsLS10eXBlLWxpc3QpKSkpCiAKIDs7 IE1ha2Ugc3VyZSBmdW5jdGlvbnMgZGVmaW5lZCB3aXRoIGNsLWRlZnN1YnN0IGNhbiBiZSBp bmxpbmVkIGV2ZW4gaW4K --------------auNjIiFWrdoiJkvYXcI2btOv--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 6 May 2025 15:55:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 06 11:55:22 2025
Received: from localhost ([127.0.0.1]:60010 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uCKdd-0000ET-KX
for submit <at> debbugs.gnu.org; Tue, 06 May 2025 11:55:22 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:56942)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uCKda-0000E4-Nt
for 77725 <at> debbugs.gnu.org; Tue, 06 May 2025 11:55:19 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 0000D1002EC;
Tue, 6 May 2025 11:55:12 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1746546910;
bh=mLo6yBRZ27+qIdoN33lbJAMyj46yFZ6le4WbEUWRHEU=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=CJ8cLI5VEjI6nvIdi37pGUbTz8hHXeqfv4DHnuSV/dLPEOoIQV+Hnx8/b6erZnyQs
ljd+7u6AnJYdetRjM3vgv+zbViU07SL25RHnHL8mlUoUehmmiscbVhFmKrJ2j2DfCh
AwO89LZic5kz+TJdErOXNqnQeF/9S2z3T0diBDGs2L5HLFT/9LbMPCPkmVYD/gn9ur
iXLwpsbM0PCWZ4oeddWuuflFWquec8YeECNLzGU3JSAfn3hZe+TNQX0wGvc6vKX7WR
1U3OY+dUkZLjY5PBqw32ZGC7Z/otaguwELwnPvYB8MCC81tt4Rfz4dC+6zs0/pD0S0
HIptgK2TYjM4Q==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 1F15B100034;
Tue, 6 May 2025 11:55:10 -0400 (EDT)
Received: from pastel (104-195-232-56.cpe.teksavvy.com [104.195.232.56])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id DE63E12024C;
Tue, 6 May 2025 11:55:09 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
Message-ID: <jwvldr9spz1.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
<jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
<d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN>
Date: Tue, 06 May 2025 11:55:09 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.223 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Debugger entered--Lisp error: (void-function kmacro-register-p)
> kmacro-register-p(2)
> cl-typep(2 (satisfies kmacro-register-p))
> cl-typep(2 kmacro-register)
> cl-types-of(2)
> (seq-intersection (cl-types-of 2) types)
> [...]
That's an incorrect `cl-deftype` call. AFAIK this was in `register.el`
but I actually removed it from there with:
commit b1407b41a16c4a3ec15c88be91ba0ae1e65c212e
Author: Stefan Monnier <monnier@HIDDEN>
Date: Tue Apr 29 16:04:54 2025 -0400
=20=20=20=20
register.el: Remove bogus deftypes and fix associated methods
=20=20=20=20=20=20=20=20
* lisp/register.el (frame-register, kmacro-register): Remove bogus =
deftypes.
(register--type) <oclosure>: Fix kmacro method and generalize it to
any OClosure.
(register--type) <frameset-register>: Fix method and move it to ...
* lisp/frameset.el (register--type) <frameset-register>: ... here,
where `frameset-register` is defined.
I guess I need to rebase the `cl-types` branch. =F0=9F=99=82
>>> (cl-types-of 'button) =3D> button match `icon' type, so the `cl--type-f=
lag'
>>> of `icon' is set to `symbol' (cl-type-of or root-type of `button')
>>>
>>> (cl-types-of 12) =3D> `root-type' of 12 is `fixnum', so cl-types-of doe=
sn't
>>> waste time checking if 12 if of type `icon', because we are sure it can=
not
>>> match (their root-types are different). An so on with other types whose
>>> root-type is known.
>> That makes a lot of sense, indeed.
>> But ... does it work for:
>> (cl-deftype my-pair ()
>> `(and number (satisfies ,(lambda (x) (zerop (logand x 1))))))
>> (cl-types-of (expt 2 128)) =3D> (expt 2 128) matches `my-pair` type, so
>> the `cl--type-flag` of `my-pair` is set to `bignum`. Now when I try
>> (cl-types-of 4) won't it skip `my-pair` because (cl-type-of 4) is not
>> `bignum`? What am I missing?
>
> Good point! The problem is that the type returned by `cl-type-of' is too
> specific. If I instead use `type-of' to map a set of cl-types to a
> built-in type, your example above works as expected, as do other
> categories I've tested, like symbol, cons, string, etc.
> Using `type-of' to determine a set of cl-types seems like a good
> compromise to me. WDYT?
That just solves some occurrences, but not all:
(cl-deftype my-pair-length ()
`(and sequence (satisfies ,(lambda (x) (zerop (logand (length x) 1))=
))))
and now (cl-types-of [1 2]) will set `cl--type-flag` to
`vector` so (cl-types-of "ab") will miss `my-pair-length`!
If you want more cases, think of
(cl-deftype my-foo ()
'(or TYPE1 TYPE2))
- Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 6 May 2025 14:58:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 06 10:58:01 2025 Received: from localhost ([127.0.0.1]:59431 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uCJk8-0001yS-IE for submit <at> debbugs.gnu.org; Tue, 06 May 2025 10:58:00 -0400 Received: from smtp-28.smtpout.orange.fr ([80.12.242.28]:44953 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uCJk5-0001y8-7d for 77725 <at> debbugs.gnu.org; Tue, 06 May 2025 10:57:58 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id CJjzuHhm3UaXGCJk2uaVl4; Tue, 06 May 2025 16:57:55 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746543475; bh=fdYNuRkorU8JqEXzOi1t4+yP6zado6A8b2m3iLGr4Yg=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=tYT7KCyPCkXkFZlRx3ziY1VKIcGf2GVcUKvirZ3SOwA/CnDQlb2bjZqyBxmZnzueo WdrjW+mOel04V4bYkls1+W7UOLTL6ohZNul3Yb4S1LH61yjAI/cZv8Omi1aHPEEIpN b6+8YWUVcYI8HKLOeaCP1H2/Zl4MZ8ekZQsK67zO3CnOTdw+KeC5sn/jPvDf+iXbxL niXxonL/5Kr1rW+31/OgWvG+K3atrtFVw/mKec9Q8FtGhK4SEGd0IwXIUqiJE4ES79 8lCnA2wicvBllOhJFu2yTf8lea0quST7+SZtqqR74/RCQCuCZKsYoK8wwVaGw9IvMG IiaOfnac9sNBQ== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Tue, 06 May 2025 16:57:55 +0200 X-ME-IP: 90.112.40.65 Message-ID: <d43b775f-71ab-4bf2-8ae2-b489aa924330@HIDDEN> Date: Tue, 6 May 2025 16:57:51 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN> <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-05-06 05:45, Stefan Monnier wrote: >> As mentioned in a previous message, `cl--type-flag' explored the idea of >> mapping a set of cl-types to a built-in type (root-type), and its value >> allowed us to know whether the type is worth checking, i.e. either not >> yet passed a `cl-typep' in `cl-types-of', or its root-type match the >> `root-type' of the checked object: > > Oh, duh! I completely misunderstood this and confused it with a flag > that indicated the type was signaling errors. > Thanks for the heads up. > > I the mean time, I pushed the branch another change which smears the > code over the various `cl-*.el` files. It's ugly as sin, but that's the > best I could come up with. Great! Thank you! I successfully "make bootstrap" the branch :-) I run the cl-types-test with success, but one type has been signaled in error on first run: Debugger entered--Lisp error: (void-function kmacro-register-p) kmacro-register-p(2) cl-typep(2 (satisfies kmacro-register-p)) cl-typep(2 kmacro-register) cl-types-of(2) (seq-intersection (cl-types-of 2) types) [...] >> (cl-types-of 'button) => button match `icon' type, so the `cl--type-flag' >> of `icon' is set to `symbol' (cl-type-of or root-type of `button') >> >> (cl-types-of 12) => `root-type' of 12 is `fixnum', so cl-types-of doesn't >> waste time checking if 12 if of type `icon', because we are sure it cannot >> match (their root-types are different). An so on with other types whose >> root-type is known. > > That makes a lot of sense, indeed. > But ... does it work for: > > (cl-deftype my-pair () > `(and number (satisfies ,(lambda (x) (zerop (logand x 1)))))) > > (cl-types-of (expt 2 128)) => (expt 2 128) matches `my-pair` type, so > the `cl--type-flag` of `my-pair` is set to `bignum`. Now when I try > (cl-types-of 4) won't it skip `my-pair` because (cl-type-of 4) is not > `bignum`? What am I missing? Good point! The problem is that the type returned by `cl-type-of' is too specific. If I instead use `type-of' to map a set of cl-types to a built-in type, your example above works as expected, as do other categories I've tested, like symbol, cons, string, etc. Using `type-of' to determine a set of cl-types seems like a good compromise to me. WDYT? I am still reviewing your (big) change, and will let you know any remarks shortly, along with any proposals as a patch. David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 6 May 2025 03:45:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 05 23:45:59 2025
Received: from localhost ([127.0.0.1]:45330 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uC9Fm-0005u5-ML
for submit <at> debbugs.gnu.org; Mon, 05 May 2025 23:45:59 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:24531)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uC9Fj-0005tf-OR
for 77725 <at> debbugs.gnu.org; Mon, 05 May 2025 23:45:56 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C520F8087C;
Mon, 5 May 2025 23:45:49 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1746503148;
bh=LT3JhH90RfFVr/6p6Ng4RMDhBbTEtNN51GGF/xVtwe8=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=cNlyFsn7Tgc0H6lvE8Kt37COOmI2oylyragzB7TdcesXRD2w2L4xMUpK167kgTsuQ
2K0Ylp9QFqCzPWEvlCU2OFK4QyzXO05DL+cktrtZ/9jakMN9SPUE30aVY5xqlwK/93
EnNODUJZmbRzr1xZ9KetG8kwEHy6myK5nhj4Th6fRDk9C8p+6Hs0AfbD2uF4vTbUQn
5QYGaZF7KrQo1WsTX4hbfznaer4WujSsAkDORU3zHAwICxwZY9kDWAapJN1n8Hy50P
EgfTVRPgh2TGqNvW+WimFwQ7AWJbbZpqKMexAHMVIewNj3Amlo6pm8RFq9w8XORjTk
B60g9fsrUTwOQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 91DCF80665;
Mon, 5 May 2025 23:45:48 -0400 (EDT)
Received: from pastel (104-195-232-56.cpe.teksavvy.com [104.195.232.56])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 55E9E120401;
Mon, 5 May 2025 23:45:48 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
Message-ID: <jwvtt5ytnqp.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
<jwvwmausx50.fsf-monnier+emacs@HIDDEN>
<be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN>
Date: Mon, 05 May 2025 23:45:47 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.067 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> As mentioned in a previous message, `cl--type-flag' explored the idea of
> =E2=80=8B=E2=80=8Bmapping a set of cl-types to a built-in type (root-type=
), and its value
> allowed us to know whether the type is worth checking, i.e. either not
> yet passed a `cl-typep' in `cl-types-of', or its root-type match the
> `root-type' of the checked object:
Oh, duh! I completely misunderstood this and confused it with a flag
that indicated the type was signaling errors.
Thanks for the heads up.
I the mean time, I pushed the branch another change which smears the
code over the various `cl-*.el` files. It's ugly as sin, but that's the
best I could come up with.
> (cl-types-of 'button) =3D> button match `icon' type, so the `cl--type-fla=
g'
> of `icon' is set to `symbol' (cl-type-of or root-type of `button')
>
> (cl-types-of 12) =3D> `root-type' of 12 is `fixnum', so cl-types-of doesn=
't
> waste time checking if 12 if of type `icon', because we are sure it cannot
> match (their root-types are different). An so on with other types whose
> root-type is known.
That makes a lot of sense, indeed.
But ... does it work for:
(cl-deftype my-pair ()
`(and number (satisfies ,(lambda (x) (zerop (logand x 1))))))
(cl-types-of (expt 2 128)) =3D> (expt 2 128) matches `my-pair` type, so
the `cl--type-flag` of `my-pair` is set to `bignum`. Now when I try
(cl-types-of 4) won't it skip `my-pair` because (cl-type-of 4) is not
`bignum`? What am I missing?
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 5 May 2025 22:37:18 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 05 18:37:18 2025 Received: from localhost ([127.0.0.1]:43984 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uC4R3-0006Ly-No for submit <at> debbugs.gnu.org; Mon, 05 May 2025 18:37:18 -0400 Received: from smtp-78.smtpout.orange.fr ([80.12.242.78]:39571 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uC4Qz-0006Li-Q0 for 77725 <at> debbugs.gnu.org; Mon, 05 May 2025 18:37:15 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id C4QtuCUJ93MSvC4QxulGkq; Tue, 06 May 2025 00:37:12 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746484632; bh=EYoMMXPSx3WmB4wujBesNOb6ETiIm1gFWKg7X6tyxVU=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=JnHBXexFbC4Y51bh9irVwDQUuTTCPY3oBkGc3cqjgFkYqnf/UTizrZq83GBDFwTk2 lhRHeFhX3tfbvs1MWYumpE3af2QjFh3P9pI1gbLhgX7/Z79LFL7oi1af/+GmsLoALG oAM6QGW1w0utXLYLjxIN46Cy1FVPPMfV7ZbVwFc8/VaPpYNI3NTkIhlk60pxUKJxV9 d/3++Q+ny/OUMvJg8p1w0uvqxbXZVkMtWOb0LwaXE7sTFC3lbk901RrDq7/F+FsIW0 Z3LAW/NHnNK3xE+0zKiIUzLTyBkGR/ECa8oIMTrJaDImnX/nVrUC0MQOjNcvRu1hbz Rfk+0AMXcrVPA== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Tue, 06 May 2025 00:37:12 +0200 X-ME-IP: 90.112.40.65 Message-ID: <be80de7d-91b7-4f71-99d5-8d09452e16df@HIDDEN> Date: Tue, 6 May 2025 00:37:07 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN> <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> <jwvwmausx50.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvwmausx50.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-05-05 20:59, Stefan Monnier wrote: >>> Thanks, pushed to the branch. I think the code is looking pretty good now. >> Thank you, that's great! > > I just pushed to the branch a further patch (see attached) which tries > to simplify the code a bit more. Thank you! The only change I cannot understand is this one in `cl-types-of': "Don't bother skipping the `root-type` since that's a built-in type, so it should never happen anyway." The `root-type' was not skipped, but, on the contrary, was used to test only types which have the same `root-type', i.e. skip types with a different `root-type', which we are sure cannot match. Your change just removed this improvement and now all types are tested even if we can know they cannot match. As mentioned in a previous message, `cl--type-flag' explored the idea of mapping a set of cl-types to a built-in type (root-type), and its value allowed us to know whether the type is worth checking, i.e. either not yet passed a `cl-typep' in `cl-types-of', or its root-type match the `root-type' of the checked object: (or (null cl--type-flag) (eq cl--type-flag root-type)) For example: (cl-deftype2 icon () "Builtin icon type." '(and symbol (satisfies iconp))) (cl-types-of 'button) => button match `icon' type, so the `cl--type-flag' of `icon' is set to `symbol' (cl-type-of or root-type of `button') (cl-types-of 12) => `root-type' of 12 is `fixnum', so cl-types-of doesn't waste time checking if 12 if of type `icon', because we are sure it cannot match (their root-types are different). An so on with other types whose root-type is known. Hope I am clear enough. David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 5 May 2025 18:59:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 05 14:59:41 2025
Received: from localhost ([127.0.0.1]:43046 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uC12S-00035y-Bf
for submit <at> debbugs.gnu.org; Mon, 05 May 2025 14:59:41 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:21819)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uC12P-00035g-Hw
for 77725 <at> debbugs.gnu.org; Mon, 05 May 2025 14:59:38 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id ED5D08087C;
Mon, 5 May 2025 14:59:31 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1746471569;
bh=0mdtjR3OOKwtb/ccp/LbwdqWkf9Odpr7E5qR/yZaiHE=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=emc7dfACeNL31O6fz8xWsfsHzQKqoqtgBdaaiSr7IqQ4M+dTiEWJ2kE0Yxnotz+Ye
3vl22OgpvomluYG5mfIQvLJ1RZZudaw3Kb42siDGjcTnA+N+XRrmVxGlBJkmASeZRa
cAGQHE18FuEMiQGgjOzEJuoEipdtxuzQ2tMqrZFGuNAfNSfmquRZZjDCGVAnsVEF2U
hZEwr3MAwABvZCRjstuh6iq/9P5SN+c8G1fbXOSI8TtvuTIbCpIWn1pzKw0s9dql2G
HtaBtsvzo7aBB1p82YWZpbVSKen1IZgElm9PZGECAr57st31QjzZS75NTWEwJH02IP
8iXtbICZlvuaw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id B5CD180299;
Mon, 5 May 2025 14:59:29 -0400 (EDT)
Received: from alfajor (modemcable005.21-80-70.mc.videotron.ca [70.80.21.5])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 702C41203B3;
Mon, 5 May 2025 14:59:29 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
Message-ID: <jwvwmausx50.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
<jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
<c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN>
Date: Mon, 05 May 2025 14:59:28 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.178 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
--=-=-=
Content-Type: text/plain
>> Thanks, pushed to the branch. I think the code is looking pretty good now.
> Thank you, that's great!
I just pushed to the branch a further patch (see attached) which tries
to simplify the code a bit more.
Stefan
--=-=-=
Content-Type: text/x-diff
Content-Disposition: inline; filename=cl-types.patch
commit 68a50324a70bd794d7f3228290310093f1515f7b
Author: Stefan Monnier <monnier@HIDDEN>
Date: Mon May 5 14:57:05 2025 -0400
cl-types: Simplify a bit further
Mostly, get rid of `cl--type-flag` and rely only on the presence/absence
of the type on `cl--types-list` to "flag" erroring-types.
Also, don't try and catch errors during dispatch.
* lisp/emacs-lisp/cl-types.el (cl--type-dispatch-list): Move to the
relevant section.
(cl--type-parents): Inline into sole caller.
(cl--type-deftype): Add `arglist` argument.
Don't signal an error if the type already existed but wasn't in
`cl--type-list` since that's normal and we can fix it.
Don't touch `cl--type-flag` any more.
Don't add to `cl--type-list` if it can't be used without arguments.
(cl-deftype2): Adjust call accordingly.
(cl--type-error): Inline into sole caller.
(cl-types-of): Be more careful to preserve ordering of types
before passing them to `merge-ordered-lists`.
Add `types` argument for use by dispatch.
Don't bother skipping the `root-type` since that's a built-in type,
so it should never happen anyway.
Don't catch errors if called from dispatch.
Don't bother with `cl--type-flag`.
(cl--type-generalizer): Use new arg of `cl-types-of` instead of
let-binding `cl--type-list`, in case `cl-types-of` ends up (auto)loading
a file or some such thing which needs to use/modify `cl--type-list`.
(cl--type-undefine): Move to end of file.
* test/lisp/emacs-lisp/cl-types-tests.el (cl-types-test): Remove DAG
test since we don't detect such errors any more.
Relax ordering test when the order is not guaranteed
by parent-relationships.
diff --git a/lisp/emacs-lisp/cl-types.el b/lisp/emacs-lisp/cl-types.el
index b7816ca3a84..a466c309a33 100644
--- a/lisp/emacs-lisp/cl-types.el
+++ b/lisp/emacs-lisp/cl-types.el
@@ -22,9 +22,6 @@
(defvar cl--type-list nil
"Precedence list of the defined cl-types.")
-(defvar cl--type-dispatch-list nil
- "List of types that need to be checked during dispatch.")
-
;; FIXME: The `cl-deftype-handler' property should arguably be turned
;; into a field of this struct (but it has performance and
;; compatibility implications, so let's not make that change for now).
@@ -51,71 +48,44 @@ cl--type-p
That is, a type defined by `cl-deftype', of class `cl-type-class'."
(and (symbolp object) (cl-type-class-p (cl--find-class object))))
-(defun cl--type-parents (name)
- "Get parents of type with NAME.
-NAME is a symbol representing a type.
-Return a possibly empty list of types."
- (cl--class-allparents (cl--find-class name)))
-
-;; Keep it for now, for testing.
-(defun cl--type-undefine (name)
- "Remove the definition of cl-type with NAME.
-NAME is an unquoted symbol representing a cl-type.
-Signal an error if NAME has subtypes."
- (cl-check-type name (satisfies cl--type-p))
- (when-let* ((children (cl--class-children (cl--find-class name))))
- (error "Type has children: %S" children))
- (cl-remprop name 'cl--type-flag)
- (cl-remprop name 'cl--class)
- (cl-remprop name 'cl-deftype-handler)
- (setq cl--type-dispatch-list (delq name cl--type-dispatch-list))
- (setq cl--type-list (delq name cl--type-list)))
-
-(defun cl--type-deftype (name parents &optional docstring)
- ;; FIXME: Should we also receive the arglist?
+(defun cl--type-deftype (name parents arglist &optional docstring)
"Register cl-type with NAME for method dispatching.
PARENTS is a list of types NAME is a subtype of, or nil.
DOCSTRING is an optional documentation string."
- (condition-case err
- (let* ((class (cl--find-class name))
- (recorded (memq name cl--type-list)))
- (if (null class)
- (or (null recorded)
- (error "Type registered, but doesn't exist"))
- (or recorded (error "Type exists, but not registered"))
- (or (cl-type-class-p class)
- ;; FIXME: We have some uses `cl-deftype' in Emacs that
- ;; "complement" another declaration of the same type,
- ;; so maybe we should turn this into a warning (and
- ;; not overwrite the `cl--find-class' in that case)?
- (error "Type in another class: %S" (type-of class))))
- ;; Setup a type descriptor for NAME.
- (setf (cl--find-class name)
- (cl--type-class-make name docstring parents))
- ;; Reset NAME as a newly defined type.
- (cl-remprop name 'cl--type-flag)
- ;; Record new type. The constructor of the class
- ;; `cl-type-class' already ensures that parent types must be
- ;; defined before their "child" types (i.e. already added to
- ;; the `cl--type-list' for types defined with `cl-deftype').
- ;; So it is enough to simply push a new type at the beginning
- ;; of the list.
- ;; Redefinition is more complicated, because child types may
- ;; be in the list, so moving the type to the head can be
- ;; incorrect. The "cheap" solution is to leave the list
- ;; unchanged (and hope the redefinition doesn't change the
- ;; hierarchy too much).
- ;; Side note: Redefinitions introduce other problems as well
- ;; because the class object's `parents` slot contains
- ;; references to `cl--class` objects, so after a redefinition
- ;; via (setf (cl--find-class FOO) ...), the children's
- ;; `parents` slots point to the old class object. That's a
- ;; problem that affects all types and that we don't really try
- ;; to solve currently.
- (or recorded (push name cl--type-list)))
- (error
- (error (format "Define %S failed: %s"
- name (error-message-string err))))))
+ (let* ((class (cl--find-class name)))
+ (when class
+ (or (cl-type-class-p class)
+ ;; FIXME: We have some uses `cl-deftype' in Emacs that
+ ;; "complement" another declaration of the same type,
+ ;; so maybe we should turn this into a warning (and
+ ;; not overwrite the `cl--find-class' in that case)?
+ (error "Type in another class: %S" (type-of class))))
+ ;; Setup a type descriptor for NAME.
+ (setf (cl--find-class name)
+ (cl--type-class-make name docstring parents))
+ ;; Record new type. The constructor of the class
+ ;; `cl-type-class' already ensures that parent types must be
+ ;; defined before their "child" types (i.e. already added to
+ ;; the `cl--type-list' for types defined with `cl-deftype').
+ ;; So it is enough to simply push a new type at the beginning
+ ;; of the list.
+ ;; Redefinition is more complicated, because child types may
+ ;; be in the list, so moving the type to the head can be
+ ;; incorrect. The "cheap" solution is to leave the list
+ ;; unchanged (and hope the redefinition doesn't change the
+ ;; hierarchy too much).
+ ;; Side note: Redefinitions introduce other problems as well
+ ;; because the class object's `parents` slot contains
+ ;; references to `cl--class` objects, so after a redefinition
+ ;; via (setf (cl--find-class FOO) ...), the children's
+ ;; `parents` slots point to the old class object. That's a
+ ;; problem that affects all types and that we don't really try
+ ;; to solve currently.
+ (or (memq name cl--type-list)
+ ;; Exclude types that can't be used without arguments.
+ ;; They'd signal errors in `cl-types-of'!
+ (not (memq (car arglist) '(nil &rest &optional &keys)))
+ (push name cl--type-list))))
;;;###autoload
(defmacro cl-deftype2 (name arglist &rest body)
@@ -170,7 +140,7 @@ cl-deftype2
;; 'cl-lib)), so `cl--type-deftype' needs to go either to
;; `cl-preloaded.el' or it should be autoloaded even when
;; `cl-lib' is not loaded.
- (cl--type-deftype ',name ',parents ,docstring)
+ (cl--type-deftype ',name ',parents ',arglist ,docstring)
(define-symbol-prop ',name 'cl-deftype-handler
(cl-function
(lambda (&cl-defs ('*) ,@arglist)
@@ -181,17 +151,6 @@ cl-deftype2
(defvar cl--type-unique (make-hash-table :test 'equal)
"Record an unique value of each type.")
-(defun cl--type-error (type error)
- "Mark TYPE as in-error, and report the produced ERROR value."
- ;; Temporarily raise the recursion limit to avoid another recursion
- ;; error while reporting ERROR.
- (let ((max-lisp-eval-depth (+ 800 max-lisp-eval-depth)))
- ;; Mark TYPE as in-error and remove it from the dispatch list.
- (put type 'cl--type-flag 'error)
- (setq cl--type-dispatch-list (delq type cl--type-dispatch-list))
- (warn "cl-types-of %s, %s" type (error-message-string error)))
- nil)
-
;; FIXME: `cl-types-of' CPU cost is proportional to the number of types
;; defined with `cl-deftype', so the more popular it gets, the slower
;; it becomes. And of course, the cost of each type check is
@@ -234,59 +193,54 @@ cl--type-error
;; - in `cl-types-of' start by calling `cl-type-of', then use the map
;; to find which cl-types may need to be checked.
;;
-(defun cl-types-of (object)
-"Return the types OBJECT belongs to.
+(defun cl-types-of (object &optional types)
+ "Return the types OBJECT belongs to.
Return an unique list of types OBJECT belongs to, ordered from the
-most specific type to the most general."
-(let* ((root-type (cl-type-of object))
- (found (list root-type)))
- ;; Build a list of all types OBJECT belongs to.
- (dolist (type cl--type-list)
- (let ((flag (get type 'cl--type-flag)))
+most specific type to the most general.
+TYPES is an internal argument."
+ (let* ((found nil))
+ ;; Build a list of all types OBJECT belongs to.
+ (dolist (type (or types cl--type-list))
(and
- ;; Skip type, if it previously produced an error.
- (not (eq flag 'error))
- ;; Skip type which we are sure will not match.
- (or (null flag) (eq flag root-type))
;; If OBJECT is of type, add type to the matching list.
- (condition-case-unless-debug e
+ (if types
+ ;; For method dispatch, we don't need to filter out errors, since
+ ;; we can presume that method dispatch is used only on
+ ;; sanely-defined types.
(cl-typep object type)
- (error (cl--type-error type e)))
- (or flag (put type 'cl--type-flag root-type))
- (push type found))))
- ;; Return an unique value of the list of types OBJECT belongs to,
- ;; which is also the list of specifiers for OBJECT.
- (with-memoization (gethash found cl--type-unique)
- ;; Compute an ordered list of types from the DAG.
- (merge-ordered-lists (mapcar #'cl--type-parents found)))))
+ (condition-case-unless-debug e
+ (cl-typep object type)
+ (error (setq cl--type-list (delq type cl--type-list))
+ (warn "cl-types-of %S: %s"
+ type (error-message-string e)))))
+ (push type found)))
+ (push (cl-type-of object) found)
+ ;; Return an unique value of the list of types OBJECT belongs to,
+ ;; which is also the list of specifiers for OBJECT.
+ (with-memoization (gethash found cl--type-unique)
+ ;; Compute an ordered list of types from the DAG.
+ (merge-ordered-lists
+ (mapcar (lambda (type) (cl--class-allparents (cl--find-class type)))
+ (nreverse found))))))
;;; Method dispatching
;;
-;; For a declaration like
-;;
-;; (cl-deftype list-of (elem-type)
-;; `(and list
-;; (satisfies ,(lambda (list)
-;; (cl-every (lambda (elem)
-;; (cl-typep elem elem-type))
-;; list)))))
-;;
-;; we add the type to `cl--type-list' even though it's unusable there
-;; (the `cl-typep` call in `cl-types-of' will always signal an error
-;; because the type can't be used without argument).
-;;
-;; One way to solve this (and even open up the possibility to
-;; dispatch on complex types like `(list-of FOO)') is to populate
-;; `cl--type-dispatch-list' (i.e. the list of types that need to
-;; be checked during dispatch) from `cl-generic-generalizers' so it
-;; includes only those types for which there's a method, rather than
-;; all defined types.
+(defvar cl--type-dispatch-list nil
+ "List of types that need to be checked during dispatch.")
(cl-generic-define-generalizer cl--type-generalizer
+ ;; FIXME: This priority can't be always right. :-(
+ ;; E.g. a method dispatching on a type like (or number function),
+ ;; should take precedence over a method on `t' but not over a method
+ ;; on `number'. Similarly a method dispatching on a type like
+ ;; (satisfies (lambda (x) (equal x '(A . B)))) should take precedence
+ ;; over a method on (head 'A).
+ ;; Fixing this 100% is impossible so this generalizer is condemned to
+ ;; suffer from "undefined method ordering" problems, unless/until we
+ ;; restrict it somehow to a subset that we can handle reliably.
20 ;; "typeof" < "cl-types-of" < "head" priority
- (lambda (obj &rest _) `(let ((cl--type-list cl--type-dispatch-list))
- (cl-types-of ,obj)))
+ (lambda (obj &rest _) `(cl-types-of ,obj cl--type-dispatch-list))
(lambda (tag &rest _) (if (consp tag) tag)))
(cl-defmethod cl-generic-generalizers :extra "cl-types-of" (type)
@@ -296,6 +250,9 @@ cl-generic-generalizers
;; Add a new dispatch type to the dispatch list, then
;; synchronize with `cl--type-list' so that both lists follow
;; the same type precedence order.
+ ;; The `merge-ordered-lists' is `cl-types-of' should we make this
+ ;; ordering unnecessary, but it's still handy for all those types
+ ;; that don't declare their parents.
(unless (memq type cl--type-dispatch-list)
(setq cl--type-dispatch-list
(seq-intersection cl--type-list
@@ -303,6 +260,21 @@ cl-generic-generalizers
(list cl--type-generalizer))
(cl-call-next-method)))
+;;; Support for unloading.
+
+;; Keep it for now, for testing.
+(defun cl--type-undefine (name)
+ "Remove the definition of cl-type with NAME.
+NAME is an unquoted symbol representing a cl-type.
+Signal an error if NAME has subtypes."
+ (cl-check-type name (satisfies cl--type-p))
+ (when-let* ((children (cl--class-children (cl--find-class name))))
+ (error "Type has children: %S" children))
+ (cl-remprop name 'cl--class)
+ (cl-remprop name 'cl-deftype-handler)
+ (setq cl--type-dispatch-list (delq name cl--type-dispatch-list))
+ (setq cl--type-list (delq name cl--type-list)))
+
(provide 'cl-types)
;;; cl-types.el ends here
diff --git a/test/lisp/emacs-lisp/cl-types-tests.el b/test/lisp/emacs-lisp/cl-types-tests.el
index f247ddd89d9..746270578e7 100644
--- a/test/lisp/emacs-lisp/cl-types-tests.el
+++ b/test/lisp/emacs-lisp/cl-types-tests.el
@@ -48,14 +48,15 @@ cl-types-test
"Test types definition, cl-types-of and method dispatching."
;; Invalid DAG error
- (should-error
- (eval
- '(cl-deftype2 unsigned-16bits ()
- "Unsigned 16-bits integer."
- (declare (parents unsigned-8bits))
- '(unsigned-byte 16))
- lexical-binding
- ))
+ ;; FIXME: We don't test that any more.
+ ;; (should-error
+ ;; (eval
+ ;; '(cl-deftype2 unsigned-16bits ()
+ ;; "Unsigned 16-bits integer."
+ ;; (declare (parents unsigned-8bits))
+ ;; '(unsigned-byte 16))
+ ;; lexical-binding
+ ;; ))
;; Test that (cl-types-of 4) is (multiples-of-4 multiples-of-2 ...)
;; Test that (cl-types-of 6) is (multiples-of-3 multiples-of-2 ...)
@@ -70,8 +71,10 @@ cl-types-test
(should (equal '(multiples-of-3 multiples-of-2)
(seq-intersection (cl-types-of 6) types)))
- (should (equal '(multiples-of-3 multiples-of-4 multiples-of-2)
- (seq-intersection (cl-types-of 12) types)))
+ (should (member (seq-intersection (cl-types-of 12) types)
+ ;; Order between 3 and 4/2 is undefined.
+ '((multiples-of-3 multiples-of-4 multiples-of-2)
+ (multiples-of-4 multiples-of-2 multiples-of-3))))
(should (equal '()
(seq-intersection (cl-types-of 5) types)))
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 5 May 2025 18:05:46 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 05 14:05:46 2025 Received: from localhost ([127.0.0.1]:42752 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uC0CH-0000Ia-U9 for submit <at> debbugs.gnu.org; Mon, 05 May 2025 14:05:46 -0400 Received: from smtp-81.smtpout.orange.fr ([80.12.242.81]:44357 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uC0CC-0000IB-2d for 77725 <at> debbugs.gnu.org; Mon, 05 May 2025 14:05:44 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id C0C8uT4pDqSfVC0C8ucKyh; Mon, 05 May 2025 20:05:37 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746468337; bh=R5W28kBPPy7po7ODFgViwwrYO14QQW77Xx+aexEk0BY=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=aSniT2kghQEpUiWw6z+VoscY+5gkDbUn/Jmd+sQNAYXG+HBurn086jzq5OvaR03oU rmdSI1q9E7IvzauJapegCs1VPqOfreIfD5SqvnMS0HeRhw44QMYpms0saEbx8jR/05 6E9COxr6upWK/+kzixpO90SHQXmrbSgshPErXbTXmmpc0DT8heV6lNJhmf/v1qiTTl yWIDkJ/E6i7inDXVkoWcH4IosXsFybHkvYqlP892U1RJhwj2dG1F1u4gGTNIiUp4vG Ledwb2TQOlqeyf8Sz1nzxx8TDccrp7o37QFa3MR53OBa/lHrYrVt/NlGtWAmJWHimk 0wxm3oy8qliYQ== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Mon, 05 May 2025 20:05:37 +0200 X-ME-IP: 90.112.40.65 Message-ID: <c8574bdc-9167-4595-842f-1f6a6ac94951@HIDDEN> Date: Mon, 5 May 2025 20:05:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN> <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN> <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) > Thanks, pushed to the branch. I think the code is looking pretty good now. Thank you, that's great! And it's certainly largely thanks to you :-) > I just have to decide how to integrate it into CL-Lib so it's loaded > when we need it, and then we can push it to `master`. That would be great. Please let me know if I can help to test. > The optimization on the dispatch is nice. We could do even better and > test only those types which have methods for the current generic > function rather than for any generic function. I thought I had a patch > which provides that info to the `tagcode-function`, but sadly I was > confused: the patch I have provides that info only to the > `specializer-function`. It can (and arguably should) be done, of > course, but it requires a fair bit of changes to `cl-generic.el`. 🙁 I hope you find the time and motivation to improve cl-generic.el, which certainly deserves to be used more. I'm not sure I can help you much in this area, but if you think I can help you, even if it's just for testing, please don't hesitate to ask me; I'll be happy to contribute, within my means. Many thanks! David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 5 May 2025 15:16:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 05 11:16:13 2025
Received: from localhost ([127.0.0.1]:41597 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uBxYC-0004ja-Sj
for submit <at> debbugs.gnu.org; Mon, 05 May 2025 11:16:13 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:10935)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1uBxY8-0004jH-9t
for 77725 <at> debbugs.gnu.org; Mon, 05 May 2025 11:16:10 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 1A1AA44145C;
Mon, 5 May 2025 11:16:01 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1746458160;
bh=wLWrnLP675UMA1rElW2z7+h9lhvKbs6AAgU82gw2HT4=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=WpMvuSfy+aHrYUiT9k2Yn1dj1DUu5tEQrp53HlfWPEgkQ8nAp2b583UA+0jq/W48S
u5VgdaYO3vX1bs257/FU6eLo7DBhpnqvsXlrc+ZxbEmbhDNGSfuIVndss0Tr6rPPnH
tDIDZlEsQR+f9fILWxrgflGzijAMHcwC+uNEy/ybOtEucAz83pjWInnDIZ1o9uNCGo
JuvHhVW/DmV0TLx5LnVQZTsSLG5Yx4R6dFaymHMrN1PdnD5qMitBbgkuGWszeY6WV4
Tqm4DJ7jwzJGc8FIJ9JIHcfWoBulLa543cExlQZk7XqcxOwuhSW34pyoERbfoHB+We
uPr5vaBPhQ36g==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 218A6440A3E;
Mon, 5 May 2025 11:16:00 -0400 (EDT)
Received: from alfajor (modemcable005.21-80-70.mc.videotron.ca [70.80.21.5])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id C8B3412045A;
Mon, 5 May 2025 11:15:59 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
Message-ID: <jwv8qnbt7sw.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
<b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
Date: Mon, 05 May 2025 11:15:54 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.209 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Sorry, here is the correct patch, and updated change log.
Thanks, pushed to the branch. I think the code is looking pretty good now.
I just have to decide how to integrate it into CL-Lib so it's loaded
when we need it, and then we can push it to `master`.
The optimization on the dispatch is nice. We could do even better and
test only those types which have methods for the current generic
function rather than for any generic function. I thought I had a patch
which provides that info to the `tagcode-function`, but sadly I was
confused: the patch I have provides that info only to the
`specializer-function`. It can (and arguably should) be done, of
course, but it requires a fair bit of changes to `cl-generic.el`. =F0=9F=
=99=81
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 2 May 2025 12:55:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 02 08:55:54 2025
Received: from localhost ([127.0.0.1]:57322 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uApvl-0000nk-JC
for submit <at> debbugs.gnu.org; Fri, 02 May 2025 08:55:54 -0400
Received: from smtp-16.smtpout.orange.fr ([80.12.242.16]:38601
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uApvg-0000nP-7n
for 77725 <at> debbugs.gnu.org; Fri, 02 May 2025 08:55:51 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id Apv9uuLQVVACDApvDuLIPn; Fri, 02 May 2025 14:55:20 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1746190520;
bh=mGI8TBTOfgh56OQmGhLKhswmYkPGZwv49CZzmD2S2oo=;
h=Message-ID:Date:MIME-Version:Subject:From:To;
b=OmTo+s81WkwCZzttepcDCdWRoIWxZcwaaO+8LsfiPpLUVkk5s0e2QopXalHWuoKhr
YwJ3P01KdEY2jT1irFbhJBZ2DsvAb3rHV3PkZP3A3iHehHAHeE1bZvxWnV0BxX6/Et
/0IvWLCcYR5holPLa/pSICLtT481m/1MtBPOf/WXLUDqtWjUDxb9X029aYcuGYkI7K
4EPu7bFQ8xKVaqhswByJebigAgxzz2deODDCu6nyJ3wWD9KMImbeU4/kQ7snY3nKnH
MjcXYf2gOYJQJ7z18zaIfCJyT/dHySlzhFrGv0IFYsF0lbC/K99GxsXm1gy+zDzlyA
v+ZCGN2lqv71g==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Fri, 02 May 2025 14:55:20 +0200
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------BWcJEopZ27V982Xl58UYCSbN"
Message-ID: <b490a87e-73c1-449e-8f2d-96c4cc370213@HIDDEN>
Date: Fri, 2 May 2025 14:55:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
From: David Ponce <da_vid@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
<jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
<5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN>
<9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN>
<c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
Content-Language: fr, en-US
In-Reply-To: <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
This is a multi-part message in MIME format.
--------------BWcJEopZ27V982Xl58UYCSbN
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
On 2025-05-02 11:24, David Ponce wrote:
>>
>> Please find attached a version of cl-types.el with my first try at
>> implementing something related to your idea above to populate a
>> `cl--type-dispatch-list' from `cl-generic-generalizers'.
>
Sorry, here is the correct patch, and updated change log.
2025-05-02 David Ponce <da_vid@HIDDEN>
Stefan Monnier <monnier@HIDDEN>
* lisp/emacs-lisp/cl-types.el (cl--type-list): Doc string.
(cl--type-dispatch-list): New variable.
(cl--type-parents): Make it a plain defun.
(cl--type-children, cl--type-dag): Remove.
(cl--type-undefine): Remove duplicate test for `cl--type-p'. Use
`cl--class-children'. Clear `cl--type-flag' instead of
`cl--type-error'. Also remove type from the dispatch list.
(cl--type-deftype): Doc string. Remove useless safeguard of
data on error. Fix some error messages. Clear `cl--type-flag'
when a type is (re)defined. Just push new types on
`cl--type-list'.
(cl--type-error): Set `cl--type-flag' to the symbol `error' and
remove type in error from the dispatch list.
(cl-types-of): Doc string. Remove useless check for
`cl-type-class-p'. Skip types which we are sure will not match.
Simplify creation of the DAG.
(cl--type-generalizer): In the tagcode-function, check only types
that can be dispatched.
(cl-generic-generalizers): Populate the dispatch list.
--------------BWcJEopZ27V982Xl58UYCSbN
Content-Type: text/x-patch; charset=UTF-8; name="cl-types.patch"
Content-Disposition: attachment; filename="cl-types.patch"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC10eXBlcy5lbCBiL2xpc3AvZW1hY3Mt
bGlzcC9jbC10eXBlcy5lbAppbmRleCBjMTBjZTRhMjRmYi4uYjc4MTZjYTNhODQgMTAwNjQ0
Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC10eXBlcy5lbAorKysgYi9saXNwL2VtYWNzLWxp
c3AvY2wtdHlwZXMuZWwKQEAgLTIwLDcgKzIwLDEwIEBACiA7OyAtIGBjbC10eXBlcy1vZics
IHRoYXQgcmV0dXJucyB0aGUgdHlwZXMgYW4gb2JqZWN0IGJlbG9uZ3MgdG8uCiAKIChkZWZ2
YXIgY2wtLXR5cGUtbGlzdCBuaWwKLSAgIkxpc3Qgb2YgZGVmaW5lZCB0eXBlcyB0byBsb29r
dXAgZm9yIG1ldGhvZCBkaXNwYXRjaGluZy4iKQorICAiUHJlY2VkZW5jZSBsaXN0IG9mIHRo
ZSBkZWZpbmVkIGNsLXR5cGVzLiIpCisKKyhkZWZ2YXIgY2wtLXR5cGUtZGlzcGF0Y2gtbGlz
dCBuaWwKKyAgIkxpc3Qgb2YgdHlwZXMgdGhhdCBuZWVkIHRvIGJlIGNoZWNrZWQgZHVyaW5n
IGRpc3BhdGNoLiIpCiAKIDs7IEZJWE1FOiBUaGUgYGNsLWRlZnR5cGUtaGFuZGxlcicgcHJv
cGVydHkgc2hvdWxkIGFyZ3VhYmx5IGJlIHR1cm5lZAogOzsgaW50byBhIGZpZWxkIG9mIHRo
aXMgc3RydWN0IChidXQgaXQgaGFzIHBlcmZvcm1hbmNlIGFuZApAQCAtNDgsODMgKzUxLDcx
IEBACiBUaGF0IGlzLCBhIHR5cGUgZGVmaW5lZCBieSBgY2wtZGVmdHlwZScsIG9mIGNsYXNz
IGBjbC10eXBlLWNsYXNzJy4iCiAgIChhbmQgKHN5bWJvbHAgb2JqZWN0KSAoY2wtdHlwZS1j
bGFzcy1wIChjbC0tZmluZC1jbGFzcyBvYmplY3QpKSkpCiAKLShkZWZzdWJzdCBjbC0tdHlw
ZS1wYXJlbnRzIChuYW1lKQorKGRlZnVuIGNsLS10eXBlLXBhcmVudHMgKG5hbWUpCiAgICJH
ZXQgcGFyZW50cyBvZiB0eXBlIHdpdGggTkFNRS4KIE5BTUUgaXMgYSBzeW1ib2wgcmVwcmVz
ZW50aW5nIGEgdHlwZS4KIFJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgdHlwZXMu
IgogICAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzIG5hbWUpKSkKIAot
KGRlZnN1YnN0IGNsLS10eXBlLWNoaWxkcmVuIChuYW1lKQotICAiR2V0IGNoaWxkcmVuIG9m
IHRoZSB0eXBlIHdpdGggTkFNRS4KLU5BTUUgaXMgYSBzeW1ib2wgcmVwcmVzZW50aW5nIGEg
dHlwZS4KLVJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgdHlwZXMuIgotICAoY2wt
LWNsYXNzLWNoaWxkcmVuIChjbC0tZmluZC1jbGFzcyBuYW1lKSkpCi0KLShkZWZzdWJzdCBj
bC0tdHlwZS1kYWcgKHR5cGVzKQotICAiUmV0dXJuIGEgREFHIGZyb20gdGhlIGxpc3Qgb2Yg
VFlQRVMuIgotICAobWFwY2FyICMnY2wtLXR5cGUtcGFyZW50cyB0eXBlcykpCi0KIDs7IEtl
ZXAgaXQgZm9yIG5vdywgZm9yIHRlc3RpbmcuCiAoZGVmdW4gY2wtLXR5cGUtdW5kZWZpbmUg
KG5hbWUpCiAgICJSZW1vdmUgdGhlIGRlZmluaXRpb24gb2YgY2wtdHlwZSB3aXRoIE5BTUUu
CiBOQU1FIGlzIGFuIHVucXVvdGVkIHN5bWJvbCByZXByZXNlbnRpbmcgYSBjbC10eXBlLgog
U2lnbmFsIGFuIGVycm9yIGlmIE5BTUUgaGFzIHN1YnR5cGVzLiIKICAgKGNsLWNoZWNrLXR5
cGUgbmFtZSAoc2F0aXNmaWVzIGNsLS10eXBlLXApKQotICAod2hlbi1sZXQqICgoY2hpbGRy
ZW4gKGFuZCAoY2wtLXR5cGUtcCBuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY2wtLXR5cGUtY2hpbGRyZW4gbmFtZSkpKSkKKyAgKHdoZW4tbGV0KiAoKGNoaWxkcmVu
IChjbC0tY2xhc3MtY2hpbGRyZW4gKGNsLS1maW5kLWNsYXNzIG5hbWUpKSkpCiAgICAgKGVy
cm9yICJUeXBlIGhhcyBjaGlsZHJlbjogJVMiIGNoaWxkcmVuKSkKLSAgKGNsLXJlbXByb3Ag
bmFtZSAnY2wtLXR5cGUtZXJyb3IpCisgIChjbC1yZW1wcm9wIG5hbWUgJ2NsLS10eXBlLWZs
YWcpCiAgIChjbC1yZW1wcm9wIG5hbWUgJ2NsLS1jbGFzcykKICAgKGNsLXJlbXByb3AgbmFt
ZSAnY2wtZGVmdHlwZS1oYW5kbGVyKQorICAoc2V0cSBjbC0tdHlwZS1kaXNwYXRjaC1saXN0
IChkZWxxIG5hbWUgY2wtLXR5cGUtZGlzcGF0Y2gtbGlzdCkpCiAgIChzZXRxIGNsLS10eXBl
LWxpc3QgKGRlbHEgbmFtZSBjbC0tdHlwZS1saXN0KSkpCiAKIChkZWZ1biBjbC0tdHlwZS1k
ZWZ0eXBlIChuYW1lIHBhcmVudHMgJm9wdGlvbmFsIGRvY3N0cmluZykKICAgOzsgRklYTUU6
IFNob3VsZCB3ZSBhbHNvIHJlY2VpdmUgdGhlIGFyZ2xpc3Q/Ci0gICJHZW5lcmFsaXplIGNs
LXR5cGUgd2l0aCBOQU1FIGZvciBtZXRob2QgZGlzcGF0Y2hpbmcuCisgICJSZWdpc3RlciBj
bC10eXBlIHdpdGggTkFNRSBmb3IgbWV0aG9kIGRpc3BhdGNoaW5nLgogUEFSRU5UUyBpcyBh
IGxpc3Qgb2YgdHlwZXMgTkFNRSBpcyBhIHN1YnR5cGUgb2YsIG9yIG5pbC4KIERPQ1NUUklO
RyBpcyBhbiBvcHRpb25hbCBkb2N1bWVudGF0aW9uIHN0cmluZy4iCi0gIChsZXQgKCh0eXBl
bGlzdCBjbC0tdHlwZS1saXN0KQotICAgICAgICAob2xkcGxpc3QgKGNvcHktc2VxdWVuY2Ug
KHN5bWJvbC1wbGlzdCBuYW1lKSkpKQotICAgIChjb25kaXRpb24tY2FzZSBlcnIKLSAgICAg
ICAgKGxldCogKChjbGFzcyAoY2wtLWZpbmQtY2xhc3MgbmFtZSkpCi0gICAgICAgICAgICAg
ICAocmVjb3JkZWQgKG1lbXEgbmFtZSB0eXBlbGlzdCkpKQotICAgICAgICAgIChpZiAobnVs
bCBjbGFzcykKLSAgICAgICAgICAgICAgKG9yIChudWxsIHJlY29yZGVkKQotICAgICAgICAg
ICAgICAgICAgKGVycm9yICJUeXBlIGdlbmVyYWxpemVkLCBidXQgZG9lc24ndCBleGlzdCIp
KQotICAgICAgICAgICAgKG9yIHJlY29yZGVkIChlcnJvciAiVHlwZSBleGlzdHMsIGJ1dCBu
b3QgZ2VuZXJhbGl6ZWQiKSkKLSAgICAgICAgICAgIChvciAoY2wtdHlwZS1jbGFzcy1wIGNs
YXNzKQotICAgICAgICAgICAgICAgIDs7IEZJWE1FOiBXZSBoYXZlIHNvbWUgdXNlcyBgY2wt
ZGVmdHlwZScgaW4gRW1hY3MgdGhhdAotICAgICAgICAgICAgICAgIDs7ICJjb21wbGVtZW50
IiBhbm90aGVyIGRlY2xhcmF0aW9uIG9mIHRoZSBzYW1lIHR5cGUsCi0gICAgICAgICAgICAg
ICAgOzsgc28gbWF5YmUgd2Ugc2hvdWxkIHR1cm4gdGhpcyBpbnRvIGEgd2FybmluZyAoYW5k
Ci0gICAgICAgICAgICAgICAgOzsgbm90IG92ZXJ3cml0ZSB0aGUgYGNsLS1maW5kLWNsYXNz
JyBpbiB0aGF0IGNhc2UpPwotICAgICAgICAgICAgICAgIChlcnJvciAiVHlwZSBpbiBhbm90
aGVyIGNsYXNzOiAlUyIgKHR5cGUtb2YgY2xhc3MpKSkpCi0gICAgICAgICAgOzsgU2V0dXAg
YSB0eXBlIGRlc2NyaXB0b3IgZm9yIE5BTUUuCi0gICAgICAgICAgKHNldGYgKGNsLS1maW5k
LWNsYXNzIG5hbWUpCi0gICAgICAgICAgICAgICAgKGNsLS10eXBlLWNsYXNzLW1ha2UgbmFt
ZSBkb2NzdHJpbmcgcGFyZW50cykpCi0gICAgICAgICAgKGlmIHJlY29yZGVkCi0gICAgICAg
ICAgICAgIDs7IENsZWFyIGFueSBwcmV2aW91cyBlcnJvciBtYXJrLgotICAgICAgICAgICAg
ICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tdHlwZS1lcnJvcikKLSAgICAgICAgICAgIDs7IFJl
Y29yZCBuZXcgdHlwZSB0byBpbmNsdWRlIGl0cyBkZXBlbmRlbmN5IGluIHRoZSBEQUcuCi0g
ICAgICAgICAgICAocHVzaCBuYW1lIHR5cGVsaXN0KSkKLSAgICAgICAgICA7OyBgY2wtdHlw
ZXMtb2YnIGl0ZXJhdGVzIHRocm91Z2ggYWxsIGtub3duIHR5cGVzIHRvIGNvbGxlY3QKLSAg
ICAgICAgICA7OyBhbGwgdGhvc2UgYW4gb2JqZWN0IGJlbG9uZ3MgdG8sIHNvcnRlZCBmcm9t
IHRoZSBtb3N0Ci0gICAgICAgICAgOzsgc3BlY2lmaWMgdHlwZSB0byB0aGUgbW9yZSBnZW5l
cmFsIHR5cGUuICBTbywga2VlcCB0aGUKLSAgICAgICAgICA7OyBnbG9iYWwgbGlzdCBpbiB0
aGlzIG9yZGVyLgotICAgICAgICAgIDs7IEZJWE1FOiBUaGlzIGdsb2JhbCBvcGVyYXRpb24g
aXMgYSBiaXQgd29ycmlzb21lLCBiZWNhdXNlIGl0Ci0gICAgICAgICAgOzsgc2NhbGVzIHBv
b3JseSB3aXRoIHRoZSBudW1iZXIgb2YgdHlwZXMuICBJIGd1ZXNzIGl0J3MgT0sKLSAgICAg
ICAgICA7OyBmb3Igbm93IGJlY2F1c2UgYGNsLWRlZnR5cGUnIGlzIG5vdCB2ZXJ5IHBvcHVs
YXIsIGJ1dCBpdCdsbAotICAgICAgICAgIDs7IHByb2JhYmx5IG5lZWQgdG8gYmUgcmVwbGFj
ZWQgYXQgc29tZSBwb2ludC4gIE1heWJlIHdlCi0gICAgICAgICAgOzsgc2hvdWxkIHNpbXBs
eSByZXF1aXJlIHRoYXQgdGhlIHBhcmVudHMgYmUgZGVmaW5lZCBhbHJlYWR5LAotICAgICAg
ICAgIDs7IHRoZW4gd2UgY2FuIGp1c3QgYHB1c2gnIHRoZSBuZXcgdHlwZSwga25vd2luZyBp
dCdzIGluCi0gICAgICAgICAgOzsgdG9wb2xvZ2ljYWwgb3JkZXIgYnkgY29uc3RydWN0aW9u
LgotICAgICAgICAgIChzZXRxIGNsLS10eXBlLWxpc3QKLSAgICAgICAgICAgICAgICAobWVy
Z2Utb3JkZXJlZC1saXN0cwotICAgICAgICAgICAgICAgICAoY2wtLXR5cGUtZGFnIHR5cGVs
aXN0KQotICAgICAgICAgICAgICAgICAobGFtYmRhIChfKSAoZXJyb3IgIkludmFsaWQgZGVw
ZW5kZW5jeSBncmFwaCIpKSkpKQotICAgICAgKGVycm9yCi0gICAgICAgKHNldGYgKHN5bWJv
bC1wbGlzdCBuYW1lKSBvbGRwbGlzdCkKLSAgICAgICAoZXJyb3IgKGZvcm1hdCAiRGVmaW5l
ICVTIGZhaWxlZDogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZSAoZXJyb3ItbWVz
c2FnZS1zdHJpbmcgZXJyKSkpKSkpKQorICAoY29uZGl0aW9uLWNhc2UgZXJyCisgICAgICAo
bGV0KiAoKGNsYXNzIChjbC0tZmluZC1jbGFzcyBuYW1lKSkKKyAgICAgICAgICAgICAocmVj
b3JkZWQgKG1lbXEgbmFtZSBjbC0tdHlwZS1saXN0KSkpCisgICAgICAgIChpZiAobnVsbCBj
bGFzcykKKyAgICAgICAgICAgIChvciAobnVsbCByZWNvcmRlZCkKKyAgICAgICAgICAgICAg
ICAoZXJyb3IgIlR5cGUgcmVnaXN0ZXJlZCwgYnV0IGRvZXNuJ3QgZXhpc3QiKSkKKyAgICAg
ICAgICAob3IgcmVjb3JkZWQgKGVycm9yICJUeXBlIGV4aXN0cywgYnV0IG5vdCByZWdpc3Rl
cmVkIikpCisgICAgICAgICAgKG9yIChjbC10eXBlLWNsYXNzLXAgY2xhc3MpCisgICAgICAg
ICAgICAgIDs7IEZJWE1FOiBXZSBoYXZlIHNvbWUgdXNlcyBgY2wtZGVmdHlwZScgaW4gRW1h
Y3MgdGhhdAorICAgICAgICAgICAgICA7OyAiY29tcGxlbWVudCIgYW5vdGhlciBkZWNsYXJh
dGlvbiBvZiB0aGUgc2FtZSB0eXBlLAorICAgICAgICAgICAgICA7OyBzbyBtYXliZSB3ZSBz
aG91bGQgdHVybiB0aGlzIGludG8gYSB3YXJuaW5nIChhbmQKKyAgICAgICAgICAgICAgOzsg
bm90IG92ZXJ3cml0ZSB0aGUgYGNsLS1maW5kLWNsYXNzJyBpbiB0aGF0IGNhc2UpPworICAg
ICAgICAgICAgICAoZXJyb3IgIlR5cGUgaW4gYW5vdGhlciBjbGFzczogJVMiICh0eXBlLW9m
IGNsYXNzKSkpKQorICAgICAgICA7OyBTZXR1cCBhIHR5cGUgZGVzY3JpcHRvciBmb3IgTkFN
RS4KKyAgICAgICAgKHNldGYgKGNsLS1maW5kLWNsYXNzIG5hbWUpCisgICAgICAgICAgICAg
IChjbC0tdHlwZS1jbGFzcy1tYWtlIG5hbWUgZG9jc3RyaW5nIHBhcmVudHMpKQorICAgICAg
ICA7OyBSZXNldCBOQU1FIGFzIGEgbmV3bHkgZGVmaW5lZCB0eXBlLgorICAgICAgICAoY2wt
cmVtcHJvcCBuYW1lICdjbC0tdHlwZS1mbGFnKQorICAgICAgICA7OyBSZWNvcmQgbmV3IHR5
cGUuICBUaGUgY29uc3RydWN0b3Igb2YgdGhlIGNsYXNzCisgICAgICAgIDs7IGBjbC10eXBl
LWNsYXNzJyBhbHJlYWR5IGVuc3VyZXMgdGhhdCBwYXJlbnQgdHlwZXMgbXVzdCBiZQorICAg
ICAgICA7OyBkZWZpbmVkIGJlZm9yZSB0aGVpciAiY2hpbGQiIHR5cGVzIChpLmUuIGFscmVh
ZHkgYWRkZWQgdG8KKyAgICAgICAgOzsgdGhlIGBjbC0tdHlwZS1saXN0JyBmb3IgdHlwZXMg
ZGVmaW5lZCB3aXRoIGBjbC1kZWZ0eXBlJykuCisgICAgICAgIDs7IFNvIGl0IGlzIGVub3Vn
aCB0byBzaW1wbHkgcHVzaCBhIG5ldyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcKKyAgICAgICAg
Ozsgb2YgdGhlIGxpc3QuCisgICAgICAgIDs7IFJlZGVmaW5pdGlvbiBpcyBtb3JlIGNvbXBs
aWNhdGVkLCBiZWNhdXNlIGNoaWxkIHR5cGVzIG1heQorICAgICAgICA7OyBiZSBpbiB0aGUg
bGlzdCwgc28gbW92aW5nIHRoZSB0eXBlIHRvIHRoZSBoZWFkIGNhbiBiZQorICAgICAgICA7
OyBpbmNvcnJlY3QuICBUaGUgImNoZWFwIiBzb2x1dGlvbiBpcyB0byBsZWF2ZSB0aGUgbGlz
dAorICAgICAgICA7OyB1bmNoYW5nZWQgKGFuZCBob3BlIHRoZSByZWRlZmluaXRpb24gZG9l
c24ndCBjaGFuZ2UgdGhlCisgICAgICAgIDs7IGhpZXJhcmNoeSB0b28gbXVjaCkuCisgICAg
ICAgIDs7IFNpZGUgbm90ZTogUmVkZWZpbml0aW9ucyBpbnRyb2R1Y2Ugb3RoZXIgcHJvYmxl
bXMgYXMgd2VsbAorICAgICAgICA7OyBiZWNhdXNlIHRoZSBjbGFzcyBvYmplY3QncyBgcGFy
ZW50c2Agc2xvdCBjb250YWlucworICAgICAgICA7OyByZWZlcmVuY2VzIHRvIGBjbC0tY2xh
c3NgIG9iamVjdHMsIHNvIGFmdGVyIGEgcmVkZWZpbml0aW9uCisgICAgICAgIDs7IHZpYSAo
c2V0ZiAoY2wtLWZpbmQtY2xhc3MgRk9PKSAuLi4pLCB0aGUgY2hpbGRyZW4ncworICAgICAg
ICA7OyBgcGFyZW50c2Agc2xvdHMgcG9pbnQgdG8gdGhlIG9sZCBjbGFzcyBvYmplY3QuICBU
aGF0J3MgYQorICAgICAgICA7OyBwcm9ibGVtIHRoYXQgYWZmZWN0cyBhbGwgdHlwZXMgYW5k
IHRoYXQgd2UgZG9uJ3QgcmVhbGx5IHRyeQorICAgICAgICA7OyB0byBzb2x2ZSBjdXJyZW50
bHkuCisgICAgICAgIChvciByZWNvcmRlZCAocHVzaCBuYW1lIGNsLS10eXBlLWxpc3QpKSkK
KyAgICAoZXJyb3IKKyAgICAgKGVycm9yIChmb3JtYXQgIkRlZmluZSAlUyBmYWlsZWQ6ICVz
IgorICAgICAgICAgICAgICAgICAgICBuYW1lIChlcnJvci1tZXNzYWdlLXN0cmluZyBlcnIp
KSkpKSkKIAogOzs7IyMjYXV0b2xvYWQKIChkZWZtYWNybyBjbC1kZWZ0eXBlMiAobmFtZSBh
cmdsaXN0ICZyZXN0IGJvZHkpCkBAIC0xOTIsMTAgKzE4MywxMiBAQCBJZiBQQVJFTlRTIGlz
IG5vbi1uaWwsIEFSR0xJU1QgbXVzdCBiZSBuaWwuIgogCiAoZGVmdW4gY2wtLXR5cGUtZXJy
b3IgKHR5cGUgZXJyb3IpCiAgICJNYXJrIFRZUEUgYXMgaW4tZXJyb3IsIGFuZCByZXBvcnQg
dGhlIHByb2R1Y2VkIEVSUk9SIHZhbHVlLiIKLSAgKHB1dCB0eXBlICdjbC0tdHlwZS1lcnJv
ciBlcnJvcikgOzsgTWFyayBUWVBFIGFzIGluLWVycm9yLgogICA7OyBUZW1wb3JhcmlseSBy
YWlzZSB0aGUgcmVjdXJzaW9uIGxpbWl0IHRvIGF2b2lkIGFub3RoZXIgcmVjdXJzaW9uCiAg
IDs7IGVycm9yIHdoaWxlIHJlcG9ydGluZyBFUlJPUi4KICAgKGxldCAoKG1heC1saXNwLWV2
YWwtZGVwdGggKCsgODAwIG1heC1saXNwLWV2YWwtZGVwdGgpKSkKKyAgICA7OyBNYXJrIFRZ
UEUgYXMgaW4tZXJyb3IgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBkaXNwYXRjaCBsaXN0Lgor
ICAgIChwdXQgdHlwZSAnY2wtLXR5cGUtZmxhZyAnZXJyb3IpCisgICAgKHNldHEgY2wtLXR5
cGUtZGlzcGF0Y2gtbGlzdCAoZGVscSB0eXBlIGNsLS10eXBlLWRpc3BhdGNoLWxpc3QpKQog
ICAgICh3YXJuICAiY2wtdHlwZXMtb2YgJXMsICVzIiB0eXBlIChlcnJvci1tZXNzYWdlLXN0
cmluZyBlcnJvcikpKQogICBuaWwpCiAKQEAgLTI0Miw1NSArMjM1LDcyIEBAIElmIFBBUkVO
VFMgaXMgbm9uLW5pbCwgQVJHTElTVCBtdXN0IGJlIG5pbC4iCiA7OyAgIHRvIGZpbmQgd2hp
Y2ggY2wtdHlwZXMgbWF5IG5lZWQgdG8gYmUgY2hlY2tlZC4KIDs7CiAoZGVmdW4gY2wtdHlw
ZXMtb2YgKG9iamVjdCkKLSAgIlJldHVybiB0aGUgdHlwZXMgT0JKRUNUIGJlbG9uZ3MgdG8u
CisiUmV0dXJuIHRoZSB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0by4KIFJldHVybiBhbiB1bmlx
dWUgbGlzdCBvZiB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0bywgb3JkZXJlZCBmcm9tIHRoZQog
bW9zdCBzcGVjaWZpYyB0eXBlIHRvIHRoZSBtb3N0IGdlbmVyYWwuIgotICAobGV0IChmb3Vu
ZCkKLSAgICA7OyBCdWlsZCBhIGxpc3Qgb2YgYWxsIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRv
LgotICAgIChkb2xpc3QgKHR5cGUgY2wtLXR5cGUtbGlzdCkKKyhsZXQqICgocm9vdC10eXBl
IChjbC10eXBlLW9mIG9iamVjdCkpCisgICAgICAgKGZvdW5kIChsaXN0IHJvb3QtdHlwZSkp
KQorICA7OyBCdWlsZCBhIGxpc3Qgb2YgYWxsIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgor
ICAoZG9saXN0ICh0eXBlIGNsLS10eXBlLWxpc3QpCisgICAgKGxldCAoKGZsYWcgKGdldCB0
eXBlICdjbC0tdHlwZS1mbGFnKSkpCiAgICAgICAoYW5kCiAgICAgICAgOzsgU2tpcCB0eXBl
LCBpZiBpdCBwcmV2aW91c2x5IHByb2R1Y2VkIGFuIGVycm9yLgotICAgICAgIChudWxsIChn
ZXQgdHlwZSAnY2wtLXR5cGUtZXJyb3IpKQotICAgICAgIDs7IFNraXAgdHlwZSBub3QgZGVm
aW5lZCBieSBgY2wtZGVmdHlwZScuCi0gICAgICAgKGNsLXR5cGUtY2xhc3MtcCAoY2wtLWZp
bmQtY2xhc3MgdHlwZSkpCi0gICAgICAgOzsgSWYgQkFSIGlzIGRlY2xhcmVkIGFzIGEgcGFy
ZW50IG9mIEZPTyBhbmQgYGNsLXR5cGVzLW9mJyBoYXMKLSAgICAgICA7OyBhbHJlYWR5IGRl
Y2lkZWQgdGhhdCB0aGUgdmFsdWUgaXMgb2YgdHlwZSBGT08sIHRoZW4gd2UKLSAgICAgICA7
OyBhbHJlYWR5IGtub3cgQkFSIHdpbGwgYmUgaW4gdGhlIG91dHB1dCBhbnl3YXkgYW5kIHRo
ZXJlJ3Mgbm8KLSAgICAgICA7OyBwb2ludCB0ZXN0aW5nIEJBUi4gIFNvLCBza2lwIHR5cGUg
YWxyZWFkeSBzZWxlY3RlZCBhcyBwYXJlbnQKLSAgICAgICA7OyBvZiBhbm90aGVyIHR5cGUs
IGFzc3VtaW5nIHRoYXQsIG1vc3Qgb2YgdGhlIHRpbWUsIGBhc3NxJwotICAgICAgIDs7IHdp
bGwgYmUgZmFzdGVyIHRoYW4gYGNsLXR5cGVwJy4KLSAgICAgICAobnVsbCAoYXNzcSB0eXBl
IGZvdW5kKSkKKyAgICAgICAobm90IChlcSBmbGFnICdlcnJvcikpCisgICAgICAgOzsgU2tp
cCB0eXBlIHdoaWNoIHdlIGFyZSBzdXJlIHdpbGwgbm90IG1hdGNoLgorICAgICAgIChvciAo
bnVsbCBmbGFnKSAoZXEgZmxhZyByb290LXR5cGUpKQogICAgICAgIDs7IElmIE9CSkVDVCBp
cyBvZiB0eXBlLCBhZGQgdHlwZSB0byB0aGUgbWF0Y2hpbmcgbGlzdC4KICAgICAgICAoY29u
ZGl0aW9uLWNhc2UtdW5sZXNzLWRlYnVnIGUKICAgICAgICAgICAgKGNsLXR5cGVwIG9iamVj
dCB0eXBlKQogICAgICAgICAgKGVycm9yIChjbC0tdHlwZS1lcnJvciB0eXBlIGUpKSkKLSAg
ICAgICAocHVzaCB0eXBlIGZvdW5kKSkpCi0gICAgOzsgUmV0dXJuIGFuIHVuaXF1ZSB2YWx1
ZSBvZiB0aGUgbGlzdCBvZiB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0bywKLSAgICA7OyB3aGlj
aCBpcyBhbHNvIHRoZSBsaXN0IG9mIHNwZWNpZmllcnMgZm9yIE9CSkVDVC4KLSAgICAod2l0
aC1tZW1vaXphdGlvbiAoZ2V0aGFzaCBmb3VuZCBjbC0tdHlwZS11bmlxdWUpCi0gICAgICA7
OyBDb21wdXRlIGEgREFHIGZyb20gdGhlIGNvbGxlY3RlZCBtYXRjaGluZyB0eXBlcy4KLSAg
ICAgIChsZXQgKGRhZykKLSAgICAgICAgKGRvbGlzdCAodHlwZSBmb3VuZCkKLSAgICAgICAg
ICAobGV0ICgocGwgKGNsLS10eXBlLXBhcmVudHMgdHlwZSkpKQotICAgICAgICAgICAgKHdo
aWxlIHBsCi0gICAgICAgICAgICAgIChwdXNoIHBsIGRhZykKLSAgICAgICAgICAgICAgKHNl
dHEgcGwgKGNkciBwbCkpKSkpCi0gICAgICAgIDs7IENvbXB1dGUgYW4gb3JkZXJlZCBsaXN0
IG9mIHR5cGVzIGZyb20gdGhlIERBRy4KLSAgICAgICAgKG1lcmdlLW9yZGVyZWQtbGlzdHMK
LSAgICAgICAgIChucmV2ZXJzZSAoY29ucyAoY2wtLXR5cGUtcGFyZW50cyAoY2wtdHlwZS1v
ZiBvYmplY3QpKQotICAgICAgICAgICAgICAgICAgICAgICAgIGRhZykpKSkpKSkKKyAgICAg
ICAob3IgZmxhZyAocHV0IHR5cGUgJ2NsLS10eXBlLWZsYWcgcm9vdC10eXBlKSkKKyAgICAg
ICAocHVzaCB0eXBlIGZvdW5kKSkpKQorICA7OyBSZXR1cm4gYW4gdW5pcXVlIHZhbHVlIG9m
IHRoZSBsaXN0IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLAorICA7OyB3aGljaCBpcyBh
bHNvIHRoZSBsaXN0IG9mIHNwZWNpZmllcnMgZm9yIE9CSkVDVC4KKyAgKHdpdGgtbWVtb2l6
YXRpb24gKGdldGhhc2ggZm91bmQgY2wtLXR5cGUtdW5pcXVlKQorICAgIDs7IENvbXB1dGUg
YW4gb3JkZXJlZCBsaXN0IG9mIHR5cGVzIGZyb20gdGhlIERBRy4KKyAgICAobWVyZ2Utb3Jk
ZXJlZC1saXN0cyAobWFwY2FyICMnY2wtLXR5cGUtcGFyZW50cyBmb3VuZCkpKSkpCiAKIDs7
OyBNZXRob2QgZGlzcGF0Y2hpbmcKIDs7CisKKzs7IEZvciBhIGRlY2xhcmF0aW9uIGxpa2UK
Kzs7Cis7OyAgIChjbC1kZWZ0eXBlIGxpc3Qtb2YgKGVsZW0tdHlwZSkKKzs7ICAgICBgKGFu
ZCBsaXN0Cis7OyAgICAgICAgICAgKHNhdGlzZmllcyAsKGxhbWJkYSAobGlzdCkKKzs7ICAg
ICAgICAgICAgICAgICAgICAgICAgIChjbC1ldmVyeSAobGFtYmRhIChlbGVtKQorOzsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLXR5cGVwIGVsZW0gZWxlbS10
eXBlKSkKKzs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KSkpKSkK
Kzs7Cis7OyB3ZSBhZGQgdGhlIHR5cGUgdG8gYGNsLS10eXBlLWxpc3QnIGV2ZW4gdGhvdWdo
IGl0J3MgdW51c2FibGUgdGhlcmUKKzs7ICh0aGUgYGNsLXR5cGVwYCBjYWxsIGluIGBjbC10
eXBlcy1vZicgd2lsbCBhbHdheXMgc2lnbmFsIGFuIGVycm9yCis7OyBiZWNhdXNlIHRoZSB0
eXBlIGNhbid0IGJlIHVzZWQgd2l0aG91dCBhcmd1bWVudCkuCis7OworOzsgT25lIHdheSB0
byBzb2x2ZSB0aGlzIChhbmQgZXZlbiBvcGVuIHVwIHRoZSBwb3NzaWJpbGl0eSB0bworOzsg
ZGlzcGF0Y2ggb24gY29tcGxleCB0eXBlcyBsaWtlIGAobGlzdC1vZiBGT08pJykgaXMgdG8g
cG9wdWxhdGUKKzs7IGBjbC0tdHlwZS1kaXNwYXRjaC1saXN0JyAoaS5lLiB0aGUgbGlzdCBv
ZiB0eXBlcyB0aGF0IG5lZWQgdG8KKzs7IGJlIGNoZWNrZWQgZHVyaW5nIGRpc3BhdGNoKSBm
cm9tIGBjbC1nZW5lcmljLWdlbmVyYWxpemVycycgc28gaXQKKzs7IGluY2x1ZGVzIG9ubHkg
dGhvc2UgdHlwZXMgZm9yIHdoaWNoIHRoZXJlJ3MgYSBtZXRob2QsIHJhdGhlciB0aGFuCis7
OyBhbGwgZGVmaW5lZCB0eXBlcy4KKwogKGNsLWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVy
IGNsLS10eXBlLWdlbmVyYWxpemVyCiAgIDIwIDs7ICJ0eXBlb2YiIDwgImNsLXR5cGVzLW9m
IiA8ICJoZWFkIiBwcmlvcml0eQotICAobGFtYmRhIChvYmogJnJlc3QgXykgYChjbC10eXBl
cy1vZiAsb2JqKSkKKyAgKGxhbWJkYSAob2JqICZyZXN0IF8pIGAobGV0ICgoY2wtLXR5cGUt
bGlzdCBjbC0tdHlwZS1kaXNwYXRjaC1saXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjbC10eXBlcy1vZiAsb2JqKSkpCiAgIChsYW1iZGEgKHRhZyAmcmVzdCBfKSAoaWYg
KGNvbnNwIHRhZykgdGFnKSkpCiAKIChjbC1kZWZtZXRob2QgY2wtZ2VuZXJpYy1nZW5lcmFs
aXplcnMgOmV4dHJhICJjbC10eXBlcy1vZiIgKHR5cGUpCiAgICJTdXBwb3J0IGZvciBkaXNw
YXRjaCBvbiBjbC10eXBlcy4iCiAgIChpZiAoY2wtLXR5cGUtcCB0eXBlKQotICAgICAgKGxp
c3QgY2wtLXR5cGUtZ2VuZXJhbGl6ZXIpCisgICAgICAocHJvZ24KKyAgICAgICAgOzsgQWRk
IGEgbmV3IGRpc3BhdGNoIHR5cGUgdG8gdGhlIGRpc3BhdGNoIGxpc3QsIHRoZW4KKyAgICAg
ICAgOzsgc3luY2hyb25pemUgd2l0aCBgY2wtLXR5cGUtbGlzdCcgc28gdGhhdCBib3RoIGxp
c3RzIGZvbGxvdworICAgICAgICA7OyB0aGUgc2FtZSB0eXBlIHByZWNlZGVuY2Ugb3JkZXIu
CisgICAgICAgICh1bmxlc3MgKG1lbXEgdHlwZSBjbC0tdHlwZS1kaXNwYXRjaC1saXN0KQor
ICAgICAgICAgIChzZXRxIGNsLS10eXBlLWRpc3BhdGNoLWxpc3QKKyAgICAgICAgICAgICAg
ICAoc2VxLWludGVyc2VjdGlvbiBjbC0tdHlwZS1saXN0CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNvbnMgdHlwZSBjbC0tdHlwZS1kaXNwYXRjaC1saXN0KSkpKQor
ICAgICAgICAobGlzdCBjbC0tdHlwZS1nZW5lcmFsaXplcikpCiAgICAgKGNsLWNhbGwtbmV4
dC1tZXRob2QpKSkKIAogKHByb3ZpZGUgJ2NsLXR5cGVzKQo=
--------------BWcJEopZ27V982Xl58UYCSbN--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 2 May 2025 09:24:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 02 05:24:35 2025 Received: from localhost ([127.0.0.1]:56467 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uAmdG-0003RT-4y for submit <at> debbugs.gnu.org; Fri, 02 May 2025 05:24:35 -0400 Received: from smtp-20.smtpout.orange.fr ([80.12.242.20]:59153 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uAmdC-0003RH-LB for 77725 <at> debbugs.gnu.org; Fri, 02 May 2025 05:24:32 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id Amd6uXHerEtDmAmd9uF3cm; Fri, 02 May 2025 11:24:28 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746177868; bh=OOqVRPeGw0BcqP2So4tTx2WWTCrhDyyXVWzGP6qrUxY=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=meG7GgAjudj1aDWXlQz4HHc90xHyhkfU7vL8aGQrqiXqcQb169SpLwkv60UszxL/9 hsFBvUcvmxVH5xDVptFnf0eruj1h0AVOtsWkQDCPTsIOwoTy+behaTVK3uaSQKBz7d YIq8s2Ngg8+G1lgSOMQLA/VuhiN6CXARdAARilIobvCWS88QLzSCjIIWFapdmitOSQ EOY3uEmMGHTZlHDFmV3kHoWv8O3m4v6S5KSdjRyQpAhZcLSOwsJIrhtHabXpXLQXdz ohTADmbiRsmleiwA9y6qgEddOAUnfUIPaqltJaS+1LcVx4irQ4P04XbkOphpX9S1ud FgClxKxkZ6pYQ== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Fri, 02 May 2025 11:24:28 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------48ZbRJFPjvRRKdECZ0x7zdq9" Message-ID: <c601ed88-3825-40f5-9059-f1d503367d79@HIDDEN> Date: Fri, 2 May 2025 11:24:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? From: David Ponce <da_vid@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> Content-Language: fr, en-US In-Reply-To: <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------48ZbRJFPjvRRKdECZ0x7zdq9 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > > Please find attached a version of cl-types.el with my first try at > implementing something related to your idea above to populate a > `cl--type-dispatch-list' from `cl-generic-generalizers'. See attached my current local changes as a diff w.r.t. the `scratch/cl-types` branch. And a possible change log: 2025-05-02 David Ponce <da_vid@HIDDEN> Stefan Monnier <monnier@HIDDEN> * lisp/emacs-lisp/cl-types.el (cl--type-list): Doc string. (cl--type-dispatch-list): New variable. (cl--type-parents): Make it a plain defun. (cl--type-children, cl--type-dag): Remove. (cl--type-undefine): Remove duplicate test for `cl--type-p'. Use `cl--class-children'. Clear `cl--type-flag' instead of `cl--type-error'. Also remove type from the dispatch list. (cl--type-deftype): Doc string. Remove useless safeguard of data on error. Fix some error messages. Clear `cl--type-flag' when a type is (re)defined. Just push new types on `cl--type-list'. (cl--type-error): Set `cl--type-flag' to the symbol `error'. (cl-types-of): Doc string. Remove useless check for `cl-type-class-p'. Skip types which we are sure will not match. Simplify creation of the DAG. (cl--type-generalizer): In the tagcode-function, check only types that can be dispatched. (cl-generic-generalizers): Populate the dispatch list. Thanks! David --------------48ZbRJFPjvRRKdECZ0x7zdq9 Content-Type: text/x-patch; charset=UTF-8; name="cl-types.patch" Content-Disposition: attachment; filename="cl-types.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jbC10eXBlcy5lbCBiL2xpc3AvZW1hY3Mt bGlzcC9jbC10eXBlcy5lbAppbmRleCBjMTBjZTRhMjRmYi4uOTg3ZTM4YWI4ODAgMTAwNjQ0 Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC10eXBlcy5lbAorKysgYi9saXNwL2VtYWNzLWxp c3AvY2wtdHlwZXMuZWwKQEAgLTIwLDcgKzIwLDEwIEBACiA7OyAtIGBjbC10eXBlcy1vZics IHRoYXQgcmV0dXJucyB0aGUgdHlwZXMgYW4gb2JqZWN0IGJlbG9uZ3MgdG8uCiAKIChkZWZ2 YXIgY2wtLXR5cGUtbGlzdCBuaWwKLSAgIkxpc3Qgb2YgZGVmaW5lZCB0eXBlcyB0byBsb29r dXAgZm9yIG1ldGhvZCBkaXNwYXRjaGluZy4iKQorICAiUHJlY2VkZW5jZSBsaXN0IG9mIHRo ZSBkZWZpbmVkIGNsLXR5cGVzLiIpCisKKyhkZWZ2YXIgY2wtLXR5cGUtZGlzcGF0Y2gtbGlz dCBuaWwKKyAgIkxpc3Qgb2YgdHlwZXMgdGhhdCBuZWVkIHRvIGJlIGNoZWNrZWQgZHVyaW5n IGRpc3BhdGNoLiIpCiAKIDs7IEZJWE1FOiBUaGUgYGNsLWRlZnR5cGUtaGFuZGxlcicgcHJv cGVydHkgc2hvdWxkIGFyZ3VhYmx5IGJlIHR1cm5lZAogOzsgaW50byBhIGZpZWxkIG9mIHRo aXMgc3RydWN0IChidXQgaXQgaGFzIHBlcmZvcm1hbmNlIGFuZApAQCAtNDgsODMgKzUxLDcx IEBACiBUaGF0IGlzLCBhIHR5cGUgZGVmaW5lZCBieSBgY2wtZGVmdHlwZScsIG9mIGNsYXNz IGBjbC10eXBlLWNsYXNzJy4iCiAgIChhbmQgKHN5bWJvbHAgb2JqZWN0KSAoY2wtdHlwZS1j bGFzcy1wIChjbC0tZmluZC1jbGFzcyBvYmplY3QpKSkpCiAKLShkZWZzdWJzdCBjbC0tdHlw ZS1wYXJlbnRzIChuYW1lKQorKGRlZnVuIGNsLS10eXBlLXBhcmVudHMgKG5hbWUpCiAgICJH ZXQgcGFyZW50cyBvZiB0eXBlIHdpdGggTkFNRS4KIE5BTUUgaXMgYSBzeW1ib2wgcmVwcmVz ZW50aW5nIGEgdHlwZS4KIFJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgdHlwZXMu IgogICAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzIG5hbWUpKSkKIAot KGRlZnN1YnN0IGNsLS10eXBlLWNoaWxkcmVuIChuYW1lKQotICAiR2V0IGNoaWxkcmVuIG9m IHRoZSB0eXBlIHdpdGggTkFNRS4KLU5BTUUgaXMgYSBzeW1ib2wgcmVwcmVzZW50aW5nIGEg dHlwZS4KLVJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgdHlwZXMuIgotICAoY2wt LWNsYXNzLWNoaWxkcmVuIChjbC0tZmluZC1jbGFzcyBuYW1lKSkpCi0KLShkZWZzdWJzdCBj bC0tdHlwZS1kYWcgKHR5cGVzKQotICAiUmV0dXJuIGEgREFHIGZyb20gdGhlIGxpc3Qgb2Yg VFlQRVMuIgotICAobWFwY2FyICMnY2wtLXR5cGUtcGFyZW50cyB0eXBlcykpCi0KIDs7IEtl ZXAgaXQgZm9yIG5vdywgZm9yIHRlc3RpbmcuCiAoZGVmdW4gY2wtLXR5cGUtdW5kZWZpbmUg KG5hbWUpCiAgICJSZW1vdmUgdGhlIGRlZmluaXRpb24gb2YgY2wtdHlwZSB3aXRoIE5BTUUu CiBOQU1FIGlzIGFuIHVucXVvdGVkIHN5bWJvbCByZXByZXNlbnRpbmcgYSBjbC10eXBlLgog U2lnbmFsIGFuIGVycm9yIGlmIE5BTUUgaGFzIHN1YnR5cGVzLiIKICAgKGNsLWNoZWNrLXR5 cGUgbmFtZSAoc2F0aXNmaWVzIGNsLS10eXBlLXApKQotICAod2hlbi1sZXQqICgoY2hpbGRy ZW4gKGFuZCAoY2wtLXR5cGUtcCBuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2wtLXR5cGUtY2hpbGRyZW4gbmFtZSkpKSkKKyAgKHdoZW4tbGV0KiAoKGNoaWxkcmVu IChjbC0tY2xhc3MtY2hpbGRyZW4gKGNsLS1maW5kLWNsYXNzIG5hbWUpKSkpCiAgICAgKGVy cm9yICJUeXBlIGhhcyBjaGlsZHJlbjogJVMiIGNoaWxkcmVuKSkKLSAgKGNsLXJlbXByb3Ag bmFtZSAnY2wtLXR5cGUtZXJyb3IpCisgIChjbC1yZW1wcm9wIG5hbWUgJ2NsLS10eXBlLWZs YWcpCiAgIChjbC1yZW1wcm9wIG5hbWUgJ2NsLS1jbGFzcykKICAgKGNsLXJlbXByb3AgbmFt ZSAnY2wtZGVmdHlwZS1oYW5kbGVyKQorICAoc2V0cSBjbC0tdHlwZS1kaXNwYXRjaC1saXN0 IChkZWxxIG5hbWUgY2wtLXR5cGUtZGlzcGF0Y2gtbGlzdCkpCiAgIChzZXRxIGNsLS10eXBl LWxpc3QgKGRlbHEgbmFtZSBjbC0tdHlwZS1saXN0KSkpCiAKIChkZWZ1biBjbC0tdHlwZS1k ZWZ0eXBlIChuYW1lIHBhcmVudHMgJm9wdGlvbmFsIGRvY3N0cmluZykKICAgOzsgRklYTUU6 IFNob3VsZCB3ZSBhbHNvIHJlY2VpdmUgdGhlIGFyZ2xpc3Q/Ci0gICJHZW5lcmFsaXplIGNs LXR5cGUgd2l0aCBOQU1FIGZvciBtZXRob2QgZGlzcGF0Y2hpbmcuCisgICJSZWdpc3RlciBj bC10eXBlIHdpdGggTkFNRSBmb3IgbWV0aG9kIGRpc3BhdGNoaW5nLgogUEFSRU5UUyBpcyBh IGxpc3Qgb2YgdHlwZXMgTkFNRSBpcyBhIHN1YnR5cGUgb2YsIG9yIG5pbC4KIERPQ1NUUklO RyBpcyBhbiBvcHRpb25hbCBkb2N1bWVudGF0aW9uIHN0cmluZy4iCi0gIChsZXQgKCh0eXBl bGlzdCBjbC0tdHlwZS1saXN0KQotICAgICAgICAob2xkcGxpc3QgKGNvcHktc2VxdWVuY2Ug KHN5bWJvbC1wbGlzdCBuYW1lKSkpKQotICAgIChjb25kaXRpb24tY2FzZSBlcnIKLSAgICAg ICAgKGxldCogKChjbGFzcyAoY2wtLWZpbmQtY2xhc3MgbmFtZSkpCi0gICAgICAgICAgICAg ICAocmVjb3JkZWQgKG1lbXEgbmFtZSB0eXBlbGlzdCkpKQotICAgICAgICAgIChpZiAobnVs bCBjbGFzcykKLSAgICAgICAgICAgICAgKG9yIChudWxsIHJlY29yZGVkKQotICAgICAgICAg ICAgICAgICAgKGVycm9yICJUeXBlIGdlbmVyYWxpemVkLCBidXQgZG9lc24ndCBleGlzdCIp KQotICAgICAgICAgICAgKG9yIHJlY29yZGVkIChlcnJvciAiVHlwZSBleGlzdHMsIGJ1dCBu b3QgZ2VuZXJhbGl6ZWQiKSkKLSAgICAgICAgICAgIChvciAoY2wtdHlwZS1jbGFzcy1wIGNs YXNzKQotICAgICAgICAgICAgICAgIDs7IEZJWE1FOiBXZSBoYXZlIHNvbWUgdXNlcyBgY2wt ZGVmdHlwZScgaW4gRW1hY3MgdGhhdAotICAgICAgICAgICAgICAgIDs7ICJjb21wbGVtZW50 IiBhbm90aGVyIGRlY2xhcmF0aW9uIG9mIHRoZSBzYW1lIHR5cGUsCi0gICAgICAgICAgICAg ICAgOzsgc28gbWF5YmUgd2Ugc2hvdWxkIHR1cm4gdGhpcyBpbnRvIGEgd2FybmluZyAoYW5k Ci0gICAgICAgICAgICAgICAgOzsgbm90IG92ZXJ3cml0ZSB0aGUgYGNsLS1maW5kLWNsYXNz JyBpbiB0aGF0IGNhc2UpPwotICAgICAgICAgICAgICAgIChlcnJvciAiVHlwZSBpbiBhbm90 aGVyIGNsYXNzOiAlUyIgKHR5cGUtb2YgY2xhc3MpKSkpCi0gICAgICAgICAgOzsgU2V0dXAg YSB0eXBlIGRlc2NyaXB0b3IgZm9yIE5BTUUuCi0gICAgICAgICAgKHNldGYgKGNsLS1maW5k LWNsYXNzIG5hbWUpCi0gICAgICAgICAgICAgICAgKGNsLS10eXBlLWNsYXNzLW1ha2UgbmFt ZSBkb2NzdHJpbmcgcGFyZW50cykpCi0gICAgICAgICAgKGlmIHJlY29yZGVkCi0gICAgICAg ICAgICAgIDs7IENsZWFyIGFueSBwcmV2aW91cyBlcnJvciBtYXJrLgotICAgICAgICAgICAg ICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tdHlwZS1lcnJvcikKLSAgICAgICAgICAgIDs7IFJl Y29yZCBuZXcgdHlwZSB0byBpbmNsdWRlIGl0cyBkZXBlbmRlbmN5IGluIHRoZSBEQUcuCi0g ICAgICAgICAgICAocHVzaCBuYW1lIHR5cGVsaXN0KSkKLSAgICAgICAgICA7OyBgY2wtdHlw ZXMtb2YnIGl0ZXJhdGVzIHRocm91Z2ggYWxsIGtub3duIHR5cGVzIHRvIGNvbGxlY3QKLSAg ICAgICAgICA7OyBhbGwgdGhvc2UgYW4gb2JqZWN0IGJlbG9uZ3MgdG8sIHNvcnRlZCBmcm9t IHRoZSBtb3N0Ci0gICAgICAgICAgOzsgc3BlY2lmaWMgdHlwZSB0byB0aGUgbW9yZSBnZW5l cmFsIHR5cGUuICBTbywga2VlcCB0aGUKLSAgICAgICAgICA7OyBnbG9iYWwgbGlzdCBpbiB0 aGlzIG9yZGVyLgotICAgICAgICAgIDs7IEZJWE1FOiBUaGlzIGdsb2JhbCBvcGVyYXRpb24g aXMgYSBiaXQgd29ycmlzb21lLCBiZWNhdXNlIGl0Ci0gICAgICAgICAgOzsgc2NhbGVzIHBv b3JseSB3aXRoIHRoZSBudW1iZXIgb2YgdHlwZXMuICBJIGd1ZXNzIGl0J3MgT0sKLSAgICAg ICAgICA7OyBmb3Igbm93IGJlY2F1c2UgYGNsLWRlZnR5cGUnIGlzIG5vdCB2ZXJ5IHBvcHVs YXIsIGJ1dCBpdCdsbAotICAgICAgICAgIDs7IHByb2JhYmx5IG5lZWQgdG8gYmUgcmVwbGFj ZWQgYXQgc29tZSBwb2ludC4gIE1heWJlIHdlCi0gICAgICAgICAgOzsgc2hvdWxkIHNpbXBs eSByZXF1aXJlIHRoYXQgdGhlIHBhcmVudHMgYmUgZGVmaW5lZCBhbHJlYWR5LAotICAgICAg ICAgIDs7IHRoZW4gd2UgY2FuIGp1c3QgYHB1c2gnIHRoZSBuZXcgdHlwZSwga25vd2luZyBp dCdzIGluCi0gICAgICAgICAgOzsgdG9wb2xvZ2ljYWwgb3JkZXIgYnkgY29uc3RydWN0aW9u LgotICAgICAgICAgIChzZXRxIGNsLS10eXBlLWxpc3QKLSAgICAgICAgICAgICAgICAobWVy Z2Utb3JkZXJlZC1saXN0cwotICAgICAgICAgICAgICAgICAoY2wtLXR5cGUtZGFnIHR5cGVs aXN0KQotICAgICAgICAgICAgICAgICAobGFtYmRhIChfKSAoZXJyb3IgIkludmFsaWQgZGVw ZW5kZW5jeSBncmFwaCIpKSkpKQotICAgICAgKGVycm9yCi0gICAgICAgKHNldGYgKHN5bWJv bC1wbGlzdCBuYW1lKSBvbGRwbGlzdCkKLSAgICAgICAoZXJyb3IgKGZvcm1hdCAiRGVmaW5l ICVTIGZhaWxlZDogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZSAoZXJyb3ItbWVz c2FnZS1zdHJpbmcgZXJyKSkpKSkpKQorICAoY29uZGl0aW9uLWNhc2UgZXJyCisgICAgICAo bGV0KiAoKGNsYXNzIChjbC0tZmluZC1jbGFzcyBuYW1lKSkKKyAgICAgICAgICAgICAocmVj b3JkZWQgKG1lbXEgbmFtZSBjbC0tdHlwZS1saXN0KSkpCisgICAgICAgIChpZiAobnVsbCBj bGFzcykKKyAgICAgICAgICAgIChvciAobnVsbCByZWNvcmRlZCkKKyAgICAgICAgICAgICAg ICAoZXJyb3IgIlR5cGUgcmVnaXN0ZXJlZCwgYnV0IGRvZXNuJ3QgZXhpc3QiKSkKKyAgICAg ICAgICAob3IgcmVjb3JkZWQgKGVycm9yICJUeXBlIGV4aXN0cywgYnV0IG5vdCByZWdpc3Rl cmVkIikpCisgICAgICAgICAgKG9yIChjbC10eXBlLWNsYXNzLXAgY2xhc3MpCisgICAgICAg ICAgICAgIDs7IEZJWE1FOiBXZSBoYXZlIHNvbWUgdXNlcyBgY2wtZGVmdHlwZScgaW4gRW1h Y3MgdGhhdAorICAgICAgICAgICAgICA7OyAiY29tcGxlbWVudCIgYW5vdGhlciBkZWNsYXJh dGlvbiBvZiB0aGUgc2FtZSB0eXBlLAorICAgICAgICAgICAgICA7OyBzbyBtYXliZSB3ZSBz aG91bGQgdHVybiB0aGlzIGludG8gYSB3YXJuaW5nIChhbmQKKyAgICAgICAgICAgICAgOzsg bm90IG92ZXJ3cml0ZSB0aGUgYGNsLS1maW5kLWNsYXNzJyBpbiB0aGF0IGNhc2UpPworICAg ICAgICAgICAgICAoZXJyb3IgIlR5cGUgaW4gYW5vdGhlciBjbGFzczogJVMiICh0eXBlLW9m IGNsYXNzKSkpKQorICAgICAgICA7OyBTZXR1cCBhIHR5cGUgZGVzY3JpcHRvciBmb3IgTkFN RS4KKyAgICAgICAgKHNldGYgKGNsLS1maW5kLWNsYXNzIG5hbWUpCisgICAgICAgICAgICAg IChjbC0tdHlwZS1jbGFzcy1tYWtlIG5hbWUgZG9jc3RyaW5nIHBhcmVudHMpKQorICAgICAg ICA7OyBSZXNldCBOQU1FIGFzIGEgbmV3bHkgZGVmaW5lZCB0eXBlLgorICAgICAgICAoY2wt cmVtcHJvcCBuYW1lICdjbC0tdHlwZS1mbGFnKQorICAgICAgICA7OyBSZWNvcmQgbmV3IHR5 cGUuICBUaGUgY29uc3RydWN0b3Igb2YgdGhlIGNsYXNzCisgICAgICAgIDs7IGBjbC10eXBl LWNsYXNzJyBhbHJlYWR5IGVuc3VyZXMgdGhhdCBwYXJlbnQgdHlwZXMgbXVzdCBiZQorICAg ICAgICA7OyBkZWZpbmVkIGJlZm9yZSB0aGVpciAiY2hpbGQiIHR5cGVzIChpLmUuIGFscmVh ZHkgYWRkZWQgdG8KKyAgICAgICAgOzsgdGhlIGBjbC0tdHlwZS1saXN0JyBmb3IgdHlwZXMg ZGVmaW5lZCB3aXRoIGBjbC1kZWZ0eXBlJykuCisgICAgICAgIDs7IFNvIGl0IGlzIGVub3Vn aCB0byBzaW1wbHkgcHVzaCBhIG5ldyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcKKyAgICAgICAg Ozsgb2YgdGhlIGxpc3QuCisgICAgICAgIDs7IFJlZGVmaW5pdGlvbiBpcyBtb3JlIGNvbXBs aWNhdGVkLCBiZWNhdXNlIGNoaWxkIHR5cGVzIG1heQorICAgICAgICA7OyBiZSBpbiB0aGUg bGlzdCwgc28gbW92aW5nIHRoZSB0eXBlIHRvIHRoZSBoZWFkIGNhbiBiZQorICAgICAgICA7 OyBpbmNvcnJlY3QuICBUaGUgImNoZWFwIiBzb2x1dGlvbiBpcyB0byBsZWF2ZSB0aGUgbGlz dAorICAgICAgICA7OyB1bmNoYW5nZWQgKGFuZCBob3BlIHRoZSByZWRlZmluaXRpb24gZG9l c24ndCBjaGFuZ2UgdGhlCisgICAgICAgIDs7IGhpZXJhcmNoeSB0b28gbXVjaCkuCisgICAg ICAgIDs7IFNpZGUgbm90ZTogUmVkZWZpbml0aW9ucyBpbnRyb2R1Y2Ugb3RoZXIgcHJvYmxl bXMgYXMgd2VsbAorICAgICAgICA7OyBiZWNhdXNlIHRoZSBjbGFzcyBvYmplY3QncyBgcGFy ZW50c2Agc2xvdCBjb250YWlucworICAgICAgICA7OyByZWZlcmVuY2VzIHRvIGBjbC0tY2xh c3NgIG9iamVjdHMsIHNvIGFmdGVyIGEgcmVkZWZpbml0aW9uCisgICAgICAgIDs7IHZpYSAo c2V0ZiAoY2wtLWZpbmQtY2xhc3MgRk9PKSAuLi4pLCB0aGUgY2hpbGRyZW4ncworICAgICAg ICA7OyBgcGFyZW50c2Agc2xvdHMgcG9pbnQgdG8gdGhlIG9sZCBjbGFzcyBvYmplY3QuICBU aGF0J3MgYQorICAgICAgICA7OyBwcm9ibGVtIHRoYXQgYWZmZWN0cyBhbGwgdHlwZXMgYW5k IHRoYXQgd2UgZG9uJ3QgcmVhbGx5IHRyeQorICAgICAgICA7OyB0byBzb2x2ZSBjdXJyZW50 bHkuCisgICAgICAgIChvciByZWNvcmRlZCAocHVzaCBuYW1lIGNsLS10eXBlLWxpc3QpKSkK KyAgICAoZXJyb3IKKyAgICAgKGVycm9yIChmb3JtYXQgIkRlZmluZSAlUyBmYWlsZWQ6ICVz IgorICAgICAgICAgICAgICAgICAgICBuYW1lIChlcnJvci1tZXNzYWdlLXN0cmluZyBlcnIp KSkpKSkKIAogOzs7IyMjYXV0b2xvYWQKIChkZWZtYWNybyBjbC1kZWZ0eXBlMiAobmFtZSBh cmdsaXN0ICZyZXN0IGJvZHkpCkBAIC0xOTIsNyArMTgzLDcgQEAgSWYgUEFSRU5UUyBpcyBu b24tbmlsLCBBUkdMSVNUIG11c3QgYmUgbmlsLiIKIAogKGRlZnVuIGNsLS10eXBlLWVycm9y ICh0eXBlIGVycm9yKQogICAiTWFyayBUWVBFIGFzIGluLWVycm9yLCBhbmQgcmVwb3J0IHRo ZSBwcm9kdWNlZCBFUlJPUiB2YWx1ZS4iCi0gIChwdXQgdHlwZSAnY2wtLXR5cGUtZXJyb3Ig ZXJyb3IpIDs7IE1hcmsgVFlQRSBhcyBpbi1lcnJvci4KKyAgKHB1dCB0eXBlICdjbC0tdHlw ZS1lcnJvciAnZXJyb3IpIDs7IE1hcmsgVFlQRSBhcyBpbi1lcnJvci4KICAgOzsgVGVtcG9y YXJpbHkgcmFpc2UgdGhlIHJlY3Vyc2lvbiBsaW1pdCB0byBhdm9pZCBhbm90aGVyIHJlY3Vy c2lvbgogICA7OyBlcnJvciB3aGlsZSByZXBvcnRpbmcgRVJST1IuCiAgIChsZXQgKChtYXgt bGlzcC1ldmFsLWRlcHRoICgrIDgwMCBtYXgtbGlzcC1ldmFsLWRlcHRoKSkpCkBAIC0yNDIs NTUgKzIzMyw3MiBAQCBJZiBQQVJFTlRTIGlzIG5vbi1uaWwsIEFSR0xJU1QgbXVzdCBiZSBu aWwuIgogOzsgICB0byBmaW5kIHdoaWNoIGNsLXR5cGVzIG1heSBuZWVkIHRvIGJlIGNoZWNr ZWQuCiA7OwogKGRlZnVuIGNsLXR5cGVzLW9mIChvYmplY3QpCi0gICJSZXR1cm4gdGhlIHR5 cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgorIlJldHVybiB0aGUgdHlwZXMgT0JKRUNUIGJlbG9u Z3MgdG8uCiBSZXR1cm4gYW4gdW5pcXVlIGxpc3Qgb2YgdHlwZXMgT0JKRUNUIGJlbG9uZ3Mg dG8sIG9yZGVyZWQgZnJvbSB0aGUKIG1vc3Qgc3BlY2lmaWMgdHlwZSB0byB0aGUgbW9zdCBn ZW5lcmFsLiIKLSAgKGxldCAoZm91bmQpCi0gICAgOzsgQnVpbGQgYSBsaXN0IG9mIGFsbCB0 eXBlcyBPQkpFQ1QgYmVsb25ncyB0by4KLSAgICAoZG9saXN0ICh0eXBlIGNsLS10eXBlLWxp c3QpCisobGV0KiAoKHJvb3QtdHlwZSAoY2wtdHlwZS1vZiBvYmplY3QpKQorICAgICAgIChm b3VuZCAobGlzdCByb290LXR5cGUpKSkKKyAgOzsgQnVpbGQgYSBsaXN0IG9mIGFsbCB0eXBl cyBPQkpFQ1QgYmVsb25ncyB0by4KKyAgKGRvbGlzdCAodHlwZSBjbC0tdHlwZS1saXN0KQor ICAgIChsZXQgKChmbGFnIChnZXQgdHlwZSAnY2wtLXR5cGUtZmxhZykpKQogICAgICAgKGFu ZAogICAgICAgIDs7IFNraXAgdHlwZSwgaWYgaXQgcHJldmlvdXNseSBwcm9kdWNlZCBhbiBl cnJvci4KICAgICAgICAobnVsbCAoZ2V0IHR5cGUgJ2NsLS10eXBlLWVycm9yKSkKLSAgICAg ICA7OyBTa2lwIHR5cGUgbm90IGRlZmluZWQgYnkgYGNsLWRlZnR5cGUnLgotICAgICAgIChj bC10eXBlLWNsYXNzLXAgKGNsLS1maW5kLWNsYXNzIHR5cGUpKQotICAgICAgIDs7IElmIEJB UiBpcyBkZWNsYXJlZCBhcyBhIHBhcmVudCBvZiBGT08gYW5kIGBjbC10eXBlcy1vZicgaGFz Ci0gICAgICAgOzsgYWxyZWFkeSBkZWNpZGVkIHRoYXQgdGhlIHZhbHVlIGlzIG9mIHR5cGUg Rk9PLCB0aGVuIHdlCi0gICAgICAgOzsgYWxyZWFkeSBrbm93IEJBUiB3aWxsIGJlIGluIHRo ZSBvdXRwdXQgYW55d2F5IGFuZCB0aGVyZSdzIG5vCi0gICAgICAgOzsgcG9pbnQgdGVzdGlu ZyBCQVIuICBTbywgc2tpcCB0eXBlIGFscmVhZHkgc2VsZWN0ZWQgYXMgcGFyZW50Ci0gICAg ICAgOzsgb2YgYW5vdGhlciB0eXBlLCBhc3N1bWluZyB0aGF0LCBtb3N0IG9mIHRoZSB0aW1l LCBgYXNzcScKLSAgICAgICA7OyB3aWxsIGJlIGZhc3RlciB0aGFuIGBjbC10eXBlcCcuCi0g ICAgICAgKG51bGwgKGFzc3EgdHlwZSBmb3VuZCkpCisgICAgICAgOzsgU2tpcCB0eXBlIHdo aWNoIHdlIGFyZSBzdXJlIHdpbGwgbm90IG1hdGNoLgorICAgICAgIChvciAobnVsbCBmbGFn KSAoZXEgZmxhZyByb290LXR5cGUpKQogICAgICAgIDs7IElmIE9CSkVDVCBpcyBvZiB0eXBl LCBhZGQgdHlwZSB0byB0aGUgbWF0Y2hpbmcgbGlzdC4KICAgICAgICAoY29uZGl0aW9uLWNh c2UtdW5sZXNzLWRlYnVnIGUKICAgICAgICAgICAgKGNsLXR5cGVwIG9iamVjdCB0eXBlKQog ICAgICAgICAgKGVycm9yIChjbC0tdHlwZS1lcnJvciB0eXBlIGUpKSkKLSAgICAgICAocHVz aCB0eXBlIGZvdW5kKSkpCi0gICAgOzsgUmV0dXJuIGFuIHVuaXF1ZSB2YWx1ZSBvZiB0aGUg bGlzdCBvZiB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0bywKLSAgICA7OyB3aGljaCBpcyBhbHNv IHRoZSBsaXN0IG9mIHNwZWNpZmllcnMgZm9yIE9CSkVDVC4KLSAgICAod2l0aC1tZW1vaXph dGlvbiAoZ2V0aGFzaCBmb3VuZCBjbC0tdHlwZS11bmlxdWUpCi0gICAgICA7OyBDb21wdXRl IGEgREFHIGZyb20gdGhlIGNvbGxlY3RlZCBtYXRjaGluZyB0eXBlcy4KLSAgICAgIChsZXQg KGRhZykKLSAgICAgICAgKGRvbGlzdCAodHlwZSBmb3VuZCkKLSAgICAgICAgICAobGV0ICgo cGwgKGNsLS10eXBlLXBhcmVudHMgdHlwZSkpKQotICAgICAgICAgICAgKHdoaWxlIHBsCi0g ICAgICAgICAgICAgIChwdXNoIHBsIGRhZykKLSAgICAgICAgICAgICAgKHNldHEgcGwgKGNk ciBwbCkpKSkpCi0gICAgICAgIDs7IENvbXB1dGUgYW4gb3JkZXJlZCBsaXN0IG9mIHR5cGVz IGZyb20gdGhlIERBRy4KLSAgICAgICAgKG1lcmdlLW9yZGVyZWQtbGlzdHMKLSAgICAgICAg IChucmV2ZXJzZSAoY29ucyAoY2wtLXR5cGUtcGFyZW50cyAoY2wtdHlwZS1vZiBvYmplY3Qp KQotICAgICAgICAgICAgICAgICAgICAgICAgIGRhZykpKSkpKSkKKyAgICAgICAob3IgZmxh ZyAocHV0IHR5cGUgJ2NsLS10eXBlLWZsYWcgcm9vdC10eXBlKSkKKyAgICAgICAocHVzaCB0 eXBlIGZvdW5kKSkpKQorICA7OyBSZXR1cm4gYW4gdW5pcXVlIHZhbHVlIG9mIHRoZSBsaXN0 IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLAorICA7OyB3aGljaCBpcyBhbHNvIHRoZSBs aXN0IG9mIHNwZWNpZmllcnMgZm9yIE9CSkVDVC4KKyAgKHdpdGgtbWVtb2l6YXRpb24gKGdl dGhhc2ggZm91bmQgY2wtLXR5cGUtdW5pcXVlKQorICAgIDs7IENvbXB1dGUgYW4gb3JkZXJl ZCBsaXN0IG9mIHR5cGVzIGZyb20gdGhlIERBRy4KKyAgICAobWVyZ2Utb3JkZXJlZC1saXN0 cyAobWFwY2FyICMnY2wtLXR5cGUtcGFyZW50cyBmb3VuZCkpKSkpCiAKIDs7OyBNZXRob2Qg ZGlzcGF0Y2hpbmcKIDs7CisKKzs7IEZvciBhIGRlY2xhcmF0aW9uIGxpa2UKKzs7Cis7OyAg IChjbC1kZWZ0eXBlIGxpc3Qtb2YgKGVsZW0tdHlwZSkKKzs7ICAgICBgKGFuZCBsaXN0Cis7 OyAgICAgICAgICAgKHNhdGlzZmllcyAsKGxhbWJkYSAobGlzdCkKKzs7ICAgICAgICAgICAg ICAgICAgICAgICAgIChjbC1ldmVyeSAobGFtYmRhIChlbGVtKQorOzsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNsLXR5cGVwIGVsZW0gZWxlbS10eXBlKSkKKzs7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KSkpKSkKKzs7Cis7OyB3 ZSBhZGQgdGhlIHR5cGUgdG8gYGNsLS10eXBlLWxpc3QnIGV2ZW4gdGhvdWdoIGl0J3MgdW51 c2FibGUgdGhlcmUKKzs7ICh0aGUgYGNsLXR5cGVwYCBjYWxsIGluIGBjbC10eXBlcy1vZicg d2lsbCBhbHdheXMgc2lnbmFsIGFuIGVycm9yCis7OyBiZWNhdXNlIHRoZSB0eXBlIGNhbid0 IGJlIHVzZWQgd2l0aG91dCBhcmd1bWVudCkuCis7OworOzsgT25lIHdheSB0byBzb2x2ZSB0 aGlzIChhbmQgZXZlbiBvcGVuIHVwIHRoZSBwb3NzaWJpbGl0eSB0bworOzsgZGlzcGF0Y2gg b24gY29tcGxleCB0eXBlcyBsaWtlIGAobGlzdC1vZiBGT08pJykgaXMgdG8gcG9wdWxhdGUK Kzs7IGBjbC0tdHlwZS1kaXNwYXRjaC1saXN0JyAoaS5lLiB0aGUgbGlzdCBvZiB0eXBlcyB0 aGF0IG5lZWQgdG8KKzs7IGJlIGNoZWNrZWQgZHVyaW5nIGRpc3BhdGNoKSBmcm9tIGBjbC1n ZW5lcmljLWdlbmVyYWxpemVycycgc28gaXQKKzs7IGluY2x1ZGVzIG9ubHkgdGhvc2UgdHlw ZXMgZm9yIHdoaWNoIHRoZXJlJ3MgYSBtZXRob2QsIHJhdGhlciB0aGFuCis7OyBhbGwgZGVm aW5lZCB0eXBlcy4KKwogKGNsLWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS10eXBl LWdlbmVyYWxpemVyCiAgIDIwIDs7ICJ0eXBlb2YiIDwgImNsLXR5cGVzLW9mIiA8ICJoZWFk IiBwcmlvcml0eQotICAobGFtYmRhIChvYmogJnJlc3QgXykgYChjbC10eXBlcy1vZiAsb2Jq KSkKKyAgKGxhbWJkYSAob2JqICZyZXN0IF8pIGAobGV0ICgoY2wtLXR5cGUtbGlzdCBjbC0t dHlwZS1kaXNwYXRjaC1saXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC10 eXBlcy1vZiAsb2JqKSkpCiAgIChsYW1iZGEgKHRhZyAmcmVzdCBfKSAoaWYgKGNvbnNwIHRh ZykgdGFnKSkpCiAKIChjbC1kZWZtZXRob2QgY2wtZ2VuZXJpYy1nZW5lcmFsaXplcnMgOmV4 dHJhICJjbC10eXBlcy1vZiIgKHR5cGUpCiAgICJTdXBwb3J0IGZvciBkaXNwYXRjaCBvbiBj bC10eXBlcy4iCiAgIChpZiAoY2wtLXR5cGUtcCB0eXBlKQotICAgICAgKGxpc3QgY2wtLXR5 cGUtZ2VuZXJhbGl6ZXIpCisgICAgICAocHJvZ24KKyAgICAgICAgOzsgQWRkIGEgbmV3IGRp c3BhdGNoIHR5cGUgdG8gdGhlIGRpc3BhdGNoIGxpc3QsIHRoZW4KKyAgICAgICAgOzsgc3lu Y2hyb25pemUgd2l0aCBgY2wtLXR5cGUtbGlzdCcgc28gdGhhdCBib3RoIGxpc3RzIGZvbGxv dworICAgICAgICA7OyB0aGUgc2FtZSB0eXBlIHByZWNlZGVuY2Ugb3JkZXIuCisgICAgICAg ICh1bmxlc3MgKG1lbXEgdHlwZSBjbC0tdHlwZS1kaXNwYXRjaC1saXN0KQorICAgICAgICAg IChzZXRxIGNsLS10eXBlLWRpc3BhdGNoLWxpc3QKKyAgICAgICAgICAgICAgICAoc2VxLWlu dGVyc2VjdGlvbiBjbC0tdHlwZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNvbnMgdHlwZSBjbC0tdHlwZS1kaXNwYXRjaC1saXN0KSkpKQorICAgICAgICAo bGlzdCBjbC0tdHlwZS1nZW5lcmFsaXplcikpCiAgICAgKGNsLWNhbGwtbmV4dC1tZXRob2Qp KSkKIAogKHByb3ZpZGUgJ2NsLXR5cGVzKQo= --------------48ZbRJFPjvRRKdECZ0x7zdq9--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 1 May 2025 15:52:02 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu May 01 11:52:02 2025 Received: from localhost ([127.0.0.1]:52456 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uAWCf-0003XM-1A for submit <at> debbugs.gnu.org; Thu, 01 May 2025 11:52:02 -0400 Received: from smtp-65.smtpout.orange.fr ([80.12.242.65]:36357 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uAWCZ-0003X7-Mo for 77725 <at> debbugs.gnu.org; Thu, 01 May 2025 11:51:57 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id AWCTu9isevb1QAWCWupTd7; Thu, 01 May 2025 17:51:53 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746114713; bh=xghBpATSqF8vlbj8FQ8yBJK7yGQKfHDoXo3Zgu7Hr+w=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=RxAVvRzv0q7x5I+VSagM0HxhdKGKB8wgLamRiE/jZR+E+lq0oHBgo7qV7DjutrMmx Px3xkkjH6DOk4APHn4kvZ5JEe9BsFoPZ7aPXe8+MEFpeaP0NQBkG13HUoD39DiCH6u NnacmBNMGbT+UnDZc6Xt3xxB/91P4OMou9eOqfWqXr5mxcq/9uYTyBpHya6Ecf2M/2 NKdc4SU6T4YVQzTEYSuct7bYseh4IvR1/xN2LGwJsAn18DC+owa6KEQyxPqJpzCzu3 1u76DD7jdJNf6ROB6hN4VlyxreaIopzZTfcLgqc2+oQONqfmdRqTz8+LcAg6HU9Lh2 seETVme3/n/3A== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Thu, 01 May 2025 17:51:53 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------WhPtRM3hjLoDVwpgGdvYazQ0" Message-ID: <9d260613-1827-4d14-857c-96e1bb58cc31@HIDDEN> Date: Thu, 1 May 2025 17:51:49 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? From: David Ponce <da_vid@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> Content-Language: fr, en-US In-Reply-To: <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------WhPtRM3hjLoDVwpgGdvYazQ0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025-04-30 11:28, David Ponce wrote: > On 2025-04-29 20:02, Stefan Monnier wrote: >> Further comments: >> >> - For a declaration like >> >> (cl-deftype list-of (elem-type) >> `(and list >> (satisfies ,(lambda (list) >> (cl-every (lambda (elem) (cl-typep elem elem-type)) >> list))))) >> we add the type to `cl--type-list` even though it's unusable there >> (the `cl-typep` call in `cl-types-of` will always signal an error >> because the type can't be used without argument). >> >> - One way to solve the problem with `list-of` (and even open up the >> possibility to dispatch on complex types like `(list-of FOO)`) is to >> populate `cl--type-dispatch-list` (i.e. the list of types that need to >> be checked during dispatch) from `cl-generic-generalizers` so it >> includes only those types for which there's a method, rather than all >> defined types. >> Please find attached a version of cl-types.el with my first try at implementing something related to your idea above to populate a `cl--type-dispatch-list' from `cl-generic-generalizers'. Changes are at the end of the file in the last section "Method dispatching". I hope I started understanding your idea ;-) Thanks! David --------------WhPtRM3hjLoDVwpgGdvYazQ0 Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types.el" Content-Disposition: attachment; filename="cl-types.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBEYXRhIHR5cGVzIGRlZmluZWQg YnkgYGNsLWRlZnR5cGUnIGFyZSBub3cgcmVjb2duaXplZCBhcyBhcmd1bWVudAo7OyB0eXBl cyBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbnMgbWV0aG9kcy4KCjs7IE5lZWRl ZCB1bnRpbCBtZXJnZWQgaW4gZXhpc3RpbmcgbGlicmFyaWVzLgoocmVxdWlyZSAnY2wtbGli KQooZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2NsLW1hY3MpKSAgO0ZvciBjbC0tZmlu ZC1jbGFzcy4KKGRlY2xhcmUtZnVuY3Rpb24gY2wtcmVtcHJvcCAiY2wtZXh0cmEiIChzeW1i b2wgcHJvcG5hbWUpKQooZGVjbGFyZS1mdW5jdGlvbiBjbC0tY2xhc3MtY2hpbGRyZW4gImNs LWV4dHJhIiAoY2xhc3MpKQoKOzsgRXh0ZW5kIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgZGF0 YSB0eXBlcyB3aGljaCBhcmUgYWxzbyB2YWxpZAo7OyBhcmd1bWVudCB0eXBlcyBmb3IgZGlz cGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbiBtZXRob2RzIChzZWUgYWxzbwo7OyA8aHR0cHM6 Ly9kZWJidWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTc3NzI1PikuCjs7Cjs7 IFRoZSBtYWluIGVudHJ5IHBvaW50cyBhcmU6Cjs7Cjs7IC0gYGNsLWRlZnR5cGUnLCB0aGF0 IGRlZmluZXMgbmV3IGRhdGEgdHlwZXMuCjs7Cjs7IC0gYGNsLXR5cGVzLW9mJywgdGhhdCBy ZXR1cm5zIHRoZSB0eXBlcyBhbiBvYmplY3QgYmVsb25ncyB0by4KCihkZWZ2YXIgY2wtLXR5 cGUtbGlzdCBuaWwKICAiTGlzdCBvZiBkZWZpbmVkIHR5cGVzIHRvIGxvb2t1cCBmb3IgbWV0 aG9kIGRpc3BhdGNoaW5nLiIpCgo7OyBGSVhNRTogVGhlIGBjbC1kZWZ0eXBlLWhhbmRsZXIn IHByb3BlcnR5IHNob3VsZCBhcmd1YWJseSBiZSB0dXJuZWQKOzsgaW50byBhIGZpZWxkIG9m IHRoaXMgc3RydWN0IChidXQgaXQgaGFzIHBlcmZvcm1hbmNlIGFuZAo7OyBjb21wYXRpYmls aXR5IGltcGxpY2F0aW9ucywgc28gbGV0J3Mgbm90IG1ha2UgdGhhdCBjaGFuZ2UgZm9yIG5v dykuCihjbC1kZWZzdHJ1Y3QKICAgIChjbC10eXBlLWNsYXNzCiAgICAgKDppbmNsdWRlIGNs LS1jbGFzcykKICAgICAoOm5vaW5saW5lIHQpCiAgICAgKDpjb25zdHJ1Y3RvciBuaWwpCiAg ICAgKDpjb25zdHJ1Y3RvciBjbC0tdHlwZS1jbGFzcy1tYWtlCiAgICAgICAgICAgICAgICAg ICAobmFtZQogICAgICAgICAgICAgICAgICAgIGRvY3N0cmluZwogICAgICAgICAgICAgICAg ICAgIHBhcmVudC10eXBlcwogICAgICAgICAgICAgICAgICAgICZhdXggKHBhcmVudHMKICAg ICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChj bC0tZmluZC1jbGFzcyB0eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZXJyb3IgIlVua25vd24gdHlwZTogJVMiIHR5cGUpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFyZW50LXR5cGVzKSkpKQogICAgICg6Y29waWVyIG5pbCkpCiAgIlR5cGUgZGVz Y3JpcHRvcnMgZm9yIHR5cGVzIGRlZmluZWQgYnkgYGNsLWRlZnR5cGUnLiIpCgooZGVmdW4g Y2wtLXR5cGUtcCAob2JqZWN0KQogICJSZXR1cm4gbm9uLW5pbCBpZiBPQkpFQ1QgaXMgYSBj bC10eXBlLgpUaGF0IGlzLCBhIHR5cGUgZGVmaW5lZCBieSBgY2wtZGVmdHlwZScsIG9mIGNs YXNzIGBjbC10eXBlLWNsYXNzJy4iCiAgKGFuZCAoc3ltYm9scCBvYmplY3QpIChjbC10eXBl LWNsYXNzLXAgKGNsLS1maW5kLWNsYXNzIG9iamVjdCkpKSkKCihkZWZ1biBjbC0tdHlwZS1w YXJlbnRzIChuYW1lKQogICJHZXQgcGFyZW50cyBvZiB0eXBlIHdpdGggTkFNRS4KTkFNRSBp cyBhIHN5bWJvbCByZXByZXNlbnRpbmcgYSB0eXBlLgpSZXR1cm4gYSBwb3NzaWJseSBlbXB0 eSBsaXN0IG9mIHR5cGVzLiIKICAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNs YXNzIG5hbWUpKSkKCjs7IEtlZXAgaXQgZm9yIG5vdywgZm9yIHRlc3RpbmcuCihkZWZ1biBj bC0tdHlwZS11bmRlZmluZSAobmFtZSkKICAiUmVtb3ZlIHRoZSBkZWZpbml0aW9uIG9mIGNs LXR5cGUgd2l0aCBOQU1FLgpOQU1FIGlzIGFuIHVucXVvdGVkIHN5bWJvbCByZXByZXNlbnRp bmcgYSBjbC10eXBlLgpTaWduYWwgYW4gZXJyb3IgaWYgTkFNRSBoYXMgc3VidHlwZXMuIgog IChjbC1jaGVjay10eXBlIG5hbWUgKHNhdGlzZmllcyBjbC0tdHlwZS1wKSkKICAod2hlbi1s ZXQqICgoY2hpbGRyZW4gKGFuZCAoY2wtLXR5cGUtcCBuYW1lKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjbC0tY2xhc3MtY2hpbGRyZW4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNsLS1maW5kLWNsYXNzIG5hbWUpKSkpKQogICAgKGVycm9yICJUeXBlIGhh cyBjaGlsZHJlbjogJVMiIGNoaWxkcmVuKSkKICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tdHlw ZS1mbGFnKQogIChjbC1yZW1wcm9wIG5hbWUgJ2NsLS1jbGFzcykKICAoY2wtcmVtcHJvcCBu YW1lICdjbC1kZWZ0eXBlLWhhbmRsZXIpCiAgKHNldHEgY2wtLXR5cGUtbGlzdCAoZGVscSBu YW1lIGNsLS10eXBlLWxpc3QpKSkKCihkZWZ1biBjbC0tdHlwZS1kZWZ0eXBlIChuYW1lIHBh cmVudHMgJm9wdGlvbmFsIGRvY3N0cmluZykKICA7OyBGSVhNRTogU2hvdWxkIHdlIGFsc28g cmVjZWl2ZSB0aGUgYXJnbGlzdD8KICAiUmVnaXN0ZXIgY2wtdHlwZSB3aXRoIE5BTUUgZm9y IG1ldGhvZCBkaXNwYXRjaGluZy4KUEFSRU5UUyBpcyBhIGxpc3Qgb2YgdHlwZXMgTkFNRSBp cyBhIHN1YnR5cGUgb2YsIG9yIG5pbC4KRE9DU1RSSU5HIGlzIGFuIG9wdGlvbmFsIGRvY3Vt ZW50YXRpb24gc3RyaW5nLiIKICAoY29uZGl0aW9uLWNhc2UgZXJyCiAgICAgIChsZXQqICgo Y2xhc3MgKGNsLS1maW5kLWNsYXNzIG5hbWUpKQogICAgICAgICAgICAgKHJlY29yZGVkICht ZW1xIG5hbWUgY2wtLXR5cGUtbGlzdCkpKQogICAgICAgIChpZiAobnVsbCBjbGFzcykKICAg ICAgICAgICAgKG9yIChudWxsIHJlY29yZGVkKQogICAgICAgICAgICAgICAgKGVycm9yICJU eXBlIHJlZ2lzdGVyZWQsIGJ1dCBkb2Vzbid0IGV4aXN0IikpCiAgICAgICAgICAob3IgcmVj b3JkZWQgKGVycm9yICJUeXBlIGV4aXN0cywgYnV0IG5vdCByZWdpc3RlcmVkIikpCiAgICAg ICAgICAob3IgKGNsLXR5cGUtY2xhc3MtcCBjbGFzcykKICAgICAgICAgICAgICA7OyBGSVhN RTogV2UgaGF2ZSBzb21lIHVzZXMgYGNsLWRlZnR5cGUnIGluIEVtYWNzIHRoYXQKICAgICAg ICAgICAgICA7OyAiY29tcGxlbWVudCIgYW5vdGhlciBkZWNsYXJhdGlvbiBvZiB0aGUgc2Ft ZSB0eXBlLAogICAgICAgICAgICAgIDs7IHNvIG1heWJlIHdlIHNob3VsZCB0dXJuIHRoaXMg aW50byBhIHdhcm5pbmcgKGFuZAogICAgICAgICAgICAgIDs7IG5vdCBvdmVyd3JpdGUgdGhl IGBjbC0tZmluZC1jbGFzcycgaW4gdGhhdCBjYXNlKT8KICAgICAgICAgICAgICAoZXJyb3Ig IlR5cGUgaW4gYW5vdGhlciBjbGFzczogJVMiICh0eXBlLW9mIGNsYXNzKSkpKQogICAgICAg IDs7IFNldHVwIGEgdHlwZSBkZXNjcmlwdG9yIGZvciBOQU1FLgogICAgICAgIChzZXRmIChj bC0tZmluZC1jbGFzcyBuYW1lKQogICAgICAgICAgICAgIChjbC0tdHlwZS1jbGFzcy1tYWtl IG5hbWUgZG9jc3RyaW5nIHBhcmVudHMpKQogICAgICAgIDs7IFJlc2V0IE5BTUUgYXMgYSBu ZXdseSBkZWZpbmVkIHR5cGUuCiAgICAgICAgKGNsLXJlbXByb3AgbmFtZSAnY2wtLXR5cGUt ZmxhZykKICAgICAgICA7OyBSZWNvcmQgbmV3IHR5cGUuCiAgICAgICAgKG9yIHJlY29yZGVk IChwdXNoIG5hbWUgY2wtLXR5cGUtbGlzdCkpKQogICAgKGVycm9yCiAgICAgKGVycm9yIChm b3JtYXQgIkRlZmluZSAlUyBmYWlsZWQ6ICVzIgogICAgICAgICAgICAgICAgICAgIG5hbWUg KGVycm9yLW1lc3NhZ2Utc3RyaW5nIGVycikpKSkpKQoKOzs7IyMjYXV0b2xvYWQKKGRlZm1h Y3JvIGNsLWRlZnR5cGUyIChuYW1lIGFyZ2xpc3QgJnJlc3QgYm9keSkKICAiRGVmaW5lIE5B TUUgYXMgYSBuZXcgZGF0YSB0eXBlLgpUaGUgdHlwZSBOQU1FIGNhbiB0aGVuIGJlIHVzZWQg aW4gYGNsLXR5cGVjYXNlJywgYGNsLWNoZWNrLXR5cGUnLApldGMuLCBhbmQgYXMgYXJndW1l bnQgdHlwZSBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbiBtZXRob2RzLgoKQVJH TElTVCBpcyBhIENvbW1vbiBMaXNwIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIHNvcnQgYWNjZXB0 ZWQgYnkKYGNsLWRlZm1hY3JvJy4gIEJPRFkgZm9ybXMgYXJlIGV2YWx1YXRlZCBhbmQgc2hv dWxkIHJldHVybiBhIHR5cGUKc3BlY2lmaWVyIHRoYXQgaXMgZXF1aXZhbGVudCB0byB0aGUg dHlwZSAoc2VlIHRoZSBJbmZvIG5vZGUgYChjbCkgVHlwZQpQcmVkaWNhdGVzJyBpbiB0aGUg R05VIEVtYWNzIENvbW1vbiBMaXNwIEVtdWxhdGlvbiBtYW51YWwpLgoKSWYgdGhlcmUgaXMg YSBgZGVjbGFyZScgZm9ybSBpbiBCT0RZLCB0aGUgc3BlYyAocGFyZW50cyBQQVJFTlRTKSBp cwpyZWNvZ25pemVkIHRvIHNwZWNpZnkgYSBsaXN0IG9mIHR5cGVzIE5BTUUgaXMgYSBzdWJ0 eXBlIG9mLiAgRm9yCmluc3RhbmNlOgoKICAoY2wtZGVmdHlwZTIgdW5zaWduZWQtYnl0ZSAo Jm9wdGlvbmFsIGJpdHMpCiAgICBcIlVuc2lnbmVkIGludGVnZXIuXCIKICAgIChsaXN0IFxc PSdpbnRlZ2VyIDAgKGlmIChlcSBiaXRzIFxcPScqKSBiaXRzICgxLSAoYXNoIDEgYml0cykp KSkpCgogIChjbC1kZWZ0eXBlMiB1bnNpZ25lZC04Yml0cyAoKQogICAgXCJVbnNpZ25lZCA4 LWJpdHMgaW50ZWdlci5cIgogICAgKGRlY2xhcmUgKHBhcmVudHMgdW5zaWduZWQtYnl0ZSkp CiAgICBcXD0nKHVuc2lnbmVkLWJ5dGUgOCkpCgpUaGUgbGlzdCBvZiBQQVJFTlRTIHR5cGVz IGRldGVybWluZXMgdGhlIG9yZGVyIG9mIG1ldGhvZHMgaW52b2NhdGlvbiwKYW5kIG1pc3Np bmcgUEFSRU5UUyBtYXkgY2F1c2UgaW5jb3JyZWN0IG9yZGVyaW5nIG9mIG1ldGhvZHMsIHdo aWxlCmV4dHJhbmVvdXMgUEFSRU5UUyBtYXkgY2F1c2UgdXNlIG9mIGV4dHJhbmVvdXMgbWV0 aG9kcy4KCklmIFBBUkVOVFMgaXMgbm9uLW5pbCwgQVJHTElTVCBtdXN0IGJlIG5pbC4iCiAg KGRlY2xhcmUgKGRlYnVnIGNsLWRlZm1hY3JvKSAoZG9jLXN0cmluZyAzKSAoaW5kZW50IDIp KQogIChwY2FzZS1sZXQqCiAgICAgICgoYCgsZGVjbHMgLiAsZm9ybXMpIChtYWNyb2V4cC1w YXJzZS1ib2R5IGJvZHkpKQogICAgICAgKGRvY3N0cmluZyAoaWYgKHN0cmluZ3AgKGNhciBk ZWNscykpCiAgICAgICAgICAgICAgICAgICAgICAoY2FyIGRlY2xzKQogICAgICAgICAgICAg ICAgICAgICAgKGNhZHIgKGFzc3EgOmRvY3VtZW50YXRpb24gZGVjbHMpKSkpCiAgICAgICAo ZGVjbGFyZXMgKGFzc3EgJ2RlY2xhcmUgZGVjbHMpKQogICAgICAgKHBhcmVudC1kZWNsIChh c3NxICdwYXJlbnRzIChjZHIgZGVjbGFyZXMpKSkKICAgICAgIChwYXJlbnRzIChjZHIgcGFy ZW50LWRlY2wpKSkKICAgICh3aGVuIHBhcmVudC1kZWNsCiAgICAgIDs7ICJDb25zdW1lIiB0 aGUgYHBhcmVudHMnIGRlY2xhcmF0aW9uLgogICAgICAoY2wtY2FsbGYgKGxhbWJkYSAoeCkg KGRlbHEgcGFyZW50LWRlY2wgeCkpIChjZHIgZGVjbGFyZXMpKQogICAgICAod2hlbiAoZXF1 YWwgZGVjbGFyZXMgJyhkZWNsYXJlKSkKICAgICAgICAoY2wtY2FsbGYgKGxhbWJkYSAoeCkg KGRlbHEgZGVjbGFyZXMgeCkpIGRlY2xzKSkpCiAgICAoaWYgKG1lbXEgbmFtZSBwYXJlbnRz KQogICAgICAgIChlcnJvciAiVHlwZSBpbiBwYXJlbnRzOiAlUyIgcGFyZW50cykpCiAgICAo YW5kIHBhcmVudHMgYXJnbGlzdAogICAgICAgICAoZXJyb3IgIlBhcmVudHMgc3BlY2lmaWVk LCBidXQgYXJnbGlzdCBub3QgZW1wdHkiKSkKICAgIGAoZXZhbC1hbmQtY29tcGlsZSA7O2Ns LWV2YWwtd2hlbiAoY29tcGlsZSBsb2FkIGV2YWwpCiAgICAgICA7OyBGSVhNRTogV2hlcmUg c2hvdWxkIGBjbC0tdHlwZS1kZWZ0eXBlJyBnbz8gIEN1cnJlbnRseSwgY29kZQogICAgICAg OzsgdXNpbmcgYGNsLWRlZnR5cGUnIGNhbiB1c2UgKGV2YWwtd2hlbi1jb21waWxlIChyZXF1 aXJlCiAgICAgICA7OyAnY2wtbGliKSksIHNvIGBjbC0tdHlwZS1kZWZ0eXBlJyBuZWVkcyB0 byBnbyBlaXRoZXIgdG8KICAgICAgIDs7IGBjbC1wcmVsb2FkZWQuZWwnIG9yIGl0IHNob3Vs ZCBiZSBhdXRvbG9hZGVkIGV2ZW4gd2hlbgogICAgICAgOzsgYGNsLWxpYicgaXMgbm90IGxv YWRlZC4KICAgICAgIChjbC0tdHlwZS1kZWZ0eXBlICcsbmFtZSAnLHBhcmVudHMgLGRvY3N0 cmluZykKICAgICAgIChkZWZpbmUtc3ltYm9sLXByb3AgJyxuYW1lICdjbC1kZWZ0eXBlLWhh bmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLWZ1bmN0aW9uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLEBkZWNscwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAsQGZvcm1zKSkpKSkpCgo7OyBFbnN1cmUgZWFjaCB0eXBlIHNhdGlz ZmllcyBgZXFsJy4KKGRlZnZhciBjbC0tdHlwZS11bmlxdWUgKG1ha2UtaGFzaC10YWJsZSA6 dGVzdCAnZXF1YWwpCiAgIlJlY29yZCBhbiB1bmlxdWUgdmFsdWUgb2YgZWFjaCB0eXBlLiIp CgooZGVmdW4gY2wtLXR5cGUtZXJyb3IgKHR5cGUgZXJyb3IpCiAgIk1hcmsgVFlQRSBhcyBp bi1lcnJvciwgYW5kIHJlcG9ydCB0aGUgcHJvZHVjZWQgRVJST1IgdmFsdWUuIgogIChwdXQg dHlwZSAnY2wtLXR5cGUtZXJyb3IgJ2Vycm9yKSA7OyBNYXJrIFRZUEUgYXMgaW4tZXJyb3Iu CiAgOzsgVGVtcG9yYXJpbHkgcmFpc2UgdGhlIHJlY3Vyc2lvbiBsaW1pdCB0byBhdm9pZCBh bm90aGVyIHJlY3Vyc2lvbgogIDs7IGVycm9yIHdoaWxlIHJlcG9ydGluZyBFUlJPUi4KICAo bGV0ICgobWF4LWxpc3AtZXZhbC1kZXB0aCAoKyA4MDAgbWF4LWxpc3AtZXZhbC1kZXB0aCkp KQogICAgKHdhcm4gICJjbC10eXBlcy1vZiAlcywgJXMiIHR5cGUgKGVycm9yLW1lc3NhZ2Ut c3RyaW5nIGVycm9yKSkpCiAgbmlsKQoKOzsgRklYTUU6IGBjbC10eXBlcy1vZicgQ1BVIGNv c3QgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIgb2YgdHlwZXMKOzsgZGVmaW5lZCB3 aXRoIGBjbC1kZWZ0eXBlJywgc28gdGhlIG1vcmUgcG9wdWxhciBpdCBnZXRzLCB0aGUgc2xv d2VyCjs7IGl0IGJlY29tZXMuICBBbmQgb2YgY291cnNlLCB0aGUgY29zdCBvZiBlYWNoIHR5 cGUgY2hlY2sgaXMKOzsgdW5ib3VuZGVkLCBzbyBhIHNpbmdsZSAiZXhwZW5zaXZlIiB0eXBl IGNhbiBzbG93IGV2ZXJ5dGhpbmcgZG93bgo7OyBmdXJ0aGVyLgo7Owo7OyBUaGUgdXN1YWwg ZGlzcGF0Y2ggaXMKOzsKOzsgICAobGFtYmRhIChhcmcgJnJlc3QgYXJncykKOzsgICAgIChs ZXQgKChmIChnZXRoYXNoIChjbC10eXBlb2YgYXJnKSBwcmVjb21wdXRlZC1tZXRob2RzLXRh YmxlKSkpCjs7ICAgICAgIChpZiBmCjs7ICAgICAgICAgICAoYXBwbHkgZiBhcmcgYXJncykK OzsgICAgICAgICA7OyBTbG93IGNhc2Ugd2hlbiBlbmNvdW50ZXJpbmcgYSBuZXcgdHlwZQo7 OyAgICAgICAgIC4uLikpKQo7Owo7OyB3aGVyZSBvZnRlbiB0aGUgbW9zdCBleHBlbnNpdmUg cGFydCBpcyBgJnJlc3QnICh3aGljaCBoYXMgdG8KOzsgYWxsb2NhdGUgYSBsaXN0IGZvciB0 aG9zZSByZW1haW5pbmcgYXJndW1lbnRzKSwKOzsKOzsgU28gd2UncmUgdGFsa2luZyBhYm91 dCByZXBsYWNpbmcKOzsKOzsgICAmcmVzdCArIGNsLXR5cGUtb2YgKyBnZXRoYXNoICsgaWYg KyBhcHBseQo7Owo7OyB3aXRoIGEgZnVuY3Rpb24gdGhhdCBsb29wcyBvdmVyIE4gdHlwZXMs IGNhbGxpbmcgYGNsLXR5cGVwJyBvbiBlYWNoCjs7IG9uZSBvZiB0aGVtIChgY2wtdHlwZXAn IGl0c2VsZiBiZWluZyBhIHJlY3Vyc2l2ZSBmdW5jdGlvbiB0aGF0Cjs7IGJhc2ljYWxseSBp bnRlcnByZXRzIHRoZSB0eXBlIGxhbmd1YWdlKS4gIFRoaXMgaXMgZ29pbmcgdG8gc2xvdwo7 OyBkb3duIGRpc3BhdGNoIHZlcnkgc2lnbmlmaWNhbnRseSBmb3IgdGhvc2UgZ2VuZXJpYyBm dW5jdGlvbnMgdGhhdAo7OyBoYXZlIGEgbWV0aG9kIHRoYXQgZGlzcGF0Y2hlcyBvbiBhIHVz ZXIgZGVmaW5lZCB0eXBlLCBjb21wYXJlZCB0bwo7OyB0aG9zZSB0aGF0IGRvbid0Lgo7Owo7 OyBBIHBvc3NpYmxlIGZ1cnRoZXIgaW1wcm92ZW1lbnQ6Cjs7Cjs7IC0gYmFzZWQgb24gdGhl IFBBUkVOVFMgZGVjbGFyYXRpb24sIGNyZWF0ZSBhIG1hcCBmcm9tIGJ1aWx0aW4tdHlwZQo7 OyAgIHRvIHRoZSBzZXQgb2YgY2wtdHlwZXMgdGhhdCBoYXZlIHRoYXQgYnVpbHRpbi10eXBl IGFtb25nIHRoZWlyCjs7ICAgcGFyZW50cy4gIFRoYXQgcHJlc3VtZXMgc29tZSBQQVJFTlRT IGluY2x1ZGUgc29tZSBidWlsdGluLXR5cGVzLAo7OyAgIG9idmlvdXNseSBvdGhlcndpc2Ug dGhlIG1hcCB3aWxsIGJlIHRyaXZpYWwgd2l0aCBhbGwgY2wtdHlwZXMKOzsgICBhc3NvY2lh dGVkIHdpdGggdGhlIGB0JyAiZHVtbXkgcGFyZW50Ii4gIFsgV2UgY291bGQgZXZlbiBnbyBj cmF6eQo7OyAgIGFuZCB0cnkgYW5kIGd1ZXNzIFBBUkVOVFMgd2hlbiBub3QgcHJvdmlkZWQs IGJ5IGFuYWx5emluZyB0aGUKOzsgICB0eXBlJ3MgZGVmaW5pdGlvbi4gXQo7Owo7OyAtIGlu IGBjbC10eXBlcy1vZicgc3RhcnQgYnkgY2FsbGluZyBgY2wtdHlwZS1vZicsIHRoZW4gdXNl IHRoZSBtYXAKOzsgICB0byBmaW5kIHdoaWNoIGNsLXR5cGVzIG1heSBuZWVkIHRvIGJlIGNo ZWNrZWQuCjs7CihkZWZ1biBjbC10eXBlcy1vZiAob2JqZWN0KQoiUmV0dXJuIHRoZSB0eXBl cyBPQkpFQ1QgYmVsb25ncyB0by4KUmV0dXJuIGFuIHVuaXF1ZSBsaXN0IG9mIHR5cGVzIE9C SkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCm1vc3Qgc3BlY2lmaWMgdHlwZSB0 byB0aGUgbW9zdCBnZW5lcmFsLiIKKGxldCogKChyb290LXR5cGUgKGNsLXR5cGUtb2Ygb2Jq ZWN0KSkKICAgICAgIChmb3VuZCAobGlzdCByb290LXR5cGUpKSkKICA7OyBCdWlsZCBhIGxp c3Qgb2YgYWxsIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgogIChkb2xpc3QgKHR5cGUgY2wt LXR5cGUtbGlzdCkKICAgIChsZXQgKChmbGFnIChnZXQgdHlwZSAnY2wtLXR5cGUtZmxhZykp KQogICAgICAoYW5kCiAgICAgICA7OyBTa2lwIHR5cGUsIGlmIGl0IHByZXZpb3VzbHkgcHJv ZHVjZWQgYW4gZXJyb3IuCiAgICAgICAobnVsbCAoZ2V0IHR5cGUgJ2NsLS10eXBlLWVycm9y KSkKICAgICAgIDs7IFNraXAgdHlwZSB3aGljaCB3ZSBhcmUgc3VyZSB3aWxsIG5vdCBtYXRj aC4KICAgICAgIChvciAobnVsbCBmbGFnKSAoZXEgZmxhZyByb290LXR5cGUpKQogICAgICAg OzsgSWYgT0JKRUNUIGlzIG9mIHR5cGUsIGFkZCB0eXBlIHRvIHRoZSBtYXRjaGluZyBsaXN0 LgogICAgICAgKGNvbmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlCiAgICAgICAgICAgKGNs LXR5cGVwIG9iamVjdCB0eXBlKQogICAgICAgICAoZXJyb3IgKGNsLS10eXBlLWVycm9yIHR5 cGUgZSkpKQogICAgICAgKG9yIGZsYWcgKHB1dCB0eXBlICdjbC0tdHlwZS1mbGFnIHJvb3Qt dHlwZSkpCiAgICAgICAocHVzaCB0eXBlIGZvdW5kKSkpKQogIDs7IFJldHVybiBhbiB1bmlx dWUgdmFsdWUgb2YgdGhlIGxpc3Qgb2YgdHlwZXMgT0JKRUNUIGJlbG9uZ3MgdG8sCiAgOzsg d2hpY2ggaXMgYWxzbyB0aGUgbGlzdCBvZiBzcGVjaWZpZXJzIGZvciBPQkpFQ1QuCiAgKHdp dGgtbWVtb2l6YXRpb24gKGdldGhhc2ggZm91bmQgY2wtLXR5cGUtdW5pcXVlKQogICAgOzsg Q29tcHV0ZSBhbiBvcmRlcmVkIGxpc3Qgb2YgdHlwZXMgZnJvbSB0aGUgREFHLgogICAgKG1l cmdlLW9yZGVyZWQtbGlzdHMgKG1hcGNhciAjJ2NsLS10eXBlLXBhcmVudHMgZm91bmQpKSkp KQoKOzs7IE1ldGhvZCBkaXNwYXRjaGluZwo7OwooZGVmdmFyIGNsLS10eXBlLWRpc3BhdGNo LWxpc3QgbmlsKQoKKGNsLWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS10eXBlLWdl bmVyYWxpemVyCiAgMjAgOzsgInR5cGVvZiIgPCAiY2wtdHlwZXMtb2YiIDwgImhlYWQiIHBy aW9yaXR5CiAgKGxhbWJkYSAob2JqICZyZXN0IF8pIGAobGV0ICgoY2wtLXR5cGUtbGlzdCBj bC0tdHlwZS1kaXNwYXRjaC1saXN0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNs LXR5cGVzLW9mICxvYmopKSkKICAobGFtYmRhICh0YWcgJnJlc3QgXykgKGlmIChjb25zcCB0 YWcpIHRhZykpKQoKKGNsLWRlZm1ldGhvZCBjbC1nZW5lcmljLWdlbmVyYWxpemVycyA6ZXh0 cmEgImNsLXR5cGVzLW9mIiAodHlwZSkKICAiU3VwcG9ydCBmb3IgZGlzcGF0Y2ggb24gY2wt dHlwZXMuIgogIChkZWJ1ZykKICAoaWYgKGNsLS10eXBlLXAgdHlwZSkKICAgICAgKHByb2du CiAgICAgICAgOzsgQWRkIHR5cGUgdG8gdGhlIGRpc3BhdGNoIGxpc3Qga2VlcGluZyBvcmRl ciBvZiBgY2wtLXR5cGUtbGlzdCcuCiAgICAgICAgKHVubGVzcyAobWVtcSB0eXBlIGNsLS10 eXBlLWRpc3BhdGNoLWxpc3QpCiAgICAgICAgICAoc2V0cSBjbC0tdHlwZS1kaXNwYXRjaC1s aXN0CiAgICAgICAgICAgICAgICAoc2VxLWludGVyc2VjdGlvbiBjbC0tdHlwZS1saXN0CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyB0eXBlIGNsLS10eXBlLWRp c3BhdGNoLWxpc3QpKSkpCiAgICAgICAgKGxpc3QgY2wtLXR5cGUtZ2VuZXJhbGl6ZXIpKQog ICAgKGNsLWNhbGwtbmV4dC1tZXRob2QpKSkKCihwcm92aWRlICdjbC10eXBlcykKCjs7OyBj bC10eXBlcy5lbCBlbmRzIGhlcmUK --------------WhPtRM3hjLoDVwpgGdvYazQ0--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 30 Apr 2025 09:29:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 30 05:29:10 2025 Received: from localhost ([127.0.0.1]:39762 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uA3kb-0006t0-Hd for submit <at> debbugs.gnu.org; Wed, 30 Apr 2025 05:29:10 -0400 Received: from smtp-27.smtpout.orange.fr ([80.12.242.27]:55021 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1uA3kW-0006sg-7B for 77725 <at> debbugs.gnu.org; Wed, 30 Apr 2025 05:29:07 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id A3kQu01P6GqxdA3kTukO2w; Wed, 30 Apr 2025 11:29:02 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1746005342; bh=eBmKhc3Mm9iAbJ1k15Cyzg5PkN7coBpTVEZCitnlsy8=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=iWXBEiHlybpWjOhdTJWcz0Sik9vmLprDxYgkMhcU5o3/+wo1bGK+vXsfrgsqO22ri m2j0K+5KsXo1VOqkUTA9zKmRJfgb3zjOoXTTbuu8JBPIbNVBF9vZql8uol1ifsOtef kXvtuD2VwRLUErAS2zX5/+ur4PpVE2Mqg4wURyS9P8ITnPsUUPPfWiIHbHcNGhg0/7 02Q6NYiQl46fQiCEd4+cn/VJLrB6rota9/aE8nSSeTFdArVx105tYKsuySPMI5H7wn lYCI6dg7yRkfnQRd24Tmla8Z9WAA3ivwO2nIclrvjAyOkJwQvYi8MxYtZQH9ENJ7YL Mv7GkFzfvFOKQ== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 30 Apr 2025 11:29:02 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------crGYJwaCQL6VSbvPGayWUdQx" Message-ID: <5fc65aa5-101e-4ae6-88eb-b6756e31b935@HIDDEN> Date: Wed, 30 Apr 2025 11:28:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN> <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvcycuzyet.fsf-monnier+emacs@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------crGYJwaCQL6VSbvPGayWUdQx Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025-04-29 20:02, Stefan Monnier wrote: > Further comments: > > - For a declaration like > > (cl-deftype list-of (elem-type) > `(and list > (satisfies ,(lambda (list) > (cl-every (lambda (elem) (cl-typep elem elem-type)) > list))))) > > we add the type to `cl--type-list` even though it's unusable there > (the `cl-typep` call in `cl-types-of` will always signal an error > because the type can't be used without argument). > > - Regarding incorporation into CL-Lib: apparently we don't need to > `cl-deftype` in preloaded files, so `cl--type-deftype` > does not have to be in `cl-preloaded`. > But if `cl-deftype` expands to a call to it, then it needs to be > (auto)loaded even when CL-Lib is not loaded, which suggests putting it > into `cl-lib.el`. > Another option would be to make `cl-deftype` expand to code which does > not immediately call `cl--type-deftype`. One way to do that would be to > wrap the call into a `(with-eval-after-load 'cl-lib ...)` or > something similar. > > - One way to solve the problem with `list-of` (and even open up the > possibility to dispatch on complex types like `(list-of FOO)`) is to > populate `cl--type-dispatch-list` (i.e. the list of types that need to > be checked during dispatch) from `cl-generic-generalizers` so it > includes only those types for which there's a method, rather than all > defined types. > > - The dispatch of types defined by `cl-deftype` is inherently unreliable > because the priority to use is not always the same. For a type > defined as `(or integer symbol)` the priority should be *lower* than > the priority of the "typeof" generalizer, whereas for a type defined > as `(list-of (eql 'a))` the priority should be higher than that of the > "head" generalizer. > I don't think we can solve this problem, but it should be clearly > documented somewhere as a limitation. I'm afraid this is all a bit beyond my grasp :-( I'll defer to your expert opinion. > > See below my current local changes (not really related to the comments > above) as a diff w.r.t. the `scratch/cl-types` branch. Thanks! Attached you will find another version of cl-types.el, and cl-types-test.el updated according to last changes. I've included your edits in cl-types.el and improved `cl-types-of', exploring the idea of mapping a set of cl-types to a built-in type. I propose a simple solution derived from this idea, based on a "type flag" (a symbol property for now) whose value lets us know whether the type is worth checking, i.e. not in error, or match the built-in type of the checked object. Maybe, this "type property" could also become a slot in the `cl-type-class' structure? I also removed the test `(cl-type-class-p (cl--find-class type))' which is always true, because in `cl--type-deftype' we only push such types in `cl--type-list', and this list is only updated here and in `cl--type-undefine' to remove a type. David --------------crGYJwaCQL6VSbvPGayWUdQx Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types-tests.el" Content-Disposition: attachment; filename="cl-types-tests.el" Content-Transfer-Encoding: base64 Ozs7IFRlc3QgYGNsLXR5cGVkZWYnIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQo7Owoo cmVxdWlyZSAnZXJ0KQoocmVxdWlyZSAnY2wtdHlwZXMpCgooY2wtZGVmdHlwZTIgbXVsdGlw bGVzLW9mICgmb3B0aW9uYWwgbSkKICAobGV0ICgobXVsdGlwbGVwIChpZiAoZXEgbSAnKikK ICAgICAgICAgICAgICAgICAgICAgICAjJ2lnbm9yZQoJCSAgICAgKGxhbWJkYSAobikgKD0g MCAoJSBuIG0pKSkpKSkKICAgIGAoYW5kIGludGVnZXIgKHNhdGlzZmllcyAsbXVsdGlwbGVw KSkpKQogICAgIAooY2wtZGVmdHlwZTIgbXVsdGlwbGVzLW9mLTIgKCkKICAnKG11bHRpcGxl cy1vZiAyKSkKICAgICAKKGNsLWRlZnR5cGUyIG11bHRpcGxlcy1vZi0zICgpCiAgJyhtdWx0 aXBsZXMtb2YgMykpCiAgICAgCihjbC1kZWZ0eXBlMiBtdWx0aXBsZXMtb2YtNCAoKQogIChk ZWNsYXJlIChwYXJlbnRzIG11bHRpcGxlcy1vZi0yKSkKICAnKGFuZCBtdWx0aXBsZXMtb2Yt MiAobXVsdGlwbGVzLW9mIDQpKSkKCihjbC1kZWZ0eXBlMiB1bnNpZ25lZC1ieXRlICgmb3B0 aW9uYWwgYml0cykKICAiVW5zaWduZWQgaW50ZWdlci4iCiAgYChpbnRlZ2VyIDAgLChpZiAo ZXEgYml0cyAnKikgYml0cyAoMS0gKGFzaCAxIGJpdHMpKSkpKQogICAgIAooY2wtZGVmdHlw ZTIgdW5zaWduZWQtMTZiaXRzICgpCiAgIlVuc2lnbmVkIDE2LWJpdHMgaW50ZWdlci4iCiAg KGRlY2xhcmUgKHBhcmVudHMgdW5zaWduZWQtYnl0ZSkpCiAgJyh1bnNpZ25lZC1ieXRlIDE2 KSkKICAgICAKKGNsLWRlZnR5cGUyIHVuc2lnbmVkLThiaXRzICgpCiAgIlVuc2lnbmVkIDgt Yml0cyBpbnRlZ2VyLiIKICAoZGVjbGFyZSAocGFyZW50cyB1bnNpZ25lZC0xNmJpdHMpKQog ICcodW5zaWduZWQtYnl0ZSA4KSkKICAgICAKKGNsLWRlZm1ldGhvZCBteS1mb28gKChfbiB1 bnNpZ25lZC1ieXRlKSkKICAoZm9ybWF0ICJ1bnNpZ25lZCIpKQogICAgIAooY2wtZGVmbWV0 aG9kIG15LWZvbyAoKF9uIHVuc2lnbmVkLTE2Yml0cykpCiAgKGZvcm1hdCAidW5zaWduZWQg MTZiaXRzIC0gYWxzbyAlcyIKICAgICAgICAgIChjbC1jYWxsLW5leHQtbWV0aG9kKSkpCiAg ICAgCihjbC1kZWZtZXRob2QgbXktZm9vICgoX24gdW5zaWduZWQtOGJpdHMpKQogIChmb3Jt YXQgInVuc2lnbmVkIDhiaXRzIC0gYWxzbyAlcyIKICAgICAgICAgIChjbC1jYWxsLW5leHQt bWV0aG9kKSkpCgooZXJ0LWRlZnRlc3QgY2wtdHlwZXMtdGVzdCAoKQogICJUZXN0IHR5cGVz IGRlZmluaXRpb24sIGNsLXR5cGVzLW9mIGFuZCBtZXRob2QgZGlzcGF0Y2hpbmcuIgoKICA7 OyA7OyBJbnZhbGlkIERBRyBlcnJvcgogIDs7IChzaG91bGQtZXJyb3IKICA7OyAgKGV2YWwK ICA7OyAgICcoY2wtZGVmdHlwZTIgdW5zaWduZWQtMTZiaXRzICgpCiAgOzsgICAgICAiVW5z aWduZWQgMTYtYml0cyBpbnRlZ2VyLiIKICA7OyAgICAgIChkZWNsYXJlIChwYXJlbnRzIHVu c2lnbmVkLThiaXRzKSkKICA7OyAgICAgICcodW5zaWduZWQtYnl0ZSAxNikpCiAgOzsgICBs ZXhpY2FsLWJpbmRpbmcKICA7OyAgICkpCgogIDs7IFRlc3QgdGhhdCAoY2wtdHlwZXMtb2Yg NCkgaXMgKG11bHRpcGxlcy1vZi00IG11bHRpcGxlcy1vZi0yIC4uLikKICA7OyBUZXN0IHRo YXQgKGNsLXR5cGVzLW9mIDYpIGlzIChtdWx0aXBsZXMtb2YtMyBtdWx0aXBsZXMtb2YtMiAu Li4pCiAgOzsgVGVzdCB0aGF0IChjbC10eXBlcy1vZiAxMikgaXMgKG11bHRpcGxlcy1vZi00 IG11bHRpcGxlcy1vZi0zIG11bHRpcGxlcy1vZi0yIC4uLikKICAobGV0ICgodHlwZXMgJyht dWx0aXBsZXMtb2YtMiBtdWx0aXBsZXMtb2YtMyBtdWx0aXBsZXMtb2YtNCkpKQogICAgKHNo b3VsZCAoZXF1YWwgJyhtdWx0aXBsZXMtb2YtMikKCQkgICAoc2VxLWludGVyc2VjdGlvbiAo Y2wtdHlwZXMtb2YgMikgdHlwZXMpKSkKCiAgICAoc2hvdWxkIChlcXVhbCAnKG11bHRpcGxl cy1vZi00IG11bHRpcGxlcy1vZi0yKQoJCSAgIChzZXEtaW50ZXJzZWN0aW9uIChjbC10eXBl cy1vZiA0KSB0eXBlcykpKQoKICAgIChzaG91bGQgKGVxdWFsICcobXVsdGlwbGVzLW9mLTIg bXVsdGlwbGVzLW9mLTMpCgkJICAgKHNlcS1pbnRlcnNlY3Rpb24gKGNsLXR5cGVzLW9mIDYp IHR5cGVzKSkpCgogICAgKHNob3VsZCAoZXF1YWwgJyhtdWx0aXBsZXMtb2YtMyBtdWx0aXBs ZXMtb2YtNCBtdWx0aXBsZXMtb2YtMikKCQkgICAoc2VxLWludGVyc2VjdGlvbiAoY2wtdHlw ZXMtb2YgMTIpIHR5cGVzKSkpCiAgICAKICAgIChzaG91bGQgKGVxdWFsICcoKQoJCSAgIChz ZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiA1KSB0eXBlcykpKQogICAgKQogIAogIDs7 OyBNZXRob2QgZGlzcGF0Y2hpbmcuCiAgKHNob3VsZCAoZXF1YWwgInVuc2lnbmVkIDhiaXRz IC0gYWxzbyB1bnNpZ25lZCAxNmJpdHMgLSBhbHNvIHVuc2lnbmVkIgoJCSAobXktZm9vIDEw MCkpKQoKICAoc2hvdWxkIChlcXVhbCAidW5zaWduZWQgMTZiaXRzIC0gYWxzbyB1bnNpZ25l ZCIKCQkgKG15LWZvbyAyNTYpKSkKCiAgKHNob3VsZCAoZXF1YWwgInVuc2lnbmVkIgoJCSAo bXktZm9vIG1vc3QtcG9zaXRpdmUtZml4bnVtKSkpCiAgKQoKKHByb3ZpZGUgJ2NsLXR5cGVz LXRlc3RzKQoKOzs7IGNsLXR5cGVzLXRlc3RzLmVsIGVuZHMgaGVyZQo= --------------crGYJwaCQL6VSbvPGayWUdQx Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types.el" Content-Disposition: attachment; filename="cl-types.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBEYXRhIHR5cGVzIGRlZmluZWQg YnkgYGNsLWRlZnR5cGUnIGFyZSBub3cgcmVjb2duaXplZCBhcyBhcmd1bWVudAo7OyB0eXBl cyBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbnMgbWV0aG9kcy4KCjs7IE5lZWRl ZCB1bnRpbCBtZXJnZWQgaW4gZXhpc3RpbmcgbGlicmFyaWVzLgoocmVxdWlyZSAnY2wtbGli KQooZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2NsLW1hY3MpKSAgO0ZvciBjbC0tZmlu ZC1jbGFzcy4KKGRlY2xhcmUtZnVuY3Rpb24gY2wtcmVtcHJvcCAiY2wtZXh0cmEiIChzeW1i b2wgcHJvcG5hbWUpKQooZGVjbGFyZS1mdW5jdGlvbiBjbC0tY2xhc3MtY2hpbGRyZW4gImNs LWV4dHJhIiAoY2xhc3MpKQoKOzsgRXh0ZW5kIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgZGF0 YSB0eXBlcyB3aGljaCBhcmUgYWxzbyB2YWxpZAo7OyBhcmd1bWVudCB0eXBlcyBmb3IgZGlz cGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbiBtZXRob2RzIChzZWUgYWxzbwo7OyA8aHR0cHM6 Ly9kZWJidWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTc3NzI1PikuCjs7Cjs7 IFRoZSBtYWluIGVudHJ5IHBvaW50cyBhcmU6Cjs7Cjs7IC0gYGNsLWRlZnR5cGUnLCB0aGF0 IGRlZmluZXMgbmV3IGRhdGEgdHlwZXMuCjs7Cjs7IC0gYGNsLXR5cGVzLW9mJywgdGhhdCBy ZXR1cm5zIHRoZSB0eXBlcyBhbiBvYmplY3QgYmVsb25ncyB0by4KCihkZWZ2YXIgY2wtLXR5 cGUtbGlzdCBuaWwKICAiTGlzdCBvZiBkZWZpbmVkIHR5cGVzIHRvIGxvb2t1cCBmb3IgbWV0 aG9kIGRpc3BhdGNoaW5nLiIpCgo7OyBGSVhNRTogVGhlIGBjbC1kZWZ0eXBlLWhhbmRsZXIn IHByb3BlcnR5IHNob3VsZCBhcmd1YWJseSBiZSB0dXJuZWQKOzsgaW50byBhIGZpZWxkIG9m IHRoaXMgc3RydWN0IChidXQgaXQgaGFzIHBlcmZvcm1hbmNlIGFuZAo7OyBjb21wYXRpYmls aXR5IGltcGxpY2F0aW9ucywgc28gbGV0J3Mgbm90IG1ha2UgdGhhdCBjaGFuZ2UgZm9yIG5v dykuCihjbC1kZWZzdHJ1Y3QKICAgIChjbC10eXBlLWNsYXNzCiAgICAgKDppbmNsdWRlIGNs LS1jbGFzcykKICAgICAoOm5vaW5saW5lIHQpCiAgICAgKDpjb25zdHJ1Y3RvciBuaWwpCiAg ICAgKDpjb25zdHJ1Y3RvciBjbC0tdHlwZS1jbGFzcy1tYWtlCiAgICAgICAgICAgICAgICAg ICAobmFtZQogICAgICAgICAgICAgICAgICAgIGRvY3N0cmluZwogICAgICAgICAgICAgICAg ICAgIHBhcmVudC10eXBlcwogICAgICAgICAgICAgICAgICAgICZhdXggKHBhcmVudHMKICAg ICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChj bC0tZmluZC1jbGFzcyB0eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZXJyb3IgIlVua25vd24gdHlwZTogJVMiIHR5cGUpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFyZW50LXR5cGVzKSkpKQogICAgICg6Y29waWVyIG5pbCkpCiAgIlR5cGUgZGVz Y3JpcHRvcnMgZm9yIHR5cGVzIGRlZmluZWQgYnkgYGNsLWRlZnR5cGUnLiIpCgooZGVmdW4g Y2wtLXR5cGUtcCAob2JqZWN0KQogICJSZXR1cm4gbm9uLW5pbCBpZiBPQkpFQ1QgaXMgYSBj bC10eXBlLgpUaGF0IGlzLCBhIHR5cGUgZGVmaW5lZCBieSBgY2wtZGVmdHlwZScsIG9mIGNs YXNzIGBjbC10eXBlLWNsYXNzJy4iCiAgKGFuZCAoc3ltYm9scCBvYmplY3QpIChjbC10eXBl LWNsYXNzLXAgKGNsLS1maW5kLWNsYXNzIG9iamVjdCkpKSkKCihkZWZ1biBjbC0tdHlwZS1w YXJlbnRzIChuYW1lKQogICJHZXQgcGFyZW50cyBvZiB0eXBlIHdpdGggTkFNRS4KTkFNRSBp cyBhIHN5bWJvbCByZXByZXNlbnRpbmcgYSB0eXBlLgpSZXR1cm4gYSBwb3NzaWJseSBlbXB0 eSBsaXN0IG9mIHR5cGVzLiIKICAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNs YXNzIG5hbWUpKSkKCjs7IEtlZXAgaXQgZm9yIG5vdywgZm9yIHRlc3RpbmcuCihkZWZ1biBj bC0tdHlwZS11bmRlZmluZSAobmFtZSkKICAiUmVtb3ZlIHRoZSBkZWZpbml0aW9uIG9mIGNs LXR5cGUgd2l0aCBOQU1FLgpOQU1FIGlzIGFuIHVucXVvdGVkIHN5bWJvbCByZXByZXNlbnRp bmcgYSBjbC10eXBlLgpTaWduYWwgYW4gZXJyb3IgaWYgTkFNRSBoYXMgc3VidHlwZXMuIgog IChjbC1jaGVjay10eXBlIG5hbWUgKHNhdGlzZmllcyBjbC0tdHlwZS1wKSkKICAod2hlbi1s ZXQqICgoY2hpbGRyZW4gKGFuZCAoY2wtLXR5cGUtcCBuYW1lKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjbC0tY2xhc3MtY2hpbGRyZW4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNsLS1maW5kLWNsYXNzIG5hbWUpKSkpKQogICAgKGVycm9yICJUeXBlIGhh cyBjaGlsZHJlbjogJVMiIGNoaWxkcmVuKSkKICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tdHlw ZS1mbGFnKQogIChjbC1yZW1wcm9wIG5hbWUgJ2NsLS1jbGFzcykKICAoY2wtcmVtcHJvcCBu YW1lICdjbC1kZWZ0eXBlLWhhbmRsZXIpCiAgKHNldHEgY2wtLXR5cGUtbGlzdCAoZGVscSBu YW1lIGNsLS10eXBlLWxpc3QpKSkKCihkZWZ1biBjbC0tdHlwZS1kZWZ0eXBlIChuYW1lIHBh cmVudHMgJm9wdGlvbmFsIGRvY3N0cmluZykKICA7OyBGSVhNRTogU2hvdWxkIHdlIGFsc28g cmVjZWl2ZSB0aGUgYXJnbGlzdD8KICAiUmVnaXN0ZXIgY2wtdHlwZSB3aXRoIE5BTUUgZm9y IG1ldGhvZCBkaXNwYXRjaGluZy4KUEFSRU5UUyBpcyBhIGxpc3Qgb2YgdHlwZXMgTkFNRSBp cyBhIHN1YnR5cGUgb2YsIG9yIG5pbC4KRE9DU1RSSU5HIGlzIGFuIG9wdGlvbmFsIGRvY3Vt ZW50YXRpb24gc3RyaW5nLiIKICAoY29uZGl0aW9uLWNhc2UgZXJyCiAgICAgIChsZXQqICgo Y2xhc3MgKGNsLS1maW5kLWNsYXNzIG5hbWUpKQogICAgICAgICAgICAgKHJlY29yZGVkICht ZW1xIG5hbWUgY2wtLXR5cGUtbGlzdCkpKQogICAgICAgIChpZiAobnVsbCBjbGFzcykKICAg ICAgICAgICAgKG9yIChudWxsIHJlY29yZGVkKQogICAgICAgICAgICAgICAgKGVycm9yICJU eXBlIHJlZ2lzdGVyZWQsIGJ1dCBkb2Vzbid0IGV4aXN0IikpCiAgICAgICAgICAob3IgcmVj b3JkZWQgKGVycm9yICJUeXBlIGV4aXN0cywgYnV0IG5vdCByZWdpc3RlcmVkIikpCiAgICAg ICAgICAob3IgKGNsLXR5cGUtY2xhc3MtcCBjbGFzcykKICAgICAgICAgICAgICA7OyBGSVhN RTogV2UgaGF2ZSBzb21lIHVzZXMgYGNsLWRlZnR5cGUnIGluIEVtYWNzIHRoYXQKICAgICAg ICAgICAgICA7OyAiY29tcGxlbWVudCIgYW5vdGhlciBkZWNsYXJhdGlvbiBvZiB0aGUgc2Ft ZSB0eXBlLAogICAgICAgICAgICAgIDs7IHNvIG1heWJlIHdlIHNob3VsZCB0dXJuIHRoaXMg aW50byBhIHdhcm5pbmcgKGFuZAogICAgICAgICAgICAgIDs7IG5vdCBvdmVyd3JpdGUgdGhl IGBjbC0tZmluZC1jbGFzcycgaW4gdGhhdCBjYXNlKT8KICAgICAgICAgICAgICAoZXJyb3Ig IlR5cGUgaW4gYW5vdGhlciBjbGFzczogJVMiICh0eXBlLW9mIGNsYXNzKSkpKQogICAgICAg IDs7IFNldHVwIGEgdHlwZSBkZXNjcmlwdG9yIGZvciBOQU1FLgogICAgICAgIChzZXRmIChj bC0tZmluZC1jbGFzcyBuYW1lKQogICAgICAgICAgICAgIChjbC0tdHlwZS1jbGFzcy1tYWtl IG5hbWUgZG9jc3RyaW5nIHBhcmVudHMpKQogICAgICAgIDs7IFJlc2V0IE5BTUUgYXMgYSBu ZXdseSBkZWZpbmVkIHR5cGUuCiAgICAgICAgKGNsLXJlbXByb3AgbmFtZSAnY2wtLXR5cGUt ZmxhZykKICAgICAgICA7OyBSZWNvcmQgbmV3IHR5cGUuCiAgICAgICAgKG9yIHJlY29yZGVk IChwdXNoIG5hbWUgY2wtLXR5cGUtbGlzdCkpKQogICAgKGVycm9yCiAgICAgKGVycm9yIChm b3JtYXQgIkRlZmluZSAlUyBmYWlsZWQ6ICVzIgogICAgICAgICAgICAgICAgICAgIG5hbWUg KGVycm9yLW1lc3NhZ2Utc3RyaW5nIGVycikpKSkpKQoKOzs7IyMjYXV0b2xvYWQKKGRlZm1h Y3JvIGNsLWRlZnR5cGUyIChuYW1lIGFyZ2xpc3QgJnJlc3QgYm9keSkKICAiRGVmaW5lIE5B TUUgYXMgYSBuZXcgZGF0YSB0eXBlLgpUaGUgdHlwZSBOQU1FIGNhbiB0aGVuIGJlIHVzZWQg aW4gYGNsLXR5cGVjYXNlJywgYGNsLWNoZWNrLXR5cGUnLApldGMuLCBhbmQgYXMgYXJndW1l bnQgdHlwZSBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbiBtZXRob2RzLgoKQVJH TElTVCBpcyBhIENvbW1vbiBMaXNwIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIHNvcnQgYWNjZXB0 ZWQgYnkKYGNsLWRlZm1hY3JvJy4gIEJPRFkgZm9ybXMgYXJlIGV2YWx1YXRlZCBhbmQgc2hv dWxkIHJldHVybiBhIHR5cGUKc3BlY2lmaWVyIHRoYXQgaXMgZXF1aXZhbGVudCB0byB0aGUg dHlwZSAoc2VlIHRoZSBJbmZvIG5vZGUgYChjbCkgVHlwZQpQcmVkaWNhdGVzJyBpbiB0aGUg R05VIEVtYWNzIENvbW1vbiBMaXNwIEVtdWxhdGlvbiBtYW51YWwpLgoKSWYgdGhlcmUgaXMg YSBgZGVjbGFyZScgZm9ybSBpbiBCT0RZLCB0aGUgc3BlYyAocGFyZW50cyBQQVJFTlRTKSBp cwpyZWNvZ25pemVkIHRvIHNwZWNpZnkgYSBsaXN0IG9mIHR5cGVzIE5BTUUgaXMgYSBzdWJ0 eXBlIG9mLiAgRm9yCmluc3RhbmNlOgoKICAoY2wtZGVmdHlwZTIgdW5zaWduZWQtYnl0ZSAo Jm9wdGlvbmFsIGJpdHMpCiAgICBcIlVuc2lnbmVkIGludGVnZXIuXCIKICAgIChsaXN0IFxc PSdpbnRlZ2VyIDAgKGlmIChlcSBiaXRzIFxcPScqKSBiaXRzICgxLSAoYXNoIDEgYml0cykp KSkpCgogIChjbC1kZWZ0eXBlMiB1bnNpZ25lZC04Yml0cyAoKQogICAgXCJVbnNpZ25lZCA4 LWJpdHMgaW50ZWdlci5cIgogICAgKGRlY2xhcmUgKHBhcmVudHMgdW5zaWduZWQtYnl0ZSkp CiAgICBcXD0nKHVuc2lnbmVkLWJ5dGUgOCkpCgpUaGUgbGlzdCBvZiBQQVJFTlRTIHR5cGVz IGRldGVybWluZXMgdGhlIG9yZGVyIG9mIG1ldGhvZHMgaW52b2NhdGlvbiwKYW5kIG1pc3Np bmcgUEFSRU5UUyBtYXkgY2F1c2UgaW5jb3JyZWN0IG9yZGVyaW5nIG9mIG1ldGhvZHMsIHdo aWxlCmV4dHJhbmVvdXMgUEFSRU5UUyBtYXkgY2F1c2UgdXNlIG9mIGV4dHJhbmVvdXMgbWV0 aG9kcy4KCklmIFBBUkVOVFMgaXMgbm9uLW5pbCwgQVJHTElTVCBtdXN0IGJlIG5pbC4iCiAg KGRlY2xhcmUgKGRlYnVnIGNsLWRlZm1hY3JvKSAoZG9jLXN0cmluZyAzKSAoaW5kZW50IDIp KQogIChwY2FzZS1sZXQqCiAgICAgICgoYCgsZGVjbHMgLiAsZm9ybXMpIChtYWNyb2V4cC1w YXJzZS1ib2R5IGJvZHkpKQogICAgICAgKGRvY3N0cmluZyAoaWYgKHN0cmluZ3AgKGNhciBk ZWNscykpCiAgICAgICAgICAgICAgICAgICAgICAoY2FyIGRlY2xzKQogICAgICAgICAgICAg ICAgICAgICAgKGNhZHIgKGFzc3EgOmRvY3VtZW50YXRpb24gZGVjbHMpKSkpCiAgICAgICAo ZGVjbGFyZXMgKGFzc3EgJ2RlY2xhcmUgZGVjbHMpKQogICAgICAgKHBhcmVudC1kZWNsIChh c3NxICdwYXJlbnRzIChjZHIgZGVjbGFyZXMpKSkKICAgICAgIChwYXJlbnRzIChjZHIgcGFy ZW50LWRlY2wpKSkKICAgICh3aGVuIHBhcmVudC1kZWNsCiAgICAgIDs7ICJDb25zdW1lIiB0 aGUgYHBhcmVudHMnIGRlY2xhcmF0aW9uLgogICAgICAoY2wtY2FsbGYgKGxhbWJkYSAoeCkg KGRlbHEgcGFyZW50LWRlY2wgeCkpIChjZHIgZGVjbGFyZXMpKQogICAgICAod2hlbiAoZXF1 YWwgZGVjbGFyZXMgJyhkZWNsYXJlKSkKICAgICAgICAoY2wtY2FsbGYgKGxhbWJkYSAoeCkg KGRlbHEgZGVjbGFyZXMgeCkpIGRlY2xzKSkpCiAgICAoaWYgKG1lbXEgbmFtZSBwYXJlbnRz KQogICAgICAgIChlcnJvciAiVHlwZSBpbiBwYXJlbnRzOiAlUyIgcGFyZW50cykpCiAgICAo YW5kIHBhcmVudHMgYXJnbGlzdAogICAgICAgICAoZXJyb3IgIlBhcmVudHMgc3BlY2lmaWVk LCBidXQgYXJnbGlzdCBub3QgZW1wdHkiKSkKICAgIGAoZXZhbC1hbmQtY29tcGlsZSA7O2Ns LWV2YWwtd2hlbiAoY29tcGlsZSBsb2FkIGV2YWwpCiAgICAgICA7OyBGSVhNRTogV2hlcmUg c2hvdWxkIGBjbC0tdHlwZS1kZWZ0eXBlJyBnbz8gIEN1cnJlbnRseSwgY29kZQogICAgICAg OzsgdXNpbmcgYGNsLWRlZnR5cGUnIGNhbiB1c2UgKGV2YWwtd2hlbi1jb21waWxlIChyZXF1 aXJlCiAgICAgICA7OyAnY2wtbGliKSksIHNvIGBjbC0tdHlwZS1kZWZ0eXBlJyBuZWVkcyB0 byBnbyBlaXRoZXIgdG8KICAgICAgIDs7IGBjbC1wcmVsb2FkZWQuZWwnIG9yIGl0IHNob3Vs ZCBiZSBhdXRvbG9hZGVkIGV2ZW4gd2hlbgogICAgICAgOzsgYGNsLWxpYicgaXMgbm90IGxv YWRlZC4KICAgICAgIChjbC0tdHlwZS1kZWZ0eXBlICcsbmFtZSAnLHBhcmVudHMgLGRvY3N0 cmluZykKICAgICAgIChkZWZpbmUtc3ltYm9sLXByb3AgJyxuYW1lICdjbC1kZWZ0eXBlLWhh bmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLWZ1bmN0aW9uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLEBkZWNscwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAsQGZvcm1zKSkpKSkpCgo7OyBFbnN1cmUgZWFjaCB0eXBlIHNhdGlz ZmllcyBgZXFsJy4KKGRlZnZhciBjbC0tdHlwZS11bmlxdWUgKG1ha2UtaGFzaC10YWJsZSA6 dGVzdCAnZXF1YWwpCiAgIlJlY29yZCBhbiB1bmlxdWUgdmFsdWUgb2YgZWFjaCB0eXBlLiIp CgooZGVmdW4gY2wtLXR5cGUtZXJyb3IgKHR5cGUgZXJyb3IpCiAgIk1hcmsgVFlQRSBhcyBp bi1lcnJvciwgYW5kIHJlcG9ydCB0aGUgcHJvZHVjZWQgRVJST1IgdmFsdWUuIgogIChwdXQg dHlwZSAnY2wtLXR5cGUtZXJyb3IgJ2Vycm9yKSA7OyBNYXJrIFRZUEUgYXMgaW4tZXJyb3Iu CiAgOzsgVGVtcG9yYXJpbHkgcmFpc2UgdGhlIHJlY3Vyc2lvbiBsaW1pdCB0byBhdm9pZCBh bm90aGVyIHJlY3Vyc2lvbgogIDs7IGVycm9yIHdoaWxlIHJlcG9ydGluZyBFUlJPUi4KICAo bGV0ICgobWF4LWxpc3AtZXZhbC1kZXB0aCAoKyA4MDAgbWF4LWxpc3AtZXZhbC1kZXB0aCkp KQogICAgKHdhcm4gICJjbC10eXBlcy1vZiAlcywgJXMiIHR5cGUgKGVycm9yLW1lc3NhZ2Ut c3RyaW5nIGVycm9yKSkpCiAgbmlsKQoKOzsgRklYTUU6IGBjbC10eXBlcy1vZicgQ1BVIGNv c3QgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIgb2YgdHlwZXMKOzsgZGVmaW5lZCB3 aXRoIGBjbC1kZWZ0eXBlJywgc28gdGhlIG1vcmUgcG9wdWxhciBpdCBnZXRzLCB0aGUgc2xv d2VyCjs7IGl0IGJlY29tZXMuICBBbmQgb2YgY291cnNlLCB0aGUgY29zdCBvZiBlYWNoIHR5 cGUgY2hlY2sgaXMKOzsgdW5ib3VuZGVkLCBzbyBhIHNpbmdsZSAiZXhwZW5zaXZlIiB0eXBl IGNhbiBzbG93IGV2ZXJ5dGhpbmcgZG93bgo7OyBmdXJ0aGVyLgo7Owo7OyBUaGUgdXN1YWwg ZGlzcGF0Y2ggaXMKOzsKOzsgICAobGFtYmRhIChhcmcgJnJlc3QgYXJncykKOzsgICAgIChs ZXQgKChmIChnZXRoYXNoIChjbC10eXBlb2YgYXJnKSBwcmVjb21wdXRlZC1tZXRob2RzLXRh YmxlKSkpCjs7ICAgICAgIChpZiBmCjs7ICAgICAgICAgICAoYXBwbHkgZiBhcmcgYXJncykK OzsgICAgICAgICA7OyBTbG93IGNhc2Ugd2hlbiBlbmNvdW50ZXJpbmcgYSBuZXcgdHlwZQo7 OyAgICAgICAgIC4uLikpKQo7Owo7OyB3aGVyZSBvZnRlbiB0aGUgbW9zdCBleHBlbnNpdmUg cGFydCBpcyBgJnJlc3QnICh3aGljaCBoYXMgdG8KOzsgYWxsb2NhdGUgYSBsaXN0IGZvciB0 aG9zZSByZW1haW5pbmcgYXJndW1lbnRzKSwKOzsKOzsgU28gd2UncmUgdGFsa2luZyBhYm91 dCByZXBsYWNpbmcKOzsKOzsgICAmcmVzdCArIGNsLXR5cGUtb2YgKyBnZXRoYXNoICsgaWYg KyBhcHBseQo7Owo7OyB3aXRoIGEgZnVuY3Rpb24gdGhhdCBsb29wcyBvdmVyIE4gdHlwZXMs IGNhbGxpbmcgYGNsLXR5cGVwJyBvbiBlYWNoCjs7IG9uZSBvZiB0aGVtIChgY2wtdHlwZXAn IGl0c2VsZiBiZWluZyBhIHJlY3Vyc2l2ZSBmdW5jdGlvbiB0aGF0Cjs7IGJhc2ljYWxseSBp bnRlcnByZXRzIHRoZSB0eXBlIGxhbmd1YWdlKS4gIFRoaXMgaXMgZ29pbmcgdG8gc2xvdwo7 OyBkb3duIGRpc3BhdGNoIHZlcnkgc2lnbmlmaWNhbnRseSBmb3IgdGhvc2UgZ2VuZXJpYyBm dW5jdGlvbnMgdGhhdAo7OyBoYXZlIGEgbWV0aG9kIHRoYXQgZGlzcGF0Y2hlcyBvbiBhIHVz ZXIgZGVmaW5lZCB0eXBlLCBjb21wYXJlZCB0bwo7OyB0aG9zZSB0aGF0IGRvbid0Lgo7Owo7 OyBBIHBvc3NpYmxlIGZ1cnRoZXIgaW1wcm92ZW1lbnQ6Cjs7Cjs7IC0gYmFzZWQgb24gdGhl IFBBUkVOVFMgZGVjbGFyYXRpb24sIGNyZWF0ZSBhIG1hcCBmcm9tIGJ1aWx0aW4tdHlwZQo7 OyAgIHRvIHRoZSBzZXQgb2YgY2wtdHlwZXMgdGhhdCBoYXZlIHRoYXQgYnVpbHRpbi10eXBl IGFtb25nIHRoZWlyCjs7ICAgcGFyZW50cy4gIFRoYXQgcHJlc3VtZXMgc29tZSBQQVJFTlRT IGluY2x1ZGUgc29tZSBidWlsdGluLXR5cGVzLAo7OyAgIG9idmlvdXNseSBvdGhlcndpc2Ug dGhlIG1hcCB3aWxsIGJlIHRyaXZpYWwgd2l0aCBhbGwgY2wtdHlwZXMKOzsgICBhc3NvY2lh dGVkIHdpdGggdGhlIGB0JyAiZHVtbXkgcGFyZW50Ii4gIFsgV2UgY291bGQgZXZlbiBnbyBj cmF6eQo7OyAgIGFuZCB0cnkgYW5kIGd1ZXNzIFBBUkVOVFMgd2hlbiBub3QgcHJvdmlkZWQs IGJ5IGFuYWx5emluZyB0aGUKOzsgICB0eXBlJ3MgZGVmaW5pdGlvbi4gXQo7Owo7OyAtIGlu IGBjbC10eXBlcy1vZicgc3RhcnQgYnkgY2FsbGluZyBgY2wtdHlwZS1vZicsIHRoZW4gdXNl IHRoZSBtYXAKOzsgICB0byBmaW5kIHdoaWNoIGNsLXR5cGVzIG1heSBuZWVkIHRvIGJlIGNo ZWNrZWQuCjs7CihkZWZ1biBjbC10eXBlcy1vZiAob2JqZWN0KQoiUmV0dXJuIHRoZSB0eXBl cyBPQkpFQ1QgYmVsb25ncyB0by4KUmV0dXJuIGFuIHVuaXF1ZSBsaXN0IG9mIHR5cGVzIE9C SkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCm1vc3Qgc3BlY2lmaWMgdHlwZSB0 byB0aGUgbW9zdCBnZW5lcmFsLiIKKGxldCogKChyb290LXR5cGUgKGNsLXR5cGUtb2Ygb2Jq ZWN0KSkKICAgICAgIChmb3VuZCAobGlzdCByb290LXR5cGUpKSkKICA7OyBCdWlsZCBhIGxp c3Qgb2YgYWxsIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgogIChkb2xpc3QgKHR5cGUgY2wt LXR5cGUtbGlzdCkKICAgIChsZXQgKChmbGFnIChnZXQgdHlwZSAnY2wtLXR5cGUtZmxhZykp KQogICAgICAoYW5kCiAgICAgICA7OyBTa2lwIHR5cGUsIGlmIGl0IHByZXZpb3VzbHkgcHJv ZHVjZWQgYW4gZXJyb3IuCiAgICAgICAobnVsbCAoZ2V0IHR5cGUgJ2NsLS10eXBlLWVycm9y KSkKICAgICAgIDs7IFNraXAgdHlwZSB3aGljaCB3ZSBhcmUgc3VyZSB3aWxsIG5vdCBtYXRj aC4KICAgICAgIChvciAobnVsbCBmbGFnKSAoZXEgZmxhZyByb290LXR5cGUpKQogICAgICAg OzsgSWYgT0JKRUNUIGlzIG9mIHR5cGUsIGFkZCB0eXBlIHRvIHRoZSBtYXRjaGluZyBsaXN0 LgogICAgICAgKGNvbmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlCiAgICAgICAgICAgKGNs LXR5cGVwIG9iamVjdCB0eXBlKQogICAgICAgICAoZXJyb3IgKGNsLS10eXBlLWVycm9yIHR5 cGUgZSkpKQogICAgICAgKG9yIGZsYWcgKHB1dCB0eXBlICdjbC0tdHlwZS1mbGFnIHJvb3Qt dHlwZSkpCiAgICAgICAocHVzaCB0eXBlIGZvdW5kKSkpKQogIDs7IFJldHVybiBhbiB1bmlx dWUgdmFsdWUgb2YgdGhlIGxpc3Qgb2YgdHlwZXMgT0JKRUNUIGJlbG9uZ3MgdG8sCiAgOzsg d2hpY2ggaXMgYWxzbyB0aGUgbGlzdCBvZiBzcGVjaWZpZXJzIGZvciBPQkpFQ1QuCiAgKHdp dGgtbWVtb2l6YXRpb24gKGdldGhhc2ggZm91bmQgY2wtLXR5cGUtdW5pcXVlKQogICAgOzsg Q29tcHV0ZSBhbiBvcmRlcmVkIGxpc3Qgb2YgdHlwZXMgZnJvbSB0aGUgREFHLgogICAgKG1l cmdlLW9yZGVyZWQtbGlzdHMgKG1hcGNhciAjJ2NsLS10eXBlLXBhcmVudHMgZm91bmQpKSkp KQoKOzs7IE1ldGhvZCBkaXNwYXRjaGluZwo7OwooY2wtZ2VuZXJpYy1kZWZpbmUtZ2VuZXJh bGl6ZXIgY2wtLXR5cGUtZ2VuZXJhbGl6ZXIKICAyMCA7OyAidHlwZW9mIiA8ICJjbC10eXBl cy1vZiIgPCAiaGVhZCIgcHJpb3JpdHkKICAobGFtYmRhIChvYmogJnJlc3QgXykgYChjbC10 eXBlcy1vZiAsb2JqKSkKICAobGFtYmRhICh0YWcgJnJlc3QgXykgKGlmIChjb25zcCB0YWcp IHRhZykpKQoKKGNsLWRlZm1ldGhvZCBjbC1nZW5lcmljLWdlbmVyYWxpemVycyA6ZXh0cmEg ImNsLXR5cGVzLW9mIiAodHlwZSkKICAiU3VwcG9ydCBmb3IgZGlzcGF0Y2ggb24gY2wtdHlw ZXMuIgogIChpZiAoY2wtLXR5cGUtcCB0eXBlKQogICAgICAobGlzdCBjbC0tdHlwZS1nZW5l cmFsaXplcikKICAgIChjbC1jYWxsLW5leHQtbWV0aG9kKSkpCgoocHJvdmlkZSAnY2wtdHlw ZXMpCgo7OzsgY2wtdHlwZXMuZWwgZW5kcyBoZXJlCg== --------------crGYJwaCQL6VSbvPGayWUdQx--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 29 Apr 2025 18:02:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 29 14:02:33 2025
Received: from localhost ([127.0.0.1]:60773 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u9pHt-0005m3-Aq
for submit <at> debbugs.gnu.org; Tue, 29 Apr 2025 14:02:33 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:37094)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u9pHm-0005kR-4Y
for 77725 <at> debbugs.gnu.org; Tue, 29 Apr 2025 14:02:30 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 3F9D244297F;
Tue, 29 Apr 2025 14:02:20 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745949738;
bh=x09tYnKMSx8mz77uzQu61TRmbcD27Z2Bwu17pXnPEPw=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=mtj72dykZ9ptaBS7S4MYcYPEDy8We5CzlJu5pBMVRUs/+KBiFpTwqdKABqB1IsrMi
Fwwp5WKuBbMm9lTweijzzTkUezGdHTWA34cdmZ3mP/NbZ2r5ScIYg99HgwQu72lyHR
LgSf1Tma29x+SyiUE5iMZBMZ2wSpD3f+Pp7ZhvUoDY5QJdBiB615cyB2y9oKFD0+Ee
vUfEkZvPlsIsEeq8vB2Esj54lgctIpo6eStuj2KUX4V5aMMbUXznz8pXpX5Z3inpBG
nwkWi5+q1xBMbqtfwivyd5XAwZdQNxgeE2+1v+LO2JllJbgKwV0/XgWWp64AhGU7Rn
DbNKiFb1EboHA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 4F21544297D;
Tue, 29 Apr 2025 14:02:18 -0400 (EDT)
Received: from asado (modemcable005.21-80-70.mc.videotron.ca [70.80.21.5])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 24C7212051F;
Tue, 29 Apr 2025 14:02:18 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
Message-ID: <jwvcycuzyet.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
<jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
Date: Tue, 29 Apr 2025 14:02:17 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.216 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
--=-=-=
Content-Type: text/plain
Further comments:
- For a declaration like
(cl-deftype list-of (elem-type)
`(and list
(satisfies ,(lambda (list)
(cl-every (lambda (elem) (cl-typep elem elem-type))
list)))))
we add the type to `cl--type-list` even though it's unusable there
(the `cl-typep` call in `cl-types-of` will always signal an error
because the type can't be used without argument).
- Regarding incorporation into CL-Lib: apparently we don't need to
`cl-deftype` in preloaded files, so `cl--type-deftype`
does not have to be in `cl-preloaded`.
But if `cl-deftype` expands to a call to it, then it needs to be
(auto)loaded even when CL-Lib is not loaded, which suggests putting it
into `cl-lib.el`.
Another option would be to make `cl-deftype` expand to code which does
not immediately call `cl--type-deftype`. One way to do that would be to
wrap the call into a `(with-eval-after-load 'cl-lib ...)` or
something similar.
- One way to solve the problem with `list-of` (and even open up the
possibility to dispatch on complex types like `(list-of FOO)`) is to
populate `cl--type-dispatch-list` (i.e. the list of types that need to
be checked during dispatch) from `cl-generic-generalizers` so it
includes only those types for which there's a method, rather than all
defined types.
- The dispatch of types defined by `cl-deftype` is inherently unreliable
because the priority to use is not always the same. For a type
defined as `(or integer symbol)` the priority should be *lower* than
the priority of the "typeof" generalizer, whereas for a type defined
as `(list-of (eql 'a))` the priority should be higher than that of the
"head" generalizer.
I don't think we can solve this problem, but it should be clearly
documented somewhere as a limitation.
See below my current local changes (not really related to the comments
above) as a diff w.r.t. the `scratch/cl-types` branch.
Stefan
--=-=-=
Content-Type: text/x-diff
Content-Disposition: inline; filename=cl-types.patch
diff --git a/lisp/emacs-lisp/cl-types.el b/lisp/emacs-lisp/cl-types.el
index c10ce4a24fb..02972e0b817 100644
--- a/lisp/emacs-lisp/cl-types.el
+++ b/lisp/emacs-lisp/cl-types.el
@@ -48,22 +48,12 @@ cl--type-p
That is, a type defined by `cl-deftype', of class `cl-type-class'."
(and (symbolp object) (cl-type-class-p (cl--find-class object))))
-(defsubst cl--type-parents (name)
+(defun cl--type-parents (name)
"Get parents of type with NAME.
NAME is a symbol representing a type.
Return a possibly empty list of types."
(cl--class-allparents (cl--find-class name)))
-(defsubst cl--type-children (name)
- "Get children of the type with NAME.
-NAME is a symbol representing a type.
-Return a possibly empty list of types."
- (cl--class-children (cl--find-class name)))
-
-(defsubst cl--type-dag (types)
- "Return a DAG from the list of TYPES."
- (mapcar #'cl--type-parents types))
-
;; Keep it for now, for testing.
(defun cl--type-undefine (name)
"Remove the definition of cl-type with NAME.
@@ -71,7 +61,7 @@ cl--type-undefine
Signal an error if NAME has subtypes."
(cl-check-type name (satisfies cl--type-p))
(when-let* ((children (and (cl--type-p name)
- (cl--type-children name))))
+ (cl--class-children (cl--find-class name)))))
(error "Type has children: %S" children))
(cl-remprop name 'cl--type-error)
(cl-remprop name 'cl--class)
@@ -80,6 +70,8 @@ cl--type-undefine
(defun cl--type-deftype (name parents &optional docstring)
;; FIXME: Should we also receive the arglist?
+ ;; FIXME: "Generalize" is not right, and the part related to
+ ;; method-dispatch is just that: a part.
"Generalize cl-type with NAME for method dispatching.
PARENTS is a list of types NAME is a subtype of, or nil.
DOCSTRING is an optional documentation string."
@@ -105,22 +97,7 @@ cl--type-deftype
;; Clear any previous error mark.
(cl-remprop name 'cl--type-error)
;; Record new type to include its dependency in the DAG.
- (push name typelist))
- ;; `cl-types-of' iterates through all known types to collect
- ;; all those an object belongs to, sorted from the most
- ;; specific type to the more general type. So, keep the
- ;; global list in this order.
- ;; FIXME: This global operation is a bit worrisome, because it
- ;; scales poorly with the number of types. I guess it's OK
- ;; for now because `cl-deftype' is not very popular, but it'll
- ;; probably need to be replaced at some point. Maybe we
- ;; should simply require that the parents be defined already,
- ;; then we can just `push' the new type, knowing it's in
- ;; topological order by construction.
- (setq cl--type-list
- (merge-ordered-lists
- (cl--type-dag typelist)
- (lambda (_) (error "Invalid dependency graph")))))
+ (push name typelist)))
(error
(setf (symbol-plist name) oldplist)
(error (format "Define %S failed: %s"
@@ -252,14 +229,8 @@ cl-types-of
;; Skip type, if it previously produced an error.
(null (get type 'cl--type-error))
;; Skip type not defined by `cl-deftype'.
+ ;; FIXME: Can we make sure this is simply always true?
(cl-type-class-p (cl--find-class type))
- ;; If BAR is declared as a parent of FOO and `cl-types-of' has
- ;; already decided that the value is of type FOO, then we
- ;; already know BAR will be in the output anyway and there's no
- ;; point testing BAR. So, skip type already selected as parent
- ;; of another type, assuming that, most of the time, `assq'
- ;; will be faster than `cl-typep'.
- (null (assq type found))
;; If OBJECT is of type, add type to the matching list.
(condition-case-unless-debug e
(cl-typep object type)
@@ -268,17 +239,10 @@ cl-types-of
;; Return an unique value of the list of types OBJECT belongs to,
;; which is also the list of specifiers for OBJECT.
(with-memoization (gethash found cl--type-unique)
- ;; Compute a DAG from the collected matching types.
- (let (dag)
- (dolist (type found)
- (let ((pl (cl--type-parents type)))
- (while pl
- (push pl dag)
- (setq pl (cdr pl)))))
- ;; Compute an ordered list of types from the DAG.
- (merge-ordered-lists
- (nreverse (cons (cl--type-parents (cl-type-of object))
- dag)))))))
+ ;; Compute an ordered list of types from the DAG.
+ (merge-ordered-lists
+ (nreverse (mapcar #'cl--type-parents
+ (cons (cl-type-of object) found)))))))
;;; Method dispatching
;;
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 29 Apr 2025 16:33:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 29 12:33:38 2025
Received: from localhost ([127.0.0.1]:59239 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u9ntn-0005aB-03
for submit <at> debbugs.gnu.org; Tue, 29 Apr 2025 12:33:38 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:13927)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u9ntk-0005Zk-Ci
for 77725 <at> debbugs.gnu.org; Tue, 29 Apr 2025 12:33:32 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 842C910006B;
Tue, 29 Apr 2025 12:33:26 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745944405;
bh=SLa37Nfh0KjiephG7vjwffCZMRD/D1MKDVLJ8GLuEek=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=FSvKfI+i9q2gSIc8gbebh5Z9VHHUREDWHUUJBZ66rZ1yctwhDS8TcZlZPvAFSChjw
fSlmvoOiyBrYaahEwpmzf8slRaxGvHy8AQZW9cYcZk7wVYGaU5T9v+2vq/EclJauvG
jubimB3Io0d4H8UKXLnGL1MgRZBUq5K9Tt1LRefFvmIi2mUUgNEu64K8/EhgJJWPZ+
fqpdH/+mBlXIbJ9KmiPWIiRXc53lldKqGL5KCbXb2vEUmhHIV884Vh4ZSFO6EYNQ7A
P1y2A1Oj/aed1Z4p1uKA4WIBJls8o8OXesSIVsJCto/W8zgXrQTNp+rfR+uWnHy8uD
eq33mJJsi4U/w==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D2631100029;
Tue, 29 Apr 2025 12:33:25 -0400 (EDT)
Received: from asado (modemcable005.21-80-70.mc.videotron.ca [70.80.21.5])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 975A5120199;
Tue, 29 Apr 2025 12:33:16 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
Message-ID: <jwvo6wfymbe.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
<jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
<e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN>
Date: Tue, 29 Apr 2025 12:33:06 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.292 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Of course, it makes much sense. If I am not wrong, the constructor of the
> class `cl-type-class' already ensures that parent types must be defined
> before their "child" types (i.e. already added to the `cl--type-list' for
> types defined with `cl-deftype").
I think so, yes.
> So it should work to simply push a new type at the beginning of the
> list.
Yup.
> And, when a type is redefined, move it at the beginning of
> the list?
Redefinition is more complicated, because child types may be in the
list, so moving the type to the head can be incorrect. The "cheap"
solution is to leave the list unchanged (and hope the redefinition
doesn't change the hierarchy too much).
Side note: Redefinitions introduce other problems as well because the
class object's `parents` slot contains references to `cl--class`
objects, so after a redefinition via (setf (cl--find-class FOO) ...),
the children's `parents` slots point to the old class object.
That's a problem that affects all types and that we don't really try to
solve currently.
> Sorry, that's a bit paranoid of me, as I've heard many times that function
> calls are inefficient in ELisp.
FWIW, calls from bytecode to bytecode have been improved noticeable by
Mattias (can't remember if that was for Emacs-29 or Emacs-30), so it's
not as bad as it used to be.
> You're certainly right: in this case, the overhead of a function call
> should be negligible. I'll replace those "defsubst" with "defun".
It's good to be mindful of costs, but it's also important to remember
that the majority of the code is actually not performance sensitive at
all (by which I mean that small constant factors, like what you get from
inlining, don't matter).
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 29 Apr 2025 15:50:02 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 29 11:50:02 2025 Received: from localhost ([127.0.0.1]:58462 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u9nDd-00004u-3Z for submit <at> debbugs.gnu.org; Tue, 29 Apr 2025 11:50:02 -0400 Received: from smtp-76.smtpout.orange.fr ([80.12.242.76]:50417 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u9nDZ-0008WI-Ok for 77725 <at> debbugs.gnu.org; Tue, 29 Apr 2025 11:49:59 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 9nDTuHv0NSxyX9nDWuhXzX; Tue, 29 Apr 2025 17:49:55 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745941796; bh=8q+eSYvP4FOPoqGRD8u48wrN885/HYs218/kEQDjChw=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=VKzQeEH50Y/z5Xb4rAq64EhIAalBWoslLTVk/HEsl5ifH0IqAq0kwvXmHLWR19chh VdO7sIzsShTuFWI8TkIIzNppIuyfv25L4R4gceddyqIMeH6ZWM4ST9dtqFS1XwXJem DhJ4DaRADYO+mr/f/7ff/+AjCH1qJob7ihKqR6OWANZV+7WOwWxEQD93d2PgSYSM/u 8e1pD0BBMDAKOHEBtop9SXl9f7TLuyhuQatXfc+H49d+y85DIG85vzdx0JRBuljAj0 uvPc1YjQ9gJmvmRTp6Ex7ig6GcLcYnMyAnb0Q4g04Mo3p6AVBoCWegHVzqf6Tqf6N5 h3QeeoW1g//2A== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Tue, 29 Apr 2025 17:49:56 +0200 X-ME-IP: 90.112.40.65 Message-ID: <e03aadc4-5a8f-464b-b79d-f9408bf460ff@HIDDEN> Date: Tue, 29 Apr 2025 17:49:51 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvjz73ujru.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-29 16:49, Stefan Monnier wrote: >> ;; FIXME: This global operation is a bit worrisome, because it >> ;; scales poorly with the number of types. I guess it's OK >> ;; for now because `cl-deftype' is not very popular, but it'll >> ;; probably need to be replaced at some point. Maybe we >> ;; should simply require that the parents be defined already, >> ;; then we can just `push' the new type, knowing it's in >> ;; topological order by construction. >> >> It's not clear to me how "simply require that the parents be defined >> already", makes the new type "in topological order by construction". > > If they're already defined, it means they're already in the list, so if > you add the new type at the head of the list you know this "child" comes > before all its parents in the list. If the list is constructed only by > making such additions where we make sure the parents are already there, > then the property is valid over the whole list. > > Note, there's no magic: we should push the responsibility of topological > sorting onto the programmers (who now have to define their types in > topological order). Of course, it makes much sense. If I am not wrong, the constructor of the class `cl-type-class' already ensures that parent types must be defined before their "child" types (i.e. already added to the `cl--type-list' for types defined with `cl-deftype"). So it should work to simply push a new type at the beginning of the list. And, when a type is redefined, move it at the beginning of the list? >> Also, as all this is done only at type (re)definition, which should >> not happen so often, I am curious to know why you think "this global >> operation is a bit worrisome"? > > The algorithmic complexity of merge-ordered-list is O(N²), in the number > of types IIRC, so while it may seem fine with 10 types, it could take > more than a minute given enough type declarations. I understand now, thanks! > >> In `cl-types-of', I liked your idea to avoid calls to >> `cl--type-parents' and `merge-ordered-list' before we do the >> `gethash'. I've gone a bit further in this direction (hopefully not >> too far!) by doing all the type list computation just before creating >> a new entry in the hash table. There's a slight overhead to determine >> the types of objects not yet processed, but determining the types of >> similar objects should be faster, which should be the most common case >> (or at least the one to favor) when using types to dispatch methods. > > +1 > > I notice that the `(null (assq type found))` is now ineffective, tho. > Maybe it's OK and we should just remove it. Good catch :-) I think it's OK to just remove this test. > Why all the `defsubst`? Have you measured a noticeable speed difference > by using them? I have a hard time seeing how that could happen. > All 3 `defsubst` in your patch are for function which contain > a non-trivial loop, so I'd expect the overhead of a function call to be > negligible. Sorry, that's a bit paranoid of me, as I've heard many times that function calls are inefficient in ELisp. You're certainly right: in this case, the overhead of a function call should be negligible. I'll replace those "defsubst" with "defun". David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 29 Apr 2025 14:49:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 29 10:49:32 2025
Received: from localhost ([127.0.0.1]:57373 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u9mH3-0000tl-RF
for submit <at> debbugs.gnu.org; Tue, 29 Apr 2025 10:49:32 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:16544)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u9mH1-0000tF-Je
for 77725 <at> debbugs.gnu.org; Tue, 29 Apr 2025 10:49:28 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 8C1D980899;
Tue, 29 Apr 2025 10:49:21 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745938160;
bh=mkTbuINwmSDkztYGst3Z0eR4jzswi/QaNLR2LIh6nAA=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=RJ8Bt/NPxVtXpKNvoUzExJbZOd3m6BEj3vgSQyFnY9BtOJfssUfPOtF4riliRI+o1
GkdL9q6qtHthdEQvFJWQS3F34ECB1Z3wpWJ7+lVPg/4CW5fyC3wdqOHy3Y3hqPt9iw
OvqOciOtyqZoUJzxf/lP4JUngu9uDTWCWwKCBEk1RL3J1xFbUj+Twk3Z/DWGo00qYw
29OL3MdimSXtS/dCn+xUy5xfzK6BLH98abWb2nsDKIZ28IXOqepcprpPlOHk8O+2D4
/EMTuKfm5mVAgnGWuiEv7bspgUQqQum4jV7pcinWpFys7qO4JdpARU96yOxrvzTh54
xMF9yYN62rIkQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id A50F78034C;
Tue, 29 Apr 2025 10:49:20 -0400 (EDT)
Received: from pastel (104-195-232-56.cpe.teksavvy.com [104.195.232.56])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 7687112041B;
Tue, 29 Apr 2025 10:49:20 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
Message-ID: <jwvjz73ujru.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
<jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
<bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN>
Date: Tue, 29 Apr 2025 10:49:13 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.060 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> ;; FIXME: This global operation is a bit worrisome, because it
> ;; scales poorly with the number of types. I guess it's OK
> ;; for now because `cl-deftype' is not very popular, but it'll
> ;; probably need to be replaced at some point. Maybe we
> ;; should simply require that the parents be defined already,
> ;; then we can just `push' the new type, knowing it's in
> ;; topological order by construction.
>
> It's not clear to me how "simply require that the parents be defined
> already", makes the new type "in topological order by construction".
If they're already defined, it means they're already in the list, so if
you add the new type at the head of the list you know this "child" comes
before all its parents in the list. If the list is constructed only by
making such additions where we make sure the parents are already there,
then the property is valid over the whole list.
Note, there's no magic: we should push the responsibility of topological
sorting onto the programmers (who now have to define their types in
topological order).
> Also, as all this is done only at type (re)definition, which should
> not happen so often, I am curious to know why you think "this global
> operation is a bit worrisome"?
The algorithmic complexity of merge-ordered-list is O(N=B2), in the number
of types IIRC, so while it may seem fine with 10 types, it could take
more than a minute given enough type declarations.
> In `cl-types-of', I liked your idea to avoid calls to
> `cl--type-parents' and `merge-ordered-list' before we do the
> `gethash'. I've gone a bit further in this direction (hopefully not
> too far!) by doing all the type list computation just before creating
> a new entry in the hash table. There's a slight overhead to determine
> the types of objects not yet processed, but determining the types of
> similar objects should be faster, which should be the most common case
> (or at least the one to favor) when using types to dispatch methods.
+1
I notice that the `(null (assq type found))` is now ineffective, tho.
Maybe it's OK and we should just remove it.
> WDYT
Why all the `defsubst`? Have you measured a noticeable speed difference
by using them? I have a hard time seeing how that could happen.
All 3 `defsubst` in your patch are for function which contain
a non-trivial loop, so I'd expect the overhead of a function call to be
negligible.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 29 Apr 2025 10:50:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 29 06:50:42 2025 Received: from localhost ([127.0.0.1]:50770 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u9iXx-0001cd-FJ for submit <at> debbugs.gnu.org; Tue, 29 Apr 2025 06:50:42 -0400 Received: from smtp-80.smtpout.orange.fr ([80.12.242.80]:55773 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u9iXq-0001b8-Jw for 77725 <at> debbugs.gnu.org; Tue, 29 Apr 2025 06:50:39 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 9iXkuM3e5eSp19iXnuVYKA; Tue, 29 Apr 2025 12:50:32 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745923832; bh=3IehPu/4LKRlHsEIvUVyLuKclROKWkZi1s+5m5BQTkI=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=KaJFhqBvC4ow3UpbqIL+QplvJ0HEH22VovFPTSbgiw0NATyIOm7p3xVr0cgFdJsD+ p7I88raMjPyPk6GsW7L2VWyxsCqr/HtO5p/EfKvrAXeafflROMwhJ6qxvu68g/Fo54 UIulV8qYV6wGxzxStYdkJpXx0eBs6223nEOnZHwqG9gkkS3dWPgaIIzXjp3foLwcoR rRk/4Ky3UmqMQDupx00baMRcbXmHzIJaAXycBvAnoGOjPTmfliXufShySYjQEiO2fy wQp0fLrlhHCMwp35cPKOfiV3uKt16bjopGYHFfqAALo/ugzo8xu6wGFNXdid32tnyL 9EwVFY73BLjOg== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Tue, 29 Apr 2025 12:50:32 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------wX7ISlduev3upoIOjvky26gv" Message-ID: <bba80d3d-67bb-483b-98f4-a0a32ea2a36b@HIDDEN> Date: Tue, 29 Apr 2025 12:50:27 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------wX7ISlduev3upoIOjvky26gv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2025-04-28 23:44, Stefan Monnier wrote: [...] > I pushed your new code to the `scratch/cl-types` branch in `emacs.git`. > I haven't integrated it into the other CL-Lib files yet. > See patch below for comments on your code. Merci! Please find attached a new version of cl-types.el with some updates following your comments. Regarding this FIXME, in `cl--type-deftype', about the global setting of `cl--type-list': ;; FIXME: This global operation is a bit worrisome, because it ;; scales poorly with the number of types. I guess it's OK ;; for now because `cl-deftype' is not very popular, but it'll ;; probably need to be replaced at some point. Maybe we ;; should simply require that the parents be defined already, ;; then we can just `push' the new type, knowing it's in ;; topological order by construction. It's not clear to me how "simply require that the parents be defined already", makes the new type "in topological order by construction". Also, as all this is done only at type (re)definition, which should not happen so often, I am curious to know why you think "this global operation is a bit worrisome"? In `cl-types-of', I liked your idea to avoid calls to `cl--type-parents' and `merge-ordered-list' before we do the `gethash'. I've gone a bit further in this direction (hopefully not too far!) by doing all the type list computation just before creating a new entry in the hash table. There's a slight overhead to determine the types of objects not yet processed, but determining the types of similar objects should be faster, which should be the most common case (or at least the one to favor) when using types to dispatch methods. WDYT? Thanks! David --------------wX7ISlduev3upoIOjvky26gv Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types.el" Content-Disposition: attachment; filename="cl-types.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBEYXRhIHR5cGVzIGRlZmluZWQg YnkgYGNsLWRlZnR5cGUnIGFyZSBub3cgcmVjb2duaXplZCBhcyBhcmd1bWVudAo7OyB0eXBl cyBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbnMgbWV0aG9kcy4KCjs7IE5lZWRl ZCB1bnRpbCBtZXJnZWQgaW4gZXhpc3RpbmcgbGlicmFyaWVzLgoocmVxdWlyZSAnY2wtbGli KQooZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2NsLW1hY3MpKSAgO0ZvciBjbC0tZmlu ZC1jbGFzcy4KKGRlY2xhcmUtZnVuY3Rpb24gY2wtcmVtcHJvcCAiY2wtZXh0cmEiIChzeW1i b2wgcHJvcG5hbWUpKQooZGVjbGFyZS1mdW5jdGlvbiBjbC0tY2xhc3MtY2hpbGRyZW4gImNs LWV4dHJhIiAoY2xhc3MpKQoKOzsgRXh0ZW5kIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgZGF0 YSB0eXBlcyB3aGljaCBhcmUgYWxzbyB2YWxpZAo7OyBhcmd1bWVudCB0eXBlcyBmb3IgZGlz cGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbiBtZXRob2RzIChzZWUgYWxzbwo7OyA8aHR0cHM6 Ly9kZWJidWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTc3NzI1PikuCjs7Cjs7 IFRoZSBtYWluIGVudHJ5IHBvaW50cyBhcmU6Cjs7Cjs7IC0gYGNsLWRlZnR5cGUnLCB0aGF0 IGRlZmluZXMgbmV3IGRhdGEgdHlwZXMuCjs7Cjs7IC0gYGNsLXR5cGVzLW9mJywgdGhhdCBy ZXR1cm5zIHRoZSB0eXBlcyBhbiBvYmplY3QgYmVsb25ncyB0by4KCihkZWZ2YXIgY2wtLXR5 cGUtbGlzdCBuaWwKICAiTGlzdCBvZiBkZWZpbmVkIHR5cGVzIHRvIGxvb2t1cCBmb3IgbWV0 aG9kIGRpc3BhdGNoaW5nLiIpCgo7OyBGSVhNRTogVGhlIGBjbC1kZWZ0eXBlLWhhbmRsZXIn IHByb3BlcnR5IHNob3VsZCBhcmd1YWJseSBiZSB0dXJuZWQKOzsgaW50byBhIGZpZWxkIG9m IHRoaXMgc3RydWN0IChidXQgaXQgaGFzIHBlcmZvcm1hbmNlIGFuZAo7OyBjb21wYXRpYmls aXR5IGltcGxpY2F0aW9ucywgc28gbGV0J3Mgbm90IG1ha2UgdGhhdCBjaGFuZ2UgZm9yIG5v dykuCihjbC1kZWZzdHJ1Y3QKICAgIChjbC10eXBlLWNsYXNzCiAgICAgKDppbmNsdWRlIGNs LS1jbGFzcykKICAgICAoOm5vaW5saW5lIHQpCiAgICAgKDpjb25zdHJ1Y3RvciBuaWwpCiAg ICAgKDpjb25zdHJ1Y3RvciBjbC0tdHlwZS1jbGFzcy1tYWtlCiAgICAgICAgICAgICAgICAg ICAobmFtZQogICAgICAgICAgICAgICAgICAgIGRvY3N0cmluZwogICAgICAgICAgICAgICAg ICAgIHBhcmVudC10eXBlcwogICAgICAgICAgICAgICAgICAgICZhdXggKHBhcmVudHMKICAg ICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChj bC0tZmluZC1jbGFzcyB0eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZXJyb3IgIlVua25vd24gdHlwZTogJVMiIHR5cGUpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFyZW50LXR5cGVzKSkpKQogICAgICg6Y29waWVyIG5pbCkpCiAgIlR5cGUgZGVz Y3JpcHRvcnMgZm9yIHR5cGVzIGRlZmluZWQgYnkgYGNsLWRlZnR5cGUnLiIpCgooZGVmdW4g Y2wtLXR5cGUtcCAob2JqZWN0KQogICJSZXR1cm4gbm9uLW5pbCBpZiBPQkpFQ1QgaXMgYSBj bC10eXBlLgpUaGF0IGlzLCBhIHR5cGUgZGVmaW5lZCBieSBgY2wtZGVmdHlwZScsIG9mIGNs YXNzIGBjbC10eXBlLWNsYXNzJy4iCiAgKGFuZCAoc3ltYm9scCBvYmplY3QpIChjbC10eXBl LWNsYXNzLXAgKGNsLS1maW5kLWNsYXNzIG9iamVjdCkpKSkKCihkZWZzdWJzdCBjbC0tdHlw ZS1wYXJlbnRzIChuYW1lKQogICJHZXQgcGFyZW50cyBvZiB0eXBlIHdpdGggTkFNRS4KTkFN RSBpcyBhIHN5bWJvbCByZXByZXNlbnRpbmcgYSB0eXBlLgpSZXR1cm4gYSBwb3NzaWJseSBl bXB0eSBsaXN0IG9mIHR5cGVzLiIKICAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5k LWNsYXNzIG5hbWUpKSkKCihkZWZzdWJzdCBjbC0tdHlwZS1jaGlsZHJlbiAobmFtZSkKICAi R2V0IGNoaWxkcmVuIG9mIHRoZSB0eXBlIHdpdGggTkFNRS4KTkFNRSBpcyBhIHN5bWJvbCBy ZXByZXNlbnRpbmcgYSB0eXBlLgpSZXR1cm4gYSBwb3NzaWJseSBlbXB0eSBsaXN0IG9mIHR5 cGVzLiIKICAoY2wtLWNsYXNzLWNoaWxkcmVuIChjbC0tZmluZC1jbGFzcyBuYW1lKSkpCgoo ZGVmc3Vic3QgY2wtLXR5cGUtZGFnICh0eXBlcykKICAiUmV0dXJuIGEgREFHIGZyb20gdGhl IGxpc3Qgb2YgVFlQRVMuIgogIChtYXBjYXIgIydjbC0tdHlwZS1wYXJlbnRzIHR5cGVzKSkK Cjs7IEtlZXAgaXQgZm9yIG5vdywgZm9yIHRlc3RpbmcuCihkZWZ1biBjbC0tdHlwZS11bmRl ZmluZSAobmFtZSkKICAiUmVtb3ZlIHRoZSBkZWZpbml0aW9uIG9mIGNsLXR5cGUgd2l0aCBO QU1FLgpOQU1FIGlzIGFuIHVucXVvdGVkIHN5bWJvbCByZXByZXNlbnRpbmcgYSBjbC10eXBl LgpTaWduYWwgYW4gZXJyb3IgaWYgTkFNRSBoYXMgc3VidHlwZXMuIgogIChjbC1jaGVjay10 eXBlIG5hbWUgKHNhdGlzZmllcyBjbC0tdHlwZS1wKSkKICAod2hlbi1sZXQqICgoY2hpbGRy ZW4gKGFuZCAoY2wtLXR5cGUtcCBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjbC0tdHlwZS1jaGlsZHJlbiBuYW1lKSkpKQogICAgKGVycm9yICJUeXBlIGhhcyBjaGls ZHJlbjogJVMiIGNoaWxkcmVuKSkKICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tdHlwZS1lcnJv cikKICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tY2xhc3MpCiAgKGNsLXJlbXByb3AgbmFtZSAn Y2wtZGVmdHlwZS1oYW5kbGVyKQogIChzZXRxIGNsLS10eXBlLWxpc3QgKGRlbHEgbmFtZSBj bC0tdHlwZS1saXN0KSkpCgooZGVmdW4gY2wtLXR5cGUtZGVmdHlwZSAobmFtZSBwYXJlbnRz ICZvcHRpb25hbCBkb2NzdHJpbmcpCiAgOzsgRklYTUU6IFNob3VsZCB3ZSBhbHNvIHJlY2Vp dmUgdGhlIGFyZ2xpc3Q/CiAgIkdlbmVyYWxpemUgY2wtdHlwZSB3aXRoIE5BTUUgZm9yIG1l dGhvZCBkaXNwYXRjaGluZy4KUEFSRU5UUyBpcyBhIGxpc3Qgb2YgdHlwZXMgTkFNRSBpcyBh IHN1YnR5cGUgb2YsIG9yIG5pbC4KRE9DU1RSSU5HIGlzIGFuIG9wdGlvbmFsIGRvY3VtZW50 YXRpb24gc3RyaW5nLiIKICAobGV0ICgodHlwZWxpc3QgY2wtLXR5cGUtbGlzdCkKICAgICAg ICAob2xkcGxpc3QgKGNvcHktc2VxdWVuY2UgKHN5bWJvbC1wbGlzdCBuYW1lKSkpKQogICAg KGNvbmRpdGlvbi1jYXNlIGVycgogICAgICAgIChsZXQqICgoY2xhc3MgKGNsLS1maW5kLWNs YXNzIG5hbWUpKQogICAgICAgICAgICAgICAocmVjb3JkZWQgKG1lbXEgbmFtZSB0eXBlbGlz dCkpKQogICAgICAgICAgKGlmIChudWxsIGNsYXNzKQogICAgICAgICAgICAgIChvciAobnVs bCByZWNvcmRlZCkKICAgICAgICAgICAgICAgICAgKGVycm9yICJUeXBlIGdlbmVyYWxpemVk LCBidXQgZG9lc24ndCBleGlzdCIpKQogICAgICAgICAgICAob3IgcmVjb3JkZWQgKGVycm9y ICJUeXBlIGV4aXN0cywgYnV0IG5vdCBnZW5lcmFsaXplZCIpKQogICAgICAgICAgICAob3Ig KGNsLXR5cGUtY2xhc3MtcCBjbGFzcykKICAgICAgICAgICAgICAgIDs7IEZJWE1FOiBXZSBo YXZlIHNvbWUgdXNlcyBgY2wtZGVmdHlwZScgaW4gRW1hY3MgdGhhdAogICAgICAgICAgICAg ICAgOzsgImNvbXBsZW1lbnQiIGFub3RoZXIgZGVjbGFyYXRpb24gb2YgdGhlIHNhbWUgdHlw ZSwKICAgICAgICAgICAgICAgIDs7IHNvIG1heWJlIHdlIHNob3VsZCB0dXJuIHRoaXMgaW50 byBhIHdhcm5pbmcgKGFuZAogICAgICAgICAgICAgICAgOzsgbm90IG92ZXJ3cml0ZSB0aGUg YGNsLS1maW5kLWNsYXNzJyBpbiB0aGF0IGNhc2UpPwogICAgICAgICAgICAgICAgKGVycm9y ICJUeXBlIGluIGFub3RoZXIgY2xhc3M6ICVTIiAodHlwZS1vZiBjbGFzcykpKSkKICAgICAg ICAgIDs7IFNldHVwIGEgdHlwZSBkZXNjcmlwdG9yIGZvciBOQU1FLgogICAgICAgICAgKHNl dGYgKGNsLS1maW5kLWNsYXNzIG5hbWUpCiAgICAgICAgICAgICAgICAoY2wtLXR5cGUtY2xh c3MtbWFrZSBuYW1lIGRvY3N0cmluZyBwYXJlbnRzKSkKICAgICAgICAgIChpZiByZWNvcmRl ZAogICAgICAgICAgICAgIDs7IENsZWFyIGFueSBwcmV2aW91cyBlcnJvciBtYXJrLgogICAg ICAgICAgICAgIChjbC1yZW1wcm9wIG5hbWUgJ2NsLS10eXBlLWVycm9yKQogICAgICAgICAg ICA7OyBSZWNvcmQgbmV3IHR5cGUgdG8gaW5jbHVkZSBpdHMgZGVwZW5kZW5jeSBpbiB0aGUg REFHLgogICAgICAgICAgICAocHVzaCBuYW1lIHR5cGVsaXN0KSkKICAgICAgICAgIDs7IGBj bC10eXBlcy1vZicgaXRlcmF0ZXMgdGhyb3VnaCBhbGwga25vd24gdHlwZXMgdG8gY29sbGVj dAogICAgICAgICAgOzsgYWxsIHRob3NlIGFuIG9iamVjdCBiZWxvbmdzIHRvLCBzb3J0ZWQg ZnJvbSB0aGUgbW9zdAogICAgICAgICAgOzsgc3BlY2lmaWMgdHlwZSB0byB0aGUgbW9yZSBn ZW5lcmFsIHR5cGUuICBTbywga2VlcCB0aGUKICAgICAgICAgIDs7IGdsb2JhbCBsaXN0IGlu IHRoaXMgb3JkZXIuCiAgICAgICAgICA7OyBGSVhNRTogVGhpcyBnbG9iYWwgb3BlcmF0aW9u IGlzIGEgYml0IHdvcnJpc29tZSwgYmVjYXVzZSBpdAogICAgICAgICAgOzsgc2NhbGVzIHBv b3JseSB3aXRoIHRoZSBudW1iZXIgb2YgdHlwZXMuICBJIGd1ZXNzIGl0J3MgT0sKICAgICAg ICAgIDs7IGZvciBub3cgYmVjYXVzZSBgY2wtZGVmdHlwZScgaXMgbm90IHZlcnkgcG9wdWxh ciwgYnV0IGl0J2xsCiAgICAgICAgICA7OyBwcm9iYWJseSBuZWVkIHRvIGJlIHJlcGxhY2Vk IGF0IHNvbWUgcG9pbnQuICBNYXliZSB3ZQogICAgICAgICAgOzsgc2hvdWxkIHNpbXBseSBy ZXF1aXJlIHRoYXQgdGhlIHBhcmVudHMgYmUgZGVmaW5lZCBhbHJlYWR5LAogICAgICAgICAg OzsgdGhlbiB3ZSBjYW4ganVzdCBgcHVzaCcgdGhlIG5ldyB0eXBlLCBrbm93aW5nIGl0J3Mg aW4KICAgICAgICAgIDs7IHRvcG9sb2dpY2FsIG9yZGVyIGJ5IGNvbnN0cnVjdGlvbi4KICAg ICAgICAgIChzZXRxIGNsLS10eXBlLWxpc3QKICAgICAgICAgICAgICAgIChtZXJnZS1vcmRl cmVkLWxpc3RzCiAgICAgICAgICAgICAgICAgKGNsLS10eXBlLWRhZyB0eXBlbGlzdCkKICAg ICAgICAgICAgICAgICAobGFtYmRhIChfKSAoZXJyb3IgIkludmFsaWQgZGVwZW5kZW5jeSBn cmFwaCIpKSkpKQogICAgICAoZXJyb3IKICAgICAgIChzZXRmIChzeW1ib2wtcGxpc3QgbmFt ZSkgb2xkcGxpc3QpCiAgICAgICAoZXJyb3IgKGZvcm1hdCAiRGVmaW5lICVTIGZhaWxlZDog JXMiCiAgICAgICAgICAgICAgICAgICAgICBuYW1lIChlcnJvci1tZXNzYWdlLXN0cmluZyBl cnIpKSkpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmbWFjcm8gY2wtZGVmdHlwZTIgKG5hbWUg YXJnbGlzdCAmcmVzdCBib2R5KQogICJEZWZpbmUgTkFNRSBhcyBhIG5ldyBkYXRhIHR5cGUu ClRoZSB0eXBlIE5BTUUgY2FuIHRoZW4gYmUgdXNlZCBpbiBgY2wtdHlwZWNhc2UnLCBgY2wt Y2hlY2stdHlwZScsCmV0Yy4sIGFuZCBhcyBhcmd1bWVudCB0eXBlIGZvciBkaXNwYXRjaGlu ZyBnZW5lcmljIGZ1bmN0aW9uIG1ldGhvZHMuCgpBUkdMSVNUIGlzIGEgQ29tbW9uIExpc3Ag YXJndW1lbnQgbGlzdCBvZiB0aGUgc29ydCBhY2NlcHRlZCBieQpgY2wtZGVmbWFjcm8nLiAg Qk9EWSBmb3JtcyBhcmUgZXZhbHVhdGVkIGFuZCBzaG91bGQgcmV0dXJuIGEgdHlwZQpzcGVj aWZpZXIgdGhhdCBpcyBlcXVpdmFsZW50IHRvIHRoZSB0eXBlIChzZWUgdGhlIEluZm8gbm9k ZSBgKGNsKSBUeXBlClByZWRpY2F0ZXMnIGluIHRoZSBHTlUgRW1hY3MgQ29tbW9uIExpc3Ag RW11bGF0aW9uIG1hbnVhbCkuCgpJZiB0aGVyZSBpcyBhIGBkZWNsYXJlJyBmb3JtIGluIEJP RFksIHRoZSBzcGVjIChwYXJlbnRzIFBBUkVOVFMpIGlzCnJlY29nbml6ZWQgdG8gc3BlY2lm eSBhIGxpc3Qgb2YgdHlwZXMgTkFNRSBpcyBhIHN1YnR5cGUgb2YuICBGb3IKaW5zdGFuY2U6 CgogIChjbC1kZWZ0eXBlMiB1bnNpZ25lZC1ieXRlICgmb3B0aW9uYWwgYml0cykKICAgIFwi VW5zaWduZWQgaW50ZWdlci5cIgogICAgKGxpc3QgXFw9J2ludGVnZXIgMCAoaWYgKGVxIGJp dHMgXFw9JyopIGJpdHMgKDEtIChhc2ggMSBiaXRzKSkpKSkKCiAgKGNsLWRlZnR5cGUyIHVu c2lnbmVkLThiaXRzICgpCiAgICBcIlVuc2lnbmVkIDgtYml0cyBpbnRlZ2VyLlwiCiAgICAo ZGVjbGFyZSAocGFyZW50cyB1bnNpZ25lZC1ieXRlKSkKICAgIFxcPScodW5zaWduZWQtYnl0 ZSA4KSkKClRoZSBsaXN0IG9mIFBBUkVOVFMgdHlwZXMgZGV0ZXJtaW5lcyB0aGUgb3JkZXIg b2YgbWV0aG9kcyBpbnZvY2F0aW9uLAphbmQgbWlzc2luZyBQQVJFTlRTIG1heSBjYXVzZSBp bmNvcnJlY3Qgb3JkZXJpbmcgb2YgbWV0aG9kcywgd2hpbGUKZXh0cmFuZW91cyBQQVJFTlRT IG1heSBjYXVzZSB1c2Ugb2YgZXh0cmFuZW91cyBtZXRob2RzLgoKSWYgUEFSRU5UUyBpcyBu b24tbmlsLCBBUkdMSVNUIG11c3QgYmUgbmlsLiIKICAoZGVjbGFyZSAoZGVidWcgY2wtZGVm bWFjcm8pIChkb2Mtc3RyaW5nIDMpIChpbmRlbnQgMikpCiAgKHBjYXNlLWxldCoKICAgICAg KChgKCxkZWNscyAuICxmb3JtcykgKG1hY3JvZXhwLXBhcnNlLWJvZHkgYm9keSkpCiAgICAg ICAoZG9jc3RyaW5nIChpZiAoc3RyaW5ncCAoY2FyIGRlY2xzKSkKICAgICAgICAgICAgICAg ICAgICAgIChjYXIgZGVjbHMpCiAgICAgICAgICAgICAgICAgICAgICAoY2FkciAoYXNzcSA6 ZG9jdW1lbnRhdGlvbiBkZWNscykpKSkKICAgICAgIChkZWNsYXJlcyAoYXNzcSAnZGVjbGFy ZSBkZWNscykpCiAgICAgICAocGFyZW50LWRlY2wgKGFzc3EgJ3BhcmVudHMgKGNkciBkZWNs YXJlcykpKQogICAgICAgKHBhcmVudHMgKGNkciBwYXJlbnQtZGVjbCkpKQogICAgKHdoZW4g cGFyZW50LWRlY2wKICAgICAgOzsgIkNvbnN1bWUiIHRoZSBgcGFyZW50cycgZGVjbGFyYXRp b24uCiAgICAgIChjbC1jYWxsZiAobGFtYmRhICh4KSAoZGVscSBwYXJlbnQtZGVjbCB4KSkg KGNkciBkZWNsYXJlcykpCiAgICAgICh3aGVuIChlcXVhbCBkZWNsYXJlcyAnKGRlY2xhcmUp KQogICAgICAgIChjbC1jYWxsZiAobGFtYmRhICh4KSAoZGVscSBkZWNsYXJlcyB4KSkgZGVj bHMpKSkKICAgIChpZiAobWVtcSBuYW1lIHBhcmVudHMpCiAgICAgICAgKGVycm9yICJUeXBl IGluIHBhcmVudHM6ICVTIiBwYXJlbnRzKSkKICAgIChhbmQgcGFyZW50cyBhcmdsaXN0CiAg ICAgICAgIChlcnJvciAiUGFyZW50cyBzcGVjaWZpZWQsIGJ1dCBhcmdsaXN0IG5vdCBlbXB0 eSIpKQogICAgYChldmFsLWFuZC1jb21waWxlIDs7Y2wtZXZhbC13aGVuIChjb21waWxlIGxv YWQgZXZhbCkKICAgICAgIDs7IEZJWE1FOiBXaGVyZSBzaG91bGQgYGNsLS10eXBlLWRlZnR5 cGUnIGdvPyAgQ3VycmVudGx5LCBjb2RlCiAgICAgICA7OyB1c2luZyBgY2wtZGVmdHlwZScg Y2FuIHVzZSAoZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUKICAgICAgIDs7ICdjbC1saWIp KSwgc28gYGNsLS10eXBlLWRlZnR5cGUnIG5lZWRzIHRvIGdvIGVpdGhlciB0bwogICAgICAg OzsgYGNsLXByZWxvYWRlZC5lbCcgb3IgaXQgc2hvdWxkIGJlIGF1dG9sb2FkZWQgZXZlbiB3 aGVuCiAgICAgICA7OyBgY2wtbGliJyBpcyBub3QgbG9hZGVkLgogICAgICAgKGNsLS10eXBl LWRlZnR5cGUgJyxuYW1lICcscGFyZW50cyAsZG9jc3RyaW5nKQogICAgICAgKGRlZmluZS1z eW1ib2wtcHJvcCAnLG5hbWUgJ2NsLWRlZnR5cGUtaGFuZGxlcgogICAgICAgICAgICAgICAg ICAgICAgICAgICAoY2wtZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs YW1iZGEgKCZjbC1kZWZzICgnKikgLEBhcmdsaXN0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAsQGRlY2xzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxAZm9ybXMp KSkpKSkKCjs7IEVuc3VyZSBlYWNoIHR5cGUgc2F0aXNmaWVzIGBlcWwnLgooZGVmdmFyIGNs LS10eXBlLXVuaXF1ZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCkKICAiUmVjb3Jk IGFuIHVuaXF1ZSB2YWx1ZSBvZiBlYWNoIHR5cGUuIikKCihkZWZ1biBjbC0tdHlwZS1lcnJv ciAodHlwZSBlcnJvcikKICAiTWFyayBUWVBFIGFzIGluLWVycm9yLCBhbmQgcmVwb3J0IHRo ZSBwcm9kdWNlZCBFUlJPUiB2YWx1ZS4iCiAgKHB1dCB0eXBlICdjbC0tdHlwZS1lcnJvciBl cnJvcikgOzsgTWFyayBUWVBFIGFzIGluLWVycm9yLgogIDs7IFRlbXBvcmFyaWx5IHJhaXNl IHRoZSByZWN1cnNpb24gbGltaXQgdG8gYXZvaWQgYW5vdGhlciByZWN1cnNpb24KICA7OyBl cnJvciB3aGlsZSByZXBvcnRpbmcgRVJST1IuCiAgKGxldCAoKG1heC1saXNwLWV2YWwtZGVw dGggKCsgODAwIG1heC1saXNwLWV2YWwtZGVwdGgpKSkKICAgICh3YXJuICAiY2wtdHlwZXMt b2YgJXMsICVzIiB0eXBlIChlcnJvci1tZXNzYWdlLXN0cmluZyBlcnJvcikpKQogIG5pbCkK Cjs7IEZJWE1FOiBgY2wtdHlwZXMtb2YnIENQVSBjb3N0IGlzIHByb3BvcnRpb25hbCB0byB0 aGUgbnVtYmVyIG9mIHR5cGVzCjs7IGRlZmluZWQgd2l0aCBgY2wtZGVmdHlwZScsIHNvIHRo ZSBtb3JlIHBvcHVsYXIgaXQgZ2V0cywgdGhlIHNsb3dlcgo7OyBpdCBiZWNvbWVzLiAgQW5k IG9mIGNvdXJzZSwgdGhlIGNvc3Qgb2YgZWFjaCB0eXBlIGNoZWNrIGlzCjs7IHVuYm91bmRl ZCwgc28gYSBzaW5nbGUgImV4cGVuc2l2ZSIgdHlwZSBjYW4gc2xvdyBldmVyeXRoaW5nIGRv d24KOzsgZnVydGhlci4KOzsKOzsgVGhlIHVzdWFsIGRpc3BhdGNoIGlzCjs7Cjs7ICAgKGxh bWJkYSAoYXJnICZyZXN0IGFyZ3MpCjs7ICAgICAobGV0ICgoZiAoZ2V0aGFzaCAoY2wtdHlw ZW9mIGFyZykgcHJlY29tcHV0ZWQtbWV0aG9kcy10YWJsZSkpKQo7OyAgICAgICAoaWYgZgo7 OyAgICAgICAgICAgKGFwcGx5IGYgYXJnIGFyZ3MpCjs7ICAgICAgICAgOzsgU2xvdyBjYXNl IHdoZW4gZW5jb3VudGVyaW5nIGEgbmV3IHR5cGUKOzsgICAgICAgICAuLi4pKSkKOzsKOzsg d2hlcmUgb2Z0ZW4gdGhlIG1vc3QgZXhwZW5zaXZlIHBhcnQgaXMgYCZyZXN0JyAod2hpY2gg aGFzIHRvCjs7IGFsbG9jYXRlIGEgbGlzdCBmb3IgdGhvc2UgcmVtYWluaW5nIGFyZ3VtZW50 cyksCjs7Cjs7IFNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgcmVwbGFjaW5nCjs7Cjs7ICAgJnJl c3QgKyBjbC10eXBlLW9mICsgZ2V0aGFzaCArIGlmICsgYXBwbHkKOzsKOzsgd2l0aCBhIGZ1 bmN0aW9uIHRoYXQgbG9vcHMgb3ZlciBOIHR5cGVzLCBjYWxsaW5nIGBjbC10eXBlcCcgb24g ZWFjaAo7OyBvbmUgb2YgdGhlbSAoYGNsLXR5cGVwJyBpdHNlbGYgYmVpbmcgYSByZWN1cnNp dmUgZnVuY3Rpb24gdGhhdAo7OyBiYXNpY2FsbHkgaW50ZXJwcmV0cyB0aGUgdHlwZSBsYW5n dWFnZSkuICBUaGlzIGlzIGdvaW5nIHRvIHNsb3cKOzsgZG93biBkaXNwYXRjaCB2ZXJ5IHNp Z25pZmljYW50bHkgZm9yIHRob3NlIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQKOzsgaGF2ZSBh IG1ldGhvZCB0aGF0IGRpc3BhdGNoZXMgb24gYSB1c2VyIGRlZmluZWQgdHlwZSwgY29tcGFy ZWQgdG8KOzsgdGhvc2UgdGhhdCBkb24ndC4KOzsKOzsgQSBwb3NzaWJsZSBmdXJ0aGVyIGlt cHJvdmVtZW50Ogo7Owo7OyAtIGJhc2VkIG9uIHRoZSBQQVJFTlRTIGRlY2xhcmF0aW9uLCBj cmVhdGUgYSBtYXAgZnJvbSBidWlsdGluLXR5cGUKOzsgICB0byB0aGUgc2V0IG9mIGNsLXR5 cGVzIHRoYXQgaGF2ZSB0aGF0IGJ1aWx0aW4tdHlwZSBhbW9uZyB0aGVpcgo7OyAgIHBhcmVu dHMuICBUaGF0IHByZXN1bWVzIHNvbWUgUEFSRU5UUyBpbmNsdWRlIHNvbWUgYnVpbHRpbi10 eXBlcywKOzsgICBvYnZpb3VzbHkgb3RoZXJ3aXNlIHRoZSBtYXAgd2lsbCBiZSB0cml2aWFs IHdpdGggYWxsIGNsLXR5cGVzCjs7ICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBgdCcgImR1bW15 IHBhcmVudCIuICBbIFdlIGNvdWxkIGV2ZW4gZ28gY3JhenkKOzsgICBhbmQgdHJ5IGFuZCBn dWVzcyBQQVJFTlRTIHdoZW4gbm90IHByb3ZpZGVkLCBieSBhbmFseXppbmcgdGhlCjs7ICAg dHlwZSdzIGRlZmluaXRpb24uIF0KOzsKOzsgLSBpbiBgY2wtdHlwZXMtb2YnIHN0YXJ0IGJ5 IGNhbGxpbmcgYGNsLXR5cGUtb2YnLCB0aGVuIHVzZSB0aGUgbWFwCjs7ICAgdG8gZmluZCB3 aGljaCBjbC10eXBlcyBtYXkgbmVlZCB0byBiZSBjaGVja2VkLgo7OwooZGVmdW4gY2wtdHlw ZXMtb2YgKG9iamVjdCkKICAiUmV0dXJuIHRoZSB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0by4K UmV0dXJuIGFuIHVuaXF1ZSBsaXN0IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCBvcmRl cmVkIGZyb20gdGhlCm1vc3Qgc3BlY2lmaWMgdHlwZSB0byB0aGUgbW9zdCBnZW5lcmFsLiIK ICAobGV0IChmb3VuZCkKICAgIDs7IEJ1aWxkIGEgbGlzdCBvZiBhbGwgdHlwZXMgT0JKRUNU IGJlbG9uZ3MgdG8uCiAgICAoZG9saXN0ICh0eXBlIGNsLS10eXBlLWxpc3QpCiAgICAgIChh bmQKICAgICAgIDs7IFNraXAgdHlwZSwgaWYgaXQgcHJldmlvdXNseSBwcm9kdWNlZCBhbiBl cnJvci4KICAgICAgIChudWxsIChnZXQgdHlwZSAnY2wtLXR5cGUtZXJyb3IpKQogICAgICAg OzsgU2tpcCB0eXBlIG5vdCBkZWZpbmVkIGJ5IGBjbC1kZWZ0eXBlJy4KICAgICAgIChjbC10 eXBlLWNsYXNzLXAgKGNsLS1maW5kLWNsYXNzIHR5cGUpKQogICAgICAgOzsgSWYgQkFSIGlz IGRlY2xhcmVkIGFzIGEgcGFyZW50IG9mIEZPTyBhbmQgYGNsLXR5cGVzLW9mJyBoYXMKICAg ICAgIDs7IGFscmVhZHkgZGVjaWRlZCB0aGF0IHRoZSB2YWx1ZSBpcyBvZiB0eXBlIEZPTywg dGhlbiB3ZQogICAgICAgOzsgYWxyZWFkeSBrbm93IEJBUiB3aWxsIGJlIGluIHRoZSBvdXRw dXQgYW55d2F5IGFuZCB0aGVyZSdzIG5vCiAgICAgICA7OyBwb2ludCB0ZXN0aW5nIEJBUi4g IFNvLCBza2lwIHR5cGUgYWxyZWFkeSBzZWxlY3RlZCBhcyBwYXJlbnQKICAgICAgIDs7IG9m IGFub3RoZXIgdHlwZSwgYXNzdW1pbmcgdGhhdCwgbW9zdCBvZiB0aGUgdGltZSwgYGFzc3En CiAgICAgICA7OyB3aWxsIGJlIGZhc3RlciB0aGFuIGBjbC10eXBlcCcuCiAgICAgICAobnVs bCAoYXNzcSB0eXBlIGZvdW5kKSkKICAgICAgIDs7IElmIE9CSkVDVCBpcyBvZiB0eXBlLCBh ZGQgdHlwZSB0byB0aGUgbWF0Y2hpbmcgbGlzdC4KICAgICAgIChjb25kaXRpb24tY2FzZS11 bmxlc3MtZGVidWcgZQogICAgICAgICAgIChjbC10eXBlcCBvYmplY3QgdHlwZSkKICAgICAg ICAgKGVycm9yIChjbC0tdHlwZS1lcnJvciB0eXBlIGUpKSkKICAgICAgIChwdXNoIHR5cGUg Zm91bmQpKSkKICAgIDs7IFJldHVybiBhbiB1bmlxdWUgdmFsdWUgb2YgdGhlIGxpc3Qgb2Yg dHlwZXMgT0JKRUNUIGJlbG9uZ3MgdG8sCiAgICA7OyB3aGljaCBpcyBhbHNvIHRoZSBsaXN0 IG9mIHNwZWNpZmllcnMgZm9yIE9CSkVDVC4KICAgICh3aXRoLW1lbW9pemF0aW9uIChnZXRo YXNoIGZvdW5kIGNsLS10eXBlLXVuaXF1ZSkKICAgICAgOzsgQ29tcHV0ZSBhIERBRyBmcm9t IHRoZSBjb2xsZWN0ZWQgbWF0Y2hpbmcgdHlwZXMuCiAgICAgIChsZXQgKGRhZykKICAgICAg ICAoZG9saXN0ICh0eXBlIGZvdW5kKQogICAgICAgICAgKGxldCAoKHBsIChjbC0tdHlwZS1w YXJlbnRzIHR5cGUpKSkKICAgICAgICAgICAgKHdoaWxlIHBsCiAgICAgICAgICAgICAgKHB1 c2ggcGwgZGFnKQogICAgICAgICAgICAgIChzZXRxIHBsIChjZHIgcGwpKSkpKQogICAgICAg IDs7IENvbXB1dGUgYW4gb3JkZXJlZCBsaXN0IG9mIHR5cGVzIGZyb20gdGhlIERBRy4KICAg ICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cwogICAgICAgICAobnJldmVyc2UgKGNvbnMgKGNs LS10eXBlLXBhcmVudHMgKGNsLXR5cGUtb2Ygb2JqZWN0KSkKICAgICAgICAgICAgICAgICAg ICAgICAgIGRhZykpKSkpKSkKCjs7OyBNZXRob2QgZGlzcGF0Y2hpbmcKOzsKKGNsLWdlbmVy aWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS10eXBlLWdlbmVyYWxpemVyCiAgMjAgOzsgInR5 cGVvZiIgPCAiY2wtdHlwZXMtb2YiIDwgImhlYWQiIHByaW9yaXR5CiAgKGxhbWJkYSAob2Jq ICZyZXN0IF8pIGAoY2wtdHlwZXMtb2YgLG9iaikpCiAgKGxhbWJkYSAodGFnICZyZXN0IF8p IChpZiAoY29uc3AgdGFnKSB0YWcpKSkKCihjbC1kZWZtZXRob2QgY2wtZ2VuZXJpYy1nZW5l cmFsaXplcnMgOmV4dHJhICJjbC10eXBlcy1vZiIgKHR5cGUpCiAgIlN1cHBvcnQgZm9yIGRp c3BhdGNoIG9uIGNsLXR5cGVzLiIKICAoaWYgKGNsLS10eXBlLXAgdHlwZSkKICAgICAgKGxp c3QgY2wtLXR5cGUtZ2VuZXJhbGl6ZXIpCiAgICAoY2wtY2FsbC1uZXh0LW1ldGhvZCkpKQoK KHByb3ZpZGUgJ2NsLXR5cGVzKQoKOzs7IGNsLXR5cGVzLmVsIGVuZHMgaGVyZQo= --------------wX7ISlduev3upoIOjvky26gv--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 28 Apr 2025 21:45:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 28 17:45:23 2025
Received: from localhost ([127.0.0.1]:37380 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u9WHu-0002l3-GU
for submit <at> debbugs.gnu.org; Mon, 28 Apr 2025 17:45:23 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:54729)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u9WHg-0002cV-5D
for 77725 <at> debbugs.gnu.org; Mon, 28 Apr 2025 17:45:13 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 8B727442895;
Mon, 28 Apr 2025 17:44:57 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745876690;
bh=jW4Hc+jcpsO+RgPkPzYgVz+Eth2Xm920adTwRPPlmIs=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=o7MWMNEQJ2D0z91X3LNtzTrTtlgycpUlkU0lsXiENhR90bFKJlNscuxFywCylUvPd
IBvu6cEO7OeLpX+lKaaeiqUARtSfdRRuWM1Z1xtfKFEnUlmLzhsuJ3MyosYj6oQxD1
xSf/Bddv63040kMc3g/vOdXWTCsNqvwmggVmDNQFNYPvG/Zfm1aGxlOZqAbgcynjjJ
ktnZPttyTgxfRZ0MctZGdae35Y1Si5g7j7tulBxrLDpOu7OLo765NkO3PrHw2LoE3d
gVyqHq1K1M15FuPTKFdqVm2qKDfBOEWyHDFLlrRoJLAVxiDhgTJ5EoPHo3wbBOP5Zy
13j3nbdsdfN8Q==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id BDCF444274B;
Mon, 28 Apr 2025 17:44:50 -0400 (EDT)
Received: from asado (unknown [23.233.149.155])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 99A0E12063D;
Mon, 28 Apr 2025 17:44:50 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
Message-ID: <jwv1ptc2cfe.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
<jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
<8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN>
Date: Mon, 28 Apr 2025 17:44:49 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.214 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
--=-=-=
Content-Type: text/plain
> I quite like this approach, where it's not `cl-types-of', but each type
> that bears responsibility for its implementation.
Usually, I like to solve a problem centrally so it's done once and for
all, but here the problem is that breaking recursion is tricky business
which may need to be done in different ways in different cases, and on
top of that it's a fairly rare need, so I think in this case dumping the
responsibility onto those rare users of circularity in types is the
right tradeoff.
> So, if I understand correctly, your recommendation is to not try to solve
> recursion (or other) problems in `cl-types-of' at all, but rather at the
> level of each type's definition, and to let ill-defined types possibly
> cause errors?
Basically, yes.
> The only point that still bothers me is not protecting `cl-types-of' from
> errors due to ill-defined types. This is particularly true because this
> can impact the entire Emacs session if certain methods are prevented from
> working, such as those involved in the display process (I use such methods
> based on `cl-deftype' for example, in my own alternative implementation of
> icons and tab-line).
Fair enough.
I pushed your new code to the `scratch/cl-types` branch in `emacs.git`.
I haven't integrated it into the other CL-Lib files yet.
See patch below for comments on your code.
Stefan
--=-=-=
Content-Type: text/x-diff
Content-Disposition: inline; filename=cl-types.patch
diff --git a/lisp/emacs-lisp/cl-types.el b/lisp/emacs-lisp/cl-types.el
index 0a384e09d79..830acb1ff0c 100644
--- a/lisp/emacs-lisp/cl-types.el
+++ b/lisp/emacs-lisp/cl-types.el
@@ -46,12 +46,13 @@ cl--type-p
That is, a type of class `cl-type-class'."
(and (symbolp object) (cl-type-class-p (cl--find-class object))))
-(defmacro cl--type-parents (name)
+(defmacro cl--type-parents (name) ;FIXME: Make it a `defun' or `defsubst'!
"Get parents of type with NAME.
NAME is a symbol representing a type."
`(cl--class-allparents (cl--find-class ,name)))
(defun cl--type-children (name)
+ ;; FIXME: Isn't that he same as `cl--class-children'?
"Get children of the type with NAME.
NAME is a symbol representing a type.
Return a possibly empty list of types."
@@ -82,6 +83,7 @@ cl--type-undefine
(setq cl--type-list (delq name cl--type-list)))
(defun cl--type-deftype (name parents &optional docstring)
+ ;; FIXME: Should we also receive the arglist?
"Generalize type with NAME for method dispatching.
PARENTS is a list of types NAME is a subtype of, or nil.
DOCSTRING is an optional documentation string."
@@ -95,8 +97,13 @@ cl--type-deftype
(error "Type generalized, but doesn't exist"))
(or recorded (error "Type exists, but not generalized"))
(or (cl-type-class-p class)
+ ;; FIXME: We have some uses `cl-deftype' in Emacs that
+ ;; "complement" another declaration of the same type, so
+ ;; maybe we should turn this into a warning (and not overwrite
+ ;; the `cl--find-class' in that case)?
(error "Type in another class: %S" (type-of class))))
(if (memq name parents)
+ ;; FIXME: This test should be performed in the macro not here.
(error "Type in parents: %S" parents))
;; Setup a type descriptor for NAME.
(setf (cl--find-class name)
@@ -110,12 +117,21 @@ cl--type-deftype
;; all those an object belongs to, sorted from the most
;; specific type to the more general type. So, keep the
;; global list in this order.
+ ;; FIXME: This global operation is a bit worrisome, because it
+ ;; scales poorly with the number of types. I guess it's OK
+ ;; for now because `cl-deftype' is not very popular, but it'll
+ ;; probably need to be replaced at some point. Maybe we
+ ;; should simply require that the parents be defined already,
+ ;; then we can just `push' the new type, knowing it's in
+ ;; topological order by construction.
(setq cl--type-list
(merge-ordered-lists
(cl--type-dag)
(lambda (_) (error "Invalid dependency graph")))))
(error
;; On error restore previous data.
+ ;; FIXME: `cl--type-list' has not been changed yet at this point, AFAIK,
+ ;; so restoring with `oldtlist' is always redundant.
(setq cl--type-list oldtlist)
(setf (symbol-plist name) oldplist)
(error (format "Define %S failed: %s"
@@ -155,16 +171,27 @@ cl-deftype2
((`(,decls . ,forms) (macroexp-parse-body body))
(docstring (if (stringp (car decls))
(car decls)
- (cadr (assq :documentation decls))))
- (parents (cdr (assq 'parents (cdr (assq 'declare decls))))))
+ (cadr (assq :documentation decls))))
+ (declares (assq 'declare decls))
+ (parent-decl (assq 'parents (cdr declares)))
+ (parents (cdr parent-decl)))
+ (when parent-decl
+ ;; "Consume" the `parents' declaration.
+ (cl-callf (lambda (x) (delq parent-decl x)) (cdr declares))
+ (when (equal declares '(declare))
+ (cl-callf (lambda (x) (delq declares x)) decls)))
(and parents arglist
(error "Parents specified, but arglist not empty"))
- (if docstring (setq forms (cons docstring forms)))
`(eval-and-compile ;;cl-eval-when (compile load eval)
+ ;; FIXME: Where should `cl--type-deftype' go? Currently, code
+ ;; using `cl-deftype' can use (eval-when-compile (require 'cl-lib)),
+ ;; so `cl--type-deftype' needs to go either to `cl-preloaded.el'
+ ;; or it should be autoloaded even when `cl-lib' is not loaded.
(cl--type-deftype ',name ',parents ,docstring)
(define-symbol-prop ',name 'cl-deftype-handler
(cl-function
(lambda (&cl-defs ('*) ,@arglist)
+ ,@decls
,@forms))))))
;; Ensure each type satisfies `eql'.
@@ -226,6 +253,9 @@ cl-types-of
"Return the types OBJECT belongs to.
Return an unique list of types OBJECT belongs to, ordered from the
most specific type to the most general."
+ ;; FIXME: The current implementation of `cl--type-parents' is
+ ;; moderately expensive, so we should probably avoid calling it
+ ;; before we do the `gethash'.
(let ((found (list (cl--type-parents (cl-type-of object)))))
;; Build a DAG of all types OBJECT belongs to.
(dolist (type cl--type-list)
@@ -242,6 +272,9 @@ cl-types-of
;; will be faster than `cl-typep'.
(null (assq type found))
;; If OBJECT is of type, add type and its parents to the DAG.
+ ;; FIXME: This `condition-case' will make it harder to get a backtrace
+ ;; to debug the error in the type definition. So maybe
+ ;; use `condition-case-unless-debug'.
(condition-case e
(cl-typep object type)
(error (cl--type-error type e)))
@@ -254,11 +287,10 @@ cl-types-of
(push pl found)
(setq pl (cdr pl))))))
;; Compute an ordered list of types from the collected DAG.
- (setq found (merge-ordered-lists found))
;; Return an unique value of this list of types, which is also the
;; list of specifiers for this type.
(with-memoization (gethash found cl--type-unique)
- found)))
+ (merge-ordered-lists found))))
;;; Method dispatching
;;
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 28 Apr 2025 10:56:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 28 06:56:50 2025 Received: from localhost ([127.0.0.1]:54501 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u9MAL-0003qH-Ap for submit <at> debbugs.gnu.org; Mon, 28 Apr 2025 06:56:50 -0400 Received: from smtp-73.smtpout.orange.fr ([80.12.242.73]:39753 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u9MAF-0003pz-Av for 77725 <at> debbugs.gnu.org; Mon, 28 Apr 2025 06:56:47 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 9MA7u5rBB5k819MAAuffQ2; Mon, 28 Apr 2025 12:56:41 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745837801; bh=naXhKEH5u/qmLNS5YEi6v6kda32w4lOtwMpJs0eu1bQ=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=DjQ8x7++PP9Mpu+1OkLxnSscouV/IxPJfSMHBmIL2IHFXFx+dsI1nZiCbwStXBcVI yHgy03bWWFpqN7hgzCAA1GFz53NPZduUWBdMebihKjUoOO7X9Rcq8adyWBGL9gZ4a0 Vuy4TQ408zQJqBTnpSHNGocJKE2uXsZaU18v+Gh8QbcIA78qY1ojoemn5q/+Z6uAky u/pENM0gASwAgZwbc4cnMIMl6GGX14S5fGBK/EGEEmTJEK+U+2U5YloXkIOhr5E0zS Pf+d2QDqCU5ii4Zlcph3Ua/iSBgBj538cI5lfzCtGzxAdOPtz7IidcwQg9mam14+KA RY8M/KV91qwEw== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Mon, 28 Apr 2025 12:56:41 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------IFhIYKTIZdYTv2nFCBYlduCU" Message-ID: <86086316-6416-47c0-b7b5-42b84c25c5de@HIDDEN> Date: Mon, 28 Apr 2025 12:56:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? From: David Ponce <da_vid@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> Content-Language: fr, en-US In-Reply-To: <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------IFhIYKTIZdYTv2nFCBYlduCU Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025-04-27 17:31, David Ponce wrote: > On 2025-04-27 14:59, Stefan Monnier wrote: >>>> Exactly, I fully agree, the question is "how to keep track of the >>>> children"? >>> >>> You could approximate it with `after-load-functions`. Or, with the >>> proposed patch, you could use an advice on `cl--type-deftype`. Once you >>> do that, you won't need to break circularity in `cl-types-of`. >> >> I think what I was trying to say all along is: >> the circularity you're trying to break doesn't come from `cl-deftype` or >> `cl-types-of` but from your impredicative definition of `T1`. >> So it'd be best to fix it there: >> >> (cl-deftype T1 () >> `(satisfies ,(lambda (o) (memq 'T1 (cl-types-of o))))) >> >> => >> >> (defvar my-pending-T1-check (make-symbol "void")) >> >> (cl-deftype T1 () >> `(satisfies >> ,(lambda (o) >> (and (not (eq o my-pending-T1-check)) >> (let ((my-pending-T1-check o)) >> (memq 'T1 (cl-types-of o))))))) >> > > Hi Stefan, > > I quite like this approach, where it's not `cl-types-of', but each type > that bears responsibility for its implementation. > > So, if I understand correctly, your recommendation is to not try to solve > recursion (or other) problems in `cl-types-of' at all, but rather at the > level of each type's definition, and to let ill-defined types possibly > cause errors? > > The only point that still bothers me is not protecting `cl-types-of' from > errors due to ill-defined types. This is particularly true because this > can impact the entire Emacs session if certain methods are prevented from > working, such as those involved in the display process (I use such methods > based on `cl-deftype' for example, in my own alternative implementation of > icons and tab-line). > > If you agree I will update cl-types.el accordingly and dispatch it in > the existing libraries according to your previous proposal... to see what > happens ;-) > > Thanks again for being so helpful! > > David Please find attached a new version of cl-types.el, where any attempt to work around type definition errors with `cl-types-of' has been removed. If such an error occurs, it is now clearly signaled by `warn', and the affected type is marked as "in error" and ignored until its next redefinition or deletion. WDYT? --------------IFhIYKTIZdYTv2nFCBYlduCU Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types.el" Content-Disposition: attachment; filename="cl-types.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBEYXRhIHR5cGVzIGRlZmluZWQg YnkgYGNsLWRlZnR5cGUnIGFyZSBub3cgcmVjb2duaXplZCBhcyBhcmd1bWVudAo7OyB0eXBl cyBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbnMgbWV0aG9kcy4KCjs7IFdpbGwg YmUgcmVtb3ZlZCB3aGVuIGluY2x1ZGVkIGluIGNsLWxpYi4KKHJlcXVpcmUgJ2NsLWxpYikK KGV2YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdjbC1tYWNzKSkgIDtGb3IgY2wtLWZpbmQt Y2xhc3MuCgo7OyBFeHRlbmQgYGNsLWRlZnR5cGUnIHRvIGRlZmluZSBkYXRhIHR5cGVzIHdo aWNoIGFyZSBhbHNvIHZhbGlkCjs7IGFyZ3VtZW50IHR5cGVzIGZvciBkaXNwYXRjaGluZyBn ZW5lcmljIGZ1bmN0aW9uIG1ldGhvZHMgKHNlZSBhbHNvCjs7IDxodHRwczovL2RlYmJ1Z3Mu Z251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9Nzc3MjU+KS4KOzsKOzsgVGhlIG1haW4g ZW50cnkgcG9pbnRzIGFyZToKOzsKOzsgLSBgY2wtZGVmdHlwZScsIHRoYXQgZGVmaW5lcyBu ZXcgZGF0YSB0eXBlcy4KOzsKOzsgLSBgY2wtdHlwZXMtb2YnLCB0aGF0IHJldHVybnMgdGhl IHR5cGVzIGFuIG9iamVjdCBiZWxvbmdzIHRvLgoKKGRlZnZhciBjbC0tdHlwZS1saXN0IG5p bAogICJMaXN0IG9mIGRlZmluZWQgdHlwZXMgdG8gbG9va3VwIGZvciBtZXRob2QgZGlzcGF0 Y2hpbmcuIikKCjs7IEZJWE1FOiBUaGUgYGNsLWRlZnR5cGUtaGFuZGxlcicgcHJvcGVydHkg c2hvdWxkIGFyZ3VhYmx5IGJlIHR1cm5lZAo7OyBpbnRvIGEgZmllbGQgb2YgdGhpcyBzdHJ1 Y3QgKGJ1dCBpdCBoYXMgcGVyZm9ybWFuY2UgYW5kCjs7IGNvbXBhdGliaWxpdHkgaW1wbGlj YXRpb25zLCBzbyBsZXQncyBub3QgbWFrZSB0aGF0IGNoYW5nZSBmb3Igbm93KS4KKGNsLWRl ZnN0cnVjdAogICAgKGNsLXR5cGUtY2xhc3MKICAgICAoOmluY2x1ZGUgY2wtLWNsYXNzKQog ICAgICg6bm9pbmxpbmUgdCkKICAgICAoOmNvbnN0cnVjdG9yIG5pbCkKICAgICAoOmNvbnN0 cnVjdG9yIGNsLS10eXBlLWNsYXNzLW1ha2UKICAgICAgICAgICAgICAgICAgIChuYW1lCiAg ICAgICAgICAgICAgICAgICAgZG9jc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgcGFyZW50 LXR5cGVzCiAgICAgICAgICAgICAgICAgICAgJmF1eCAocGFyZW50cwogICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJk YSAodHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGNsLS1maW5kLWNs YXNzIHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAiVW5r bm93biB0eXBlOiAlUyIgdHlwZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJl bnQtdHlwZXMpKSkpCiAgICAgKDpjb3BpZXIgbmlsKSkKICAiVHlwZSBkZXNjcmlwdG9ycyBm b3IgdHlwZXMgZGVmaW5lZCBieSBgY2wtZGVmdHlwZScuIikKCihkZWZ1biBjbC0tdHlwZS1w IChvYmplY3QpCiAgIlJldHVybiBub24tbmlsIGlmIE9CSkVDVCBpcyBhIHVzZWQgZGVmaW5l ZCB0eXBlLgpUaGF0IGlzLCBhIHR5cGUgb2YgY2xhc3MgYGNsLXR5cGUtY2xhc3MnLiIKICAo YW5kIChzeW1ib2xwIG9iamVjdCkgKGNsLXR5cGUtY2xhc3MtcCAoY2wtLWZpbmQtY2xhc3Mg b2JqZWN0KSkpKQoKKGRlZm1hY3JvIGNsLS10eXBlLXBhcmVudHMgKG5hbWUpCiAgIkdldCBw YXJlbnRzIG9mIHR5cGUgd2l0aCBOQU1FLgpOQU1FIGlzIGEgc3ltYm9sIHJlcHJlc2VudGlu ZyBhIHR5cGUuIgogIGAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzICxu YW1lKSkpCgooZGVmdW4gY2wtLXR5cGUtY2hpbGRyZW4gKG5hbWUpCiAgIkdldCBjaGlsZHJl biBvZiB0aGUgdHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYSBzeW1ib2wgcmVwcmVzZW50aW5n IGEgdHlwZS4KUmV0dXJuIGEgcG9zc2libHkgZW1wdHkgbGlzdCBvZiB0eXBlcy4iCiAgKGNs LWNoZWNrLXR5cGUgbmFtZSAoc2F0aXNmaWVzIGNsLS10eXBlLXApKQogIChsZXQgKGNoaWxk cmVuKQogICAgKGRvbGlzdCAoZWx0IGNsLS10eXBlLWxpc3QpCiAgICAgIChvciAoZXEgbmFt ZSBlbHQpCiAgICAgICAgICAoaWYgKG1lbXEgbmFtZSAoY2wtLXR5cGUtcGFyZW50cyBlbHQp KQogICAgICAgICAgICAgIChwdXNoIGVsdCBjaGlsZHJlbikpKSkKICAgIGNoaWxkcmVuKSkK CihkZWZ1biBjbC0tdHlwZS1kYWcgKCkKICAiUmV0dXJuIGEgREFHIGZyb20gdGhlIGxpc3Qg b2YgZGVmaW5lZCB0eXBlcy4iCiAgKG1hcGNhciAobGFtYmRhICh0eXBlKSAoY2wtLXR5cGUt cGFyZW50cyB0eXBlKSkgY2wtLXR5cGUtbGlzdCkpCgo7OyBLZWVwIGl0IGZvciBub3csIGZv ciB0ZXN0aW5nLgooZGVmdW4gY2wtLXR5cGUtdW5kZWZpbmUgKG5hbWUpCiAgIlJlbW92ZSB0 aGUgZGVmaW5pdGlvbnMgb2YgdHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYW4gdW5xdW90ZWQg c3ltYm9sIHJlcHJlc2VudGluZyBhIHR5cGUuClNpZ25hbCBhbiBlcnJvciBpZiBvdGhlciB0 eXBlcyBpbmhlcml0IGZyb20gTkFNRS4iCiAgKGRlY2xhcmUtZnVuY3Rpb24gY2wtcmVtcHJv cCAiY2wtZXh0cmEiIChzeW1ib2wgcHJvcG5hbWUpKQogIChjbC1jaGVjay10eXBlIG5hbWUg KHNhdGlzZmllcyBjbC0tdHlwZS1wKSkKICAod2hlbi1sZXQqICgoY2hpbGRyZW4gKGFuZCAo Y2wtLXR5cGUtcCBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC0tdHlw ZS1jaGlsZHJlbiBuYW1lKSkpKQogICAgKGVycm9yICJUeXBlIGhhcyBjaGlsZHJlbjogJVMi IGNoaWxkcmVuKSkKICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tY2xhc3MpCiAgKGNsLXJlbXBy b3AgbmFtZSAnY2wtZGVmdHlwZS1oYW5kbGVyKQogIChzZXRxIGNsLS10eXBlLWxpc3QgKGRl bHEgbmFtZSBjbC0tdHlwZS1saXN0KSkpCgooZGVmdW4gY2wtLXR5cGUtZGVmdHlwZSAobmFt ZSBwYXJlbnRzICZvcHRpb25hbCBkb2NzdHJpbmcpCiAgIkdlbmVyYWxpemUgdHlwZSB3aXRo IE5BTUUgZm9yIG1ldGhvZCBkaXNwYXRjaGluZy4KUEFSRU5UUyBpcyBhIGxpc3Qgb2YgdHlw ZXMgTkFNRSBpcyBhIHN1YnR5cGUgb2YsIG9yIG5pbC4KRE9DU1RSSU5HIGlzIGFuIG9wdGlv bmFsIGRvY3VtZW50YXRpb24gc3RyaW5nLiIKICAobGV0ICgob2xkdGxpc3QgKGNvcHktc2Vx dWVuY2UgY2wtLXR5cGUtbGlzdCkpCiAgICAgICAgKG9sZHBsaXN0IChjb3B5LXNlcXVlbmNl IChzeW1ib2wtcGxpc3QgbmFtZSkpKSkKICAgIChjb25kaXRpb24tY2FzZSBlcnIKICAgICAg ICAobGV0KiAoKGNsYXNzIChjbC0tZmluZC1jbGFzcyBuYW1lKSkKICAgICAgICAgICAgICAg KHJlY29yZGVkIChtZW1xIG5hbWUgY2wtLXR5cGUtbGlzdCkpKQogICAgICAgICAgKGlmIChu dWxsIGNsYXNzKQogICAgICAgICAgICAgIChvciAobnVsbCByZWNvcmRlZCkKICAgICAgICAg ICAgICAgICAgKGVycm9yICJUeXBlIGdlbmVyYWxpemVkLCBidXQgZG9lc24ndCBleGlzdCIp KQogICAgICAgICAgICAob3IgcmVjb3JkZWQgKGVycm9yICJUeXBlIGV4aXN0cywgYnV0IG5v dCBnZW5lcmFsaXplZCIpKQogICAgICAgICAgICAob3IgKGNsLXR5cGUtY2xhc3MtcCBjbGFz cykKICAgICAgICAgICAgICAgIChlcnJvciAiVHlwZSBpbiBhbm90aGVyIGNsYXNzOiAlUyIg KHR5cGUtb2YgY2xhc3MpKSkpCiAgICAgICAgICAoaWYgKG1lbXEgbmFtZSBwYXJlbnRzKQog ICAgICAgICAgICAgIChlcnJvciAiVHlwZSBpbiBwYXJlbnRzOiAlUyIgcGFyZW50cykpCiAg ICAgICAgICA7OyBTZXR1cCBhIHR5cGUgZGVzY3JpcHRvciBmb3IgTkFNRS4KICAgICAgICAg IChzZXRmIChjbC0tZmluZC1jbGFzcyBuYW1lKQogICAgICAgICAgICAgICAgKGNsLS10eXBl LWNsYXNzLW1ha2UgbmFtZSBkb2NzdHJpbmcgcGFyZW50cykpCiAgICAgICAgICAoaWYgcmVj b3JkZWQKICAgICAgICAgICAgICA7OyBDbGVhciBhbnkgcHJldmlvdXMgZXJyb3IgbWFyay4K ICAgICAgICAgICAgICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tdHlwZS1lcnJvcikKICAgICAg ICAgICAgOzsgUmVjb3JkIG5ldyB0eXBlIHRvIGluY2x1ZGUgaXRzIGRlcGVuZGVuY3kgaW4g dGhlIERBRy4KICAgICAgICAgICAgKHB1c2ggbmFtZSBjbC0tdHlwZS1saXN0KSkKICAgICAg ICAgIDs7IGBjbC10eXBlcy1vZicgaXRlcmF0ZXMgdGhyb3VnaCBhbGwga25vd24gdHlwZXMg dG8gY29sbGVjdAogICAgICAgICAgOzsgYWxsIHRob3NlIGFuIG9iamVjdCBiZWxvbmdzIHRv LCBzb3J0ZWQgZnJvbSB0aGUgbW9zdAogICAgICAgICAgOzsgc3BlY2lmaWMgdHlwZSB0byB0 aGUgbW9yZSBnZW5lcmFsIHR5cGUuICBTbywga2VlcCB0aGUKICAgICAgICAgIDs7IGdsb2Jh bCBsaXN0IGluIHRoaXMgb3JkZXIuCiAgICAgICAgICAoc2V0cSBjbC0tdHlwZS1saXN0CiAg ICAgICAgICAgICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cwogICAgICAgICAgICAgICAgIChj bC0tdHlwZS1kYWcpCiAgICAgICAgICAgICAgICAgKGxhbWJkYSAoXykgKGVycm9yICJJbnZh bGlkIGRlcGVuZGVuY3kgZ3JhcGgiKSkpKSkKICAgICAgKGVycm9yCiAgICAgICA7OyBPbiBl cnJvciByZXN0b3JlIHByZXZpb3VzIGRhdGEuCiAgICAgICAoc2V0cSBjbC0tdHlwZS1saXN0 IG9sZHRsaXN0KQogICAgICAgKHNldGYgKHN5bWJvbC1wbGlzdCBuYW1lKSBvbGRwbGlzdCkK ICAgICAgIChlcnJvciAoZm9ybWF0ICJEZWZpbmUgJVMgZmFpbGVkOiAlcyIKICAgICAgICAg ICAgICAgICAgICAgIG5hbWUgKGVycm9yLW1lc3NhZ2Utc3RyaW5nIGVycikpKSkpKSkKCjs7 OyMjI2F1dG9sb2FkCihkZWZtYWNybyBjbC1kZWZ0eXBlMiAobmFtZSBhcmdsaXN0ICZyZXN0 IGJvZHkpCiAgIkRlZmluZSBOQU1FIGFzIGEgbmV3IGRhdGEgdHlwZS4KVGhlIHR5cGUgTkFN RSBjYW4gdGhlbiBiZSB1c2VkIGluIGBjbC10eXBlY2FzZScsIGBjbC1jaGVjay10eXBlJywK ZXRjLiwgYW5kIGFzIGFyZ3VtZW50IHR5cGUgZm9yIGRpc3BhdGNoaW5nIGdlbmVyaWMgZnVu Y3Rpb24gbWV0aG9kcy4KCkFSR0xJU1QgaXMgYSBDb21tb24gTGlzcCBhcmd1bWVudCBsaXN0 IG9mIHRoZSBzb3J0IGFjY2VwdGVkIGJ5CmBjbC1kZWZtYWNybycuICBCT0RZIGZvcm1zIGFy ZSBldmFsdWF0ZWQgYW5kIHNob3VsZCByZXR1cm4gYSB0eXBlCnNwZWNpZmllciB0aGF0IGlz IGVxdWl2YWxlbnQgdG8gdGhlIHR5cGUgKHNlZSB0aGUgSW5mbyBub2RlIGAoY2wpIFR5cGUK UHJlZGljYXRlcycgaW4gdGhlIEdOVSBFbWFjcyBDb21tb24gTGlzcCBFbXVsYXRpb24gbWFu dWFsKS4KCklmIHRoZXJlIGlzIGEgYGRlY2xhcmUnIGZvcm0gaW4gQk9EWSwgdGhlIHNwZWMg KHBhcmVudHMgUEFSRU5UUykgaXMKcmVjb2duaXplZCB0byBzcGVjaWZ5IGEgbGlzdCBvZiB0 eXBlcyBOQU1FIGlzIGEgc3VidHlwZSBvZi4gIEZvcgppbnN0YW5jZToKCiAgKGNsLWRlZnR5 cGUyIHVuc2lnbmVkLWJ5dGUgKCZvcHRpb25hbCBiaXRzKQogICAgXCJVbnNpZ25lZCBpbnRl Z2VyLlwiCiAgICAobGlzdCBcXD0naW50ZWdlciAwIChpZiAoZXEgYml0cyBcXD0nKikgYml0 cyAoMS0gKGFzaCAxIGJpdHMpKSkpKQoKICAoY2wtZGVmdHlwZTIgdW5zaWduZWQtOGJpdHMg KCkKICAgIFwiVW5zaWduZWQgOC1iaXRzIGludGVnZXIuXCIKICAgIChkZWNsYXJlIChwYXJl bnRzIHVuc2lnbmVkLWJ5dGUpKQogICAgXFw9Jyh1bnNpZ25lZC1ieXRlIDgpKQoKVGhlIGxp c3Qgb2YgUEFSRU5UUyB0eXBlcyBkZXRlcm1pbmVzIHRoZSBvcmRlciBvZiBtZXRob2RzIGlu dm9jYXRpb24sCmFuZCBtaXNzaW5nIFBBUkVOVFMgbWF5IGNhdXNlIGluY29ycmVjdCBvcmRl cmluZyBvZiBtZXRob2RzLCB3aGlsZQpleHRyYW5lb3VzIFBBUkVOVFMgbWF5IGNhdXNlIHVz ZSBvZiBleHRyYW5lb3VzIG1ldGhvZHMuCgpJZiBQQVJFTlRTIGlzIG5vbi1uaWwsIEFSR0xJ U1QgbXVzdCBiZSBuaWwuIgogIChkZWNsYXJlIChkZWJ1ZyBjbC1kZWZtYWNybykgKGRvYy1z dHJpbmcgMykgKGluZGVudCAyKSkKICAocGNhc2UtbGV0KgogICAgICAoKGAoLGRlY2xzIC4g LGZvcm1zKSAobWFjcm9leHAtcGFyc2UtYm9keSBib2R5KSkKICAgICAgIChkb2NzdHJpbmcg KGlmIChzdHJpbmdwIChjYXIgZGVjbHMpKQogICAgICAgICAgICAgICAgICAgICAgKGNhciBk ZWNscykKICAgICAgICAgICAgICAgICAgICAoY2FkciAoYXNzcSA6ZG9jdW1lbnRhdGlvbiBk ZWNscykpKSkKICAgICAgIChwYXJlbnRzIChjZHIgKGFzc3EgJ3BhcmVudHMgKGNkciAoYXNz cSAnZGVjbGFyZSBkZWNscykpKSkpKQogICAgKGFuZCBwYXJlbnRzIGFyZ2xpc3QKICAgICAg ICAgKGVycm9yICJQYXJlbnRzIHNwZWNpZmllZCwgYnV0IGFyZ2xpc3Qgbm90IGVtcHR5Iikp CiAgICAoaWYgZG9jc3RyaW5nIChzZXRxIGZvcm1zIChjb25zIGRvY3N0cmluZyBmb3Jtcykp KQogICAgYChldmFsLWFuZC1jb21waWxlIDs7Y2wtZXZhbC13aGVuIChjb21waWxlIGxvYWQg ZXZhbCkKICAgICAgIChjbC0tdHlwZS1kZWZ0eXBlICcsbmFtZSAnLHBhcmVudHMgLGRvY3N0 cmluZykKICAgICAgIChkZWZpbmUtc3ltYm9sLXByb3AgJyxuYW1lICdjbC1kZWZ0eXBlLWhh bmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLWZ1bmN0aW9uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgmY2wtZGVmcyAoJyopICxAYXJnbGlzdCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLEBmb3JtcykpKSkpKQoKOzsgRW5zdXJl IGVhY2ggdHlwZSBzYXRpc2ZpZXMgYGVxbCcuCihkZWZ2YXIgY2wtLXR5cGUtdW5pcXVlICht YWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFsKQogICJSZWNvcmQgYW4gdW5pcXVlIHZhbHVl IG9mIGVhY2ggdHlwZS4iKQoKKGRlZnVuIGNsLS10eXBlLWVycm9yICh0eXBlIGVycm9yKQog ICJNYXJrIFRZUEUgYXMgaW4tZXJyb3IsIGFuZCByZXBvcnQgdGhlIHByb2R1Y2VkIEVSUk9S IHZhbHVlLiIKICAocHV0IHR5cGUgJ2NsLS10eXBlLWVycm9yIGVycm9yKSA7OyBNYXJrIFRZ UEUgYXMgaW4tZXJyb3IuCiAgOzsgVGVtcG9yYXJpbHkgcmFpc2UgdGhlIHJlY3Vyc2lvbiBs aW1pdCB0byBhdm9pZCBhbm90aGVyIHJlY3Vyc2lvbgogIDs7IGVycm9yIHdoaWxlIHJlcG9y dGluZyBFUlJPUi4KICAobGV0ICgobWF4LWxpc3AtZXZhbC1kZXB0aCAoKyA4MDAgbWF4LWxp c3AtZXZhbC1kZXB0aCkpKQogICAgKHdhcm4gICJjbC10eXBlcy1vZiAlcywgJXMiIHR5cGUg KGVycm9yLW1lc3NhZ2Utc3RyaW5nIGVycm9yKSkpCiAgbmlsKQoKOzsgRklYTUU6IGBjbC10 eXBlcy1vZicgQ1BVIGNvc3QgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIgb2YgdHlw ZXMKOzsgZGVmaW5lZCB3aXRoIGBjbC1kZWZ0eXBlJywgc28gdGhlIG1vcmUgcG9wdWxhciBp dCBnZXRzLCB0aGUgc2xvd2VyCjs7IGl0IGJlY29tZXMuICBBbmQgb2YgY291cnNlLCB0aGUg Y29zdCBvZiBlYWNoIHR5cGUgY2hlY2sgaXMKOzsgdW5ib3VuZGVkLCBzbyBhIHNpbmdsZSAi ZXhwZW5zaXZlIiB0eXBlIGNhbiBzbG93IGV2ZXJ5dGhpbmcgZG93bgo7OyBmdXJ0aGVyLgo7 Owo7OyBUaGUgdXN1YWwgZGlzcGF0Y2ggaXMKOzsKOzsgICAobGFtYmRhIChhcmcgJnJlc3Qg YXJncykKOzsgICAgIChsZXQgKChmIChnZXRoYXNoIChjbC10eXBlb2YgYXJnKSBwcmVjb21w dXRlZC1tZXRob2RzLXRhYmxlKSkpCjs7ICAgICAgIChpZiBmCjs7ICAgICAgICAgICAoYXBw bHkgZiBhcmcgYXJncykKOzsgICAgICAgICA7OyBTbG93IGNhc2Ugd2hlbiBlbmNvdW50ZXJp bmcgYSBuZXcgdHlwZQo7OyAgICAgICAgIC4uLikpKQo7Owo7OyB3aGVyZSBvZnRlbiB0aGUg bW9zdCBleHBlbnNpdmUgcGFydCBpcyBgJnJlc3QnICh3aGljaCBoYXMgdG8KOzsgYWxsb2Nh dGUgYSBsaXN0IGZvciB0aG9zZSByZW1haW5pbmcgYXJndW1lbnRzKSwKOzsKOzsgU28gd2Un cmUgdGFsa2luZyBhYm91dCByZXBsYWNpbmcKOzsKOzsgICAmcmVzdCArIGNsLXR5cGUtb2Yg KyBnZXRoYXNoICsgaWYgKyBhcHBseQo7Owo7OyB3aXRoIGEgZnVuY3Rpb24gdGhhdCBsb29w cyBvdmVyIE4gdHlwZXMsIGNhbGxpbmcgYGNsLXR5cGVwJyBvbiBlYWNoCjs7IG9uZSBvZiB0 aGVtIChgY2wtdHlwZXAnIGl0c2VsZiBiZWluZyBhIHJlY3Vyc2l2ZSBmdW5jdGlvbiB0aGF0 Cjs7IGJhc2ljYWxseSBpbnRlcnByZXRzIHRoZSB0eXBlIGxhbmd1YWdlKS4gIFRoaXMgaXMg Z29pbmcgdG8gc2xvdwo7OyBkb3duIGRpc3BhdGNoIHZlcnkgc2lnbmlmaWNhbnRseSBmb3Ig dGhvc2UgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdAo7OyBoYXZlIGEgbWV0aG9kIHRoYXQgZGlz cGF0Y2hlcyBvbiBhIHVzZXIgZGVmaW5lZCB0eXBlLCBjb21wYXJlZCB0bwo7OyB0aG9zZSB0 aGF0IGRvbid0Lgo7Owo7OyBBIHBvc3NpYmxlIGZ1cnRoZXIgaW1wcm92ZW1lbnQ6Cjs7Cjs7 IC0gYmFzZWQgb24gdGhlIFBBUkVOVFMgZGVjbGFyYXRpb24sIGNyZWF0ZSBhIG1hcCBmcm9t IGJ1aWx0aW4tdHlwZQo7OyAgIHRvIHRoZSBzZXQgb2YgY2wtdHlwZXMgdGhhdCBoYXZlIHRo YXQgYnVpbHRpbi10eXBlIGFtb25nIHRoZWlyCjs7ICAgcGFyZW50cy4gIFRoYXQgcHJlc3Vt ZXMgc29tZSBQQVJFTlRTIGluY2x1ZGUgc29tZSBidWlsdGluLXR5cGVzLAo7OyAgIG9idmlv dXNseSBvdGhlcndpc2UgdGhlIG1hcCB3aWxsIGJlIHRyaXZpYWwgd2l0aCBhbGwgY2wtdHlw ZXMKOzsgICBhc3NvY2lhdGVkIHdpdGggdGhlIGB0JyAiZHVtbXkgcGFyZW50Ii4gIFsgV2Ug Y291bGQgZXZlbiBnbyBjcmF6eQo7OyAgIGFuZCB0cnkgYW5kIGd1ZXNzIFBBUkVOVFMgd2hl biBub3QgcHJvdmlkZWQsIGJ5IGFuYWx5emluZyB0aGUKOzsgICB0eXBlJ3MgZGVmaW5pdGlv bi4gXQo7Owo7OyAtIGluIGBjbC10eXBlcy1vZicgc3RhcnQgYnkgY2FsbGluZyBgY2wtdHlw ZS1vZicsIHRoZW4gdXNlIHRoZSBtYXAKOzsgICB0byBmaW5kIHdoaWNoIGNsLXR5cGVzIG1h eSBuZWVkIHRvIGJlIGNoZWNrZWQuCjs7CihkZWZ1biBjbC10eXBlcy1vZiAob2JqZWN0KQog ICJSZXR1cm4gdGhlIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgpSZXR1cm4gYW4gdW5pcXVl IGxpc3Qgb2YgdHlwZXMgT0JKRUNUIGJlbG9uZ3MgdG8sIG9yZGVyZWQgZnJvbSB0aGUKbW9z dCBzcGVjaWZpYyB0eXBlIHRvIHRoZSBtb3N0IGdlbmVyYWwuIgogIChsZXQgKChmb3VuZCAo bGlzdCAoY2wtLXR5cGUtcGFyZW50cyAoY2wtdHlwZS1vZiBvYmplY3QpKSkpKQogICAgOzsg QnVpbGQgYSBEQUcgb2YgYWxsIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgogICAgKGRvbGlz dCAodHlwZSBjbC0tdHlwZS1saXN0KQogICAgICAoYW5kCiAgICAgICA7OyBTa2lwIHR5cGUs IGlmIGl0IHByZXZpb3VzbHkgcHJvZHVjZWQgYW4gZXJyb3IuCiAgICAgICAobnVsbCAoZ2V0 IHR5cGUgJ2NsLS10eXBlLWVycm9yKSkKICAgICAgIDs7IFNraXAgdHlwZSBub3QgZGVmaW5l ZCBieSBgY2wtZGVmdHlwZScuCiAgICAgICAoY2wtdHlwZS1jbGFzcy1wIChjbC0tZmluZC1j bGFzcyB0eXBlKSkKICAgICAgIDs7IElmIEJBUiBpcyBkZWNsYXJlZCBhcyBhIHBhcmVudCBv ZiBGT08gYW5kIGBjbC10eXBlcy1vZicgaGFzCiAgICAgICA7OyBhbHJlYWR5IGRlY2lkZWQg dGhhdCB0aGUgdmFsdWUgaXMgb2YgdHlwZSBGT08sIHRoZW4gd2UKICAgICAgIDs7IGFscmVh ZHkga25vdyBCQVIgd2lsbCBiZSBpbiB0aGUgb3V0cHV0IGFueXdheSBhbmQgdGhlcmUncyBu bwogICAgICAgOzsgcG9pbnQgdGVzdGluZyBCQVIuICBTbywgc2tpcCB0eXBlIGFscmVhZHkg c2VsZWN0ZWQgYXMgcGFyZW50CiAgICAgICA7OyBvZiBhbm90aGVyIHR5cGUsIGFzc3VtaW5n IHRoYXQsIG1vc3Qgb2YgdGhlIHRpbWUsIGBhc3NxJwogICAgICAgOzsgd2lsbCBiZSBmYXN0 ZXIgdGhhbiBgY2wtdHlwZXAnLgogICAgICAgKG51bGwgKGFzc3EgdHlwZSBmb3VuZCkpCiAg ICAgICA7OyBJZiBPQkpFQ1QgaXMgb2YgdHlwZSwgYWRkIHR5cGUgYW5kIGl0cyBwYXJlbnRz IHRvIHRoZSBEQUcuCiAgICAgICAoY29uZGl0aW9uLWNhc2UgZQogICAgICAgICAgIChjbC10 eXBlcCBvYmplY3QgdHlwZSkKICAgICAgICAgKGVycm9yIChjbC0tdHlwZS1lcnJvciB0eXBl IGUpKSkKICAgICAgIDs7IChkb2xpc3QgKHAgKGNsLS10eXBlLXBhcmVudHMgdHlwZSkpCiAg ICAgICA7OyAgIChwdXNoIChjbC0tdHlwZS1wYXJlbnRzIHApIGZvdW5kKSkKICAgICAgIDs7 IEVxdWl2YWxlbnQgdG8gdGhlIGBkb2xpc3QnIGFib3ZlLCBidXQgZmFzdGVyOiBhdm9pZCB0 bwogICAgICAgOzsgcmVjb21wdXRlIHNldmVyYWwgbGlzdHMgb2YgcGFyZW50cyB3ZSBhbHJl YWR5IGtub3cuCiAgICAgICAobGV0ICgocGwgKGNsLS10eXBlLXBhcmVudHMgdHlwZSkpKQog ICAgICAgICAod2hpbGUgcGwKICAgICAgICAgICAocHVzaCBwbCBmb3VuZCkKICAgICAgICAg ICAoc2V0cSBwbCAoY2RyIHBsKSkpKSkpCiAgICA7OyBDb21wdXRlIGFuIG9yZGVyZWQgbGlz dCBvZiB0eXBlcyBmcm9tIHRoZSBjb2xsZWN0ZWQgREFHLgogICAgKHNldHEgZm91bmQgKG1l cmdlLW9yZGVyZWQtbGlzdHMgZm91bmQpKQogICAgOzsgUmV0dXJuIGFuIHVuaXF1ZSB2YWx1 ZSBvZiB0aGlzIGxpc3Qgb2YgdHlwZXMsIHdoaWNoIGlzIGFsc28gdGhlCiAgICA7OyBsaXN0 IG9mIHNwZWNpZmllcnMgZm9yIHRoaXMgdHlwZS4KICAgICh3aXRoLW1lbW9pemF0aW9uIChn ZXRoYXNoIGZvdW5kIGNsLS10eXBlLXVuaXF1ZSkKICAgICAgZm91bmQpKSkKCjs7OyBNZXRo b2QgZGlzcGF0Y2hpbmcKOzsKKGNsLWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS10 eXBlLWdlbmVyYWxpemVyCiAgMjAgOzsgInR5cGVvZiIgPCAiY2wtdHlwZXMtb2YiIDwgImhl YWQiIHByaW9yaXR5CiAgKGxhbWJkYSAob2JqICZyZXN0IF8pIGAoY2wtdHlwZXMtb2YgLG9i aikpCiAgKGxhbWJkYSAodGFnICZyZXN0IF8pIChpZiAoY29uc3AgdGFnKSB0YWcpKSkKCihj bC1kZWZtZXRob2QgY2wtZ2VuZXJpYy1nZW5lcmFsaXplcnMgOmV4dHJhICJjbC10eXBlcy1v ZiIgKHR5cGUpCiAgIlN1cHBvcnQgZm9yIGRpc3BhdGNoIG9uIHR5cGVzLiIKICAoaWYgKGNs LS10eXBlLXAgdHlwZSkKICAgICAgKGxpc3QgY2wtLXR5cGUtZ2VuZXJhbGl6ZXIpCiAgICAo Y2wtY2FsbC1uZXh0LW1ldGhvZCkpKQoKKHByb3ZpZGUgJ2NsLXR5cGVzKQoKOzs7IGNsLXR5 cGVzLmVsIGVuZHMgaGVyZQo= --------------IFhIYKTIZdYTv2nFCBYlduCU--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 27 Apr 2025 15:31:51 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 27 11:31:51 2025 Received: from localhost ([127.0.0.1]:43669 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u93yw-00007z-Pj for submit <at> debbugs.gnu.org; Sun, 27 Apr 2025 11:31:51 -0400 Received: from smtp-17.smtpout.orange.fr ([80.12.242.17]:55195 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u93yt-00007l-Rv for 77725 <at> debbugs.gnu.org; Sun, 27 Apr 2025 11:31:49 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 93yluiUwfXKsE93ypugVdF; Sun, 27 Apr 2025 17:31:46 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745767906; bh=fVIvenwD5GLJE3nEW3Nlaj9Wz0vnrfXXz7iGUXYaq4c=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=Ium3aheJJWChKlAGAPCAGlPDqGV7JbawfGs9M1JLOVTZ+oBqHiRFueRyJUQa5wovV V3Dis3vBQKK2ZWy62Xo6HSihiQxtqMwI3u58h2i/sAQw+oE0jyQhM0lev2P96lKHRW 8gZnTQylGccdKy6R6NHej+BJLpIirg1vRiuzdgv6QkOJhSrEl6KI/0ERbzlWfygWWK wufvpBSLsMXWJDE7ZuNAJIbHGriCkNqJ8ks3D/3ugWCMUhJB1zN+QVdzuoeymL4RSY +w6a0CUEVZe69hgwP+/j+cKiJ+PG6jhYuBLr2VYjH0zGtbXrE1IsTg9ZC/bGflOy3k adE2VW+9PmGxg== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sun, 27 Apr 2025 17:31:46 +0200 X-ME-IP: 90.112.40.65 Message-ID: <8026961e-c8e6-46ee-9a0d-e4c43ed39ee0@HIDDEN> Date: Sun, 27 Apr 2025 17:31:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN> <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-27 14:59, Stefan Monnier wrote: >>> Exactly, I fully agree, the question is "how to keep track of the >>> children"? >> >> You could approximate it with `after-load-functions`. Or, with the >> proposed patch, you could use an advice on `cl--type-deftype`. Once you >> do that, you won't need to break circularity in `cl-types-of`. > > I think what I was trying to say all along is: > the circularity you're trying to break doesn't come from `cl-deftype` or > `cl-types-of` but from your impredicative definition of `T1`. > So it'd be best to fix it there: > > (cl-deftype T1 () > `(satisfies ,(lambda (o) (memq 'T1 (cl-types-of o))))) > > => > > (defvar my-pending-T1-check (make-symbol "void")) > > (cl-deftype T1 () > `(satisfies > ,(lambda (o) > (and (not (eq o my-pending-T1-check)) > (let ((my-pending-T1-check o)) > (memq 'T1 (cl-types-of o))))))) > Hi Stefan, I quite like this approach, where it's not `cl-types-of', but each type that bears responsibility for its implementation. So, if I understand correctly, your recommendation is to not try to solve recursion (or other) problems in `cl-types-of' at all, but rather at the level of each type's definition, and to let ill-defined types possibly cause errors? The only point that still bothers me is not protecting `cl-types-of' from errors due to ill-defined types. This is particularly true because this can impact the entire Emacs session if certain methods are prevented from working, such as those involved in the display process (I use such methods based on `cl-deftype' for example, in my own alternative implementation of icons and tab-line). If you agree I will update cl-types.el accordingly and dispatch it in the existing libraries according to your previous proposal... to see what happens ;-) Thanks again for being so helpful! David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 27 Apr 2025 12:59:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 27 08:59:36 2025
Received: from localhost ([127.0.0.1]:40307 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u91bb-00036e-Rk
for submit <at> debbugs.gnu.org; Sun, 27 Apr 2025 08:59:36 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:7253)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u91bY-00035R-4l
for 77725 <at> debbugs.gnu.org; Sun, 27 Apr 2025 08:59:33 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 336348086D;
Sun, 27 Apr 2025 08:59:26 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745758765;
bh=U5gT6UNmPJUexJkGPJ7ImJA2vnhpWp8NQlZK8VIr5BY=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=FJHFS8JOkMjXllJzUogV9vA0ee5+KJ5eWVyZV7tEy9839Gd2mnknXI4JQ7l5KfChp
dX5/JPLZcZYqhbPHIltbiQ441+/fgwcaGXflCjxb7w6nXzeXdk4UGt+mIih81zeG5Q
9DauGPbtrmOAlJC4YdKGwRu/nHbk0EjYn/CQp5f/BTcu9pwdWaCZsB4PDdeNMuaB4Y
GWzL5SqYSekMVNwLZ1+Js/B7YkAx+EIw1wNPgovZ/IJeL4e8M0NEJwlH5rgnlCH59P
ISlvz1Ei5lCjlbEEQD/mx1wB0S3IZfw1++PnWwJDVeDMpSuDW+zbARPD+4P1Tlaozp
SRKUhsRWLLeaQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 548618089D;
Sun, 27 Apr 2025 08:59:25 -0400 (EDT)
Received: from alfajor (104-195-232-56.cpe.teksavvy.com [104.195.232.56])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 21EF212049E;
Sun, 27 Apr 2025 08:59:25 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
Message-ID: <jwv5xiplqbk.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
<jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
Date: Sun, 27 Apr 2025 08:59:24 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.064 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> Exactly, I fully agree, the question is "how to keep track of the
>> children"?
>
> You could approximate it with `after-load-functions`. Or, with the
> proposed patch, you could use an advice on `cl--type-deftype`. Once you
> do that, you won't need to break circularity in `cl-types-of`.
I think what I was trying to say all along is:
the circularity you're trying to break doesn't come from `cl-deftype` or
`cl-types-of` but from your impredicative definition of `T1`.
So it'd be best to fix it there:
(cl-deftype T1 ()
`(satisfies ,(lambda (o) (memq 'T1 (cl-types-of o)))))
=>
(defvar my-pending-T1-check (make-symbol "void"))
(cl-deftype T1 ()
`(satisfies
,(lambda (o)
(and (not (eq o my-pending-T1-check))
(let ((my-pending-T1-check o))
(memq 'T1 (cl-types-of o)))))))
- Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 27 Apr 2025 05:55:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 27 01:55:09 2025
Received: from localhost ([127.0.0.1]:38129 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u8uyq-0006rB-Lc
for submit <at> debbugs.gnu.org; Sun, 27 Apr 2025 01:55:09 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:39902)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u8uyn-0006mE-0o
for 77725 <at> debbugs.gnu.org; Sun, 27 Apr 2025 01:55:05 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id A9644440910;
Sun, 27 Apr 2025 01:54:57 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745733296;
bh=3Ju6BTYEXlSeSjQpIKcGXfSiH5rS51Azo1bfSatsTBs=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=jdXcecUaNSwkyYshBYVk4wIv4TrRHoganBi7eAd5Ty37mJCYrp+i5YPAJv+2eXIqe
Mt0thvssUP+gloMlob30FVpyHZct258NZK6PoOkQYH6Opdpguo2aDoaEXFnnzBs+cG
VH6x5iCyW6Cqpc5BrIaMA1qmPBIvO+Otd+kMEQ3ieAsBakfko2lHE/gNJ26HnhnmtD
y9ofk+UREi70p0HD1GwxJ907lhZ4pwnXl4UlVQDd+6o8GQ84AxaCfKyZ98tUXfMPQD
ycB7ozzrO/XN3QpF3htAMKClSzzcoeShwIT89XdBRkkBG0qlGA8RAQL8hhU69UO+LX
tQN9Yozkw+RUA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 1E57544046A;
Sun, 27 Apr 2025 01:54:56 -0400 (EDT)
Received: from alfajor (104-195-232-56.cpe.teksavvy.com [104.195.232.56])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id DDB3F1201F3;
Sun, 27 Apr 2025 01:54:55 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
Message-ID: <jwvwmb6yylb.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
<jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
<0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN>
Date: Sun, 27 Apr 2025 01:54:55 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.018 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Exactly, I fully agree, the question is "how to keep track of the
> children"?
You could approximate it with `after-load-functions`. Or, with the
proposed patch, you could use an advice on `cl--type-deftype`. Once you
do that, you won't need to break circularity in `cl-types-of`.
> I wonder if it would be possible to do something when the type is
> (re)defined? For example, pass the type once defined to some kind of
> "after-defined-hook" that could adjust the environment accordingly.
Maybe more generally we could/should provide "fast" (i.e. cached)
versions of `cl--class-allparents` and `cl--class-children`.
[ And remove those `--`. ]
>>> This makes me think that errors that might occur when calling
>>> `cl-typep' should be handled in `cl-types-of' to prevent an
>>> incorrect definition from impacting method dispatching on types
>>> correctly defined.
>>> WDYT?
>> Maybe. I'd tend to think that `cl-typep` should never error, so if
>> it ever does (which would indicate a bug in some `cl-deftype`), we
>> wouldn't want to hide that error.
> Unfortunately, currently `cl-typep' can error, but currently the
> impact is limited to the broken definition. Here is an example of
> broken definition:
>
> (cl-deftype bad-type ()
> '(satisfies unknown-function))
But this is bug in the definition of the type.
> But, when any type defined by 'cl-deftype' can also be a method type
> argument, any broken type can also break dispatching of method for
> other types. So, such errors need to be caught and reported by
> `cl-types-of'. For now, I updated `cl-types-of' accordingly.
You could also take the position that we shouldn't catch those errors
and instead put pressure to fix those broken `cl-deftype` definitions.
> I am afraid, I still don't see how I can implement this "common
> approach" to break circularity.
I think it would look something like:
(defvar cl--type-pending nil)
(defun cl--typep (o type)
;; Like `cl-typep` but with recursion-check.
(let ((entry (cons o type)))
;; Note: `member` is not quite right.
(if (member entry cl--type-pending)
;; We're called recursively while in the process of testing
;; if `o` is of type `type`, so presume it's true for now,
;; rather than inf-loop.
t
(let ((cl--type-pending (cons cl--type-pending)))
(cl-typep o type)))))
(defun cl-types-of (o)
(let ((types ()))
(dolist (type ...alltypes...)
(when (cl--typep o type)
(push type types))))))
...types...))
> When I consider that a type "match" before to check, it will still
> match after a cycle is detected, if I understood correctly your
> explanation. So, a circular type will always match for any objet?
If the type is "trivially circular", yes. Otherwise, not necessarily.
E.g.
(cl-deftype is-cons (t1 t2)
`(and cons (satisfies
,(lambda (x)
(and (cl--typep (car x) t1) (cl--typep (car x) t2))))))
(cl-deftype list-of-int ()
`(is-cons integer (or null list-of-int)))
and then
(let ((x (list 1 2 3 4 5)))
(setcdr (last x) x)
(cl--typep x 'list-of-int))
would terminate and return t but
(let ((x (list "1" "2" "3" "4" "5")))
(setcdr (last x) x)
(cl--typep x 'list-of-int))
would return nil.
> Please find attached a new simpler and cleaner version of
> cl-types-test.el. All tests pass for me :-)
Looks good, thanks.
> Also attached my last version of cl-types.el. For now, I prefer to
> work on separate files. Based on your previous proposal, it should
> not be difficult to merge the code in existing libraries when/if we
> are satisfied of the implementation ;-)
It would be good to check that the split I proposed works correctly, tho.
The main issues are likely to be around whether things are autoloaded
when they to.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 26 Apr 2025 09:50:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 26 05:50:41 2025 Received: from localhost ([127.0.0.1]:58283 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u8cBF-00040o-76 for submit <at> debbugs.gnu.org; Sat, 26 Apr 2025 05:50:41 -0400 Received: from smtp-22.smtpout.orange.fr ([80.12.242.22]:41359 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u8cBD-00040d-7q for 77725 <at> debbugs.gnu.org; Sat, 26 Apr 2025 05:50:39 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 8cB6u4lV520Vo8cB9u443m; Sat, 26 Apr 2025 11:50:37 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745661037; bh=NfItWs6JcX20stFu62H/Bljazp2txX4pRZ5p1gFaFKA=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=i0EvV0yxTf7Wo/4RwntQQt2BbAt5bzmCyOWlv0mT82ps2NQ0yt1YPvv7f+udOvIwH Isc+YSmrrQhIAo+vT0unV415mHTnQAoNhfOx6joUFGrmaMiSvgvc8kl6cLzUu5o2gZ 3taPbSINyiL3moucO7/2+sBdsnOjjadLBt13qkmpUJXvhoLhrraic3Yc8YF+olDH5V Mtpgpnt+so513Gxgk0KghVPlzkpe9Kr9Ww1i3B9akQrk/+aOPPjebOUtZW9w0nh3qd v71i/4iILIuo8v/bYZeY9GGW+Tfb+yXAvXFY4KutuF9vq62E3A11KYTubbQu/ilyHh SFUpB6Uzt88Cg== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sat, 26 Apr 2025 11:50:37 +0200 X-ME-IP: 90.112.40.65 Message-ID: <daf6e3c9-a6f9-4ced-b859-8774f467f176@HIDDEN> Date: Sat, 26 Apr 2025 11:50:31 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <jwv7c38avsu.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwv7c38avsu.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-25 21:37, Stefan Monnier wrote: > [ Just tooting my horn, nothing to see. ] > >>> Here is a test case with a recursion: >>> >>> (cl-deftype T1 () >>> "Root type. >>> Check if passed object is a subtype of T1. I.e., if T1 is present in >>> object type parents." >>> `(satisfies ,(lambda (o) (memq 'T1 (gtype-of o))))) >> >> Hmm... I can see that it could be handy if you don't know how to >> characterize type T1 other than as the "sum" of its subtypes. >> But this seems rather circular. Have you seen such things out in >> the wild? > > BTW, this form of circularity is called an *impredicative* definition: > the above definition does not directly refer to T1 (as in the case of > a recursive definition), instead it refers (via the definition of > `gtypes-of`) to the set of all types, to which T1 happens to belong. > > As it happens, the notion of *type* was invented/introduced by Bertrand > Russel (early 20th century) specifically in order to try and disallow > the kind of paradoxes (like Russel's paradox or the paradox of the > barber) that impredicativity makes possible. > > OK, you can go back to your regularly scheduled ELisp hacking now, Thank you! I always appreciate enriching my knowledge :-)
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 26 Apr 2025 09:48:07 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 26 05:48:07 2025 Received: from localhost ([127.0.0.1]:58274 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u8c8j-0003px-Jd for submit <at> debbugs.gnu.org; Sat, 26 Apr 2025 05:48:06 -0400 Received: from smtp-25.smtpout.orange.fr ([80.12.242.25]:47525 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u8c8e-0003pH-6T for 77725 <at> debbugs.gnu.org; Sat, 26 Apr 2025 05:48:02 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 8c8WueSn8Aix78c8ZuYvjs; Sat, 26 Apr 2025 11:47:58 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745660878; bh=V4kIuvtBS3RAGzTxpUxKHiXWeSISP9w6TBYOz0dL6II=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=FlKt3lDzVot0DQpxiMR6AGrOIxkAB1tOQS/BX2PukzPTCJo/j48gRJxTfrWXgIL9k F9qw3xidD5GWaCv6hueHC+VgiLidrFj/aLIoGwUfG+PAHBzgCEpijmdk7aLp9frYtC TloKvQZ5YUEnnxT2t5Jt82GwaRAtmH2/VUqDGlp9vKcKuoMuwFw5J0hUNG20MQocM8 vHsNZAWrTqNFoLorsVgzpeDLfFJHpTQA8nwbDuNqOsucREocusO5FzDVYPIzkx7Fp/ Vt5lKmpeImzRikiRYpsUhkQCbHw0/dBO+W6GOa8FHwtdFpAfoOjmBftVMMtlVMD63e fvhMQvqW8mX0Q== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sat, 26 Apr 2025 11:47:58 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------f9Pq14eM3v8f6UAXZV4u0vT5" Message-ID: <0a0dc14d-ab88-4707-9998-2dae0898fb17@HIDDEN> Date: Sat, 26 Apr 2025 11:47:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN> <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN> <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------f9Pq14eM3v8f6UAXZV4u0vT5 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2025-04-25 20:07, Stefan Monnier wrote: >>>> (cl-deftype T1 () >>>> "Root type. >>>> Check if passed object is a subtype of T1. I.e., if T1 is present in >>>> object type parents." >>>> `(satisfies ,(lambda (o) (memq 'T1 (gtype-of o))))) >>> Hmm... I can see that it could be handy if you don't know how to >>> characterize type T1 other than as the "sum" of its subtypes. >>> But this seems rather circular. Have you seen such things out in >>> the wild? >> I am using a such "abstract" type in one of my library for exactly >> this: "characterize type T1 other than as the "sum" of its subtypes." > > [ FWIW, this definition makes your type-test quite costly since it will > test more or less each and every type defined with `cl-deftype`. > You'd be better served with a more targeted test which keeps track of > the children of T1 so it can then do something like > > (cl-some (lambda (child) (cl-typep o child)) my-children) > > This way the performance is not affected by random other unrelated types. > > But, yes, that begs the question of how to keep track of the > children, e.g. how to be told when a child needs to be added/removed > to/from `my-children`. ] Exactly, I fully agree, the question is "how to keep track of the children"? I wonder if it would be possible to do something when the type is (re)defined? For example, pass the type once defined to some kind of "after-defined-hook" that could adjust the environment accordingly. >>> More importantly, with your circularity-breaking approach, if `gtype-of` >>> (aka `cl-types-of`) happens to look at T1 first, that check will >>> immediately return nil, so `cl-types-of` may decide "Oh, I just >>> discovered this is not a T1, so I can skip checking all the subtypes of >>> T1". So, the cycle is broken, but the output is wrong. >> >> Look at T1 first should be possible only if T1 is alone, without any > [...] > > Agreed. > >> Did I miss something? > > What you missed (because I didn't make it clear) is that I was talking > about an incorrect behavior of your circularity-breaking approach, when > coupled with *another* algorithm than the one you currently use to > collect the set of types to return in `cl-types-of`. Ah, OK, I better understand your point. Thanks! > >> This makes me think that errors that might occur when calling >> `cl-typep' should be handled in `cl-types-of' to prevent an >> incorrect definition from impacting method dispatching on types >> correctly defined. >> WDYT? > > Maybe. I'd tend to think that `cl-typep` should never error, so if it > ever does (which would indicate a bug in some `cl-deftype`), we wouldn't > want to hide that error. Unfortunately, currently `cl-typep' can error, but currently the impact is limited to the broken definition. Here is an example of broken definition: (cl-deftype bad-type () '(satisfies unknown-function)) But, when any type defined by 'cl-deftype' can also be a method type argument, any broken type can also break dispatching of method for other types. So, such errors need to be caught and reported by `cl-types-of'. For now, I updated `cl-types-of' accordingly. > >>>> ;; T2 will never match, because `cl-types-of' enters in an endless recursion >>>> (cl-typep (list 'T2) 'T1) >>>> => nil >>> This is both right and wrong: we could return t and that would be >>> equally valid. >>> >>>> (cl-types-of (list 'T2)) >>>> => (cons list sequence t) >>> And here (T2 T1 cons list sequence t) would also be equally valid. >> >> Sorry, you lost me here. As I understand it, a type whose definition >> enter in an endless recursion is not valid, and should never match? > > It depends on whether you define your types inductively or co-inductively. > IOW, do you define the type by starting with the "empty set" and then > adding new elements to it until there's nothing more to add, or do you > define it by starting with a "total set" that contains everything and > then remove elements from it until you've removed everything that > doesn't belong there. > > Another way to look at it: there's nothing in your definition of T2 that > says that the list `(T2)` should *not* be an element of that type. > > For recursive values, in order to break circularity, it is common to > check whether a value satisfies a constraint by adding "yes it does" as > a temporary assumption while performing the check, so as to break the > cycle when we get to a nested occurrence of that object. > If we use the same approach here, the T2 test will say that `(T2)` is > indeed of type T2. > I am afraid, I still don't see how I can implement this "common approach" to break circularity. When I consider that a type "match" before to check, it will still match after a cycle is detected, if I understood correctly your explanation. So, a circular type will always match for any objet? I certainly missed something, sorry. [...] >> >> The problem with this approach is that it is difficult to isolate and cleanup >> the definitions needed for test-1 from those needed for test-2. Also the result >> will depends on the order of the cl-deftype for test-1 and test-2, because these >> definitions will be effective outside of test-1 and test-2. >> >> But maybe it's not so important after all. I'll try to reformulate the tests this way. > > In the worst case, you can duplicate the definitions (with different names). Please find attached a new simpler and cleaner version of cl-types-test.el. All tests pass for me :-) Also attached my last version of cl-types.el. For now, I prefer to work on separate files. Based on your previous proposal, it should not be difficult to merge the code in existing libraries when/if we are satisfied of the implementation ;-) David --------------f9Pq14eM3v8f6UAXZV4u0vT5 Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types-tests.el" Content-Disposition: attachment; filename="cl-types-tests.el" Content-Transfer-Encoding: base64 Ozs7IFRlc3QgYGNsLXR5cGVkZWYnIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQo7Owoo cmVxdWlyZSAnZXJ0KQoocmVxdWlyZSAnY2wtdHlwZXMpCgooY2wtZGVmdHlwZTIgbXVsdGlw bGVzLW9mICgmb3B0aW9uYWwgbSkKICAobGV0ICgobXVsdGlwbGVwIChpZiAoZXEgbSAnKikK ICAgICAgICAgICAgICAgICAgICAgICAjJ2lnbm9yZQoJCSAgICAgKGxhbWJkYSAobikgKD0g MCAoJSBuIG0pKSkpKSkKICAgIGAoYW5kIGludGVnZXIgKHNhdGlzZmllcyAsbXVsdGlwbGVw KSkpKQogICAgIAooY2wtZGVmdHlwZTIgbXVsdGlwbGVzLW9mLTIgKCkKICAnKG11bHRpcGxl cy1vZiAyKSkKICAgICAKKGNsLWRlZnR5cGUyIG11bHRpcGxlcy1vZi0zICgpCiAgJyhtdWx0 aXBsZXMtb2YgMykpCiAgICAgCihjbC1kZWZ0eXBlMiBtdWx0aXBsZXMtb2YtNCAoKQogIChk ZWNsYXJlIChwYXJlbnRzIG11bHRpcGxlcy1vZi0yKSkKICAnKGFuZCBtdWx0aXBsZXMtb2Yt MiAobXVsdGlwbGVzLW9mIDQpKSkKCihjbC1kZWZ0eXBlMiB1bnNpZ25lZC1ieXRlICgmb3B0 aW9uYWwgYml0cykKICAiVW5zaWduZWQgaW50ZWdlci4iCiAgYChpbnRlZ2VyIDAgLChpZiAo ZXEgYml0cyAnKikgYml0cyAoMS0gKGFzaCAxIGJpdHMpKSkpKQogICAgIAooY2wtZGVmdHlw ZTIgdW5zaWduZWQtMTZiaXRzICgpCiAgIlVuc2lnbmVkIDE2LWJpdHMgaW50ZWdlci4iCiAg KGRlY2xhcmUgKHBhcmVudHMgdW5zaWduZWQtYnl0ZSkpCiAgJyh1bnNpZ25lZC1ieXRlIDE2 KSkKICAgICAKKGNsLWRlZnR5cGUyIHVuc2lnbmVkLThiaXRzICgpCiAgIlVuc2lnbmVkIDgt Yml0cyBpbnRlZ2VyLiIKICAoZGVjbGFyZSAocGFyZW50cyB1bnNpZ25lZC0xNmJpdHMpKQog ICcodW5zaWduZWQtYnl0ZSA4KSkKICAgICAKKGNsLWRlZm1ldGhvZCBteS1mb28gKChfbiB1 bnNpZ25lZC1ieXRlKSkKICAoZm9ybWF0ICJ1bnNpZ25lZCIpKQogICAgIAooY2wtZGVmbWV0 aG9kIG15LWZvbyAoKF9uIHVuc2lnbmVkLTE2Yml0cykpCiAgKGZvcm1hdCAidW5zaWduZWQg MTZiaXRzIC0gYWxzbyAlcyIKICAgICAgICAgIChjbC1jYWxsLW5leHQtbWV0aG9kKSkpCiAg ICAgCihjbC1kZWZtZXRob2QgbXktZm9vICgoX24gdW5zaWduZWQtOGJpdHMpKQogIChmb3Jt YXQgInVuc2lnbmVkIDhiaXRzIC0gYWxzbyAlcyIKICAgICAgICAgIChjbC1jYWxsLW5leHQt bWV0aG9kKSkpCgooZXJ0LWRlZnRlc3QgY2wtdHlwZXMtdGVzdCAoKQogICJUZXN0IHR5cGVz IGRlZmluaXRpb24sIGNsLXR5cGVzLW9mIGFuZCBtZXRob2QgZGlzcGF0Y2hpbmcuIgoKICA7 OyBJbnZhbGlkIERBRyBlcnJvcgogIChzaG91bGQtZXJyb3IKICAgKGV2YWwKICAgICcoY2wt ZGVmdHlwZTIgdW5zaWduZWQtMTZiaXRzICgpCiAgICAgICAiVW5zaWduZWQgMTYtYml0cyBp bnRlZ2VyLiIKICAgICAgIChkZWNsYXJlIChwYXJlbnRzIHVuc2lnbmVkLThiaXRzKSkKICAg ICAgICcodW5zaWduZWQtYnl0ZSAxNikpCiAgICBsZXhpY2FsLWJpbmRpbmcKICAgICkpCgog IDs7IFRlc3QgdGhhdCAoY2wtdHlwZXMtb2YgNCkgaXMgKG11bHRpcGxlcy1vZi00IG11bHRp cGxlcy1vZi0yIC4uLikKICA7OyBUZXN0IHRoYXQgKGNsLXR5cGVzLW9mIDYpIGlzIChtdWx0 aXBsZXMtb2YtMyBtdWx0aXBsZXMtb2YtMiAuLi4pCiAgOzsgVGVzdCB0aGF0IChjbC10eXBl cy1vZiAxMikgaXMgKG11bHRpcGxlcy1vZi00IG11bHRpcGxlcy1vZi0zIG11bHRpcGxlcy1v Zi0yIC4uLikKICAobGV0ICgodHlwZXMgJyhtdWx0aXBsZXMtb2YtMiBtdWx0aXBsZXMtb2Yt MyBtdWx0aXBsZXMtb2YtNCkpKQogICAgKHNob3VsZCAoZXF1YWwgJyhtdWx0aXBsZXMtb2Yt MikKCQkgICAoc2VxLWludGVyc2VjdGlvbiAoY2wtdHlwZXMtb2YgMikgdHlwZXMpKSkKCiAg ICAoc2hvdWxkIChlcXVhbCAnKG11bHRpcGxlcy1vZi00IG11bHRpcGxlcy1vZi0yKQoJCSAg IChzZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1vZiA0KSB0eXBlcykpKQoKICAgIChzaG91 bGQgKGVxdWFsICcobXVsdGlwbGVzLW9mLTMgbXVsdGlwbGVzLW9mLTIpCgkJICAgKHNlcS1p bnRlcnNlY3Rpb24gKGNsLXR5cGVzLW9mIDYpIHR5cGVzKSkpCgogICAgKHNob3VsZCAoZXF1 YWwgJyhtdWx0aXBsZXMtb2YtMyBtdWx0aXBsZXMtb2YtNCBtdWx0aXBsZXMtb2YtMikKCQkg ICAoc2VxLWludGVyc2VjdGlvbiAoY2wtdHlwZXMtb2YgMTIpIHR5cGVzKSkpCiAgICAKICAg IChzaG91bGQgKGVxdWFsICcoKQoJCSAgIChzZXEtaW50ZXJzZWN0aW9uIChjbC10eXBlcy1v ZiA1KSB0eXBlcykpKQogICAgKQogIAogIDs7OyBNZXRob2QgZGlzcGF0Y2hpbmcuCiAgKHNo b3VsZCAoZXF1YWwgInVuc2lnbmVkIDhiaXRzIC0gYWxzbyB1bnNpZ25lZCAxNmJpdHMgLSBh bHNvIHVuc2lnbmVkIgoJCSAobXktZm9vIDEwMCkpKQoKICAoc2hvdWxkIChlcXVhbCAidW5z aWduZWQgMTZiaXRzIC0gYWxzbyB1bnNpZ25lZCIKCQkgKG15LWZvbyAyNTYpKSkKCiAgKHNo b3VsZCAoZXF1YWwgInVuc2lnbmVkIgoJCSAobXktZm9vIG1vc3QtcG9zaXRpdmUtZml4bnVt KSkpCiAgKQoKKHByb3ZpZGUgJ2NsLXR5cGVzLXRlc3RzKQoKOzs7IGNsLXR5cGVzLXRlc3Rz LmVsIGVuZHMgaGVyZQo= --------------f9Pq14eM3v8f6UAXZV4u0vT5 Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types.el" Content-Disposition: attachment; filename="cl-types.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBEYXRhIHR5cGVzIGRlZmluZWQg YnkgYGNsLWRlZnR5cGUnIGFyZSBub3cgcmVjb2duaXplZCBhcyBhcmd1bWVudAo7OyB0eXBl cyBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbnMgbWV0aG9kcy4KCjs7IFdpbGwg YmUgcmVtb3ZlZCB3aGVuIGluY2x1ZGVkIGluIGNsLWxpYi4KKHJlcXVpcmUgJ2NsLWxpYikK KGV2YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdjbC1tYWNzKSkgIDtGb3IgY2wtLWZpbmQt Y2xhc3MuCgo7OyBFeHRlbmQgYGNsLWRlZnR5cGUnIHRvIGRlZmluZSBkYXRhIHR5cGVzIHdo aWNoIGFyZSBhbHNvIHZhbGlkCjs7IGFyZ3VtZW50IHR5cGVzIGZvciBkaXNwYXRjaGluZyBn ZW5lcmljIGZ1bmN0aW9uIG1ldGhvZHMgKHNlZSBhbHNvCjs7IDxodHRwczovL2RlYmJ1Z3Mu Z251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9Nzc3MjU+KS4KOzsKOzsgVGhlIG1haW4g ZW50cnkgcG9pbnRzIGFyZToKOzsKOzsgLSBgY2wtZGVmdHlwZScsIHRoYXQgZGVmaW5lcyBu ZXcgZGF0YSB0eXBlcy4KOzsKOzsgLSBgY2wtdHlwZXMtb2YnLCB0aGF0IHJldHVybnMgdGhl IHR5cGVzIGFuIG9iamVjdCBiZWxvbmdzIHRvLgoKKGRlZnZhciBjbC0tdHlwZS1saXN0IG5p bAogICJMaXN0IG9mIGRlZmluZWQgdHlwZXMgdG8gbG9va3VwIGZvciBtZXRob2QgZGlzcGF0 Y2hpbmcuIikKCjs7IEZJWE1FOiBUaGUgYGNsLWRlZnR5cGUtaGFuZGxlcicgcHJvcGVydHkg c2hvdWxkIGFyZ3VhYmx5IGJlIHR1cm5lZAo7OyBpbnRvIGEgZmllbGQgb2YgdGhpcyBzdHJ1 Y3QgKGJ1dCBpdCBoYXMgcGVyZm9ybWFuY2UgYW5kCjs7IGNvbXBhdGliaWxpdHkgaW1wbGlj YXRpb25zLCBzbyBsZXQncyBub3QgbWFrZSB0aGF0IGNoYW5nZSBmb3Igbm93KS4KKGNsLWRl ZnN0cnVjdAogICAgKGNsLXR5cGUtY2xhc3MKICAgICAoOmluY2x1ZGUgY2wtLWNsYXNzKQog ICAgICg6bm9pbmxpbmUgdCkKICAgICAoOmNvbnN0cnVjdG9yIG5pbCkKICAgICAoOmNvbnN0 cnVjdG9yIGNsLS10eXBlLWNsYXNzLW1ha2UKICAgICAgICAgICAgICAgICAgIChuYW1lCiAg ICAgICAgICAgICAgICAgICAgZG9jc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgcGFyZW50 LXR5cGVzCiAgICAgICAgICAgICAgICAgICAgJmF1eCAocGFyZW50cwogICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJk YSAodHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGNsLS1maW5kLWNs YXNzIHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAiVW5r bm93biB0eXBlOiAlUyIgdHlwZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJl bnQtdHlwZXMpKSkpCiAgICAgKDpjb3BpZXIgbmlsKSkKICAiVHlwZSBkZXNjcmlwdG9ycyBm b3IgdHlwZXMgZGVmaW5lZCBieSBgY2wtZGVmdHlwZScuIikKCihkZWZ1biBjbC0tdHlwZS1w IChvYmplY3QpCiAgIlJldHVybiBub24tbmlsIGlmIE9CSkVDVCBpcyBhIHVzZWQgZGVmaW5l ZCB0eXBlLgpUaGF0IGlzLCBhIHR5cGUgb2YgY2xhc3MgYGNsLXR5cGUtY2xhc3MnLiIKICAo YW5kIChzeW1ib2xwIG9iamVjdCkgKGNsLXR5cGUtY2xhc3MtcCAoY2wtLWZpbmQtY2xhc3Mg b2JqZWN0KSkpKQoKKGRlZm1hY3JvIGNsLS10eXBlLXBhcmVudHMgKG5hbWUpCiAgIkdldCBw YXJlbnRzIG9mIHR5cGUgd2l0aCBOQU1FLgpOQU1FIGlzIGEgc3ltYm9sIHJlcHJlc2VudGlu ZyBhIHR5cGUuIgogIGAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzICxu YW1lKSkpCgooZGVmdW4gY2wtLXR5cGUtY2hpbGRyZW4gKG5hbWUpCiAgIkdldCBjaGlsZHJl biBvZiB0aGUgdHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYSBzeW1ib2wgcmVwcmVzZW50aW5n IGEgdHlwZS4KUmV0dXJuIGEgcG9zc2libHkgZW1wdHkgbGlzdCBvZiB0eXBlcy4iCiAgKGNs LWNoZWNrLXR5cGUgbmFtZSAoc2F0aXNmaWVzIGNsLS10eXBlLXApKQogIChsZXQgKGNoaWxk cmVuKQogICAgKGRvbGlzdCAoZWx0IGNsLS10eXBlLWxpc3QpCiAgICAgIChvciAoZXEgbmFt ZSBlbHQpCiAgICAgICAgICAoaWYgKG1lbXEgbmFtZSAoY2wtLXR5cGUtcGFyZW50cyBlbHQp KQogICAgICAgICAgICAgIChwdXNoIGVsdCBjaGlsZHJlbikpKSkKICAgIGNoaWxkcmVuKSkK CihkZWZ1biBjbC0tdHlwZS1kYWcgKCkKICAiUmV0dXJuIGEgREFHIGZyb20gdGhlIGxpc3Qg b2YgZGVmaW5lZCB0eXBlcy4iCiAgKG1hcGNhciAobGFtYmRhICh0eXBlKSAoY2wtLXR5cGUt cGFyZW50cyB0eXBlKSkgY2wtLXR5cGUtbGlzdCkpCgo7OyBLZWVwIGl0IGZvciBub3csIGZv ciB0ZXN0aW5nLgooZGVmdW4gY2wtLXR5cGUtdW5kZWZpbmUgKG5hbWUpCiAgIlJlbW92ZSB0 aGUgZGVmaW5pdGlvbnMgb2YgdHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYW4gdW5xdW90ZWQg c3ltYm9sIHJlcHJlc2VudGluZyBhIHR5cGUuClNpZ25hbCBhbiBlcnJvciBpZiBvdGhlciB0 eXBlcyBpbmhlcml0IGZyb20gTkFNRS4iCiAgKGRlY2xhcmUtZnVuY3Rpb24gY2wtcmVtcHJv cCAiY2wtZXh0cmEiIChzeW1ib2wgcHJvcG5hbWUpKQogIChjbC1jaGVjay10eXBlIG5hbWUg KHNhdGlzZmllcyBjbC0tdHlwZS1wKSkKICAod2hlbi1sZXQqICgoY2hpbGRyZW4gKGFuZCAo Y2wtLXR5cGUtcCBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC0tdHlw ZS1jaGlsZHJlbiBuYW1lKSkpKQogICAgKGVycm9yICJUeXBlIGhhcyBjaGlsZHJlbjogJVMi IGNoaWxkcmVuKSkKICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tY2xhc3MpCiAgKGNsLXJlbXBy b3AgbmFtZSAnY2wtZGVmdHlwZS1oYW5kbGVyKQogIChzZXRxIGNsLS10eXBlLWxpc3QgKGRl bHEgbmFtZSBjbC0tdHlwZS1saXN0KSkpCgooZGVmdW4gY2wtLXR5cGUtZGVmdHlwZSAobmFt ZSBwYXJlbnRzICZvcHRpb25hbCBkb2NzdHJpbmcpCiAgIkdlbmVyYWxpemUgdHlwZSB3aXRo IE5BTUUgZm9yIG1ldGhvZCBkaXNwYXRjaGluZy4KUEFSRU5UUyBpcyBhIGxpc3Qgb2YgdHlw ZXMgTkFNRSBpcyBhIHN1YnR5cGUgb2YsIG9yIG5pbC4KRE9DU1RSSU5HIGlzIGFuIG9wdGlv bmFsIGRvY3VtZW50YXRpb24gc3RyaW5nLiIKICAobGV0ICgob2xkdGxpc3QgKGNvcHktc2Vx dWVuY2UgY2wtLXR5cGUtbGlzdCkpCiAgICAgICAgKG9sZHBsaXN0IChjb3B5LXNlcXVlbmNl IChzeW1ib2wtcGxpc3QgbmFtZSkpKSkKICAgIChjb25kaXRpb24tY2FzZSBlcnIKICAgICAg ICAobGV0KiAoKGNsYXNzIChjbC0tZmluZC1jbGFzcyBuYW1lKSkKICAgICAgICAgICAgICAg KHJlY29yZGVkIChtZW1xIG5hbWUgY2wtLXR5cGUtbGlzdCkpKQogICAgICAgICAgKGlmIChu dWxsIGNsYXNzKQogICAgICAgICAgICAgIChvciAobnVsbCByZWNvcmRlZCkKICAgICAgICAg ICAgICAgICAgKGVycm9yICJUeXBlIGdlbmVyYWxpemVkLCBidXQgZG9lc24ndCBleGlzdCIp KQogICAgICAgICAgICAob3IgcmVjb3JkZWQgKGVycm9yICJUeXBlIGV4aXN0cywgYnV0IG5v dCBnZW5lcmFsaXplZCIpKQogICAgICAgICAgICAob3IgKGNsLXR5cGUtY2xhc3MtcCBjbGFz cykKICAgICAgICAgICAgICAgIChlcnJvciAiVHlwZSBpbiBhbm90aGVyIGNsYXNzOiAlUyIg KHR5cGUtb2YgY2xhc3MpKSkpCiAgICAgICAgICAoaWYgKG1lbXEgbmFtZSBwYXJlbnRzKQog ICAgICAgICAgICAgIChlcnJvciAiVHlwZSBpbiBwYXJlbnRzOiAlUyIgcGFyZW50cykpCiAg ICAgICAgICA7OyBTZXR1cCBhIHR5cGUgZGVzY3JpcHRvciBmb3IgTkFNRS4KICAgICAgICAg IChzZXRmIChjbC0tZmluZC1jbGFzcyBuYW1lKQogICAgICAgICAgICAgICAgKGNsLS10eXBl LWNsYXNzLW1ha2UgbmFtZSBkb2NzdHJpbmcgcGFyZW50cykpCiAgICAgICAgICA7OyBSZWNv cmQgbmV3IHR5cGUgbm93IHRvIGluY2x1ZGUgaXRzIGRlcGVuZGVuY3kgaW4gdGhlIERBRy4K ICAgICAgICAgIChvciByZWNvcmRlZCAocHVzaCBuYW1lIGNsLS10eXBlLWxpc3QpKQogICAg ICAgICAgOzsgYGNsLXR5cGVzLW9mJyBpdGVyYXRlcyB0aHJvdWdoIGFsbCBrbm93biB0eXBl cyB0byBjb2xsZWN0CiAgICAgICAgICA7OyBhbGwgdGhvc2UgYW4gb2JqZWN0IGJlbG9uZ3Mg dG8sIHNvcnRlZCBmcm9tIHRoZSBtb3N0CiAgICAgICAgICA7OyBzcGVjaWZpYyB0eXBlIHRv IHRoZSBtb3JlIGdlbmVyYWwgdHlwZS4gIFNvLCBrZWVwIHRoZQogICAgICAgICAgOzsgZ2xv YmFsIGxpc3QgaW4gdGhpcyBvcmRlci4KICAgICAgICAgIChzZXRxIGNsLS10eXBlLWxpc3QK ICAgICAgICAgICAgICAgIChtZXJnZS1vcmRlcmVkLWxpc3RzCiAgICAgICAgICAgICAgICAg KGNsLS10eXBlLWRhZykKICAgICAgICAgICAgICAgICAobGFtYmRhIChfKSAoZXJyb3IgIklu dmFsaWQgZGVwZW5kZW5jeSBncmFwaCIpKSkpKQogICAgICAoZXJyb3IKICAgICAgIDs7IE9u IGVycm9yIHJlc3RvcmUgcHJldmlvdXMgZGF0YS4KICAgICAgIChzZXRxIGNsLS10eXBlLWxp c3Qgb2xkdGxpc3QpCiAgICAgICAoc2V0ZiAoc3ltYm9sLXBsaXN0IG5hbWUpIG9sZHBsaXN0 KQogICAgICAgKGVycm9yIChmb3JtYXQgIkRlZmluZSAlUyBmYWlsZWQ6ICVzIgogICAgICAg ICAgICAgICAgICAgICAgbmFtZSAoZXJyb3ItbWVzc2FnZS1zdHJpbmcgZXJyKSkpKSkpKQoK Ozs7IyMjYXV0b2xvYWQKKGRlZm1hY3JvIGNsLWRlZnR5cGUyIChuYW1lIGFyZ2xpc3QgJnJl c3QgYm9keSkKICAiRGVmaW5lIE5BTUUgYXMgYSBuZXcgZGF0YSB0eXBlLgpUaGUgdHlwZSBO QU1FIGNhbiB0aGVuIGJlIHVzZWQgaW4gYGNsLXR5cGVjYXNlJywgYGNsLWNoZWNrLXR5cGUn LApldGMuLCBhbmQgYXMgYXJndW1lbnQgdHlwZSBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBm dW5jdGlvbiBtZXRob2RzLgoKQVJHTElTVCBpcyBhIENvbW1vbiBMaXNwIGFyZ3VtZW50IGxp c3Qgb2YgdGhlIHNvcnQgYWNjZXB0ZWQgYnkKYGNsLWRlZm1hY3JvJy4gIEJPRFkgZm9ybXMg YXJlIGV2YWx1YXRlZCBhbmQgc2hvdWxkIHJldHVybiBhIHR5cGUKc3BlY2lmaWVyIHRoYXQg aXMgZXF1aXZhbGVudCB0byB0aGUgdHlwZSAoc2VlIHRoZSBJbmZvIG5vZGUgYChjbCkgVHlw ZQpQcmVkaWNhdGVzJyBpbiB0aGUgR05VIEVtYWNzIENvbW1vbiBMaXNwIEVtdWxhdGlvbiBt YW51YWwpLgoKSWYgdGhlcmUgaXMgYSBgZGVjbGFyZScgZm9ybSBpbiBCT0RZLCB0aGUgc3Bl YyAocGFyZW50cyBQQVJFTlRTKSBpcwpyZWNvZ25pemVkIHRvIHNwZWNpZnkgYSBsaXN0IG9m IHR5cGVzIE5BTUUgaXMgYSBzdWJ0eXBlIG9mLiAgRm9yCmluc3RhbmNlOgoKICAoY2wtZGVm dHlwZTIgdW5zaWduZWQtYnl0ZSAoJm9wdGlvbmFsIGJpdHMpCiAgICBcIlVuc2lnbmVkIGlu dGVnZXIuXCIKICAgIChsaXN0IFxcPSdpbnRlZ2VyIDAgKGlmIChlcSBiaXRzIFxcPScqKSBi aXRzICgxLSAoYXNoIDEgYml0cykpKSkpCgogIChjbC1kZWZ0eXBlMiB1bnNpZ25lZC04Yml0 cyAoKQogICAgXCJVbnNpZ25lZCA4LWJpdHMgaW50ZWdlci5cIgogICAgKGRlY2xhcmUgKHBh cmVudHMgdW5zaWduZWQtYnl0ZSkpCiAgICBcXD0nKHVuc2lnbmVkLWJ5dGUgOCkpCgpUaGUg bGlzdCBvZiBQQVJFTlRTIHR5cGVzIGRldGVybWluZXMgdGhlIG9yZGVyIG9mIG1ldGhvZHMg aW52b2NhdGlvbiwKYW5kIG1pc3NpbmcgUEFSRU5UUyBtYXkgY2F1c2UgaW5jb3JyZWN0IG9y ZGVyaW5nIG9mIG1ldGhvZHMsIHdoaWxlCmV4dHJhbmVvdXMgUEFSRU5UUyBtYXkgY2F1c2Ug dXNlIG9mIGV4dHJhbmVvdXMgbWV0aG9kcy4KCklmIFBBUkVOVFMgaXMgbm9uLW5pbCwgQVJH TElTVCBtdXN0IGJlIG5pbC4iCiAgKGRlY2xhcmUgKGRlYnVnIGNsLWRlZm1hY3JvKSAoZG9j LXN0cmluZyAzKSAoaW5kZW50IDIpKQogIChwY2FzZS1sZXQqCiAgICAgICgoYCgsZGVjbHMg LiAsZm9ybXMpIChtYWNyb2V4cC1wYXJzZS1ib2R5IGJvZHkpKQogICAgICAgKGRvY3N0cmlu ZyAoaWYgKHN0cmluZ3AgKGNhciBkZWNscykpCiAgICAgICAgICAgICAgICAgICAgICAoY2Fy IGRlY2xzKQogICAgICAgICAgICAgICAgICAgIChjYWRyIChhc3NxIDpkb2N1bWVudGF0aW9u IGRlY2xzKSkpKQogICAgICAgKHBhcmVudHMgKGNkciAoYXNzcSAncGFyZW50cyAoY2RyIChh c3NxICdkZWNsYXJlIGRlY2xzKSkpKSkpCiAgICAoYW5kIHBhcmVudHMgYXJnbGlzdAogICAg ICAgICAoZXJyb3IgIlBhcmVudHMgc3BlY2lmaWVkLCBidXQgYXJnbGlzdCBub3QgZW1wdHki KSkKICAgIChpZiBkb2NzdHJpbmcgKHNldHEgZm9ybXMgKGNvbnMgZG9jc3RyaW5nIGZvcm1z KSkpCiAgICBgKGV2YWwtYW5kLWNvbXBpbGUgOztjbC1ldmFsLXdoZW4gKGNvbXBpbGUgbG9h ZCBldmFsKQogICAgICAgKGNsLS10eXBlLWRlZnR5cGUgJyxuYW1lICcscGFyZW50cyAsZG9j c3RyaW5nKQogICAgICAgKGRlZmluZS1zeW1ib2wtcHJvcCAnLG5hbWUgJ2NsLWRlZnR5cGUt aGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAoY2wtZnVuY3Rpb24KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCZjbC1kZWZzICgnKikgLEBhcmdsaXN0 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsQGZvcm1zKSkpKSkpCgo7OyBJbnRl cm5hbCBkYXRhIHVzZWQgdG8gZGV0ZWN0IGVuZGxlc3MgcmVjdXJzaW9uIGluICdjbC10eXBl LW9mJy4KKGRlZnZhciBjbC0tdHlwZS1vYmplY3QgKG1ha2Utc3ltYm9sICJ2b2lkIikpCjs7 IEVuc3VyZSBlYWNoIHR5cGUgc2F0aXNmaWVzIGBlcWwnLgooZGVmdmFyIGNsLS10eXBlLXVu aXF1ZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCkKICAiUmVjb3JkIGFuIHVuaXF1 ZSB2YWx1ZSBvZiBlYWNoIHR5cGUuIikKCjs7IEZJWE1FOiBgY2wtdHlwZXMtb2YnIENQVSBj b3N0IGlzIHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9mIHR5cGVzCjs7IGRlZmluZWQg d2l0aCBgY2wtZGVmdHlwZScsIHNvIHRoZSBtb3JlIHBvcHVsYXIgaXQgZ2V0cywgdGhlIHNs b3dlcgo7OyBpdCBiZWNvbWVzLiAgQW5kIG9mIGNvdXJzZSwgdGhlIGNvc3Qgb2YgZWFjaCB0 eXBlIGNoZWNrIGlzCjs7IHVuYm91bmRlZCwgc28gYSBzaW5nbGUgImV4cGVuc2l2ZSIgdHlw ZSBjYW4gc2xvdyBldmVyeXRoaW5nIGRvd24KOzsgZnVydGhlci4KOzsKOzsgVGhlIHVzdWFs IGRpc3BhdGNoIGlzCjs7Cjs7ICAgKGxhbWJkYSAoYXJnICZyZXN0IGFyZ3MpCjs7ICAgICAo bGV0ICgoZiAoZ2V0aGFzaCAoY2wtdHlwZW9mIGFyZykgcHJlY29tcHV0ZWQtbWV0aG9kcy10 YWJsZSkpKQo7OyAgICAgICAoaWYgZgo7OyAgICAgICAgICAgKGFwcGx5IGYgYXJnIGFyZ3Mp Cjs7ICAgICAgICAgOzsgU2xvdyBjYXNlIHdoZW4gZW5jb3VudGVyaW5nIGEgbmV3IHR5cGUK OzsgICAgICAgICAuLi4pKSkKOzsKOzsgd2hlcmUgb2Z0ZW4gdGhlIG1vc3QgZXhwZW5zaXZl IHBhcnQgaXMgYCZyZXN0JyAod2hpY2ggaGFzIHRvCjs7IGFsbG9jYXRlIGEgbGlzdCBmb3Ig dGhvc2UgcmVtYWluaW5nIGFyZ3VtZW50cyksCjs7Cjs7IFNvIHdlJ3JlIHRhbGtpbmcgYWJv dXQgcmVwbGFjaW5nCjs7Cjs7ICAgJnJlc3QgKyBjbC10eXBlLW9mICsgZ2V0aGFzaCArIGlm ICsgYXBwbHkKOzsKOzsgd2l0aCBhIGZ1bmN0aW9uIHRoYXQgbG9vcHMgb3ZlciBOIHR5cGVz LCBjYWxsaW5nIGBjbC10eXBlcCcgb24gZWFjaAo7OyBvbmUgb2YgdGhlbSAoYGNsLXR5cGVw JyBpdHNlbGYgYmVpbmcgYSByZWN1cnNpdmUgZnVuY3Rpb24gdGhhdAo7OyBiYXNpY2FsbHkg aW50ZXJwcmV0cyB0aGUgdHlwZSBsYW5ndWFnZSkuICBUaGlzIGlzIGdvaW5nIHRvIHNsb3cK OzsgZG93biBkaXNwYXRjaCB2ZXJ5IHNpZ25pZmljYW50bHkgZm9yIHRob3NlIGdlbmVyaWMg ZnVuY3Rpb25zIHRoYXQKOzsgaGF2ZSBhIG1ldGhvZCB0aGF0IGRpc3BhdGNoZXMgb24gYSB1 c2VyIGRlZmluZWQgdHlwZSwgY29tcGFyZWQgdG8KOzsgdGhvc2UgdGhhdCBkb24ndC4KOzsK OzsgQSBwb3NzaWJsZSBmdXJ0aGVyIGltcHJvdmVtZW50Ogo7Owo7OyAtIGJhc2VkIG9uIHRo ZSBQQVJFTlRTIGRlY2xhcmF0aW9uLCBjcmVhdGUgYSBtYXAgZnJvbSBidWlsdGluLXR5cGUK OzsgICB0byB0aGUgc2V0IG9mIGNsLXR5cGVzIHRoYXQgaGF2ZSB0aGF0IGJ1aWx0aW4tdHlw ZSBhbW9uZyB0aGVpcgo7OyAgIHBhcmVudHMuICBUaGF0IHByZXN1bWVzIHNvbWUgUEFSRU5U UyBpbmNsdWRlIHNvbWUgYnVpbHRpbi10eXBlcywKOzsgICBvYnZpb3VzbHkgb3RoZXJ3aXNl IHRoZSBtYXAgd2lsbCBiZSB0cml2aWFsIHdpdGggYWxsIGNsLXR5cGVzCjs7ICAgYXNzb2Np YXRlZCB3aXRoIHRoZSBgdCcgImR1bW15IHBhcmVudCIuICBbIFdlIGNvdWxkIGV2ZW4gZ28g Y3JhenkKOzsgICBhbmQgdHJ5IGFuZCBndWVzcyBQQVJFTlRTIHdoZW4gbm90IHByb3ZpZGVk LCBieSBhbmFseXppbmcgdGhlCjs7ICAgdHlwZSdzIGRlZmluaXRpb24uIF0KOzsKOzsgLSBp biBgY2wtdHlwZXMtb2YnIHN0YXJ0IGJ5IGNhbGxpbmcgYGNsLXR5cGUtb2YnLCB0aGVuIHVz ZSB0aGUgbWFwCjs7ICAgdG8gZmluZCB3aGljaCBjbC10eXBlcyBtYXkgbmVlZCB0byBiZSBj aGVja2VkLgo7OwooZGVmdW4gY2wtdHlwZXMtb2YgKG9iamVjdCkKICAiUmV0dXJuIHRoZSB0 eXBlcyBPQkpFQ1QgYmVsb25ncyB0by4KUmV0dXJuIGFuIHVuaXF1ZSBsaXN0IG9mIHR5cGVz IE9CSkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCm1vc3Qgc3BlY2lmaWMgdHlw ZSB0byB0aGUgbW9zdCBnZW5lcmFsLiIKICA7OyBJZ25vcmUgcmVjdXJzaXZlIGNhbGwgb24g dGhlIHNhbWUgT0JKRUNULCB3aGljaCBjYW4gbGVnaXRpbWF0ZWx5CiAgOzsgb2NjdXIgd2hl biBhIHBhcmVudCB0eXBlIGlzIGNoZWNraW5nIHdoZXRoZXIgYW4gb2JqZWN0J3MgdHlwZSBp cwogIDs7IHRoYXQgb2Ygb25lIG9mIGl0cyBjaGlsZHJlbi4KICAodW5sZXNzIChlcSBvYmpl Y3QgY2wtLXR5cGUtb2JqZWN0KQogICAgKGxldCAoKGNsLS10eXBlLW9iamVjdCBvYmplY3Qp CiAgICAgICAgICAoZm91bmQgKGxpc3QgKGNsLS10eXBlLXBhcmVudHMgKGNsLXR5cGUtb2Yg b2JqZWN0KSkpKSkKICAgICAgOzsgQnVpbGQgYSBEQUcgb2YgYWxsIHR5cGVzIE9CSkVDVCBi ZWxvbmdzIHRvLgogICAgICAoZG9saXN0ICh0eXBlIGNsLS10eXBlLWxpc3QpCiAgICAgICAg OzsgU2tpcCB0eXBlcyB0aGF0IHByb2R1Y2UgYW4gZXJyb3IuCiAgICAgICAgKGNvbmRpdGlv bi1jYXNlIGVycgogICAgICAgICAgICAoYW5kCiAgICAgICAgICAgICA7OyBTa2lwIHR5cGUg bm90IGRlZmluZWQgYnkgYGNsLWRlZnR5cGUnLgogICAgICAgICAgICAgKGNsLXR5cGUtY2xh c3MtcCAoY2wtLWZpbmQtY2xhc3MgdHlwZSkpCiAgICAgICAgICAgICA7OyBJZiBCQVIgaXMg ZGVjbGFyZWQgYXMgYSBwYXJlbnQgb2YgRk9PIGFuZAogICAgICAgICAgICAgOzsgYGNsLXR5 cGVzLW9mJyBoYXMgYWxyZWFkeSBkZWNpZGVkIHRoYXQgdGhlIHZhbHVlIGlzIG9mCiAgICAg ICAgICAgICA7OyB0eXBlIEZPTywgdGhlbiB3ZSBhbHJlYWR5IGtub3cgQkFSIHdpbGwgYmUg aW4gdGhlCiAgICAgICAgICAgICA7OyBvdXRwdXQgYW55d2F5IGFuZCB0aGVyZSdzIG5vIHBv aW50IHRlc3RpbmcgQkFSLiAgU28sCiAgICAgICAgICAgICA7OyBza2lwIHR5cGUgYWxyZWFk eSBzZWxlY3RlZCBhcyBwYXJlbnQgb2YgYW5vdGhlciB0eXBlLAogICAgICAgICAgICAgOzsg YXNzdW1pbmcgdGhhdCwgbW9zdCBvZiB0aGUgdGltZSwgYGFzc3EnIHdpbGwgYmUgZmFzdGVy CiAgICAgICAgICAgICA7OyB0aGFuIGBjbC10eXBlcCcuCiAgICAgICAgICAgICAobnVsbCAo YXNzcSB0eXBlIGZvdW5kKSkKICAgICAgICAgICAgIDs7IElmIE9CSkVDVCBpcyBvZiB0eXBl LCBhZGQgdHlwZSBhbmQgcGFyZW50cyB0byB0aGUgREFHLgogICAgICAgICAgICAgKGNsLXR5 cGVwIG9iamVjdCB0eXBlKQogICAgICAgICAgICAgOzsgKGRvbGlzdCAocCAoY2wtLXR5cGUt cGFyZW50cyB0eXBlKSkKICAgICAgICAgICAgIDs7ICAgKHB1c2ggKGNsLS10eXBlLXBhcmVu dHMgcCkgZm91bmQpKQogICAgICAgICAgICAgOzsgRXF1aXZhbGVudCB0byB0aGUgYGRvbGlz dCcgYWJvdmUsIGJ1dCBmYXN0ZXI6IGF2b2lkIHRvCiAgICAgICAgICAgICA7OyByZWNvbXB1 dGUgc2V2ZXJhbCBsaXN0cyBvZiBwYXJlbnRzIHdlIGFscmVhZHkga25vdy4KICAgICAgICAg ICAgIChsZXQgKChwbCAoY2wtLXR5cGUtcGFyZW50cyB0eXBlKSkpCiAgICAgICAgICAgICAg ICh3aGlsZSBwbAogICAgICAgICAgICAgICAgIChwdXNoIHBsIGZvdW5kKQogICAgICAgICAg ICAgICAgIChzZXRxIHBsIChjZHIgcGwpKSkpKQogICAgICAgICAgKGVycm9yCiAgICAgICAg ICAgKG1lc3NhZ2UgImNsLXR5cGVzLW9mLCAlcyIgKGVycm9yLW1lc3NhZ2Utc3RyaW5nIGVy cikpKSkpCiAgICAgIDs7IENvbXB1dGUgYW4gb3JkZXJlZCBsaXN0IG9mIHR5cGVzIGZyb20g dGhlIGNvbGxlY3RlZCBEQUcuCiAgICAgIChzZXRxIGZvdW5kIChtZXJnZS1vcmRlcmVkLWxp c3RzIGZvdW5kKSkKICAgICAgOzsgUmV0dXJuIGFuIHVuaXF1ZSB2YWx1ZSBvZiB0aGlzIGxp c3Qgb2YgdHlwZXMsIHdoaWNoIGlzIGFsc28KICAgICAgOzsgdGhlIGxpc3Qgb2Ygc3BlY2lm aWVycyBmb3IgdGhpcyB0eXBlLgogICAgICAod2l0aC1tZW1vaXphdGlvbiAoZ2V0aGFzaCBm b3VuZCBjbC0tdHlwZS11bmlxdWUpCiAgICAgICAgZm91bmQpKSkpCgo7OzsgTWV0aG9kIGRp c3BhdGNoaW5nCjs7CihjbC1nZW5lcmljLWRlZmluZS1nZW5lcmFsaXplciBjbC0tdHlwZS1n ZW5lcmFsaXplcgogIDIwIDs7ICJ0eXBlb2YiIDwgImNsLXR5cGVzLW9mIiA8ICJoZWFkIiBw cmlvcml0eQogIChsYW1iZGEgKG9iaiAmcmVzdCBfKSBgKGNsLXR5cGVzLW9mICxvYmopKQog IChsYW1iZGEgKHRhZyAmcmVzdCBfKSAoaWYgKGNvbnNwIHRhZykgdGFnKSkpCgooY2wtZGVm bWV0aG9kIGNsLWdlbmVyaWMtZ2VuZXJhbGl6ZXJzIDpleHRyYSAiY2wtdHlwZXMtb2YiICh0 eXBlKQogICJTdXBwb3J0IGZvciBkaXNwYXRjaCBvbiB0eXBlcy4iCiAgKGlmIChjbC0tdHlw ZS1wIHR5cGUpCiAgICAgIChsaXN0IGNsLS10eXBlLWdlbmVyYWxpemVyKQogICAgKGNsLWNh bGwtbmV4dC1tZXRob2QpKSkKCihwcm92aWRlICdjbC10eXBlcykKCjs7OyBjbC10eXBlcy5l bCBlbmRzIGhlcmUK --------------f9Pq14eM3v8f6UAXZV4u0vT5--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 25 Apr 2025 19:37:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 25 15:37:48 2025
Received: from localhost ([127.0.0.1]:53330 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u8Ors-0002J2-2y
for submit <at> debbugs.gnu.org; Fri, 25 Apr 2025 15:37:48 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:60612)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u8Orp-0002Ib-O6
for 77725 <at> debbugs.gnu.org; Fri, 25 Apr 2025 15:37:46 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id EE9CF8061C;
Fri, 25 Apr 2025 15:37:39 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745609859;
bh=qw6jisVQqd0a08K0OrRav6WyGlbMiewCjrUMZTuqDtA=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=nl/FxiFzN0TY+PR8nzN6ZeFg9pjWxGRfU6fqhfDm12N0/FH5dhCxkYZ6pNq4P9wEf
ghvYx0rG9lS9El9tz23mI7qF+lVsFghfAic6Aq56N2DvkAOeYSP2nvnyFKtGep8255
Z9vAotoQfnYy6buksJ15/qOAJxzRcnKDh0oR8IXbcP1TSzCmskQGjQQC6wp6VQr/x1
UGIhV1Yp+gqAlIy2SH6x1InfI1Kx3WbbKOCjIDjuVlvQT91cuy6lIV6S4DLQMI4acr
set/pq8qIAX3XZSsehXeEBjj8IaQ0qtEES7wFuOpBmp/G1iyiek3l2d2kiU/U8WNHO
DmdXU5V9BvYkg==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 28301806EF;
Fri, 25 Apr 2025 15:37:39 -0400 (EDT)
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 13996120497;
Fri, 25 Apr 2025 15:37:39 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
Message-ID: <jwv7c38avsu.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
Date: Fri, 25 Apr 2025 15:37:38 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL 0.202 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
[ Just tooting my horn, nothing to see. ]
>> Here is a test case with a recursion:
>>
>> (cl-deftype T1 ()
>> "Root type.
>> Check if passed object is a subtype of T1. I.e., if T1 is present in
>> object type parents."
>> `(satisfies ,(lambda (o) (memq 'T1 (gtype-of o)))))
>
> Hmm... I can see that it could be handy if you don't know how to
> characterize type T1 other than as the "sum" of its subtypes.
> But this seems rather circular. Have you seen such things out in
> the wild?
BTW, this form of circularity is called an *impredicative* definition:
the above definition does not directly refer to T1 (as in the case of
a recursive definition), instead it refers (via the definition of
`gtypes-of`) to the set of all types, to which T1 happens to belong.
As it happens, the notion of *type* was invented/introduced by Bertrand
Russel (early 20th century) specifically in order to try and disallow
the kind of paradoxes (like Russel's paradox or the paradox of the
barber) that impredicativity makes possible.
OK, you can go back to your regularly scheduled ELisp hacking now,
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 25 Apr 2025 18:07:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 25 14:07:16 2025
Received: from localhost ([127.0.0.1]:52624 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u8NSF-0003iw-De
for submit <at> debbugs.gnu.org; Fri, 25 Apr 2025 14:07:16 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:1059)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u8NSC-0003ia-V6
for 77725 <at> debbugs.gnu.org; Fri, 25 Apr 2025 14:07:13 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 3696480911;
Fri, 25 Apr 2025 14:07:06 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745604425;
bh=Fw8Q96Ppzq/xzBXkl35O1/dysQboZnEwoUCbf4o8sYs=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=equhsCUrn84kPXmRoyQzV+SBQ9qd5DGEF3o8Q6FwwqzeHgdtFcGdsfOvISpycmdY4
AG9zscRTESQbYwb423jjJBQS6dpcOZsRFQ4kS9aAeP4wloHMRE05mitmf44pVV03pY
DlHOYQSr9S7BXDlG6AgM8tDxo5Gw+DRBLYAu20Fi0b2typNHokSMjf+uiGOXYBNV5H
lCQ++1ZCjkU4L5cQq1+3QDg+sj+KuThW9Sep/NaY4rGGUy++rCmx0Ec79wrxN2WWIB
5RZqW7hmxvnt9K8P484mQuV1BeASFlh2R9sk+B7ABPegmXVzXyCQb80KOYYcHm6Bws
JikSSjnL/OR3g==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 0BB9E80860;
Fri, 25 Apr 2025 14:07:05 -0400 (EDT)
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id EFFC01201A9;
Fri, 25 Apr 2025 14:07:04 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
Message-ID: <jwvtt6cb0o0.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
<1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
Date: Fri, 25 Apr 2025 14:07:04 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL 0.202 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>>> (cl-deftype T1 ()
>>> "Root type.
>>> Check if passed object is a subtype of T1. I.e., if T1 is present in
>>> object type parents."
>>> `(satisfies ,(lambda (o) (memq 'T1 (gtype-of o)))))
>> Hmm... I can see that it could be handy if you don't know how to
>> characterize type T1 other than as the "sum" of its subtypes.
>> But this seems rather circular. Have you seen such things out in
>> the wild?
> I am using a such "abstract" type in one of my library for exactly
> this: "characterize type T1 other than as the "sum" of its subtypes."
[ FWIW, this definition makes your type-test quite costly since it will
test more or less each and every type defined with `cl-deftype`.
You'd be better served with a more targeted test which keeps track of
the children of T1 so it can then do something like
(cl-some (lambda (child) (cl-typep o child)) my-children)
This way the performance is not affected by random other unrelated types.
But, yes, that begs the question of how to keep track of the
children, e.g. how to be told when a child needs to be added/removed
to/from `my-children`. ]
>> More importantly, with your circularity-breaking approach, if `gtype-of`
>> (aka `cl-types-of`) happens to look at T1 first, that check will
>> immediately return nil, so `cl-types-of` may decide "Oh, I just
>> discovered this is not a T1, so I can skip checking all the subtypes of
>> T1". So, the cycle is broken, but the output is wrong.
>
> Look at T1 first should be possible only if T1 is alone, without any
[...]
Agreed.
> Did I miss something?
What you missed (because I didn't make it clear) is that I was talking
about an incorrect behavior of your circularity-breaking approach, when
coupled with *another* algorithm than the one you currently use to
collect the set of types to return in `cl-types-of`.
>> The need for multiple object would be for cases like:
>> (cl-deftype car-foo ()
>> "Car-Foo type.
>> Check if passed object has a subtype of FOO as car."
>> `(satisfies ,(lambda (o) (memq 'FOO (gtype-of (car-safe o))))))
>> but I guess this can inf-loop only if we follow a cycle in the object
>> (e.g. say if o == (car (car (car o)))).
>
> Not sure to understand what you mean by "need for multiple object", I am sorry.
>
> I tries this, and, for me it works as expected:
>
> (cl-deftype car-foo ()
> "Car-Foo type.
> Check if passed object has a subtype of FOO as car."
> `(satisfies ,(lambda (o) (memq 'FOO (gtype-of (car-safe o))))))
>
> (cl-deftype FOO ()
> `(or (and symbol (satisfies ,(lambda (o) (eq o 'FOO))))
> car-foo))
>
> (cl-types-of 'FOO)
> => FOO symbol atom t)
>
> (cl-types-of '(FOO))
> => (FOO car-foo cons list sequence t)
>
> (cl-types-of '(((((FOO))))))
> => (FOO car-foo cons list sequence t)
Don't test it with '(((((FOO))))) because that's not a case where
`o == (car (car (car o)))` You need something like
(let ((o (list nil nil)))
(setq o (list (list (list o))))
(cl-types-of o))
As I implied, this is probably not too serious.
> This makes me think that errors that might occur when calling
> `cl-typep' should be handled in `cl-types-of' to prevent an
> incorrect definition from impacting method dispatching on types
> correctly defined.
> WDYT?
Maybe. I'd tend to think that `cl-typep` should never error, so if it
ever does (which would indicate a bug in some `cl-deftype`), we wouldn't
want to hide that error.
>>> ;; T2 will never match, because `cl-types-of' enters in an endless recursion
>>> (cl-typep (list 'T2) 'T1)
>>> => nil
>> This is both right and wrong: we could return t and that would be
>> equally valid.
>>
>>> (cl-types-of (list 'T2))
>>> => (cons list sequence t)
>> And here (T2 T1 cons list sequence t) would also be equally valid.
>
> Sorry, you lost me here. As I understand it, a type whose definition
> enter in an endless recursion is not valid, and should never match?
It depends on whether you define your types inductively or co-inductively.
IOW, do you define the type by starting with the "empty set" and then
adding new elements to it until there's nothing more to add, or do you
define it by starting with a "total set" that contains everything and
then remove elements from it until you've removed everything that
doesn't belong there.
Another way to look at it: there's nothing in your definition of T2 that
says that the list `(T2)` should *not* be an element of that type.
For recursive values, in order to break circularity, it is common to
check whether a value satisfies a constraint by adding "yes it does" as
a temporary assumption while performing the check, so as to break the
cycle when we get to a nested occurrence of that object.
If we use the same approach here, the T2 test will say that `(T2)` is
indeed of type T2.
>>>> There's also some stylistic problems with the tests:
>>>> - We shouldn't test the return value of `cl-deftype`: I don't think it's
>>>> documented anywhere and I don't think it's good practice to pay
>>>> attention to the return value of declarations.
>>> You are certainly right. I just wanted to check that `cl-deftype'
>>> didn't fail, but there is no `should-no-error'. Would it be better to
>>> test for the presence of the type just defined in `cl--type-list'?
>> I'd just move the `cl-deftype` calls out of the tests and presume that if
>> they signal an error we'll see it.
>
> The problem with this approach is that it is difficult to isolate and cleanup
> the definitions needed for test-1 from those needed for test-2. Also the result
> will depends on the order of the cl-deftype for test-1 and test-2, because these
> definitions will be effective outside of test-1 and test-2.
>
> But maybe it's not so important after all. I'll try to reformulate the tests this way.
In the worst case, you can duplicate the definitions (with different names).
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 25 Apr 2025 09:02:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 25 05:02:30 2025 Received: from localhost ([127.0.0.1]:47193 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u8Ex3-0006y2-SU for submit <at> debbugs.gnu.org; Fri, 25 Apr 2025 05:02:30 -0400 Received: from smtp-82.smtpout.orange.fr ([80.12.242.82]:47251 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u8Ex1-0006xs-NT for 77725 <at> debbugs.gnu.org; Fri, 25 Apr 2025 05:02:28 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 8Ewuuwwmpvf4p8Ewxugyth; Fri, 25 Apr 2025 11:02:26 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745571746; bh=GT01lSjYxR7CR65lUt+9IH7gtM9JKIIe1BnM/8RmN9g=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=JfbgNgU+J4+cB5zSdCehV3CfbjnpNcbH5JW354uS4BXG5fqXReImw/GjlkdA33lEM tnfVY+47fRc3aaHelOMG2ldojtrHZ0uAt0MM4TFHubC46NB360fxsXAsOqIfVf0rlh rCywJVsDLihZIQC/HO2aHKot8g2gVUpNUKqPI7MNdZo9FXRwl/ykqv7XJEtIF0uUiS NzY+5RKnELLCQROJLDlv8VBqiS1h3nQIA6AgufWbNvv9MQTGZLvvBzxYjTyfL2tNhy nrHNS4Ct9Lb0szal73arrvR4XGHIEEjMt8OuTe2+Frkee6TK2iupmU0D+EKtu1JfO9 BebuCgKVrok9Q== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Fri, 25 Apr 2025 11:02:26 +0200 X-ME-IP: 90.112.40.65 Message-ID: <d9f0efa0-b3c1-4bbc-a8ec-9c5d394a7c9a@HIDDEN> Date: Fri, 25 Apr 2025 11:02:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <21c6be88-5137-404b-a838-bc4da8cdf241@HIDDEN> <2320a70a-025c-4803-8842-b20cf6275d41@HIDDEN> <85583c7e-fcf1-47e9-985b-4cefb26ca0c5@HIDDEN> <jwvbjsl9wky.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvbjsl9wky.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-24 21:44, Stefan Monnier wrote: >> Another information which could be useful: if I replace (cl-eval-when >> (compile load eval) ...) by (eval-and-compile ...) in the definition >> of `cl-deftype', there is no side effect of the byte-compilation on >> the current definition. > > It looks like this is a bug in `cl-eval-when` introduced when Alan added > "symbol with positions" for better error reporting. > > Could you make it a separate bug-report? Done. Bug#78056 > >> What I don't know is if the two forms are equivalent. > > Obviously they don't do quite the same thing, but AFAIK they *should* > behave the same, so I'd use `eval-and-compile`. > Ok, done. Thank you!
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 25 Apr 2025 09:01:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 25 05:01:24 2025
Received: from localhost ([127.0.0.1]:47184 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u8Evz-0006ur-Pi
for submit <at> debbugs.gnu.org; Fri, 25 Apr 2025 05:01:24 -0400
Received: from smtp-78.smtpout.orange.fr ([80.12.242.78]:44901
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u8Evu-0006uR-O3
for 77725 <at> debbugs.gnu.org; Fri, 25 Apr 2025 05:01:21 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id 8EvnuxSy2OaHY8EvruW8LY; Fri, 25 Apr 2025 11:01:16 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1745571676;
bh=8XW2fgSCO82sqeYNL1E3IJKaOl2CMKUURjQp7eQA3RU=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=I9hG1nMZV7X8c8MwOHyss2dSa4SrLNxMcnTa05HOcUB022DEFIlXQtvCHYj6O77Le
/fUuQGFdv2jwRMhscqISvwQKxvGx9GUZ3reeyKecVEOXsOjOt0LDXQIgwnGPZVZ42z
SFbAtI6KiLp6mBAYqvM73c5m7ywB7J6JNg9AXakYpxq+/8Gq65rrQYhmwZ0zXF4efA
WMqTPcaDauCtktLZhbdQHQKJbyCpizE7inKvkPfrCrwFXJ/2zOt1RZ7VsQCFbwIY25
CzeX2D6NLL4uQBta+qjcIc42MZzJztlJTKW4mSxWc71spZa7sbj9W98upEGetv0xws
gfNy7EOe+czPA==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Fri, 25 Apr 2025 11:01:16 +0200
X-ME-IP: 90.112.40.65
Message-ID: <1fc713be-ed86-45ab-bff7-dc2aac307b57@HIDDEN>
Date: Fri, 25 Apr 2025 11:01:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
On 2025-04-24 21:38, Stefan Monnier wrote:
>> Here is a test case with a recursion:
>>
>> (cl-deftype T1 ()
>> "Root type.
>> Check if passed object is a subtype of T1. I.e., if T1 is present in
>> object type parents."
>> `(satisfies ,(lambda (o) (memq 'T1 (gtype-of o)))))
>
> Hmm... I can see that it could be handy if you don't know how to
> characterize type T1 other than as the "sum" of its subtypes.
> But this seems rather circular. Have you seen such things out in
> the wild?
I am using a such "abstract" type in one of my library for exactly
this: "characterize type T1 other than as the "sum" of its subtypes."
> More importantly, with your circularity-breaking approach, if `gtype-of`
> (aka `cl-types-of`) happens to look at T1 first, that check will
> immediately return nil, so `cl-types-of` may decide "Oh, I just
> discovered this is not a T1, so I can skip checking all the subtypes of
> T1". So, the cycle is broken, but the output is wrong.
Look at T1 first should be possible only if T1 is alone, without any
subtype defined. This is why I call T1 an "abstract" type. And as such
it is normal that no object will belong to it directly. For an object to
belong to T1 it must first belong to one of its "concrete" subtype (with a
builtin Emacs type in parents). And in this case it is guaranteed that
subtypes will appear before T1 in the list of defined types to check.
So, no recursion on T1 when subtypes exist.
Did I miss something?
>
> The need for multiple object would be for cases like:
>
> (cl-deftype car-foo ()
> "Car-Foo type.
> Check if passed object has a subtype of FOO as car."
> `(satisfies ,(lambda (o) (memq 'FOO (gtype-of (car-safe o))))))
>
> but I guess this can inf-loop only if we follow a cycle in the object
> (e.g. say if o == (car (car (car o)))).
Not sure to understand what you mean by "need for multiple object", I am sorry.
I tries this, and, for me it works as expected:
(cl-deftype car-foo ()
"Car-Foo type.
Check if passed object has a subtype of FOO as car."
`(satisfies ,(lambda (o) (memq 'FOO (gtype-of (car-safe o))))))
(cl-deftype FOO ()
`(or (and symbol (satisfies ,(lambda (o) (eq o 'FOO))))
car-foo))
(cl-types-of 'FOO)
=> FOO symbol atom t)
(cl-types-of '(FOO))
=> (FOO car-foo cons list sequence t)
(cl-types-of '(((((FOO))))))
=> (FOO car-foo cons list sequence t)
However, in the last case, cl-types-of is entered 95 times!
This makes me think that errors that might occur when calling
`cl-typep' should be handled in `cl-types-of' to prevent an
incorrect definition from impacting method dispatching on types
correctly defined.
WDYT?
>
>> (cl-deftype T2 ()
>> "Recursive on checking for T1, never match."
>> (declare (parents T1))
>> `(and T1 (satisfies ,(lambda (o) (equal o '(T2))))))
>
> Is this definition meaningful with the above definition of T1?
> I don't think it's well-founded.
Correct. It was just a "bad" example. The correct definition is T3.
>> (defgtype T3 ()
>> "Not recursive on T1."
>> (declare (parents T1))
>> `(satisfies ,(lambda (o) (equal o '(T3)))))
>>
>> ;; T2 will never match, because `cl-types-of' enters in an endless recursion
>> (cl-typep (list 'T2) 'T1)
>> => nil
>
> This is both right and wrong: we could return t and that would be
> equally valid.
>
>> (cl-types-of (list 'T2))
>> => (cons list sequence t)
>
> And here (T2 T1 cons list sequence t) would also be equally valid.
Sorry, you lost me here. As I understand it, a type whose definition
enter in an endless recursion is not valid, and should never match?
>
>>> There's also some stylistic problems with the tests:
>>> - We shouldn't test the return value of `cl-deftype`: I don't think it's
>>> documented anywhere and I don't think it's good practice to pay
>>> attention to the return value of declarations.
>> You are certainly right. I just wanted to check that `cl-deftype'
>> didn't fail, but there is no `should-no-error'. Would it be better to
>> test for the presence of the type just defined in `cl--type-list'?
>
> I'd just move the `cl-deftype` calls out of the tests and presume that if
> they signal an error we'll see it.
The problem with this approach is that it is difficult to isolate and cleanup
the definitions needed for test-1 from those needed for test-2. Also the result
will depends on the order of the cl-deftype for test-1 and test-2, because these
definitions will be effective outside of test-1 and test-2.
But maybe it's not so important after all. I'll try to reformulate the tests this way.
>
>>> - They use `eval` too much.
>> This is because `cl-deftype' is a macro and the doc string of
>> `ert-deftest' suggests to wrap macros in `(eval (quote ...))' to test
>> them.
>
> That's only when you specifically need to test the effect of the
> macro-expansion itself, rather than test the result of running the
> macro-expanded code. It's rarely needed IME. An example would be to
> detect when a macro-expansion emits a warning.
>
> Also, by using this `eval+quote` you can't test the macro in the way
> it's usually used (where it's macro-expanded once during compilation and
> then its result is run in another Emacs session) so you may miss bugs
> such as when the macro's expansion performs a side-effect (like add
> something to a list) which the expanded code expects to have happened
> (but this will have happened during compilation, so the element may not
> be in the list any more when the code is finally executed).
>
> IOW, I disagree with the docstring. 🙁
I understand.
Thanks
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 24 Apr 2025 19:44:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 24 15:44:50 2025
Received: from localhost ([127.0.0.1]:41477 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u82V7-0004Xf-WA
for submit <at> debbugs.gnu.org; Thu, 24 Apr 2025 15:44:50 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:63872)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u82V4-0004XA-Kt
for 77725 <at> debbugs.gnu.org; Thu, 24 Apr 2025 15:44:47 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 02DB710013E;
Thu, 24 Apr 2025 15:44:41 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745523880;
bh=Sr53QluRaFPrXTG2Uer5tuUMKYlu+W3Ue7nAisRgpsA=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=VQDuaEWx8LR67hv0MY1OrkydLZD6jC2x4iwrl9kqcouR33He23FcNx5FQXkerz44u
zpaUOTkHf+8f/dBaWfNfes7TUnBgapMly8LPf0JceWOg2TSivhLwyPjMN/dBOLa5P8
5T0DyolR27aXiPb3uLYyZq3AyA6Do/kb8T85RH6rgbBNs03ck15GRs1Rih690plEV1
AnUq33yx55y36qEHstQi/7jiqWBqX1cceeGEyBtujelwjBpCIz6/ol0Ch7pklLbIWb
Ps9HUOP5hdO4rW9yeJMx9jcspPeN6Y6y5939wGRuLEOHmcfPnTcphSufJS4GDjOUhd
On0CdHnBJWcag==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 604C0100034;
Thu, 24 Apr 2025 15:44:40 -0400 (EDT)
Received: from alfajor (unknown [23.233.149.155])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 45B0E12051F;
Thu, 24 Apr 2025 15:44:40 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <85583c7e-fcf1-47e9-985b-4cefb26ca0c5@HIDDEN>
Message-ID: <jwvbjsl9wky.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
<21c6be88-5137-404b-a838-bc4da8cdf241@HIDDEN>
<2320a70a-025c-4803-8842-b20cf6275d41@HIDDEN>
<85583c7e-fcf1-47e9-985b-4cefb26ca0c5@HIDDEN>
Date: Thu, 24 Apr 2025 15:44:38 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.204 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Another information which could be useful: if I replace (cl-eval-when
> (compile load eval) ...) by (eval-and-compile ...) in the definition
> of `cl-deftype', there is no side effect of the byte-compilation on
> the current definition.
It looks like this is a bug in `cl-eval-when` introduced when Alan added
"symbol with positions" for better error reporting.
Could you make it a separate bug-report?
> What I don't know is if the two forms are equivalent.
Obviously they don't do quite the same thing, but AFAIK they *should*
behave the same, so I'd use `eval-and-compile`.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 24 Apr 2025 19:38:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 24 15:38:51 2025
Received: from localhost ([127.0.0.1]:41437 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u82PK-0004BH-S4
for submit <at> debbugs.gnu.org; Thu, 24 Apr 2025 15:38:51 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:15694)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u82PH-0004Al-Sa
for 77725 <at> debbugs.gnu.org; Thu, 24 Apr 2025 15:38:50 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 342C08087F;
Thu, 24 Apr 2025 15:38:42 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745523520;
bh=kbhyl4Rfq2SIOs6K3nHnsg+Q8NFCqa/VY+6Gahg13d0=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=mf3jhvxPR/pvZaLw5dpVyMocLkMB9Iw+Z4Q+vrempDE4JAiKJNq7S6ruKuWEq0Uxs
Ai4wdurmsyCPeIkcbFKMaCBGejm4ru5lRb63IVed4BN5L8hrxjgHg2uIL24Kk0UUQ7
2AIoTAk4MPAEK77lzg4amssoYax7BfE+s/H80zfJWH9Mwa/KdOkn5gaW7ig2nWOiBB
b61FAxenE1YANXB0xipWesAwlhjH+2/PAUzxovQFHzRIzQ2tEWyJjaIYifJ1KBzUSI
mvIWQCXX7mhLcRNrjxuziFNdnDgT831dyvr5tedjLBZBMSaaGd1zQs3hk3vwK84SbL
sTEYr7HySUh3A==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id CAD5C802A2;
Thu, 24 Apr 2025 15:38:40 -0400 (EDT)
Received: from alfajor (unknown [23.233.149.155])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id A38B5120568;
Thu, 24 Apr 2025 15:38:40 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
Message-ID: <jwvh62d9ybw.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
<jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
<a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN>
Date: Thu, 24 Apr 2025 15:38:40 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.169 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Here is a test case with a recursion:
>
> (cl-deftype T1 ()
> "Root type.
> Check if passed object is a subtype of T1. I.e., if T1 is present in
> object type parents."
> `(satisfies ,(lambda (o) (memq 'T1 (gtype-of o)))))
Hmm... I can see that it could be handy if you don't know how to
characterize type T1 other than as the "sum" of its subtypes.
But this seems rather circular. Have you seen such things out in
the wild?
More importantly, with your circularity-breaking approach, if `gtype-of`
(aka `cl-types-of`) happens to look at T1 first, that check will
immediately return nil, so `cl-types-of` may decide "Oh, I just
discovered this is not a T1, so I can skip checking all the subtypes of
T1". So, the cycle is broken, but the output is wrong.
The need for multiple object would be for cases like:
(cl-deftype car-foo ()
"Car-Foo type.
Check if passed object has a subtype of FOO as car."
`(satisfies ,(lambda (o) (memq 'FOO (gtype-of (car-safe o))))))
but I guess this can inf-loop only if we follow a cycle in the object
(e.g. say if o =3D=3D (car (car (car o)))).
> (cl-deftype T2 ()
> "Recursive on checking for T1, never match."
> (declare (parents T1))
> `(and T1 (satisfies ,(lambda (o) (equal o '(T2))))))
Is this definition meaningful with the above definition of T1?
I don't think it's well-founded.
> (defgtype T3 ()
> "Not recursive on T1."
> (declare (parents T1))
> `(satisfies ,(lambda (o) (equal o '(T3)))))
>
> ;; T2 will never match, because `cl-types-of' enters in an endless recurs=
ion
> (cl-typep (list 'T2) 'T1)
> =3D> nil
This is both right and wrong: we could return t and that would be
equally valid.
> (cl-types-of (list 'T2))
> =3D> (cons list sequence t)
And here (T2 T1 cons list sequence t) would also be equally valid.
>> There's also some stylistic problems with the tests:
>> - We shouldn't test the return value of `cl-deftype`: I don't think it's
>> documented anywhere and I don't think it's good practice to pay
>> attention to the return value of declarations.
> You are certainly right. I just wanted to check that `cl-deftype'
> didn't fail, but there is no `should-no-error'. Would it be better to
> test for the presence of the type just defined in `cl--type-list'?
I'd just move the `cl-deftype` calls out of the tests and presume that if
they signal an error we'll see it.
>> - They use `eval` too much.
> This is because `cl-deftype' is a macro and the doc string of
> `ert-deftest' suggests to wrap macros in `(eval (quote ...))' to test
> them.
That's only when you specifically need to test the effect of the
macro-expansion itself, rather than test the result of running the
macro-expanded code. It's rarely needed IME. An example would be to
detect when a macro-expansion emits a warning.
Also, by using this `eval+quote` you can't test the macro in the way
it's usually used (where it's macro-expanded once during compilation and
then its result is run in another Emacs session) so you may miss bugs
such as when the macro's expansion performs a side-effect (like add
something to a list) which the expanded code expects to have happened
(but this will have happened during compilation, so the element may not
be in the list any more when the code is finally executed).
IOW, I disagree with the docstring. =F0=9F=99=81
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 24 Apr 2025 16:34:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 24 12:34:23 2025 Received: from localhost ([127.0.0.1]:40618 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u7zWo-0001Op-9j for submit <at> debbugs.gnu.org; Thu, 24 Apr 2025 12:34:22 -0400 Received: from smtp-74.smtpout.orange.fr ([80.12.242.74]:44693 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u7zWh-0001OW-Fl for 77725 <at> debbugs.gnu.org; Thu, 24 Apr 2025 12:34:18 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 7zWZu5VowCZIm7zWcuoHV9; Thu, 24 Apr 2025 18:34:13 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745512453; bh=Vtzh+6FqS8meQ+ESlHUz7a7AskghZHPvCkjCuHXbfzI=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=pE5QZoEw2ZR6cvMPU5A5TsUhBlDdgK2/mC/Xxy8M5jlT+6/M1AYjO+oTu0dKH07Pi mH7rt3Ffiev4szfzeLEbjSz4u3Lz4ARkYSRFu5b1+DfAgsTm/6jy+Djvqq03tbU+cp 6+fqj/8RGcxY4mLr1Nu7vRkopzlI7iunCB07/SIC64dlhbmsPqTRXdpN76Zuq41hs7 h0dXNZx36xnopGK1YNFo3r+WmVrCzZ3PjfPEONWFZAYd5TCKtES7ODvRe+yP9gczNB 296ky+0DEC7ztCzLgrOtIZ0oMAHpPIMtDfGn+ytbqtF5SDVa+MncfdY5Fuas6eUmkh i2NW/Z03yt3uw== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Thu, 24 Apr 2025 18:34:13 +0200 X-ME-IP: 90.112.40.65 Message-ID: <85583c7e-fcf1-47e9-985b-4cefb26ca0c5@HIDDEN> Date: Thu, 24 Apr 2025 18:34:07 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? From: David Ponce <da_vid@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <21c6be88-5137-404b-a838-bc4da8cdf241@HIDDEN> <2320a70a-025c-4803-8842-b20cf6275d41@HIDDEN> Content-Language: fr, en-US In-Reply-To: <2320a70a-025c-4803-8842-b20cf6275d41@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-24 13:44, David Ponce wrote: > On 2025-04-23 14:59, David Ponce wrote: >> >> While working with cl-types.el I discovered a nasty side effect >> of byte compilation on the cl--type-list. >> >> I can't explain what is going on :-( >> >> Here is a recipe: >> >> - run emacs -Q >> >> - load cl-type.el (the last version previously attached) >> >> - load cl-type-recipe.el (attached) >> >> - In the scratch buffer eval cl--type-list. Result is expected: >> >> (cons-cdr-foo cons-car-foo) >> >> - Then open cl-type-recipe.el and byte-compile it with >> M-x emacs-lisp-byte-compile >> >> - Then eval again cl--type-list in the scratch buffer, and now the >> result is something like this: >> >> (#<symbol cons-cdr-foo at 158> #<symbol cons-car-foo at 46>) >> >> Which completely breaks cl-types ! >> >> I hope you can shed some light on what is going on here. >> >> Thanks! >> > > It seems the side effect is more general than just with cl-type.el. > > I attached cl-type-recipe2.el, another simple recipe to illustrate with > current `cl-deftype'. > > - Run emacs -Q and load cl-type-recipe2.el. > - Then in the scratch buffer eval: > > (symbol-plist 'cons-car-foo) > => (cl-deftype-handler #[nil ((list 'satisfies #'(lambda (x) (eq (car-safe x) 'foo)))) (t) nil "A cons with a `foo' car."]) > > - Then open cl-type-recipe2.el and M-x emacs-lisp-byte-compile > > - Then in the scratch buffer eval again: > > (symbol-plist 'cons-car-foo) > => (cl-deftype-handler #[nil (`(#<symbol satisfies at 113> ,(#<symbol lambda at 125> (x) (#<symbol eq at 137> (#<symbol car-safe at 141> #<symbol x at 150>) '#<symbol foo at 154>)))) (t) nil "A cons with a `foo' car."]) > > And, of course: > > (cl-typep '(foo) 'cons-car-foo) > => (invalid-function #<symbol lambda at 125>) > > Without compile in the `cl-eval-when' in `cl-deftype', there is no side effect. > > Hope it will help. > > David Another information which could be useful: if I replace (cl-eval-when (compile load eval) ...) by (eval-and-compile ...) in the definition of `cl-deftype', there is no side effect of the byte-compilation on the current definition. What I don't know is if the two forms are equivalent.
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 24 Apr 2025 11:44:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 24 07:44:23 2025 Received: from localhost ([127.0.0.1]:36902 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u7v0A-0007ju-Kt for submit <at> debbugs.gnu.org; Thu, 24 Apr 2025 07:44:23 -0400 Received: from smtp-30.smtpout.orange.fr ([80.12.242.30]:33103 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u7v05-0007jP-M1 for 77725 <at> debbugs.gnu.org; Thu, 24 Apr 2025 07:44:18 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 7uzxu2U5kN5mI7v00uBNIe; Thu, 24 Apr 2025 13:44:15 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745495056; bh=XRHHayeUZRcdxOyzjCVPrlAxFQBOHFaQiH7tEXNTBMM=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=amv6iIY1SrGqv28KXWQx0SeBG9dFpWZEypfZ36sc5pQiKyqLlzUK4WSLt4o/cw334 IVu+oyljOdsVHL2okp7EeBcryNO0xHtH7KQ/oQR89WziPtBWefkcW6bPoFcsmLE4Qg zm+R4gJsh6+UZvXNrFDpqpi4KbXuzj11W6pXILQkS8Tr4Moi198/2HeMFcDS83EBW/ 7nnTX5bKdODpy2tnCv0wZpCGownKm2l7Ne5Ij5RheRMPmXEyx7y8fwqapX0Dbng4Jo PbEblbvrNMWtLXLHi775hddINd5FXPwrhb+HjQuXP7auusNg2iBo0FjuVz/MdB3ngY kMxDtya7hLcSA== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Thu, 24 Apr 2025 13:44:16 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------qBlIzokXAVqaBLV6oMH0fVFq" Message-ID: <2320a70a-025c-4803-8842-b20cf6275d41@HIDDEN> Date: Thu, 24 Apr 2025 13:44:09 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? From: David Ponce <da_vid@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> <21c6be88-5137-404b-a838-bc4da8cdf241@HIDDEN> Content-Language: fr, en-US In-Reply-To: <21c6be88-5137-404b-a838-bc4da8cdf241@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------qBlIzokXAVqaBLV6oMH0fVFq Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025-04-23 14:59, David Ponce wrote: > > While working with cl-types.el I discovered a nasty side effect > of byte compilation on the cl--type-list. > > I can't explain what is going on :-( > > Here is a recipe: > > - run emacs -Q > > - load cl-type.el (the last version previously attached) > > - load cl-type-recipe.el (attached) > > - In the scratch buffer eval cl--type-list. Result is expected: > > (cons-cdr-foo cons-car-foo) > > - Then open cl-type-recipe.el and byte-compile it with > M-x emacs-lisp-byte-compile > > - Then eval again cl--type-list in the scratch buffer, and now the > result is something like this: > > (#<symbol cons-cdr-foo at 158> #<symbol cons-car-foo at 46>) > > Which completely breaks cl-types ! > > I hope you can shed some light on what is going on here. > > Thanks! > It seems the side effect is more general than just with cl-type.el. I attached cl-type-recipe2.el, another simple recipe to illustrate with current `cl-deftype'. - Run emacs -Q and load cl-type-recipe2.el. - Then in the scratch buffer eval: (symbol-plist 'cons-car-foo) => (cl-deftype-handler #[nil ((list 'satisfies #'(lambda (x) (eq (car-safe x) 'foo)))) (t) nil "A cons with a `foo' car."]) - Then open cl-type-recipe2.el and M-x emacs-lisp-byte-compile - Then in the scratch buffer eval again: (symbol-plist 'cons-car-foo) => (cl-deftype-handler #[nil (`(#<symbol satisfies at 113> ,(#<symbol lambda at 125> (x) (#<symbol eq at 137> (#<symbol car-safe at 141> #<symbol x at 150>) '#<symbol foo at 154>)))) (t) nil "A cons with a `foo' car."]) And, of course: (cl-typep '(foo) 'cons-car-foo) => (invalid-function #<symbol lambda at 125>) Without compile in the `cl-eval-when' in `cl-deftype', there is no side effect. Hope it will help. David --------------qBlIzokXAVqaBLV6oMH0fVFq Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-type-recipe2.el" Content-Disposition: attachment; filename="cl-type-recipe2.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgoocmVxdWlyZSAnY2wtbGliKQoKKGNs LWRlZnR5cGUgY29ucy1jYXItZm9vICgpCiAgIkEgY29ucyB3aXRoIGEgYGZvbycgY2FyLiIK ICBgKHNhdGlzZmllcyAsKGxhbWJkYSAoeCkgKGVxIChjYXItc2FmZSB4KSAnZm9vKSkpKQoK KGNsLWRlZnR5cGUgY29ucy1jZHItZm9vICgpCiAgIkEgY29ucyB3aXRoIGEgYGZvbycgY2Ry LiIKICBgKHNhdGlzZmllcyAsKGxhbWJkYSAoeCkgKGVxIChjZHItc2FmZSB4KSAnZm9vKSkp KQo= --------------qBlIzokXAVqaBLV6oMH0fVFq--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 23 Apr 2025 12:59:47 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 23 08:59:47 2025 Received: from localhost ([127.0.0.1]:55530 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u7Zha-0005wp-AE for submit <at> debbugs.gnu.org; Wed, 23 Apr 2025 08:59:47 -0400 Received: from smtp-73.smtpout.orange.fr ([80.12.242.73]:59937 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u7ZhV-0005vx-TV for 77725 <at> debbugs.gnu.org; Wed, 23 Apr 2025 08:59:43 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 7ZhIuwMuXCZIm7ZhLusStQ; Wed, 23 Apr 2025 14:59:40 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745413180; bh=iFSNsv7QDhbS4JT/pM8OuoKkWGZLBw/n1nTXCcFtUEE=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=a7D9stwdBIe+E/CWTTfMNTOAmud978rQhVTrNnw8ElOwHqhGovOQWb2NNr86xyXwc cjeee7o4kWMes2a9HDsXMQk2IRbkYi7XFUSCQI8YcFuSiE+GLU/4OXMlhGVTb0ZZWf p079rp9mTAQh16Emm1ENl32OP2VAWRq28w8MbkcWtF5eAAZsQxOkTpZu0YehIm/1kF V5i36ksxOLb39b5mDQBuSlfpHoHc7XL0ozDMJ63kGrexmbvsLrXst+GtONnsZnUwnl cJ1QXqwysKCVcUumbLeGcdc2AakJzvylgVZmwQJTFXXbBYBTBW0i93WZ7xPqEHmcYn 8juSjfHzIWJyw== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 23 Apr 2025 14:59:40 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------WhsiHRnMr05b0GhdpVAPRinF" Message-ID: <21c6be88-5137-404b-a838-bc4da8cdf241@HIDDEN> Date: Wed, 23 Apr 2025 14:59:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? From: David Ponce <da_vid@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> Content-Language: fr, en-US In-Reply-To: <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------WhsiHRnMr05b0GhdpVAPRinF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit While working with cl-types.el I discovered a nasty side effect of byte compilation on the cl--type-list. I can't explain what is going on :-( Here is a recipe: - run emacs -Q - load cl-type.el (the last version previously attached) - load cl-type-recipe.el (attached) - In the scratch buffer eval cl--type-list. Result is expected: (cons-cdr-foo cons-car-foo) - Then open cl-type-recipe.el and byte-compile it with M-x emacs-lisp-byte-compile - Then eval again cl--type-list in the scratch buffer, and now the result is something like this: (#<symbol cons-cdr-foo at 158> #<symbol cons-car-foo at 46>) Which completely breaks cl-types ! I hope you can shed some light on what is going on here. Thanks! --------------WhsiHRnMr05b0GhdpVAPRinF Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-type-recipe.el" Content-Disposition: attachment; filename="cl-type-recipe.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgooY2wtZGVmdHlwZTIgY29ucy1jYXIt Zm9vICgpCiAgIkEgY29ucyB3aXRoIGEgYGZvbycgY2FyLiIKICBgKHNhdGlzZmllcyAsKGxh bWJkYSAoeCkgKGVxIChjYXItc2FmZSB4KSAnZm9vKSkpKQoKKGNsLWRlZnR5cGUyIGNvbnMt Y2RyLWZvbyAoKQogICJBIGNvbnMgd2l0aCBhIGBmb28nIGNkci4iCiAgYChzYXRpc2ZpZXMg LChsYW1iZGEgKHgpIChlcSAoY2RyLXNhZmUgeCkgJ2ZvbykpKSkK --------------WhsiHRnMr05b0GhdpVAPRinF--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 23 Apr 2025 09:35:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 23 05:35:13 2025 Received: from localhost ([127.0.0.1]:53336 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u7WVb-000398-B3 for submit <at> debbugs.gnu.org; Wed, 23 Apr 2025 05:35:13 -0400 Received: from smtp-72.smtpout.orange.fr ([80.12.242.72]:46023 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u7WVW-000347-9l for 77725 <at> debbugs.gnu.org; Wed, 23 Apr 2025 05:35:08 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 7WVIuRqNcX7PJ7WVLuWqiw; Wed, 23 Apr 2025 11:35:04 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745400904; bh=RUGu11WNq0w12VutxXjkLD+CtZ9or4os/rG1FLSIWjE=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=O0BUAf8fpr7GUWmPwIFWcL1x1ExOWNkT/jy/Mdde6m4vxf6orQNg5i6pw2/mUaoY+ rJ0KeXHB5xt6M9i5EOkRXNeyjNdcBDJ/7eBdz/Me8AGKMhKTqf7PjL6H8rWw3a0AJN gx90AgO9u1mbAw3crpMbuVW219iLv/74SIewIL8bW1s22TL0XgaacVHUpLhtTM0MVg VzfYZxtsL3IK1aMWRdFLHs7ojSMAk0yggle29nPFCeBmzIFuDtspssu3efZyuppSuG jbsQzMs7WYoeggcw3ebOL+dkOASZCs0oIcJApKsUysdLdDPUe1l6aDtOdNCaoRh5rC iwiWa4bA9hE7w== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 23 Apr 2025 11:35:04 +0200 X-ME-IP: 90.112.40.65 Message-ID: <a9fa4b18-0f1c-4d47-92a8-605d234b8ec9@HIDDEN> Date: Wed, 23 Apr 2025 11:34:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwvbjt08401.fsf-monnier+emacs@HIDDEN> <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-22 23:34, Stefan Monnier wrote: >>> Yes, as you've seen, the placement can be tricky. There are bootstrap >>> constraints as well as "general design" desires, and they all kind >>> of pull in different directions. >>> I'll take a closer look and come back with a proposal. >> Great. Thank you! > > Sorry for the delay, here's what I came up with. No problem, we're in no rush and certainly have plenty of other things to do in our life. Thank you very much for taking time to work on this! > I added a FIXME about the recursion-breaker which I have a feeling might > not work. I read your FIXME: + ;; FIXME: Does this even work? Won't `cl--type-object' be rebound to + ;; the other object before we get here? IOW wouldn't we need a list + ;; of objects that are in the process of being checked? And while + ;; returning nil breaks the recursion, won't it return a bogus result? However, I don't understand why you think this might not work. I don't see how `cl--type-object' can be rebound while `cl-types-of' is running? Recursion can only occur when calling `cl-typep' to check the type of `cl--type-object', and `cl-types-of' will immediately return nil in that case. Did I miss something? Regarding the bogus result, I chose to ignore types that will never match, resulting in infinite recursion of `cl-types-of'. It's not possible to signal an error here, as that would block subsequent types that have no problem. Perhaps a warning message is missing when recursion is detected on a type? It would probably be much better to detect recursions during type definition and report an error at that point. But I suspect that would be a lot of work. Here is a test case with a recursion: (cl-deftype T1 () "Root type. Check if passed object is a subtype of T1. I.e., if T1 is present in object type parents." `(satisfies ,(lambda (o) (memq 'T1 (gtype-of o))))) (cl-deftype T2 () "Recursive on checking for T1, never match." (declare (parents T1)) `(and T1 (satisfies ,(lambda (o) (equal o '(T2)))))) (defgtype T3 () "Not recursive on T1." (declare (parents T1)) `(satisfies ,(lambda (o) (equal o '(T3))))) ;; T2 will never match, because `cl-types-of' enters in an endless recursion (cl-typep (list 'T2) 'T1) => nil (cl-types-of (list 'T2)) => (cons list sequence t) ;; T3 will match. (cl-typep (list 'T3) 'T1) => (T1 cons list sequence t) (cl-types-of (list 'T3)) => (T3 T1 cons list sequence t) > There's also some stylistic problems with the tests: > > - We shouldn't test the return value of `cl-deftype`: I don't think it's > documented anywhere and I don't think it's good practice to pay > attention to the return value of declarations. You are certainly right. I just wanted to check that `cl-deftype' didn't fail, but there is no `should-no-error'. Would it be better to test for the presence of the type just defined in `cl--type-list'? > - They use `eval` too much. This is because `cl-deftype' is a macro and the doc string of `ert-deftest' suggests to wrap macros in `(eval (quote ...))' to test them. But I must admit that my knowledge of ERT is very limited. Any suggestions for improving the tests would be welcome. David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 22 Apr 2025 21:34:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 22 17:34:34 2025
Received: from localhost ([127.0.0.1]:50295 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u7LGD-0001z0-3t
for submit <at> debbugs.gnu.org; Tue, 22 Apr 2025 17:34:34 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:47960)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u7LGA-0001yl-EE
for 77725 <at> debbugs.gnu.org; Tue, 22 Apr 2025 17:34:31 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id E8CA38061C;
Tue, 22 Apr 2025 17:34:24 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745357658;
bh=ybtJIr5wS0JC0z9iLo/hFvp8mdpsl/1EOCRQwSGOsRE=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=KNQsAjy00bFW+zl9nZwjtVO3XSYbaWCok0BDb9BeKdRJQwS67aD2uwZPCp3k5c9bB
2G9n5X0NR+NoZ47yhZipxmPLsuWuCVTFzx+W/mIpVKIsNqzbftzN2Ovp2FxYtUlQ8T
eGZWZZpdrefpyIgcr0x7+Qxccah52+hVf/ziKsIeXY3mN72xqQBvLou3DcsN67AIGD
KNh8Uf8TkwNN63QMLqxDBd9oPtDgrgO5uzHR18p8BAWG+YC05hg59fTcqzYa1ol3Sl
EMzaMaqcNVT+tVrDzbjmJpak6CTjisImivq2yxltc/Z3E3bgZBPPi3TumBvxvRL1Ca
v2Q9vM/IXoodw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id DE0FA80387;
Tue, 22 Apr 2025 17:34:18 -0400 (EDT)
Received: from alfajor (unknown [23.233.149.155])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B731712022A;
Tue, 22 Apr 2025 17:34:18 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
Message-ID: <jwvy0vrdhhb.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
<jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
<cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN>
Date: Tue, 22 Apr 2025 17:34:17 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.221 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
PROLO_LEO1 0.1 Meta Catches all Leo drug variations so far
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
--=-=-=
Content-Type: text/plain
>> Yes, as you've seen, the placement can be tricky. There are bootstrap
>> constraints as well as "general design" desires, and they all kind
>> of pull in different directions.
>> I'll take a closer look and come back with a proposal.
> Great. Thank you!
Sorry for the delay, here's what I came up with.
I added a FIXME about the recursion-breaker which I have a feeling might
not work.
There's also some stylistic problems with the tests:
- We shouldn't test the return value of `cl-deftype`: I don't think it's
documented anywhere and I don't think it's good practice to pay
attention to the return value of declarations.
- They use `eval` too much.
Stefan
--=-=-=
Content-Type: text/x-diff
Content-Disposition: inline; filename=cl-types.patch
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 6390d17a5b7..eb2ad605c8e 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -577,8 +577,8 @@ cl-subseq
,new)))))
(seq-subseq seq start end))
-;;; This isn't a defalias because autoloading defaliases doesn't work
-;;; very well.
+;; This isn't a defalias because autoloading defaliases doesn't work
+;; very well.
;;;###autoload
(defun cl-concatenate (type &rest sequences)
@@ -731,6 +731,213 @@ cl-prettyexpand
(cl-prettyprint form)
(message "")))
+;;; CL type defined via `deftype'.
+
+(defvar cl--type-list nil
+ "List of defined types to lookup for method dispatching.")
+
+;; FIXME: The `cl-deftype-handler' property should arguably be turned
+;; into a field of this struct (but it has performance and
+;; compatibility implications, so let's not make that change for now).
+(cl-defstruct
+ (cl-type-class
+ (:include cl--class)
+ (:noinline t)
+ (:constructor nil)
+ (:constructor cl--type-class-make
+ (name
+ docstring
+ parent-types
+ &aux (parents
+ (mapcar
+ (lambda (type)
+ (or (cl--find-class type)
+ (error "Unknown type: %S" type)))
+ parent-types))))
+ (:copier nil))
+ "Type descriptors for types defined by `cl-deftype'.")
+
+(defun cl--type-p (object)
+ "Return non-nil if OBJECT is a used defined type.
+That is, a type of class `cl-type-class'."
+ (and (symbolp object) (cl-type-class-p (cl--find-class object))))
+
+(defmacro cl--type-parents (name)
+ "Get parents of type with NAME.
+NAME is a symbol representing a type."
+ `(cl--class-allparents (cl--find-class ,name)))
+
+(defun cl--type-children (name)
+ "Get children of the type with NAME.
+NAME is a symbol representing a type.
+Return a possibly empty list of types."
+ (cl-check-type name (satisfies cl--type-p))
+ (let (children)
+ (dolist (elt cl--type-list)
+ (or (eq name elt)
+ (if (memq name (cl--type-parents elt))
+ (push elt children))))
+ children))
+
+;; Keep it for now, for testing.
+(defun cl--type-undefine (name)
+ "Remove the definitions of type with NAME.
+NAME is an unquoted symbol representing a type.
+Signal an error if other types inherit from NAME."
+ (declare-function cl-remprop "cl-extra" (symbol propname))
+ (cl-check-type name (satisfies cl--type-p))
+ (when-let* ((children (and (cl--type-p name)
+ (cl--type-children name))))
+ (error "Type has children: %S" children))
+ (cl-remprop name 'cl--class)
+ (cl-remprop name 'cl-deftype-handler)
+ (setq cl--type-list (delq name cl--type-list)))
+
+;;;###autoload
+(defun cl--type-deftype (name parents &optional docstring)
+ "Generalize type with NAME for method dispatching.
+PARENTS is a list of types NAME is a subtype of, or nil.
+DOCSTRING is an optional documentation string."
+ (let ((oldplist (copy-sequence (symbol-plist name))))
+ (condition-case err
+ (let* ((class (cl--find-class name))
+ (recorded (memq name cl--type-list)))
+ (if (null class)
+ (or (null recorded)
+ (error "Type generalized, but doesn't exist"))
+ (or recorded (error "Type exists, but not generalized"))
+ (or (cl-type-class-p class)
+ (error "Type in another class: %S" (type-of class))))
+ (if (memq name parents)
+ (error "Type in parents: %S" parents))
+ ;; Setup a type descriptor for NAME.
+ (setf (cl--find-class name)
+ (cl--type-class-make name docstring parents))
+ ;; `cl-types-of' iterates through all known types to collect
+ ;; all those an object belongs to, sorted from the most
+ ;; specific type to the more general type. So, keep the
+ ;; global list in this order.
+ (setq cl--type-list
+ (merge-ordered-lists
+ (mapcar (lambda (type)
+ (cl--class-allparents (cl--find-class type)))
+ (if recorded
+ cl--type-list
+ (cons name cl--type-list)))
+ (lambda (_) (error "Invalid dependency graph")))))
+ (error
+ ;; On error restore previous data.
+ (setf (symbol-plist name) oldplist)
+ (error (format "Define %S failed: %s"
+ name (error-message-string err)))))))
+
+(defvar cl--type-object (make-symbol "void"))
+;; Ensure each type satisfies `eql'.
+(defvar cl--type-unique (make-hash-table :test 'equal)
+ "Record an unique value of each type.")
+
+;; FIXME: `cl-types-of' CPU cost is proportional to the number of types
+;; defined with `cl-deftype', so the more popular it gets, the slower
+;; it becomes. And of course, the cost of each type check is
+;; unbounded, so a single "expensive" type can slow everything down
+;; further.
+;;
+;; The usual dispatch is
+;;
+;; (lambda (arg &rest args)
+;; (let ((f (gethash (cl-typeof arg) precomputed-methods-table)))
+;; (if f
+;; (apply f arg args)
+;; ;; Slow case when encountering a new type
+;; ...)))
+;;
+;; where often the most expensive part is `&rest' (which has to
+;; allocate a list for those remaining arguments),
+;;
+;; So we're talking about replacing
+;;
+;; &rest + cl-type-of + gethash + if + apply
+;;
+;; with a function that loops over N types, calling `cl-typep' on each
+;; one of them (`cl-typep' itself being a recursive function that
+;; basically interprets the type language). This is going to slow
+;; down dispatch very significantly for those generic functions that
+;; have a method that dispatches on a user defined type, compared to
+;; those that don't.
+;;
+;; A possible further improvement:
+;;
+;; - based on the PARENTS declaration, create a map from builtin-type
+;; to the set of cl-types that have that builtin-type among their
+;; parents. That presumes some PARENTS include some builtin-types,
+;; obviously otherwise the map will be trivial with all cl-types
+;; associated with the `t' "dummy parent". [ We could even go crazy
+;; and try and guess PARENTS when not provided, by analyzing the
+;; type's definition. ]
+;;
+;; - in `cl-types-of' start by calling `cl-type-of', then use the map
+;; to find which cl-types may need to be checked.
+;;
+;;;###autoload
+(defun cl-types-of (object)
+ "Return the types OBJECT belongs to.
+Return an unique list of types OBJECT belongs to, ordered from the
+most specific type to the most general."
+ ;; Ignore recursive call on the same OBJECT, which can legitimately
+ ;; occur when a parent type is checking whether an object's type is
+ ;; that of one of its children.
+ ;; FIXME: Does this even work? Won't `cl--type-object' be rebound to
+ ;; the other object before we get here? IOW wouldn't we need a list
+ ;; of objects that are in the process of being checked? And while
+ ;; returning nil breaks the recursion, won't it return a bogus result?
+ (unless (eq object cl--type-object)
+ (let ((cl--type-object object)
+ (found (list (cl--type-parents (cl-type-of object)))))
+ ;; Build a DAG of all types OBJECT belongs to.
+ (dolist (type cl--type-list)
+ (and
+ ;; Skip type not defined by `cl-deftype'.
+ (cl-type-class-p (cl--find-class type))
+ ;; If BAR is declared as a parent of FOO and `cl-types-of'
+ ;; has already decided that the value is of type FOO, then we
+ ;; already know BAR will be in the output anyway and there's
+ ;; no point testing BAR. So, skip type already selected as
+ ;; parent of another type, assuming that, most of the time,
+ ;; `assq' will be faster than `cl-typep'.
+ (null (assq type found))
+ ;; If OBJECT is of type, add type and parents to the DAG.
+ (cl-typep object type)
+ ;; (dolist (p (cl--type-parents type))
+ ;; (push (cl--type-parents p) found))
+ ;; Equivalent to the `dolist' above, but faster: avoid to
+ ;; recompute several lists of parents we already know.
+ (let ((pl (cl--type-parents type)))
+ (while pl
+ (push pl found)
+ (setq pl (cdr pl))))
+ ))
+ ;; Compute an ordered list of types from the collected DAG.
+ (setq found (merge-ordered-lists found))
+ ;; Return an unique value of this list of types, which is also
+ ;; the list of specifiers for this type.
+ (with-memoization (gethash found cl--type-unique)
+ found))))
+
+(cl-deftype extended-char () '(and character (not base-char)))
+
+;;;; Method dispatching
+
+(cl-generic-define-generalizer cl--type-generalizer
+ 20 ;; "typeof" < "cl-types-of" < "head" priority
+ (lambda (obj &rest _) `(cl-types-of ,obj))
+ (lambda (tag &rest _) (if (consp tag) tag)))
+
+(cl-defmethod cl-generic-generalizers :extra "cl-types-of" (type)
+ "Support for dispatch on types."
+ (if (cl--type-p type)
+ (list cl--type-generalizer)
+ (cl-call-next-method)))
+
;;; Integration into the online help system.
(eval-when-compile (require 'cl-macs)) ;Explicitly, for cl--find-class.
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index 8de45626bf0..af38f432e84 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -582,6 +582,7 @@ cl-defmethod
(,'declare-function ,name "")
;; We use #' to quote `name' so as to trigger an
;; obsolescence warning when applicable.
+ ;; FIXME: Eval `eql'and `head' thingies!
(cl-generic-define-method #',name ',(nreverse qualifiers) ',args
',call-con ,fun)))))
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index a966ec5eaf6..1bd3ab55519 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -3786,15 +3786,46 @@ cl--compiler-macro-get
;;;###autoload
(defmacro cl-deftype (name arglist &rest body)
"Define NAME as a new data type.
-The type name can then be used in `cl-typecase', `cl-check-type', etc."
+The type NAME can then be used in `cl-typecase', `cl-check-type', etc,
+and as argument type for dispatching generic function methods.
+
+ARGLIST is a Common Lisp argument list of the sort accepted by
+`cl-defmacro'. BODY forms are evaluated and should return a type
+specifier that is equivalent to the type (see the Info node `(cl) Type
+Predicates' in the GNU Emacs Common Lisp Emulation manual).
+
+If there is a `declare' form in BODY, the spec (parents PARENTS) is
+recognized to specify a list of types NAME is a subtype of. For
+instance:
+
+ (cl-deftype unsigned-byte (&optional bits)
+ \"Unsigned integer.\"
+ (list \\='integer 0 (if (eq bits \\='*) bits (1- (ash 1 bits)))))
+
+ (cl-deftype unsigned-8bits ()
+ \"Unsigned 8-bits integer.\"
+ (declare (parents unsigned-byte))
+ \\='(unsigned-byte 8))
+
+The list of PARENTS types determines the order of methods invocation,
+and missing PARENTS may cause incorrect ordering of methods, while
+extraneous PARENTS may cause use of extraneous methods."
(declare (debug cl-defmacro) (doc-string 3) (indent 2))
- `(cl-eval-when (compile load eval)
- (define-symbol-prop ',name 'cl-deftype-handler
- (cl-function (lambda (&cl-defs ('*) ,@arglist) ,@body)))))
-
-(cl-deftype extended-char () '(and character (not base-char)))
-;; Define fixnum so `cl-typep' recognize it and the type check emitted
-;; by `cl-the' is effective.
+ (pcase-let*
+ ((`(,decls . ,forms) (macroexp-parse-body body))
+ (docstring (if (stringp (car decls))
+ (car decls)
+ (cadr (assq :documentation decls))))
+ (parents (cdr (assq 'parents (cdr (assq 'declare decls))))))
+ (and parents arglist
+ (error "Parents specified, but arglist not empty"))
+ (if docstring (setq forms (cons docstring forms)))
+ `(cl-eval-when (compile load eval)
+ (cl--type-deftype ',name ',parents ,docstring)
+ (define-symbol-prop ',name 'cl-deftype-handler
+ (cl-function
+ (lambda (&cl-defs ('*) ,@arglist)
+ ,@forms))))))
;;; Additional functions that we can now define because we've defined
;;; `cl-defsubst' and `cl-typep'.
diff --git a/test/lisp/emacs-lisp/cl-extra-tests.el b/test/lisp/emacs-lisp/cl-extra-tests.el
index 20d1e532a6f..08198faf28c 100644
--- a/test/lisp/emacs-lisp/cl-extra-tests.el
+++ b/test/lisp/emacs-lisp/cl-extra-tests.el
@@ -348,4 +348,156 @@ cl-extra-test-tailp
(should (cl-tailp l l))
(should (not (cl-tailp '(4 5) l)))))
+(ert-deftest cl-types-test-1 ()
+ "Test types definition and cl-types-of."
+
+ (should
+ (functionp
+ (eval
+ '(cl-deftype multiples-of (&optional m)
+ (let ((multiplep (if (eq m '*)
+ #'ignore
+ (lambda (n) (= 0 (% n m))))))
+ `(and integer (satisfies ,multiplep))))
+ t)))
+
+ (should
+ (functionp
+ (eval
+ '(cl-deftype multiples-of-2 ()
+ '(multiples-of 2))
+ t)))
+
+ (should
+ (functionp
+ (eval
+ '(cl-deftype multiples-of-3 ()
+ '(multiples-of 3))
+ t)))
+
+ (should
+ (functionp
+ (eval
+ '(cl-deftype multiples-of-4 ()
+ (declare (parents multiples-of-2))
+ '(and multiples-of-2 (multiples-of 4)))
+ t)))
+
+ ;; Test that (cl-types-of 4) is (multiples-of-4 multiples-of-2 ...)
+ ;; Test that (cl-types-of 6) is (multiples-of-3 multiples-of-2 ...)
+ ;; Test that (cl-types-of 12) is (multiples-of-4 multiples-of-3 multiples-of-2 ...)
+ (should
+ (equal
+ (cl-types-of 2)
+ '( multiples-of-2 fixnum integer number integer-or-marker
+ number-or-marker atom t)))
+
+ (should
+ (equal
+ (cl-types-of 4)
+ '( multiples-of-4 multiples-of-2 fixnum integer number
+ integer-or-marker number-or-marker atom t)
+ ))
+
+ (should
+ (equal
+ (cl-types-of 6)
+ '( multiples-of-3 multiples-of-2 fixnum integer number
+ integer-or-marker number-or-marker atom t)
+ ))
+
+ (should
+ (equal
+ (cl-types-of 12)
+ '( multiples-of-3 multiples-of-4 multiples-of-2 fixnum integer
+ number integer-or-marker number-or-marker atom t)
+ ))
+
+ (should
+ (equal
+ (cl-types-of 5)
+ '(fixnum integer number integer-or-marker number-or-marker atom t)
+ ))
+
+ ;; Cleanup
+ (mapc #'cl--type-undefine cl--type-list)
+
+ )
+
+(ert-deftest cl-types-test-2 ()
+ "Test types definition and dispatch."
+
+ (should
+ (functionp
+ (eval
+ '(cl-deftype unsigned-byte (&optional bits)
+ "Unsigned integer."
+ `(integer 0 ,(if (eq bits '*) bits (1- (ash 1 bits)))))
+ t)))
+
+ (should
+ (functionp
+ (eval
+ '(cl-deftype unsigned-16bits ()
+ "Unsigned 16-bits integer."
+ (declare (parents unsigned-byte))
+ '(unsigned-byte 16))
+ t)))
+
+ (should
+ (functionp
+ (eval
+ '(cl-deftype unsigned-8bits ()
+ "Unsigned 8-bits integer."
+ (declare (parents unsigned-16bits))
+ '(unsigned-byte 8))
+ t)))
+
+ ;; Invalid DAG error
+ (should-error
+ (eval
+ '(cl-deftype unsigned-16bits ()
+ "Unsigned 16-bits integer."
+ (declare (parents unsigned-8bits))
+ '(unsigned-byte 16))
+ t))
+
+ (eval
+ '(cl-defmethod my-foo ((_n unsigned-byte))
+ (format "unsigned"))
+ t)
+
+ (eval
+ '(cl-defmethod my-foo ((_n unsigned-16bits))
+ (format "unsigned 16bits - also %s"
+ (cl-call-next-method)))
+ t)
+
+ (eval
+ '(cl-defmethod my-foo ((_n unsigned-8bits))
+ (format "unsigned 8bits - also %s"
+ (cl-call-next-method)))
+ t)
+
+ (should
+ (equal
+ (my-foo 100)
+ "unsigned 8bits - also unsigned 16bits - also unsigned"
+ ))
+
+ (should
+ (equal
+ (my-foo 256)
+ "unsigned 16bits - also unsigned"
+ ))
+
+ (should
+ (equal
+ (my-foo most-positive-fixnum)
+ "unsigned"
+ ))
+ ;; Cleanup
+ (mapc #'cl--type-undefine cl--type-list)
+ )
+
;;; cl-extra-tests.el ends here
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 19 Apr 2025 15:38:21 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 19 11:38:19 2025 Received: from localhost ([127.0.0.1]:35579 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u6AGl-0000MJ-F0 for submit <at> debbugs.gnu.org; Sat, 19 Apr 2025 11:38:19 -0400 Received: from smtp-19.smtpout.orange.fr ([80.12.242.19]:47579 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u6AGZ-0000L4-Jo for 77725 <at> debbugs.gnu.org; Sat, 19 Apr 2025 11:38:07 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 6AGRuh9R0iSFB6AGUuNr8k; Sat, 19 Apr 2025 17:38:01 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745077081; bh=rXcLNMmyoMbNgiBZwPW7FGg8aOE4rshqAqa5i6IEF+Q=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=By4O3peP3zLEhjnkJOoZGU82L2em8ILeeJwMcNinj0dv0aIANBfmQyxLHRaEbIqmu NN3BrlGyudinzqvjRaJx9oi8oeRxv/fpyi/JNW+7cVEQ0vk8yl7tynJHexGIKE8/JR iHcMgWVuUfURRBl37OE4Y+V5TLSFy0faMvmzuVU9XQ8sR77qW3USrk4MMWh5IN/5My pdgHLFoi304AHEzK3zl1GYjteNiWcRxYQ8uNI7RqMu70K6pfT84DhbqfD+wp2uT62C WCvKvrmVd4H8EOeFg6BtOW/0HHSl5A33uczIIV2jwk+4nmonLxMc/ev8ENt2PvCT3F baXsAKLcxa1Qg== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sat, 19 Apr 2025 17:38:01 +0200 X-ME-IP: 90.112.40.65 Message-ID: <cf8e1302-9e94-4dd0-b90d-daf68c8118f0@HIDDEN> Date: Sat, 19 Apr 2025 17:37:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN> <ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN> <jwvbjt08401.fsf-monnier+emacs@HIDDEN> <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvplh8dyme.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-19 16:20, Stefan Monnier wrote: >>> Regarding a possible merge in cl-lib, should cl-types.el be copied at >>> the end of cl-lib, after cl-macs is loaded? If I correctly understand >>> the logic of loading these libs ;-) >> >> I looked into this a bit more, and it turns out that cl-generic >> depends on cl-lib, so the code in cl-types.el that depends on >> cl-generic can't go in cl-lib. This concern the two definitions >> at the end of cl-types.el: > > Yes, as you've seen, the placement can be tricky. There are bootstrap > constraints as well as "general design" desires, and they all kind > of pull in different directions. > I'll take a closer look and come back with a proposal. Great. Thank you! David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 19 Apr 2025 14:20:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 19 10:20:11 2025
Received: from localhost ([127.0.0.1]:34981 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u693D-0000CL-10
for submit <at> debbugs.gnu.org; Sat, 19 Apr 2025 10:20:11 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:36854)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u693A-00006c-Rx
for 77725 <at> debbugs.gnu.org; Sat, 19 Apr 2025 10:20:09 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 60290440BE2;
Sat, 19 Apr 2025 10:20:03 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1745072401;
bh=XDCtRtijfx7Q5VSV+x1Ibs7+OWhmVRWLTu0tGV0y8Rg=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=XpNQnC2Lzy7uePEWDgzbUcGmYzAmfNCEjR6sNcb7KJVLniKKP8iiIYuJ2TQErY2FF
nQxUq5k5hma9VPttUWsaO9FRZXUF4CoMmJCWlhYevETmOiXMte5Bv6OfIyFxJpFFvR
gp0WRcuH6PfhN8lAcHcndctiwdB74k2xKXgsRJwHX4lhQ7CGpOuVEvvSbAeCPPIPi6
kdpSlqHkA27rf6TaUNjstnZQQsIiUri63APt+4FHRbBiDnBfPzDHnJ+W1q066JWpdn
BJ6I7DCKiMCPPyNgK/Kjb1wX3RV7GpXAiL3RRyT7uU44JNyvh1HlOl8T5kL36fpKoM
xyD9dpbrOfFgQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id DFF3C440B0D;
Sat, 19 Apr 2025 10:20:01 -0400 (EDT)
Received: from pastel (104-195-239-180.cpe.teksavvy.com [104.195.239.180])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id AA7CF12065C;
Sat, 19 Apr 2025 10:20:01 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
Message-ID: <jwvplh8dyme.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
<jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
<ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN>
<f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN>
Date: Sat, 19 Apr 2025 10:20:00 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.023 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> Regarding a possible merge in cl-lib, should cl-types.el be copied at
>> the end of cl-lib, after cl-macs is loaded?=A0 If I correctly understand
>> the logic of loading these libs ;-)
>
> I looked into this a bit more, and it turns out that cl-generic
> depends on cl-lib, so the code in cl-types.el that depends on
> cl-generic can't go in cl-lib. This concern the two definitions
> at the end of cl-types.el:
Yes, as you've seen, the placement can be tricky. There are bootstrap
constraints as well as "general design" desires, and they all kind
of pull in different directions.
I'll take a closer look and come back with a proposal.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 19 Apr 2025 10:11:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 19 06:11:38 2025 Received: from localhost ([127.0.0.1]:58416 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u65Ae-0000FD-UH for submit <at> debbugs.gnu.org; Sat, 19 Apr 2025 06:11:37 -0400 Received: from smtp-22.smtpout.orange.fr ([80.12.242.22]:34475 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u65Ab-0000En-FY for 77725 <at> debbugs.gnu.org; Sat, 19 Apr 2025 06:11:35 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 65ATujIsUaoZo65AWuqEVN; Sat, 19 Apr 2025 12:11:31 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1745057491; bh=2S4fkNLAmSMCeC1rkn6KT+r+DwuAUFveY3hGWDbV/gA=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=YJQ+4z/LSMJrT8QtbCY66mTK26yERR2q6q+g6qZhzF0G/BLqefI4zA0TZ+AEmejuG zzXtMY/zFwjV223DHcVIejqvpeA4JkjB5I0s4MTeMZXDCrZ2wBaKeq2Xp/B/vgZcRw q5v3K+O18i9ZL7PQ/ULn9KAfH441FFnKHf6eEgLAaVO+Eh4AHHtIcVVFi26uACkHY7 vrBTkL4D4W08xOiWFf/aElAjz7znkhW/QE+b4RBcLuB5FOxxU3dPocbU6Zgp04FOBy BLbMMliHth/8G/dH/m86rwo0ktiYNGnnOaGfozIGqgmKgtCUhcThVDA2Poq4rpOM2r e7RxZ9W/EgV/g== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sat, 19 Apr 2025 12:11:31 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------4ow9Gxj9UDAJ0uo5JML1T0bX" Message-ID: <f15550a0-62aa-4af5-83e1-8e3c158966cf@HIDDEN> Date: Sat, 19 Apr 2025 12:11:25 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? From: David Ponce <da_vid@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN> <f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN> <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN> <ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN> <jwvbjt08401.fsf-monnier+emacs@HIDDEN> <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> Content-Language: fr, en-US In-Reply-To: <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------4ow9Gxj9UDAJ0uo5JML1T0bX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit > Regarding a possible merge in cl-lib, should cl-types.el be copied at > the end of cl-lib, after cl-macs is loaded? If I correctly understand > the logic of loading these libs ;-) I looked into this a bit more, and it turns out that cl-generic depends on cl-lib, so the code in cl-types.el that depends on cl-generic can't go in cl-lib. This concern the two definitions at the end of cl-types.el: (cl-generic-define-generalizer cl--type-generalizer ... ) (cl-defmethod cl-generic-generalizers :extra "cl-types-of" (type) ... ) which could logically go in cl-generic? I attached a slightly updated version of cl-types.el, mainly to check first if a type is of class `cl-type-class' in `cl-types-of', and to use the predicate `cl-type-class-p' simpler than `cl-typep'. Happy Easter weekend :-) --------------4ow9Gxj9UDAJ0uo5JML1T0bX Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types.el" Content-Disposition: attachment; filename="cl-types.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBXaWxsIGJlIHJlbW92ZWQgd2hl biBpbmNsdWRlZCBpbiBjbC1saWIuCihyZXF1aXJlICdjbC1saWIpCihldmFsLXdoZW4tY29t cGlsZSAocmVxdWlyZSAnY2wtbWFjcykpICA7Rm9yIGNsLS1maW5kLWNsYXNzLgoKOzsgRXh0 ZW5kIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgZGF0YSB0eXBlcyB3aGljaCBhcmUgYWxzbyB2 YWxpZAo7OyBhcmd1bWVudCB0eXBlcyBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlv biBtZXRob2RzIChzZWUgYWxzbwo7OyA8aHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvY2dpL2J1 Z3JlcG9ydC5jZ2k/YnVnPTc3NzI1PikuCjs7Cjs7IFRoZSBtYWluIGVudHJ5IHBvaW50cyBh cmU6Cjs7Cjs7IC0gYGNsLWRlZnR5cGUnLCB0aGF0IGRlZmluZXMgbmV3IGRhdGEgdHlwZXMu Cjs7Cjs7IC0gYGNsLXR5cGVzLW9mJywgdGhhdCByZXR1cm5zIHRoZSB0eXBlcyBhbiBvYmpl Y3QgYmVsb25ncyB0by4KCihkZWZ2YXIgY2wtLXR5cGUtbGlzdCBuaWwKICAiTGlzdCBvZiBk ZWZpbmVkIHR5cGVzIHRvIGxvb2t1cCBmb3IgbWV0aG9kIGRpc3BhdGNoaW5nLiIpCgo7OyBG SVhNRTogVGhlIGBjbC1kZWZ0eXBlLWhhbmRsZXInIHByb3BlcnR5IHNob3VsZCBhcmd1YWJs eSBiZSB0dXJuZWQKOzsgaW50byBhIGZpZWxkIG9mIHRoaXMgc3RydWN0IChidXQgaXQgaGFz IHBlcmZvcm1hbmNlIGFuZAo7OyBjb21wYXRpYmlsaXR5IGltcGxpY2F0aW9ucywgc28gbGV0 J3Mgbm90IG1ha2UgdGhhdCBjaGFuZ2UgZm9yIG5vdykuCihjbC1kZWZzdHJ1Y3QKICAgIChj bC10eXBlLWNsYXNzCiAgICAgKDppbmNsdWRlIGNsLS1jbGFzcykKICAgICAoOm5vaW5saW5l IHQpCiAgICAgKDpjb25zdHJ1Y3RvciBuaWwpCiAgICAgKDpjb25zdHJ1Y3RvciBjbC0tdHlw ZS1jbGFzcy1tYWtlCiAgICAgICAgICAgICAgICAgICAobmFtZQogICAgICAgICAgICAgICAg ICAgIGRvY3N0cmluZwogICAgICAgICAgICAgICAgICAgIHBhcmVudC10eXBlcwogICAgICAg ICAgICAgICAgICAgICZhdXggKHBhcmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAo bWFwY2FyCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHR5cGUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChjbC0tZmluZC1jbGFzcyB0eXBlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIlVua25vd24gdHlwZTogJVMi IHR5cGUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LXR5cGVzKSkpKQog ICAgICg6Y29waWVyIG5pbCkpCiAgIlR5cGUgZGVzY3JpcHRvcnMgZm9yIHR5cGVzIGRlZmlu ZWQgYnkgYGNsLWRlZnR5cGUnLiIpCgooZGVmdW4gY2wtLXR5cGUtcCAob2JqZWN0KQogICJS ZXR1cm4gbm9uLW5pbCBpZiBPQkpFQ1QgaXMgYSB1c2VkIGRlZmluZWQgdHlwZS4KVGhhdCBp cywgYSB0eXBlIG9mIGNsYXNzIGBjbC10eXBlLWNsYXNzJy4iCiAgKGFuZCAoc3ltYm9scCBv YmplY3QpIChjbC10eXBlLWNsYXNzLXAgKGNsLS1maW5kLWNsYXNzIG9iamVjdCkpKSkKCihk ZWZtYWNybyBjbC0tdHlwZS1wYXJlbnRzIChuYW1lKQogICJHZXQgcGFyZW50cyBvZiB0eXBl IHdpdGggTkFNRS4KTkFNRSBpcyBhIHN5bWJvbCByZXByZXNlbnRpbmcgYSB0eXBlLiIKICBg KGNsLS1jbGFzcy1hbGxwYXJlbnRzIChjbC0tZmluZC1jbGFzcyAsbmFtZSkpKQoKKGRlZnVu IGNsLS10eXBlLWNoaWxkcmVuIChuYW1lKQogICJHZXQgY2hpbGRyZW4gb2YgdGhlIHR5cGUg d2l0aCBOQU1FLgpOQU1FIGlzIGEgc3ltYm9sIHJlcHJlc2VudGluZyBhIHR5cGUuClJldHVy biBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgdHlwZXMuIgogIChjbC1jaGVjay10eXBlIG5h bWUgKHNhdGlzZmllcyBjbC0tdHlwZS1wKSkKICAobGV0IChjaGlsZHJlbikKICAgIChkb2xp c3QgKGVsdCBjbC0tdHlwZS1saXN0KQogICAgICAob3IgKGVxIG5hbWUgZWx0KQogICAgICAg ICAgKGlmIChtZW1xIG5hbWUgKGNsLS10eXBlLXBhcmVudHMgZWx0KSkKICAgICAgICAgICAg ICAocHVzaCBlbHQgY2hpbGRyZW4pKSkpCiAgICBjaGlsZHJlbikpCgooZGVmdW4gY2wtLXR5 cGUtZGFnICgpCiAgIlJldHVybiBhIERBRyBmcm9tIHRoZSBsaXN0IG9mIGRlZmluZWQgdHlw ZXMuIgogIChtYXBjYXIgKGxhbWJkYSAodHlwZSkgKGNsLS1jbGFzcy1hbGxwYXJlbnRzIChj bC0tZmluZC1jbGFzcyB0eXBlKSkpCiAgICAgICAgICBjbC0tdHlwZS1saXN0KSkKCjs7IEtl ZXAgaXQgZm9yIG5vdywgZm9yIHRlc3RpbmcuCihkZWZ1biBjbC0tdHlwZS11bmRlZmluZSAo bmFtZSkKICAiUmVtb3ZlIHRoZSBkZWZpbml0aW9ucyBvZiB0eXBlIHdpdGggTkFNRS4KTkFN RSBpcyBhbiB1bnF1b3RlZCBzeW1ib2wgcmVwcmVzZW50aW5nIGEgdHlwZS4KU2lnbmFsIGFu IGVycm9yIGlmIG90aGVyIHR5cGVzIGluaGVyaXQgZnJvbSBOQU1FLiIKICAoZGVjbGFyZS1m dW5jdGlvbiBjbC1yZW1wcm9wICJjbC1leHRyYSIgKHN5bWJvbCBwcm9wbmFtZSkpCiAgKGNs LWNoZWNrLXR5cGUgbmFtZSAoc2F0aXNmaWVzIGNsLS10eXBlLXApKQogICh3aGVuLWxldCog KChjaGlsZHJlbiAoYW5kIChjbC0tdHlwZS1wIG5hbWUpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNsLS10eXBlLWNoaWxkcmVuIG5hbWUpKSkpCiAgICAoZXJyb3IgIlR5cGUg aGFzIGNoaWxkcmVuOiAlUyIgY2hpbGRyZW4pKQogIChjbC1yZW1wcm9wIG5hbWUgJ2NsLS1j bGFzcykKICAoY2wtcmVtcHJvcCBuYW1lICdjbC1kZWZ0eXBlLWhhbmRsZXIpCiAgKHNldHEg Y2wtLXR5cGUtbGlzdCAoZGVscSBuYW1lIGNsLS10eXBlLWxpc3QpKSkKCihkZWZ1biBjbC0t dHlwZS1nZW5lcmFsaXplIChuYW1lIHBhcmVudHMgJm9wdGlvbmFsIGRvY3N0cmluZykKICAi R2VuZXJhbGl6ZSB0eXBlIHdpdGggTkFNRSBmb3IgbWV0aG9kIGRpc3BhdGNoaW5nLgpQQVJF TlRTIGlzIGEgbGlzdCBvZiB0eXBlcyBOQU1FIGlzIGEgc3VidHlwZSBvZiwgb3IgbmlsLgpE T0NTVFJJTkcgaXMgYW4gb3B0aW9uYWwgZG9jdW1lbnRhdGlvbiBzdHJpbmcuIgogIChsZXQg KChvbGR0bGlzdCAoY29weS1zZXF1ZW5jZSBjbC0tdHlwZS1saXN0KSkKICAgICAgICAob2xk cGxpc3QgKGNvcHktc2VxdWVuY2UgKHN5bWJvbC1wbGlzdCBuYW1lKSkpKQogICAgKGNvbmRp dGlvbi1jYXNlIGVycgogICAgICAgIChsZXQqICgoY2xhc3MgKGNsLS1maW5kLWNsYXNzIG5h bWUpKQogICAgICAgICAgICAgICAocmVjb3JkZWQgKG1lbXEgbmFtZSBjbC0tdHlwZS1saXN0 KSkpCiAgICAgICAgICAoaWYgKG51bGwgY2xhc3MpCiAgICAgICAgICAgICAgKG9yIChudWxs IHJlY29yZGVkKQogICAgICAgICAgICAgICAgICAoZXJyb3IgIlR5cGUgZ2VuZXJhbGl6ZWQs IGJ1dCBkb2Vzbid0IGV4aXN0IikpCiAgICAgICAgICAgIChvciByZWNvcmRlZCAoZXJyb3Ig IlR5cGUgZXhpc3RzLCBidXQgbm90IGdlbmVyYWxpemVkIikpCiAgICAgICAgICAgIChvciAo Y2wtdHlwZS1jbGFzcy1wIGNsYXNzKQogICAgICAgICAgICAgICAgKGVycm9yICJUeXBlIGlu IGFub3RoZXIgY2xhc3M6ICVTIiAodHlwZS1vZiBjbGFzcykpKSkKICAgICAgICAgIChpZiAo bWVtcSBuYW1lIHBhcmVudHMpCiAgICAgICAgICAgICAgKGVycm9yICJUeXBlIGluIHBhcmVu dHM6ICVTIiBwYXJlbnRzKSkKICAgICAgICAgIDs7IFNldHVwIGEgdHlwZSBkZXNjcmlwdG9y IGZvciBOQU1FLgogICAgICAgICAgKHNldGYgKGNsLS1maW5kLWNsYXNzIG5hbWUpCiAgICAg ICAgICAgICAgICAoY2wtLXR5cGUtY2xhc3MtbWFrZSBuYW1lIGRvY3N0cmluZyBwYXJlbnRz KSkKICAgICAgICAgIDs7IFJlY29yZCBuZXcgdHlwZSBub3cgdG8gaW5jbHVkZSBpdHMgZGVw ZW5kZW5jeSBpbiB0aGUgREFHLgogICAgICAgICAgKG9yIHJlY29yZGVkIChwdXNoIG5hbWUg Y2wtLXR5cGUtbGlzdCkpCiAgICAgICAgICA7OyBgY2wtdHlwZXMtb2YnIGl0ZXJhdGVzIHRo cm91Z2ggYWxsIGtub3duIHR5cGVzIHRvIGNvbGxlY3QKICAgICAgICAgIDs7IGFsbCB0aG9z ZSBhbiBvYmplY3QgYmVsb25ncyB0bywgc29ydGVkIGZyb20gdGhlIG1vc3QKICAgICAgICAg IDs7IHNwZWNpZmljIHR5cGUgdG8gdGhlIG1vcmUgZ2VuZXJhbCB0eXBlLiAgU28sIGtlZXAg dGhlCiAgICAgICAgICA7OyBnbG9iYWwgbGlzdCBpbiB0aGlzIG9yZGVyLgogICAgICAgICAg KHNldHEgY2wtLXR5cGUtbGlzdAogICAgICAgICAgICAgICAgKG1lcmdlLW9yZGVyZWQtbGlz dHMKICAgICAgICAgICAgICAgICAoY2wtLXR5cGUtZGFnKQogICAgICAgICAgICAgICAgIChs YW1iZGEgKF8pIChlcnJvciAiSW52YWxpZCBkZXBlbmRlbmN5IGdyYXBoIikpKSkpCiAgICAg IChlcnJvcgogICAgICAgOzsgT24gZXJyb3IgcmVzdG9yZSBwcmV2aW91cyBkYXRhLgogICAg ICAgKHNldHEgY2wtLXR5cGUtbGlzdCBvbGR0bGlzdCkKICAgICAgIChzZXRmIChzeW1ib2wt cGxpc3QgbmFtZSkgb2xkcGxpc3QpCiAgICAgICAoZXJyb3IgKGZvcm1hdCAiRGVmaW5lICVT IGZhaWxlZDogJXMiCiAgICAgICAgICAgICAgICAgICAgICBuYW1lIChlcnJvci1tZXNzYWdl LXN0cmluZyBlcnIpKSkpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmbWFjcm8gY2wtZGVmdHlw ZTIgKG5hbWUgYXJnbGlzdCAmcmVzdCBib2R5KQogICJEZWZpbmUgTkFNRSBhcyBhIG5ldyBk YXRhIHR5cGUuClRoZSB0eXBlIE5BTUUgY2FuIHRoZW4gYmUgdXNlZCBpbiBgY2wtdHlwZWNh c2UnLCBgY2wtY2hlY2stdHlwZScsIGV0YywKYW5kIGFzIGFyZ3VtZW50IHR5cGUgZm9yIGRp c3BhdGNoaW5nIGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcy4KCkFSR0xJU1QgaXMgYSBDb21t b24gTGlzcCBhcmd1bWVudCBsaXN0IG9mIHRoZSBzb3J0IGFjY2VwdGVkIGJ5CmBjbC1kZWZt YWNybycuICBCT0RZIGZvcm1zIGFyZSBldmFsdWF0ZWQgYW5kIHNob3VsZCByZXR1cm4gYSB0 eXBlCnNwZWNpZmllciB0aGF0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIHR5cGUgKHNlZSB0aGUg SW5mbyBub2RlIGAoY2wpIFR5cGUKUHJlZGljYXRlcycgaW4gdGhlIEdOVSBFbWFjcyBDb21t b24gTGlzcCBFbXVsYXRpb24gbWFudWFsKS4KCklmIHRoZXJlIGlzIGEgYGRlY2xhcmUnIGZv cm0gaW4gQk9EWSwgdGhlIHNwZWMgKHBhcmVudHMgUEFSRU5UUykgaXMKcmVjb2duaXplZCB0 byBzcGVjaWZ5IGEgbGlzdCBvZiB0eXBlcyBOQU1FIGlzIGEgc3VidHlwZSBvZi4gIEZvcgpp bnN0YW5jZToKCiAgKGNsLWRlZnR5cGUyIHVuc2lnbmVkLWJ5dGUgKCZvcHRpb25hbCBiaXRz KQogICAgXCJVbnNpZ25lZCBpbnRlZ2VyLlwiCiAgICAobGlzdCBcXD0naW50ZWdlciAwIChp ZiAoZXEgYml0cyBcXD0nKikgYml0cyAoMS0gKGFzaCAxIGJpdHMpKSkpKQoKICAoY2wtZGVm dHlwZTIgdW5zaWduZWQtOGJpdHMgKCkKICAgIFwiVW5zaWduZWQgOC1iaXRzIGludGVnZXIu XCIKICAgIChkZWNsYXJlIChwYXJlbnRzIHVuc2lnbmVkLWJ5dGUpKQogICAgXFw9Jyh1bnNp Z25lZC1ieXRlIDgpKQoKVGhlIGxpc3Qgb2YgUEFSRU5UUyB0eXBlcyBkZXRlcm1pbmVzIHRo ZSBvcmRlciBvZiBtZXRob2RzIGludm9jYXRpb24sCmFuZCBtaXNzaW5nIFBBUkVOVFMgbWF5 IGNhdXNlIGluY29ycmVjdCBvcmRlcmluZyBvZiBtZXRob2RzLCB3aGlsZQpleHRyYW5lb3Vz IFBBUkVOVFMgbWF5IGNhdXNlIHVzZSBvZiBleHRyYW5lb3VzIG1ldGhvZHMuIgogIChkZWNs YXJlIChkZWJ1ZyBjbC1kZWZtYWNybykgKGRvYy1zdHJpbmcgMykgKGluZGVudCAyKSkKICAo cGNhc2UtbGV0KgogICAgICAoKGAoLGRlY2xzIC4gLGZvcm1zKSAobWFjcm9leHAtcGFyc2Ut Ym9keSBib2R5KSkKICAgICAgIChkb2NzdHJpbmcgKGlmIChzdHJpbmdwIChjYXIgZGVjbHMp KQogICAgICAgICAgICAgICAgICAgICAgKGNhciBkZWNscykKICAgICAgICAgICAgICAgICAg ICAoY2FkciAoYXNzcSA6ZG9jdW1lbnRhdGlvbiBkZWNscykpKSkKICAgICAgIChwYXJlbnRz IChjZHIgKGFzc3EgJ3BhcmVudHMgKGNkciAoYXNzcSAnZGVjbGFyZSBkZWNscykpKSkpKQog ICAgKGFuZCBwYXJlbnRzIGFyZ2xpc3QKICAgICAgICAgKGVycm9yICJQYXJlbnRzIHNwZWNp ZmllZCwgYnV0IGFyZ2xpc3Qgbm90IGVtcHR5IikpCiAgICAoaWYgZG9jc3RyaW5nIChzZXRx IGZvcm1zIChjb25zIGRvY3N0cmluZyBmb3JtcykpKQogICAgYChjbC1ldmFsLXdoZW4gKGNv bXBpbGUgbG9hZCBldmFsKQogICAgICAgKGNsLS10eXBlLWdlbmVyYWxpemUgJyxuYW1lICcs cGFyZW50cyAsZG9jc3RyaW5nKQogICAgICAgKGRlZmluZS1zeW1ib2wtcHJvcCAnLG5hbWUg J2NsLWRlZnR5cGUtaGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAoY2wtZnVu Y3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCZjbC1kZWZzICgn KikgLEBhcmdsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsQGZvcm1zKSkp KSkpCgo7OyBJbnRlcm5hbCBkYXRhIHVzZWQgdG8gZGV0ZWN0IGVuZGxlc3MgcmVjdXJzaW9u IGluICdjbC10eXBlLW9mJy4KKGRlZnZhciBjbC0tdHlwZS1vYmplY3QgKG1ha2Utc3ltYm9s ICJ2b2lkIikpCjs7IEVuc3VyZSBlYWNoIHR5cGUgc2F0aXNmaWVzIGBlcWwnLgooZGVmdmFy IGNsLS10eXBlLXVuaXF1ZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCkKICAiUmVj b3JkIGFuIHVuaXF1ZSB2YWx1ZSBvZiBlYWNoIHR5cGUuIikKCjs7IEZJWE1FOiBgY2wtdHlw ZXMtb2YnIENQVSBjb3N0IGlzIHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9mIHR5cGVz Cjs7IGRlZmluZWQgd2l0aCBgY2wtZGVmdHlwZScsIHNvIHRoZSBtb3JlIHBvcHVsYXIgaXQg Z2V0cywgdGhlIHNsb3dlcgo7OyBpdCBiZWNvbWVzLiAgQW5kIG9mIGNvdXJzZSwgdGhlIGNv c3Qgb2YgZWFjaCB0eXBlIGNoZWNrIGlzCjs7IHVuYm91bmRlZCwgc28gYSBzaW5nbGUgImV4 cGVuc2l2ZSIgdHlwZSBjYW4gc2xvdyBldmVyeXRoaW5nIGRvd24KOzsgZnVydGhlci4KOzsK OzsgVGhlIHVzdWFsIGRpc3BhdGNoIGlzCjs7Cjs7ICAgKGxhbWJkYSAoYXJnICZyZXN0IGFy Z3MpCjs7ICAgICAobGV0ICgoZiAoZ2V0aGFzaCAoY2wtdHlwZW9mIGFyZykgcHJlY29tcHV0 ZWQtbWV0aG9kcy10YWJsZSkpKQo7OyAgICAgICAoaWYgZgo7OyAgICAgICAgICAgKGFwcGx5 IGYgYXJnIGFyZ3MpCjs7ICAgICAgICAgOzsgU2xvdyBjYXNlIHdoZW4gZW5jb3VudGVyaW5n IGEgbmV3IHR5cGUKOzsgICAgICAgICAuLi4pKSkKOzsKOzsgd2hlcmUgb2Z0ZW4gdGhlIG1v c3QgZXhwZW5zaXZlIHBhcnQgaXMgYCZyZXN0JyAod2hpY2ggaGFzIHRvCjs7IGFsbG9jYXRl IGEgbGlzdCBmb3IgdGhvc2UgcmVtYWluaW5nIGFyZ3VtZW50cyksCjs7Cjs7IFNvIHdlJ3Jl IHRhbGtpbmcgYWJvdXQgcmVwbGFjaW5nCjs7Cjs7ICAgJnJlc3QgKyBjbC10eXBlLW9mICsg Z2V0aGFzaCArIGlmICsgYXBwbHkKOzsKOzsgd2l0aCBhIGZ1bmN0aW9uIHRoYXQgbG9vcHMg b3ZlciBOIHR5cGVzLCBjYWxsaW5nIGBjbC10eXBlcCcgb24gZWFjaAo7OyBvbmUgb2YgdGhl bSAoYGNsLXR5cGVwJyBpdHNlbGYgYmVpbmcgYSByZWN1cnNpdmUgZnVuY3Rpb24gdGhhdAo7 OyBiYXNpY2FsbHkgaW50ZXJwcmV0cyB0aGUgdHlwZSBsYW5ndWFnZSkuICBUaGlzIGlzIGdv aW5nIHRvIHNsb3cKOzsgZG93biBkaXNwYXRjaCB2ZXJ5IHNpZ25pZmljYW50bHkgZm9yIHRo b3NlIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQKOzsgaGF2ZSBhIG1ldGhvZCB0aGF0IGRpc3Bh dGNoZXMgb24gYSB1c2VyIGRlZmluZWQgdHlwZSwgY29tcGFyZWQgdG8KOzsgdGhvc2UgdGhh dCBkb24ndC4KOzsKOzsgQSBwb3NzaWJsZSBmdXJ0aGVyIGltcHJvdmVtZW50Ogo7Owo7OyAt IGJhc2VkIG9uIHRoZSBQQVJFTlRTIGRlY2xhcmF0aW9uLCBjcmVhdGUgYSBtYXAgZnJvbSBi dWlsdGluLXR5cGUKOzsgICB0byB0aGUgc2V0IG9mIGNsLXR5cGVzIHRoYXQgaGF2ZSB0aGF0 IGJ1aWx0aW4tdHlwZSBhbW9uZyB0aGVpcgo7OyAgIHBhcmVudHMuICBUaGF0IHByZXN1bWVz IHNvbWUgUEFSRU5UUyBpbmNsdWRlIHNvbWUgYnVpbHRpbi10eXBlcywKOzsgICBvYnZpb3Vz bHkgb3RoZXJ3aXNlIHRoZSBtYXAgd2lsbCBiZSB0cml2aWFsIHdpdGggYWxsIGNsLXR5cGVz Cjs7ICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBgdCcgImR1bW15IHBhcmVudCIuICBbIFdlIGNv dWxkIGV2ZW4gZ28gY3JhenkKOzsgICBhbmQgdHJ5IGFuZCBndWVzcyBQQVJFTlRTIHdoZW4g bm90IHByb3ZpZGVkLCBieSBhbmFseXppbmcgdGhlCjs7ICAgdHlwZSdzIGRlZmluaXRpb24u IF0KOzsKOzsgLSBpbiBgY2wtdHlwZXMtb2YnIHN0YXJ0IGJ5IGNhbGxpbmcgYGNsLXR5cGUt b2YnLCB0aGVuIHVzZSB0aGUgbWFwCjs7ICAgdG8gZmluZCB3aGljaCBjbC10eXBlcyBtYXkg bmVlZCB0byBiZSBjaGVja2VkLgo7OwooZGVmdW4gY2wtdHlwZXMtb2YgKG9iamVjdCkKICAi UmV0dXJuIHRoZSB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0by4KUmV0dXJuIGFuIHVuaXF1ZSBs aXN0IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCm1vc3Qg c3BlY2lmaWMgdHlwZSB0byB0aGUgbW9zdCBnZW5lcmFsLiIKICA7OyBJZ25vcmUgcmVjdXJz aXZlIGNhbGwgb24gdGhlIHNhbWUgT0JKRUNULCB3aGljaCBjYW4gbGVnaXRpbWF0ZWx5CiAg Ozsgb2NjdXIgd2hlbiBhIHBhcmVudCB0eXBlIGlzIGNoZWNraW5nIHdoZXRoZXIgYW4gb2Jq ZWN0J3MgdHlwZSBpcwogIDs7IHRoYXQgb2Ygb25lIG9mIGl0cyBjaGlsZHJlbi4KICAodW5s ZXNzIChlcSBvYmplY3QgY2wtLXR5cGUtb2JqZWN0KQogICAgKGxldCAoKGNsLS10eXBlLW9i amVjdCBvYmplY3QpCiAgICAgICAgICAoZm91bmQgKGxpc3QgKGNsLS10eXBlLXBhcmVudHMg KGNsLXR5cGUtb2Ygb2JqZWN0KSkpKSkKICAgICAgOzsgQnVpbGQgYSBEQUcgb2YgYWxsIHR5 cGVzIE9CSkVDVCBiZWxvbmdzIHRvLgogICAgICAoZG9saXN0ICh0eXBlIGNsLS10eXBlLWxp c3QpCiAgICAgICAgKGFuZAogICAgICAgICA7OyBTa2lwIHR5cGUgbm90IGRlZmluZWQgYnkg YGNsLWRlZnR5cGUnLgogICAgICAgICAoY2wtdHlwZS1jbGFzcy1wIChjbC0tZmluZC1jbGFz cyB0eXBlKSkKICAgICAgICAgOzsgSWYgQkFSIGlzIGRlY2xhcmVkIGFzIGEgcGFyZW50IG9m IEZPTyBhbmQgYGNsLXR5cGVzLW9mJwogICAgICAgICA7OyBoYXMgYWxyZWFkeSBkZWNpZGVk IHRoYXQgdGhlIHZhbHVlIGlzIG9mIHR5cGUgRk9PLCB0aGVuIHdlCiAgICAgICAgIDs7IGFs cmVhZHkga25vdyBCQVIgd2lsbCBiZSBpbiB0aGUgb3V0cHV0IGFueXdheSBhbmQgdGhlcmUn cwogICAgICAgICA7OyBubyBwb2ludCB0ZXN0aW5nIEJBUi4gIFNvLCBza2lwIHR5cGUgYWxy ZWFkeSBzZWxlY3RlZCBhcwogICAgICAgICA7OyBwYXJlbnQgb2YgYW5vdGhlciB0eXBlLCBh c3N1bWluZyB0aGF0LCBtb3N0IG9mIHRoZSB0aW1lLAogICAgICAgICA7OyBgYXNzcScgd2ls bCBiZSBmYXN0ZXIgdGhhbiBgY2wtdHlwZXAnLgogICAgICAgICAobnVsbCAoYXNzcSB0eXBl IGZvdW5kKSkKICAgICAgICAgOzsgSWYgT0JKRUNUIGlzIG9mIHR5cGUsIGFkZCB0eXBlIGFu ZCBwYXJlbnRzIHRvIHRoZSBEQUcuCiAgICAgICAgIChjbC10eXBlcCBvYmplY3QgdHlwZSkK ICAgICAgICAgOzsgKGRvbGlzdCAocCAoY2wtLXR5cGUtcGFyZW50cyB0eXBlKSkKICAgICAg ICAgOzsgICAocHVzaCAoY2wtLXR5cGUtcGFyZW50cyBwKSBmb3VuZCkpCiAgICAgICAgIDs7 IEVxdWl2YWxlbnQgdG8gdGhlIGBkb2xpc3QnIGFib3ZlLCBidXQgZmFzdGVyOiBhdm9pZCB0 bwogICAgICAgICA7OyByZWNvbXB1dGUgc2V2ZXJhbCBsaXN0cyBvZiBwYXJlbnRzIHdlIGFs cmVhZHkga25vdy4KICAgICAgICAgKGxldCAoKHBsIChjbC0tdHlwZS1wYXJlbnRzIHR5cGUp KSkKICAgICAgICAgICAod2hpbGUgcGwKICAgICAgICAgICAgIChwdXNoIHBsIGZvdW5kKQog ICAgICAgICAgICAgKHNldHEgcGwgKGNkciBwbCkpKSkKICAgICAgICAgKSkKICAgICAgOzsg Q29tcHV0ZSBhbiBvcmRlcmVkIGxpc3Qgb2YgdHlwZXMgZnJvbSB0aGUgY29sbGVjdGVkIERB Ry4KICAgICAgKHNldHEgZm91bmQgKG1lcmdlLW9yZGVyZWQtbGlzdHMgZm91bmQpKQogICAg ICA7OyBSZXR1cm4gYW4gdW5pcXVlIHZhbHVlIG9mIHRoaXMgbGlzdCBvZiB0eXBlcywgd2hp Y2ggaXMgYWxzbwogICAgICA7OyB0aGUgbGlzdCBvZiBzcGVjaWZpZXJzIGZvciB0aGlzIHR5 cGUuCiAgICAgICh3aXRoLW1lbW9pemF0aW9uIChnZXRoYXNoIGZvdW5kIGNsLS10eXBlLXVu aXF1ZSkKICAgICAgICBmb3VuZCkpKSkKCjs7OyBNZXRob2QgZGlzcGF0Y2hpbmcKOzsKKGNs LWdlbmVyaWMtZGVmaW5lLWdlbmVyYWxpemVyIGNsLS10eXBlLWdlbmVyYWxpemVyCiAgMjAg OzsgInR5cGVvZiIgPCAiY2wtdHlwZXMtb2YiIDwgImhlYWQiIHByaW9yaXR5CiAgKGxhbWJk YSAob2JqICZyZXN0IF8pIGAoY2wtdHlwZXMtb2YgLG9iaikpCiAgKGxhbWJkYSAodGFnICZy ZXN0IF8pIChpZiAoY29uc3AgdGFnKSB0YWcpKSkKCihjbC1kZWZtZXRob2QgY2wtZ2VuZXJp Yy1nZW5lcmFsaXplcnMgOmV4dHJhICJjbC10eXBlcy1vZiIgKHR5cGUpCiAgIlN1cHBvcnQg Zm9yIGRpc3BhdGNoIG9uIHR5cGVzLiIKICAoaWYgKGNsLS10eXBlLXAgdHlwZSkKICAgICAg KGxpc3QgY2wtLXR5cGUtZ2VuZXJhbGl6ZXIpCiAgICAoY2wtY2FsbC1uZXh0LW1ldGhvZCkp KQoKKHByb3ZpZGUgJ2NsLXR5cGVzKQoKOzs7IGNsLXR5cGVzLmVsIGVuZHMgaGVyZQo= --------------4ow9Gxj9UDAJ0uo5JML1T0bX--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 18 Apr 2025 15:07:20 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 18 11:07:19 2025 Received: from localhost ([127.0.0.1]:52460 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u5nJC-00009O-SY for submit <at> debbugs.gnu.org; Fri, 18 Apr 2025 11:07:19 -0400 Received: from [80.12.242.23] (port=42707 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u5nIt-0007yS-FT for 77725 <at> debbugs.gnu.org; Fri, 18 Apr 2025 11:07:10 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 5nF4uuSNM4rbB5nF7uiQrQ; Fri, 18 Apr 2025 17:03:04 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1744988584; bh=HkgjYspVaLkQfXp74jCtnjW76YTINsxJlnVmE/eUXxI=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=LB4FVUqQ6y2ifapK8EMcJGoPVrjkbwQFh7wqWJJQoU2J8LN0yaYm0p2S9dUXOOjvF 28T+aSymDPA7aKXgjujl0rw5/GARSwntZPZc1elGmpVJyn7oJkiO3L/UVhYptkid0U sg5YRW1Z5rENVdogVJl5PH75YQz4KztIUzvgIlpQbcM9HHDHFVo3vp34tpjCtDylMg o4Enn2/qaNqtkrDmrMP3IdFb7Sj0Nw07sqO14DwlKJFefzNCFwGqrRnKpeYasm/CnW 3kn/1q4kazWxWjB7Hx76e0rp94b8IGPlIZIRSYax25l+MsxkqFpZwPktQTtjil5XJK Lc3lbICXj42Hw== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Fri, 18 Apr 2025 17:03:04 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------oQNclki4E7GToXoSUh4I3NAy" Message-ID: <ebfd6ed4-a0d2-4655-a5ef-07fc74852b58@HIDDEN> Date: Fri, 18 Apr 2025 17:02:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN> <f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN> <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN> <ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN> <jwvbjt08401.fsf-monnier+emacs@HIDDEN> <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwv8qnyi281.fsf-monnier+emacs@HIDDEN> X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Hi Stefan, >> (merge-ordered-lists '((test test))) >> => (test test) > > Ah, right, `merge-ordered-lists` presumes the arg lists are already sane. > So, I kept the test to ensure `name' is not in `parents'. Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. [80.12.242.23 listed in bl.score.senderscore.com] 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. [80.12.242.23 listed in sa-trusted.bondedsender.org] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [80.12.242.23 listed in list.dnswl.org] 0.0 T_SPF_TEMPERROR SPF: test of record failed (temperror) 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (da_vid[at]orange.fr) 0.0 T_SPF_HELO_TEMPERROR SPF: test of HELO record failed (temperror) 1.3 RDNS_NONE Delivered to internal network by a host with no rDNS 0.0 SPOOFED_FREEMAIL_NO_RDNS From SPOOFED_FREEMAIL and no rDNS X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.3 (/) This is a multi-part message in MIME format. --------------oQNclki4E7GToXoSUh4I3NAy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Stefan, >> (merge-ordered-lists '((test test))) >> => (test test) > > Ah, right, `merge-ordered-lists` presumes the arg lists are already sane. > So, I kept the test to ensure `name' is not in `parents'. >>> The converse is that if we have already decided that the value is *not* >>> for type BAR, then it can't be of type FOO either, so there's no point >>> testing FOO. >> Wouldn't this involve calculating the parents of all the types traversed, >> instead of just the matching ones? > > I wasn't describing an algorithm, just a principle that can be used > within an algorithm. Depending on the algorithm you use it can be used > in different ways. With your current loop, I don't think you can make > much use of it. > > But I think what we could do fairly easily is the following: > > - based on the PARENTS declaration, create a map from builtin-type to > the set of cl-types that have that builtin-type among their parents. > That presumes some PARENTS include some builtin-types, obviously > otherwise the map will be trivial with all cl-types associated with > the `t` "dummy parent". > [ We could even go crazy and try and guess PARENTS when not provided, > by analyzing the type's definition. ] > - in `cl-types-of` start by calling `cl-type-of`, then use the map to > find which cl-types may need to be checked. > > But let's keep this for later. I was thinking about the exact same idea not long ago :-) I totally agree with your analysis. I noted this point in a FIXME. Please, find attached a new version of cl-types.el: - I've divided the code more logically between the `cl-deftype2' macro and the `cl--type-generalize' function. - In `cl-types-of', I implemented the idea of not testing a type already selected as a parent of a type already selected :-) - I tried to add some comments to the not so obvious code. I also wrote a first try at a test file, cl-types-tests.el, also attached: - It includes your proposed tests with multiples-of... All tests pass for me :-) Please let me know if something is not correct, need more work, etc. Regarding a possible merge in cl-lib, should cl-types.el be copied at the end of cl-lib, after cl-macs is loaded? If I correctly understand the logic of loading these libs ;-) Thank you! David --------------oQNclki4E7GToXoSUh4I3NAy Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types-tests.el" Content-Disposition: attachment; filename="cl-types-tests.el" Content-Transfer-Encoding: base64 Ozs7IFRlc3QgYGNsLXR5cGVkZWYnIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQo7Owoo cmVxdWlyZSAnZXJ0KQoocmVxdWlyZSAnY2wtdHlwZXMpCgooZXJ0LWRlZnRlc3QgY2wtdHlw ZXMtdGVzdC0xICgpCiAgIlRlc3QgdHlwZXMgZGVmaW5pdGlvbiBhbmQgY2wtdHlwZXMtb2Yu IgogIAogIChzaG91bGQKICAgKGZ1bmN0aW9ucAogICAgKGV2YWwKICAgICAnKGNsLWRlZnR5 cGUyIG11bHRpcGxlcy1vZiAoJm9wdGlvbmFsIG0pCiAgICAgICAgKGxldCAoKG11bHRpcGxl cCAoaWYgKGVxIG0gJyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIydpZ25vcmUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAobikgKD0gMCAoJSBuIG0pKSkp KSkgIAogICAgICAgICAgYChhbmQgaW50ZWdlciAoc2F0aXNmaWVzICxtdWx0aXBsZXApKSkp CiAgICAgbGV4aWNhbC1iaW5kaW5nCiAgICAgKSkpCiAgCiAgKHNob3VsZAogICAoZnVuY3Rp b25wCiAgICAoZXZhbAogICAgICcoY2wtZGVmdHlwZTIgbXVsdGlwbGVzLW9mLTIgKCkKICAg ICAgICAnKG11bHRpcGxlcy1vZiAyKSkKICAgICBsZXhpY2FsLWJpbmRpbmcKICAgICApKSkK ICAKICAoc2hvdWxkCiAgIChmdW5jdGlvbnAKICAgIChldmFsCiAgICAgJyhjbC1kZWZ0eXBl MiBtdWx0aXBsZXMtb2YtMyAoKQogICAgICAgICcobXVsdGlwbGVzLW9mIDMpKQogICAgIGxl eGljYWwtYmluZGluZwogICAgICkpKQogIAogIChzaG91bGQKICAgKGZ1bmN0aW9ucAogICAg KGV2YWwKICAgICAnKGNsLWRlZnR5cGUyIG11bHRpcGxlcy1vZi00ICgpCiAgICAgICAgKGRl Y2xhcmUgKHBhcmVudHMgbXVsdGlwbGVzLW9mLTIpKQogICAgICAgICcoYW5kIG11bHRpcGxl cy1vZi0yIChtdWx0aXBsZXMtb2YgNCkpKQogICAgIGxleGljYWwtYmluZGluZwogICAgICkp KQoKICA7OyBUZXN0IHRoYXQgKGNsLXR5cGVzLW9mIDQpIGlzIChtdWx0aXBsZXMtb2YtNCBt dWx0aXBsZXMtb2YtMiAuLi4pCiAgOzsgVGVzdCB0aGF0IChjbC10eXBlcy1vZiA2KSBpcyAo bXVsdGlwbGVzLW9mLTMgbXVsdGlwbGVzLW9mLTIgLi4uKQogIDs7IFRlc3QgdGhhdCAoY2wt dHlwZXMtb2YgMTIpIGlzIChtdWx0aXBsZXMtb2YtNCBtdWx0aXBsZXMtb2YtMyBtdWx0aXBs ZXMtb2YtMiAuLi4pCiAgKHNob3VsZAogICAoZXF1YWwKICAgIChjbC10eXBlcy1vZiAyKQog ICAgJyggbXVsdGlwbGVzLW9mLTIgZml4bnVtIGludGVnZXIgbnVtYmVyIGludGVnZXItb3It bWFya2VyCiAgICAgICBudW1iZXItb3ItbWFya2VyIGF0b20gdCkKICAgICkpCgogIChzaG91 bGQKICAgKGVxdWFsCiAgICAoY2wtdHlwZXMtb2YgNCkKICAgICcoIG11bHRpcGxlcy1vZi00 IG11bHRpcGxlcy1vZi0yIGZpeG51bSBpbnRlZ2VyIG51bWJlcgogICAgICAgaW50ZWdlci1v ci1tYXJrZXIgbnVtYmVyLW9yLW1hcmtlciBhdG9tIHQpCiAgICApKQoKICAoc2hvdWxkCiAg IChlcXVhbAogICAgKGNsLXR5cGVzLW9mIDYpCiAgICAnKCBtdWx0aXBsZXMtb2YtMyBtdWx0 aXBsZXMtb2YtMiBmaXhudW0gaW50ZWdlciBudW1iZXIKICAgICAgIGludGVnZXItb3ItbWFy a2VyIG51bWJlci1vci1tYXJrZXIgYXRvbSB0KQogICAgKSkKCiAgKHNob3VsZAogICAoZXF1 YWwKICAgIChjbC10eXBlcy1vZiAxMikKICAgICcoIG11bHRpcGxlcy1vZi0zIG11bHRpcGxl cy1vZi00IG11bHRpcGxlcy1vZi0yIGZpeG51bSBpbnRlZ2VyCiAgICAgICBudW1iZXIgaW50 ZWdlci1vci1tYXJrZXIgbnVtYmVyLW9yLW1hcmtlciBhdG9tIHQpCiAgICApKQoKICAoc2hv dWxkCiAgIChlcXVhbAogICAgKGNsLXR5cGVzLW9mIDUpCiAgICAnKGZpeG51bSBpbnRlZ2Vy IG51bWJlciBpbnRlZ2VyLW9yLW1hcmtlciBudW1iZXItb3ItbWFya2VyIGF0b20gdCkKICAg ICkpCgogIDs7IENsZWFudXAKICAobWFwYyAjJ2NsLS10eXBlLXVuZGVmaW5lIGNsLS10eXBl LWxpc3QpCgogICkKCihlcnQtZGVmdGVzdCBjbC10eXBlcy10ZXN0LTIgKCkKICAiVGVzdCB0 eXBlcyBkZWZpbml0aW9uIGFuZCBkaXNwYXRjaC4iCgogIChzaG91bGQKICAgKGZ1bmN0aW9u cAogICAgKGV2YWwKICAgICAnKGNsLWRlZnR5cGUyIHVuc2lnbmVkLWJ5dGUgKCZvcHRpb25h bCBiaXRzKQogICAgICAgICJVbnNpZ25lZCBpbnRlZ2VyLiIKICAgICAgICBgKGludGVnZXIg MCAsKGlmIChlcSBiaXRzICcqKSBiaXRzICgxLSAoYXNoIDEgYml0cykpKSkpCiAgICAgbGV4 aWNhbC1iaW5kaW5nCiAgICAgKSkpCgogIChzaG91bGQKICAgKGZ1bmN0aW9ucAogICAgKGV2 YWwKICAgICAnKGNsLWRlZnR5cGUyIHVuc2lnbmVkLTE2Yml0cyAoKQogICAgICAgICJVbnNp Z25lZCAxNi1iaXRzIGludGVnZXIuIgogICAgICAgIChkZWNsYXJlIChwYXJlbnRzIHVuc2ln bmVkLWJ5dGUpKQogICAgICAgICcodW5zaWduZWQtYnl0ZSAxNikpCiAgICAgbGV4aWNhbC1i aW5kaW5nCiAgICAgKSkpCgogIChzaG91bGQKICAgKGZ1bmN0aW9ucAogICAgKGV2YWwKICAg ICAnKGNsLWRlZnR5cGUyIHVuc2lnbmVkLThiaXRzICgpCiAgICAgICAgIlVuc2lnbmVkIDgt Yml0cyBpbnRlZ2VyLiIKICAgICAgICAoZGVjbGFyZSAocGFyZW50cyB1bnNpZ25lZC0xNmJp dHMpKQogICAgICAgICcodW5zaWduZWQtYnl0ZSA4KSkKICAgICBsZXhpY2FsLWJpbmRpbmcK ICAgICApKSkKCiAgOzsgSW52YWxpZCBEQUcgZXJyb3IKICAoc2hvdWxkLWVycm9yCiAgIChl dmFsCiAgICAnKGNsLWRlZnR5cGUyIHVuc2lnbmVkLTE2Yml0cyAoKQogICAgICAgIlVuc2ln bmVkIDE2LWJpdHMgaW50ZWdlci4iCiAgICAgICAoZGVjbGFyZSAocGFyZW50cyB1bnNpZ25l ZC04Yml0cykpCiAgICAgICAnKHVuc2lnbmVkLWJ5dGUgMTYpKQogICAgbGV4aWNhbC1iaW5k aW5nCiAgICApKQoKICAoZXZhbAogICAnKGNsLWRlZm1ldGhvZCBteS1mb28gKChfbiB1bnNp Z25lZC1ieXRlKSkKICAgICAgKGZvcm1hdCAidW5zaWduZWQiKSkKICAgbGV4aWNhbC1iaW5k aW5nCiAgICkKCiAgKGV2YWwKICAgJyhjbC1kZWZtZXRob2QgbXktZm9vICgoX24gdW5zaWdu ZWQtMTZiaXRzKSkKICAgICAgKGZvcm1hdCAidW5zaWduZWQgMTZiaXRzIC0gYWxzbyAlcyIK ICAgICAgICAgICAgICAoY2wtY2FsbC1uZXh0LW1ldGhvZCkpKQogICBsZXhpY2FsLWJpbmRp bmcKICAgKQoKICAoZXZhbAogICAnKGNsLWRlZm1ldGhvZCBteS1mb28gKChfbiB1bnNpZ25l ZC04Yml0cykpCiAgICAgIChmb3JtYXQgInVuc2lnbmVkIDhiaXRzIC0gYWxzbyAlcyIKICAg ICAgICAgICAgICAoY2wtY2FsbC1uZXh0LW1ldGhvZCkpKQogICBsZXhpY2FsLWJpbmRpbmcK ICAgKQogIAogIChzaG91bGQKICAgKGVxdWFsCiAgICAobXktZm9vIDEwMCkKICAgICJ1bnNp Z25lZCA4Yml0cyAtIGFsc28gdW5zaWduZWQgMTZiaXRzIC0gYWxzbyB1bnNpZ25lZCIKICAg ICkpCgogIChzaG91bGQKICAgKGVxdWFsCiAgICAobXktZm9vIDI1NikKICAgICJ1bnNpZ25l ZCAxNmJpdHMgLSBhbHNvIHVuc2lnbmVkIgogICAgKSkKCiAgKHNob3VsZAogICAoZXF1YWwK ICAgIChteS1mb28gbW9zdC1wb3NpdGl2ZS1maXhudW0pCiAgICAidW5zaWduZWQiCiAgICAp KQogIAogIDs7IENsZWFudXAKICAobWFwYyAjJ2NsLS10eXBlLXVuZGVmaW5lIGNsLS10eXBl LWxpc3QpCiAgKQoKKHByb3ZpZGUgJ2NsLXR5cGVzLXRlc3RzKQoKOzs7IGNsLXR5cGVzLXRl c3RzLmVsIGVuZHMgaGVyZQo= --------------oQNclki4E7GToXoSUh4I3NAy Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types.el" Content-Disposition: attachment; filename="cl-types.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBXaWxsIGJlIHJlbW92ZWQgd2hl biBpbmNsdWRlZCBpbiBjbC1saWIuCihyZXF1aXJlICdjbC1saWIpCihldmFsLXdoZW4tY29t cGlsZSAocmVxdWlyZSAnY2wtbWFjcykpICA7Rm9yIGNsLS1maW5kLWNsYXNzLgoKOzsgRXh0 ZW5kIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgZGF0YSB0eXBlcyB3aGljaCBhcmUgYWxzbyB2 YWxpZAo7OyBhcmd1bWVudCB0eXBlcyBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlv biBtZXRob2RzIChzZWUgYWxzbwo7OyA8aHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvY2dpL2J1 Z3JlcG9ydC5jZ2k/YnVnPTc3NzI1PikuCjs7Cjs7IFRoZSBtYWluIGVudHJ5IHBvaW50cyBh cmU6Cjs7Cjs7IC0gYGNsLWRlZnR5cGUnLCB0aGF0IGRlZmluZXMgbmV3IGRhdGEgdHlwZXMu Cjs7Cjs7IC0gYGNsLXR5cGVzLW9mJywgdGhhdCByZXR1cm5zIHRoZSB0eXBlcyBhbiBvYmpl Y3QgYmVsb25ncyB0by4KCihkZWZ2YXIgY2wtLXR5cGUtbGlzdCBuaWwKICAiTGlzdCBvZiBk ZWZpbmVkIHR5cGVzIHRvIGxvb2t1cCBmb3IgbWV0aG9kIGRpc3BhdGNoaW5nLiIpCgo7OyBG SVhNRTogVGhlIGBjbC1kZWZ0eXBlLWhhbmRsZXInIHByb3BlcnR5IHNob3VsZCBhcmd1YWJs eSBiZSB0dXJuZWQKOzsgaW50byBhIGZpZWxkIG9mIHRoaXMgc3RydWN0IChidXQgaXQgaGFz IHBlcmZvcm1hbmNlIGFuZAo7OyBjb21wYXRpYmlsaXR5IGltcGxpY2F0aW9ucywgc28gbGV0 J3Mgbm90IG1ha2UgdGhhdCBjaGFuZ2UgZm9yIG5vdykuCihjbC1kZWZzdHJ1Y3QKICAgIChj bC10eXBlLWNsYXNzCiAgICAgKDppbmNsdWRlIGNsLS1jbGFzcykKICAgICAoOm5vaW5saW5l IHQpCiAgICAgKDpjb25zdHJ1Y3RvciBuaWwpCiAgICAgKDpjb25zdHJ1Y3RvciBjbC0tdHlw ZS1jbGFzcy1tYWtlCiAgICAgICAgICAgICAgICAgICAobmFtZQogICAgICAgICAgICAgICAg ICAgIGRvY3N0cmluZwogICAgICAgICAgICAgICAgICAgIHBhcmVudC10eXBlcwogICAgICAg ICAgICAgICAgICAgICZhdXggKHBhcmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAo bWFwY2FyCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHR5cGUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChjbC0tZmluZC1jbGFzcyB0eXBlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIlVua25vd24gdHlwZTogJVMi IHR5cGUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LXR5cGVzKSkpKQog ICAgICg6Y29waWVyIG5pbCkpCiAgIlR5cGUgZGVzY3JpcHRvcnMgZm9yIHR5cGVzIGRlZmlu ZWQgYnkgYGNsLWRlZnR5cGUnLiIpCgooZGVmdW4gY2wtLXR5cGUtcCAob2JqZWN0KQogICJS ZXR1cm4gbm9uLW5pbCBpZiBPQkpFQ1QgaXMgYSB1c2VkIGRlZmluZWQgdHlwZS4KVGhhdCBp cywgYSB0eXBlIG9mIGNsYXNzIGBjbC10eXBlLWNsYXNzJy4iCiAgKGFuZCAoc3ltYm9scCBv YmplY3QpCiAgICAgICAoY2wtdHlwZXAgKGNsLS1maW5kLWNsYXNzIG9iamVjdCkgJ2NsLXR5 cGUtY2xhc3MpKSkKCihkZWZtYWNybyBjbC0tdHlwZS1wYXJlbnRzIChuYW1lKQogICJHZXQg cGFyZW50cyBvZiB0eXBlIHdpdGggTkFNRS4KTkFNRSBpcyBhIHN5bWJvbCByZXByZXNlbnRp bmcgYSB0eXBlLiIKICBgKGNsLS1jbGFzcy1hbGxwYXJlbnRzIChjbC0tZmluZC1jbGFzcyAs bmFtZSkpKQoKKGRlZnVuIGNsLS10eXBlLWNoaWxkcmVuIChuYW1lKQogICJHZXQgY2hpbGRy ZW4gb2YgdGhlIHR5cGUgd2l0aCBOQU1FLgpOQU1FIGlzIGEgc3ltYm9sIHJlcHJlc2VudGlu ZyBhIHR5cGUuClJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgdHlwZXMuIgogIChj bC1jaGVjay10eXBlIG5hbWUgKHNhdGlzZmllcyBjbC0tdHlwZS1wKSkKICAobGV0IChjaGls ZHJlbikKICAgIChkb2xpc3QgKGVsdCBjbC0tdHlwZS1saXN0KQogICAgICAob3IgKGVxIG5h bWUgZWx0KQogICAgICAgICAgKGlmIChtZW1xIG5hbWUgKGNsLS10eXBlLXBhcmVudHMgZWx0 KSkKICAgICAgICAgICAgICAocHVzaCBlbHQgY2hpbGRyZW4pKSkpCiAgICBjaGlsZHJlbikp CgooZGVmdW4gY2wtLXR5cGUtZGFnICgpCiAgIlJldHVybiBhIERBRyBmcm9tIHRoZSBsaXN0 IG9mIGRlZmluZWQgdHlwZXMuIgogIChtYXBjYXIgKGxhbWJkYSAodHlwZSkgKGNsLS1jbGFz cy1hbGxwYXJlbnRzIChjbC0tZmluZC1jbGFzcyB0eXBlKSkpCiAgICAgICAgICBjbC0tdHlw ZS1saXN0KSkKCjs7IEtlZXAgaXQgZm9yIG5vdywgZm9yIHRlc3RpbmcuCihkZWZ1biBjbC0t dHlwZS11bmRlZmluZSAobmFtZSkKICAiUmVtb3ZlIHRoZSBkZWZpbml0aW9ucyBvZiB0eXBl IHdpdGggTkFNRS4KTkFNRSBpcyBhbiB1bnF1b3RlZCBzeW1ib2wgcmVwcmVzZW50aW5nIGEg dHlwZS4KU2lnbmFsIGFuIGVycm9yIGlmIG90aGVyIHR5cGVzIGluaGVyaXQgZnJvbSBOQU1F LiIKICAoZGVjbGFyZS1mdW5jdGlvbiBjbC1yZW1wcm9wICJjbC1leHRyYSIgKHN5bWJvbCBw cm9wbmFtZSkpCiAgKGNsLWNoZWNrLXR5cGUgbmFtZSAoc2F0aXNmaWVzIGNsLS10eXBlLXAp KQogICh3aGVuLWxldCogKChjaGlsZHJlbiAoYW5kIChjbC0tdHlwZS1wIG5hbWUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNsLS10eXBlLWNoaWxkcmVuIG5hbWUpKSkpCiAg ICAoZXJyb3IgIlR5cGUgaGFzIGNoaWxkcmVuOiAlUyIgY2hpbGRyZW4pKQogIChjbC1yZW1w cm9wIG5hbWUgJ2NsLS1jbGFzcykKICAoY2wtcmVtcHJvcCBuYW1lICdjbC1kZWZ0eXBlLWhh bmRsZXIpCiAgKHNldHEgY2wtLXR5cGUtbGlzdCAoZGVscSBuYW1lIGNsLS10eXBlLWxpc3Qp KSkKCihkZWZ1biBjbC0tdHlwZS1nZW5lcmFsaXplIChuYW1lIHBhcmVudHMgJm9wdGlvbmFs IGRvY3N0cmluZykKICAiR2VuZXJhbGl6ZSB0eXBlIHdpdGggTkFNRSBmb3IgbWV0aG9kIGRp c3BhdGNoaW5nLgpQQVJFTlRTIGlzIGEgbGlzdCBvZiB0eXBlcyBOQU1FIGlzIGEgc3VidHlw ZSBvZiwgb3IgbmlsLgpET0NTVFJJTkcgaXMgYW4gb3B0aW9uYWwgZG9jdW1lbnRhdGlvbiBz dHJpbmcuIgogIChsZXQgKChvbGR0bGlzdCAoY29weS1zZXF1ZW5jZSBjbC0tdHlwZS1saXN0 KSkKICAgICAgICAob2xkcGxpc3QgKGNvcHktc2VxdWVuY2UgKHN5bWJvbC1wbGlzdCBuYW1l KSkpKQogICAgKGNvbmRpdGlvbi1jYXNlIGVycgogICAgICAgIChsZXQqICgoY2xhc3MgKGNs LS1maW5kLWNsYXNzIG5hbWUpKQogICAgICAgICAgICAgICAocmVjb3JkZWQgKG1lbXEgbmFt ZSBjbC0tdHlwZS1saXN0KSkpCiAgICAgICAgICAoaWYgKG51bGwgY2xhc3MpCiAgICAgICAg ICAgICAgKG9yIChudWxsIHJlY29yZGVkKQogICAgICAgICAgICAgICAgICAoZXJyb3IgIlR5 cGUgZ2VuZXJhbGl6ZWQsIGJ1dCBkb2Vzbid0IGV4aXN0IikpCiAgICAgICAgICAgIChvciBy ZWNvcmRlZCAoZXJyb3IgIlR5cGUgZXhpc3RzLCBidXQgbm90IGdlbmVyYWxpemVkIikpCiAg ICAgICAgICAgIChvciAoY2wtdHlwZXAgY2xhc3MgJ2NsLXR5cGUtY2xhc3MpCiAgICAgICAg ICAgICAgICAoZXJyb3IgIlR5cGUgaW4gYW5vdGhlciBjbGFzczogJVMiICh0eXBlLW9mIGNs YXNzKSkpKQogICAgICAgICAgKGlmIChtZW1xIG5hbWUgcGFyZW50cykKICAgICAgICAgICAg ICAoZXJyb3IgIlR5cGUgaW4gcGFyZW50czogJVMiIHBhcmVudHMpKQogICAgICAgICAgOzsg U2V0dXAgYSB0eXBlIGRlc2NyaXB0b3IgZm9yIE5BTUUuCiAgICAgICAgICAoc2V0ZiAoY2wt LWZpbmQtY2xhc3MgbmFtZSkKICAgICAgICAgICAgICAgIChjbC0tdHlwZS1jbGFzcy1tYWtl IG5hbWUgZG9jc3RyaW5nIHBhcmVudHMpKQogICAgICAgICAgOzsgUmVjb3JkIG5ldyB0eXBl IG5vdyB0byBpbmNsdWRlIGl0cyBkZXBlbmRlbmN5IGluIHRoZSBEQUcuCiAgICAgICAgICAo b3IgcmVjb3JkZWQgKHB1c2ggbmFtZSBjbC0tdHlwZS1saXN0KSkKICAgICAgICAgIDs7IGBj bC10eXBlcy1vZicgaXRlcmF0ZXMgdGhyb3VnaCBhbGwga25vd24gdHlwZXMgdG8gY29sbGVj dAogICAgICAgICAgOzsgYWxsIHRob3NlIGFuIG9iamVjdCBiZWxvbmdzIHRvLCBzb3J0ZWQg ZnJvbSB0aGUgbW9zdAogICAgICAgICAgOzsgc3BlY2lmaWMgdHlwZSB0byB0aGUgbW9yZSBn ZW5lcmFsIHR5cGUuICBTbywga2VlcCB0aGUKICAgICAgICAgIDs7IGdsb2JhbCBsaXN0IGlu IHRoaXMgb3JkZXIuCiAgICAgICAgICAoc2V0cSBjbC0tdHlwZS1saXN0CiAgICAgICAgICAg ICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cwogICAgICAgICAgICAgICAgIChjbC0tdHlwZS1k YWcpCiAgICAgICAgICAgICAgICAgKGxhbWJkYSAoXykgKGVycm9yICJJbnZhbGlkIGRlcGVu ZGVuY3kgZ3JhcGgiKSkpKSkKICAgICAgKGVycm9yCiAgICAgICA7OyBPbiBlcnJvciByZXN0 b3JlIHByZXZpb3VzIGRhdGEuCiAgICAgICAoc2V0cSBjbC0tdHlwZS1saXN0IG9sZHRsaXN0 KQogICAgICAgKHNldGYgKHN5bWJvbC1wbGlzdCBuYW1lKSBvbGRwbGlzdCkKICAgICAgIChl cnJvciAoZm9ybWF0ICJEZWZpbmUgJVMgZmFpbGVkOiAlcyIKICAgICAgICAgICAgICAgICAg ICAgIG5hbWUgKGVycm9yLW1lc3NhZ2Utc3RyaW5nIGVycikpKSkpKSkKCjs7OyMjI2F1dG9s b2FkCihkZWZtYWNybyBjbC1kZWZ0eXBlMiAobmFtZSBhcmdsaXN0ICZyZXN0IGJvZHkpCiAg IkRlZmluZSBOQU1FIGFzIGEgbmV3IGRhdGEgdHlwZS4KVGhlIHR5cGUgTkFNRSBjYW4gdGhl biBiZSB1c2VkIGluIGBjbC10eXBlY2FzZScsIGBjbC1jaGVjay10eXBlJywgZXRjLAphbmQg YXMgYXJndW1lbnQgdHlwZSBmb3IgZGlzcGF0Y2hpbmcgZ2VuZXJpYyBmdW5jdGlvbiBtZXRo b2RzLgoKQVJHTElTVCBpcyBhIENvbW1vbiBMaXNwIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIHNv cnQgYWNjZXB0ZWQgYnkKYGNsLWRlZm1hY3JvJy4gIEJPRFkgZm9ybXMgYXJlIGV2YWx1YXRl ZCBhbmQgc2hvdWxkIHJldHVybiBhIHR5cGUKc3BlY2lmaWVyIHRoYXQgaXMgZXF1aXZhbGVu dCB0byB0aGUgdHlwZSAoc2VlIHRoZSBJbmZvIG5vZGUgYChjbCkgVHlwZQpQcmVkaWNhdGVz JyBpbiB0aGUgR05VIEVtYWNzIENvbW1vbiBMaXNwIEVtdWxhdGlvbiBtYW51YWwpLgoKSWYg dGhlcmUgaXMgYSBgZGVjbGFyZScgZm9ybSBpbiBCT0RZLCB0aGUgc3BlYyAocGFyZW50cyBQ QVJFTlRTKSBpcwpyZWNvZ25pemVkIHRvIHNwZWNpZnkgYSBsaXN0IG9mIHR5cGVzIE5BTUUg aXMgYSBzdWJ0eXBlIG9mLiAgRm9yCmluc3RhbmNlOgoKICAoY2wtZGVmdHlwZTIgdW5zaWdu ZWQtYnl0ZSAoJm9wdGlvbmFsIGJpdHMpCiAgICBcIlVuc2lnbmVkIGludGVnZXIuXCIKICAg IChsaXN0IFxcPSdpbnRlZ2VyIDAgKGlmIChlcSBiaXRzIFxcPScqKSBiaXRzICgxLSAoYXNo IDEgYml0cykpKSkpCgogIChjbC1kZWZ0eXBlMiB1bnNpZ25lZC04Yml0cyAoKQogICAgXCJV bnNpZ25lZCA4LWJpdHMgaW50ZWdlci5cIgogICAgKGRlY2xhcmUgKHBhcmVudHMgdW5zaWdu ZWQtYnl0ZSkpCiAgICBcXD0nKHVuc2lnbmVkLWJ5dGUgOCkpCgpUaGUgbGlzdCBvZiBQQVJF TlRTIHR5cGVzIGRldGVybWluZXMgdGhlIG9yZGVyIG9mIG1ldGhvZHMgaW52b2NhdGlvbiwK YW5kIG1pc3NpbmcgUEFSRU5UUyBtYXkgY2F1c2UgaW5jb3JyZWN0IG9yZGVyaW5nIG9mIG1l dGhvZHMsIHdoaWxlCmV4dHJhbmVvdXMgUEFSRU5UUyBtYXkgY2F1c2UgdXNlIG9mIGV4dHJh bmVvdXMgbWV0aG9kcy4iCiAgKGRlY2xhcmUgKGRlYnVnIGNsLWRlZm1hY3JvKSAoZG9jLXN0 cmluZyAzKSAoaW5kZW50IDIpKQogIChwY2FzZS1sZXQqCiAgICAgICgoYCgsZGVjbHMgLiAs Zm9ybXMpIChtYWNyb2V4cC1wYXJzZS1ib2R5IGJvZHkpKQogICAgICAgKGRvY3N0cmluZyAo aWYgKHN0cmluZ3AgKGNhciBkZWNscykpCiAgICAgICAgICAgICAgICAgICAgICAoY2FyIGRl Y2xzKQogICAgICAgICAgICAgICAgICAgIChjYWRyIChhc3NxIDpkb2N1bWVudGF0aW9uIGRl Y2xzKSkpKQogICAgICAgKHBhcmVudHMgKGNkciAoYXNzcSAncGFyZW50cyAoY2RyIChhc3Nx ICdkZWNsYXJlIGRlY2xzKSkpKSkpCiAgICAoYW5kIHBhcmVudHMgYXJnbGlzdAogICAgICAg ICAoZXJyb3IgIlBhcmVudHMgc3BlY2lmaWVkLCBidXQgYXJnbGlzdCBub3QgZW1wdHkiKSkK ICAgIChpZiBkb2NzdHJpbmcgKHNldHEgZm9ybXMgKGNvbnMgZG9jc3RyaW5nIGZvcm1zKSkp CiAgICBgKGNsLWV2YWwtd2hlbiAoY29tcGlsZSBsb2FkIGV2YWwpCiAgICAgICAoY2wtLXR5 cGUtZ2VuZXJhbGl6ZSAnLG5hbWUgJyxwYXJlbnRzICxkb2NzdHJpbmcpCiAgICAgICAoZGVm aW5lLXN5bWJvbC1wcm9wICcsbmFtZSAnY2wtZGVmdHlwZS1oYW5kbGVyCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjbC1mdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxhbWJkYSAoJmNsLWRlZnMgKCcqKSAsQGFyZ2xpc3QpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICxAZm9ybXMpKSkpKSkKCjs7IEludGVybmFsIGRhdGEgdXNlZCB0byBk ZXRlY3QgZW5kbGVzcyByZWN1cnNpb24gaW4gJ2NsLXR5cGUtb2YnLgooZGVmdmFyIGNsLS10 eXBlLW9iamVjdCAobWFrZS1zeW1ib2wgInZvaWQiKSkKOzsgRW5zdXJlIGVhY2ggdHlwZSBz YXRpc2ZpZXMgYGVxbCcuCihkZWZ2YXIgY2wtLXR5cGUtdW5pcXVlIChtYWtlLWhhc2gtdGFi bGUgOnRlc3QgJ2VxdWFsKQogICJSZWNvcmQgYW4gdW5pcXVlIHZhbHVlIG9mIGVhY2ggdHlw ZS4iKQoKOzsgRklYTUU6IGBjbC10eXBlcy1vZicgQ1BVIGNvc3QgaXMgcHJvcG9ydGlvbmFs IHRvIHRoZSBudW1iZXIgb2YgdHlwZXMKOzsgZGVmaW5lZCB3aXRoIGBjbC1kZWZ0eXBlJywg c28gdGhlIG1vcmUgcG9wdWxhciBpdCBnZXRzLCB0aGUgc2xvd2VyCjs7IGl0IGJlY29tZXMu ICBBbmQgb2YgY291cnNlLCB0aGUgY29zdCBvZiBlYWNoIHR5cGUgY2hlY2sgaXMKOzsgdW5i b3VuZGVkLCBzbyBhIHNpbmdsZSAiZXhwZW5zaXZlIiB0eXBlIGNhbiBzbG93IGV2ZXJ5dGhp bmcgZG93bgo7OyBmdXJ0aGVyLgo7Owo7OyBUaGUgdXN1YWwgZGlzcGF0Y2ggaXMKOzsKOzsg ICAobGFtYmRhIChhcmcgJnJlc3QgYXJncykKOzsgICAgIChsZXQgKChmIChnZXRoYXNoIChj bC10eXBlb2YgYXJnKSBwcmVjb21wdXRlZC1tZXRob2RzLXRhYmxlKSkpCjs7ICAgICAgIChp ZiBmCjs7ICAgICAgICAgICAoYXBwbHkgZiBhcmcgYXJncykKOzsgICAgICAgICA7OyBTbG93 IGNhc2Ugd2hlbiBlbmNvdW50ZXJpbmcgYSBuZXcgdHlwZQo7OyAgICAgICAgIC4uLikpKQo7 Owo7OyB3aGVyZSBvZnRlbiB0aGUgbW9zdCBleHBlbnNpdmUgcGFydCBpcyBgJnJlc3QnICh3 aGljaCBoYXMgdG8KOzsgYWxsb2NhdGUgYSBsaXN0IGZvciB0aG9zZSByZW1haW5pbmcgYXJn dW1lbnRzKSwKOzsKOzsgU28gd2UncmUgdGFsa2luZyBhYm91dCByZXBsYWNpbmcKOzsKOzsg ICAmcmVzdCArIGNsLXR5cGUtb2YgKyBnZXRoYXNoICsgaWYgKyBhcHBseQo7Owo7OyB3aXRo IGEgZnVuY3Rpb24gdGhhdCBsb29wcyBvdmVyIE4gdHlwZXMsIGNhbGxpbmcgYGNsLXR5cGVw JyBvbiBlYWNoCjs7IG9uZSBvZiB0aGVtIChgY2wtdHlwZXAnIGl0c2VsZiBiZWluZyBhIHJl Y3Vyc2l2ZSBmdW5jdGlvbiB0aGF0Cjs7IGJhc2ljYWxseSBpbnRlcnByZXRzIHRoZSB0eXBl IGxhbmd1YWdlKS4gIFRoaXMgaXMgZ29pbmcgdG8gc2xvdwo7OyBkb3duIGRpc3BhdGNoIHZl cnkgc2lnbmlmaWNhbnRseSBmb3IgdGhvc2UgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdAo7OyBo YXZlIGEgbWV0aG9kIHRoYXQgZGlzcGF0Y2hlcyBvbiBhIHVzZXIgZGVmaW5lZCB0eXBlLCBj b21wYXJlZCB0bwo7OyB0aG9zZSB0aGF0IGRvbid0Lgo7Owo7OyBBIHBvc3NpYmxlIGZ1cnRo ZXIgaW1wcm92ZW1lbnQ6Cjs7Cjs7IC0gYmFzZWQgb24gdGhlIFBBUkVOVFMgZGVjbGFyYXRp b24sIGNyZWF0ZSBhIG1hcCBmcm9tIGJ1aWx0aW4tdHlwZQo7OyAgIHRvIHRoZSBzZXQgb2Yg Y2wtdHlwZXMgdGhhdCBoYXZlIHRoYXQgYnVpbHRpbi10eXBlIGFtb25nIHRoZWlyCjs7ICAg cGFyZW50cy4gIFRoYXQgcHJlc3VtZXMgc29tZSBQQVJFTlRTIGluY2x1ZGUgc29tZSBidWls dGluLXR5cGVzLAo7OyAgIG9idmlvdXNseSBvdGhlcndpc2UgdGhlIG1hcCB3aWxsIGJlIHRy aXZpYWwgd2l0aCBhbGwgY2wtdHlwZXMKOzsgICBhc3NvY2lhdGVkIHdpdGggdGhlIGB0JyAi ZHVtbXkgcGFyZW50Ii4gIFsgV2UgY291bGQgZXZlbiBnbyBjcmF6eQo7OyAgIGFuZCB0cnkg YW5kIGd1ZXNzIFBBUkVOVFMgd2hlbiBub3QgcHJvdmlkZWQsIGJ5IGFuYWx5emluZyB0aGUK OzsgICB0eXBlJ3MgZGVmaW5pdGlvbi4gXQo7Owo7OyAtIGluIGBjbC10eXBlcy1vZicgc3Rh cnQgYnkgY2FsbGluZyBgY2wtdHlwZS1vZicsIHRoZW4gdXNlIHRoZSBtYXAKOzsgICB0byBm aW5kIHdoaWNoIGNsLXR5cGVzIG1heSBuZWVkIHRvIGJlIGNoZWNrZWQuCjs7CihkZWZ1biBj bC10eXBlcy1vZiAob2JqZWN0KQogICJSZXR1cm4gdGhlIHR5cGVzIE9CSkVDVCBiZWxvbmdz IHRvLgpSZXR1cm4gYW4gdW5pcXVlIGxpc3Qgb2YgdHlwZXMgT0JKRUNUIGJlbG9uZ3MgdG8s IG9yZGVyZWQgZnJvbSB0aGUKbW9zdCBzcGVjaWZpYyB0eXBlIHRvIHRoZSBtb3N0IGdlbmVy YWwuIgogIDs7IElnbm9yZSByZWN1cnNpdmUgY2FsbCBvbiB0aGUgc2FtZSBPQkpFQ1QsIHdo aWNoIGNhbiBsZWdpdGltYXRlbHkKICA7OyBvY2N1ciB3aGVuIGEgcGFyZW50IHR5cGUgaXMg Y2hlY2tpbmcgd2hldGhlciBhbiBvYmplY3QncyB0eXBlIGlzCiAgOzsgdGhhdCBvZiBvbmUg b2YgaXRzIGNoaWxkcmVuLgogICh1bmxlc3MgKGVxIG9iamVjdCBjbC0tdHlwZS1vYmplY3Qp CiAgICAobGV0ICgoY2wtLXR5cGUtb2JqZWN0IG9iamVjdCkKICAgICAgICAgIChmb3VuZCAo bGlzdCAoY2wtLXR5cGUtcGFyZW50cyAoY2wtdHlwZS1vZiBvYmplY3QpKSkpKQogICAgICA7 OyBCdWlsZCBhIERBRyBvZiBhbGwgdHlwZXMgT0JKRUNUIGJlbG9uZ3MgdG8uCiAgICAgIChk b2xpc3QgKHR5cGUgY2wtLXR5cGUtbGlzdCkKICAgICAgICAoYW5kCgkgOzsgSWYgQkFSIGlz IGRlY2xhcmVkIGFzIGEgcGFyZW50IG9mIEZPTyBhbmQgYGNsLXR5cGVzLW9mJwoJIDs7IGhh cyBhbHJlYWR5IGRlY2lkZWQgdGhhdCB0aGUgdmFsdWUgaXMgb2YgdHlwZSBGT08sIHRoZW4g d2UKCSA7OyBhbHJlYWR5IGtub3cgQkFSIHdpbGwgYmUgaW4gdGhlIG91dHB1dCBhbnl3YXkg YW5kIHRoZXJlJ3MKCSA7OyBubyBwb2ludCB0ZXN0aW5nIEJBUi4gIFNvLCBza2lwIHR5cGUg YWxyZWFkeSBzZWxlY3RlZCBhcwoJIDs7IHBhcmVudCBvZiBhbm90aGVyIHR5cGUsIGFzc3Vt aW5nIHRoYXQsIG1vc3Qgb2YgdGhlIHRpbWUsCgkgOzsgYGFzc3EnIHdpbGwgYmUgZmFzdGVy IHRoYW4gYGNsLXR5cGVwJy4KICAgICAgICAgKG51bGwgKGFzc3EgdHlwZSBmb3VuZCkpCiAg ICAgICAgIDs7IFNraXAgdHlwZSBub3QgZGVmaW5lZCBieSBgY2wtZGVmdHlwZScuCiAgICAg ICAgIChjbC10eXBlcCAoY2wtLWZpbmQtY2xhc3MgdHlwZSkgJ2NsLXR5cGUtY2xhc3MpCiAg ICAgICAgIDs7IElmIE9CSkVDVCBpcyBvZiB0eXBlLCBhZGQgdHlwZSBhbmQgcGFyZW50cyB0 byB0aGUgREFHLgogICAgICAgICAoY2wtdHlwZXAgb2JqZWN0IHR5cGUpCgkgOzsgKGRvbGlz dCAocCAoY2wtLXR5cGUtcGFyZW50cyB0eXBlKSkKCSA7OyAgIChwdXNoIChjbC0tdHlwZS1w YXJlbnRzIHApIGZvdW5kKSkKCSA7OyBFcXVpdmFsZW50IHRvIHRoZSBgZG9saXN0JyBhYm92 ZSwgYnV0IGZhc3RlcjogYXZvaWQgdG8KCSA7OyByZWNvbXB1dGUgc2V2ZXJhbCBsaXN0cyBv ZiBwYXJlbnRzIHdlIGFscmVhZHkga25vdy4KCSAobGV0ICgocGwgKGNsLS10eXBlLXBhcmVu dHMgdHlwZSkpKQoJICAgKHdoaWxlIHBsCgkgICAgIChwdXNoIHBsIGZvdW5kKQoJICAgICAo c2V0cSBwbCAoY2RyIHBsKSkpKQoJICkpCiAgICAgIDs7IENvbXB1dGUgYW4gb3JkZXJlZCBs aXN0IG9mIHR5cGVzIGZyb20gdGhlIGNvbGxlY3RlZCBEQUcuCiAgICAgIChzZXRxIGZvdW5k IChtZXJnZS1vcmRlcmVkLWxpc3RzIGZvdW5kKSkKICAgICAgOzsgUmV0dXJuIGFuIHVuaXF1 ZSB2YWx1ZSBvZiB0aGlzIGxpc3Qgb2YgdHlwZXMsIHdoaWNoIGlzIGFsc28KICAgICAgOzsg dGhlIGxpc3Qgb2Ygc3BlY2lmaWVycyBmb3IgdGhpcyB0eXBlLgogICAgICAod2l0aC1tZW1v aXphdGlvbiAoZ2V0aGFzaCBmb3VuZCBjbC0tdHlwZS11bmlxdWUpCiAgICAgICAgZm91bmQp KSkpCgo7OzsgTWV0aG9kIGRpc3BhdGNoaW5nCjs7CihjbC1nZW5lcmljLWRlZmluZS1nZW5l cmFsaXplciBjbC0tdHlwZS1nZW5lcmFsaXplcgogIDIwIDs7ICJ0eXBlb2YiIDwgImNsLXR5 cGVzLW9mIiA8ICJoZWFkIiBwcmlvcml0eQogIChsYW1iZGEgKG9iaiAmcmVzdCBfKSBgKGNs LXR5cGVzLW9mICxvYmopKQogIChsYW1iZGEgKHRhZyAmcmVzdCBfKSAoaWYgKGNvbnNwIHRh ZykgdGFnKSkpCgooY2wtZGVmbWV0aG9kIGNsLWdlbmVyaWMtZ2VuZXJhbGl6ZXJzIDpleHRy YSAiY2wtdHlwZXMtb2YiICh0eXBlKQogICJTdXBwb3J0IGZvciBkaXNwYXRjaCBvbiB0eXBl cy4iCiAgKGlmIChjbC0tdHlwZS1wIHR5cGUpCiAgICAgIChsaXN0IGNsLS10eXBlLWdlbmVy YWxpemVyKQogICAgKGNsLWNhbGwtbmV4dC1tZXRob2QpKSkKCihwcm92aWRlICdjbC10eXBl cykKCjs7OyBjbC10eXBlcy5lbCBlbmRzIGhlcmUK --------------oQNclki4E7GToXoSUh4I3NAy--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 18 Apr 2025 03:43:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 17 23:43:07 2025
Received: from localhost ([127.0.0.1]:49147 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u5cd7-0002cb-M5
for submit <at> debbugs.gnu.org; Thu, 17 Apr 2025 23:43:07 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:18428)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u5cd1-0002b1-9G
for 77725 <at> debbugs.gnu.org; Thu, 17 Apr 2025 23:43:02 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 28A5B807BC;
Thu, 17 Apr 2025 23:42:50 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744947769;
bh=P3wiOWcF2mGAaUjT10k7HZL3oGtQk+EImI8/mK8aVZU=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=iOtoVTe32c2KE3Lahp76QvzOuy816UV6OZhf0oGSVz0gQVZT57/dGSH22RPuHFviO
KVOWknYwNb5ZT2CkR6gthlyUUWL7gSTWRGLuGyc5Bd6/Ix9O1JE1T0QafnIqRu0MKR
piKCE3fVBj77zaftC7vS/0Pv7QvasTYl8KdXfzbm2kx7b5ckO9KvZJ6sChxjinbPQy
XGpPM9vhd/lG+WI+7dZKypB1Ia8dWQ68lyGhraQ7Ti7Pu3JBUEx0vuk8QrRiwdSKkA
Xez9tOGivbgOvuT8Aw3SuSJu8FI1acgHZCoo+jYmyDB/IbiVjjsawXNcSTtRqscH3v
ZkmoUzexPw1oQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 539E7806BF;
Thu, 17 Apr 2025 23:42:49 -0400 (EDT)
Received: from pastel (104-195-239-180.cpe.teksavvy.com [104.195.239.180])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 26D63120713;
Thu, 17 Apr 2025 23:42:49 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
Message-ID: <jwv8qnyi281.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
<jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
<82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN>
Date: Thu, 17 Apr 2025 23:42:48 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.053 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> (merge-ordered-lists '((test test)))
> => (test test)
Ah, right, `merge-ordered-lists` presumes the arg lists are already sane.
>> The converse is that if we have already decided that the value is *not*
>> for type BAR, then it can't be of type FOO either, so there's no point
>> testing FOO.
> Wouldn't this involve calculating the parents of all the types traversed,
> instead of just the matching ones?
I wasn't describing an algorithm, just a principle that can be used
within an algorithm. Depending on the algorithm you use it can be used
in different ways. With your current loop, I don't think you can make
much use of it.
But I think what we could do fairly easily is the following:
- based on the PARENTS declaration, create a map from builtin-type to
the set of cl-types that have that builtin-type among their parents.
That presumes some PARENTS include some builtin-types, obviously
otherwise the map will be trivial with all cl-types associated with
the `t` "dummy parent".
[ We could even go crazy and try and guess PARENTS when not provided,
by analyzing the type's definition. ]
- in `cl-types-of` start by calling `cl-type-of`, then use the map to
find which cl-types may need to be checked.
But let's keep this for later.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 17 Apr 2025 23:01:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 17 19:01:14 2025 Received: from localhost ([127.0.0.1]:48847 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u5YEI-0002JF-9B for submit <at> debbugs.gnu.org; Thu, 17 Apr 2025 19:01:14 -0400 Received: from smtp-78.smtpout.orange.fr ([80.12.242.78]:56595 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u5YEC-0002I0-7W for 77725 <at> debbugs.gnu.org; Thu, 17 Apr 2025 19:01:08 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 5YE5ufIdhwRVI5YE9uDwpb; Fri, 18 Apr 2025 01:01:02 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1744930862; bh=QwQC5fYxJODpskiwX39brBbsrUHj2TAhRsqeg+l4pDc=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=o7DEfNJD2k8EcsLLPl89Js6MNJfrQsWkAE5A/QTMXGtfQuUGpb+eNs71bAfkOH9wi 9+d85u9QYnop2AbbAdfMryiYGVcTr8zKNx0WXCOYHtbJPvU1yeHTLZ0VPxl2jxmy0z bcSSTeAbtc03snNBAarJTEKy4Vi7DyXEdefryvxSnPzdEP2dXo0c4eQEcAy5fm59Fg 2KeIQybsFwdOWS0APuU6Q1y5opJ6cX5tJnFKerncwEYDLLRloNLhxbwX/5RgDySMM2 pS6o/W+6ec2WiLsxb8ED2VGlNY4HtXPwttp8rNzsHOx2qEFacILLPrXE4NDbxK/Ngy Boa92siMfSs5A== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Fri, 18 Apr 2025 01:01:02 +0200 X-ME-IP: 90.112.40.65 Message-ID: <82685e00-8373-4648-b9a3-9208f0e23f2f@HIDDEN> Date: Fri, 18 Apr 2025 01:00:57 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN> <f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN> <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN> <ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN> <jwvbjt08401.fsf-monnier+emacs@HIDDEN> <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> <jwvikn4ufar.fsf-monnier+emacs@HIDDEN> <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN> <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-17 17:27, Stefan Monnier wrote: >>>> (if (memq name parents) >>>> (error "Type in parents: %S" parents)) >>> Not sure how useful is this test. >> >> I removed testing if parents is a list, this is always true. >> The other test prevents to define a type whose parent is itself. > > My comment was specifically about the last 2 lines testing if `name` is > in `parents`. How likely is this error? Wouldn't it be caught by the > DAG test later anyway? In principle your are correct, the cycle should be caught at DAG test. But it seems it's not the case. I removed the test for `name' in `parents' and tried these definitions: (cl-deftype test () 'number) (cl-deftype test () (declare (parents test)) 'number) Normally, the second definition should be caught by the DAG test, but is not, and produced wrong definition, with `cl--type-list' equals to (test test). It seems the problem is that `merge-ordered-lists' doesn't caught this case: (merge-ordered-lists '((test test))) => (test test) I tried the same test with the topologic sort, and it failed as expected: (gtype--topologic-sort '((test test))) => "Invalid graph" error > >>>> ;; Clear cached value of specializers with NAME. >>>> (if class >>>> (cl--type-reset-specializers name) >>>> ;; Record new type. >>>> (push name cl--type-list)) >>> Shouldn't we test `reged` before `push`ing? >> Not sure to understand this point. name needs to be in cl--type-list >> before to call merge-ordered-lists on the DAG. > > IIRC if `reged` is non-nil, `name` is already included in > `cl--type-list` so we shouldn't push it again there. In fact, push is done only if `class' is nil, which is the equivalent to `reged' non-nil. For clarity, I changed to test with `reged' (renamed `recorded' new versions). >>>> (defmacro cl-type-undefine (name) >>>> "Remove the definitions of type with NAME. >>>> NAME is an unquoted symbol representing a type. >>>> Signal an error if other types inherit from NAME." >>>> `(progn >>>> (cl-check-type ',name (satisfies cl-type-p)) >>>> (cl--type-undefine ',name))) >>> We don't have that for other types. I understand it's somewhat >>> dangerous for the other types and not for this one, but I still wonder >>> if we need it. >> I thought it could be useful, for example to cleanup the environment >> when you kind of uninstall a library which defined types. Maybe it >> could help during tests? > > I'm not saying it can't be useful, just wondering if it will be. > In either case it doesn't seem like there's a good reason it should be > a `defmacro` rather than a `defun`. > > BTW, part of this is handled by `define-symbol-prop` which makes sure > that the `cl-deftype-handler` is automatically removed when you > `unload-feature`. Maybe we should use `define-symbol-prop` instead of > `setf` for the `cl--class` property as well. This is good to know. For now, I only kept the function `cl--type-undefine', in case we need it to cleanup things while testing. We can remove it later if not useful. >>> That doesn't sound right: it works only if there are no types which are >>> overlapping and "incomparable" (like `cons-car-foo` and `cons-cdr-foo`). >>> We may be able to use the `subtype-of` info to skip some types (e.g. we >>> don't need to test the parents, or if we traverse the list in the other >>> direction, we don't need to test FOO if we already saw that the object >>> failed the test for one of FOO's parents), but in general we'll have to >>> check them all: we definitely can't stop at the first successful check. >> Good point. But you lost me regarding possible optimizations :-( > > If BAR is declared as a parent of FOO and `cl-types-of` has already > decided that the value *is* of type FOO, then we already know BAR will > be in the output anyway and there's no point testing BAR. This looks like what I did in my previous version. When FOO matched, I put FOO and its parents in the result. My mistake was stopping there instead of continuing to the end of the list! > The converse is that if we have already decided that the value is *not* > for type BAR, then it can't be of type FOO either, so there's no point > testing FOO. Wouldn't this involve calculating the parents of all the types traversed, instead of just the matching ones? If so, wouldn't we risk losing on one side what we gain on the other? >>>> ;;; Some tests >> [...] >>> I suggest to define something like `multiples-of-2`, `multiples-of-3`, >>> and `multiples-of-4`, so as to test more complex relationships between >>> types (with overlap but not inclusion). >> >> Do you have any examples in mind? > > Test that (c-types-of 4) is (multiples-of-4 multiples-of-2 ...) > Test that (c-types-of 6) is (multiples-of-3 multiples-of-2 ...) > Test that (c-types-of 12) is (multiples-of-4 multiples-of-3 multiples-of-2 ...) > > This would have failed with your previous code which didn't check > all types. Thank you, I'll give it a try.
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 17 Apr 2025 15:27:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 17 11:27:14 2025
Received: from localhost ([127.0.0.1]:48132 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u5R90-0003jW-45
for submit <at> debbugs.gnu.org; Thu, 17 Apr 2025 11:27:14 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:17447)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u5R8v-0003iN-F1
for 77725 <at> debbugs.gnu.org; Thu, 17 Apr 2025 11:27:10 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id BBB984421AA;
Thu, 17 Apr 2025 11:27:03 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744903622;
bh=g5oVlZSyBTXi8fJMeiLDtiKvJBJZh1fXXW6ry/ln6d0=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=fo65d5SFfCS6A1OJdBN7T0EfTpyKmbkb8VAhVgf1p9AsY5sY7eWNPeeEbSrV8fPn9
95baqBPImLGmvxa2xjUN1bvLfUoBzxb2sXVOOumZoOH/+mTjk+0+CB1LOH1hgbYNhf
v+djulpZuvkUZ9H67kSwxelOVA4axNVQYac7nA7ZBJXPzzGouYWC/uxT3U2vwXRkR1
jfcdaWuD0DlFpKFJI6V1P0jYeRxVN8MFJdcnPTlkcH3BGNyF5f6R2yzsQahlQcv/2W
fwR3JfeGozkiyrc4vA957KJovsb2mhjKkS9FHq61GBc7rwmXfFA4oGYphJEgnSGTNl
JQYQRStT2Tkag==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 358AB4420DC;
Thu, 17 Apr 2025 11:27:02 -0400 (EDT)
Received: from pastel (104-195-239-180.cpe.teksavvy.com [104.195.239.180])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 049D8120E98;
Thu, 17 Apr 2025 11:27:01 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
Message-ID: <jwvtt6mkeny.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
<810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
Date: Thu, 17 Apr 2025 11:27:01 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.024 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>>> (or (eq (type-of class) 'cl-type-class)
>>> (error "Type in another class: %S" (type-of class))))
>>> (or (listp parents) (setq parents (list parents)))
>>> (if (memq name parents)
>>> (error "Type in parents: %S" parents))
>> Not sure how useful is this test.
>
> I removed testing if parents is a list, this is always true.
> The other test prevents to define a type whose parent is itself.
My comment was specifically about the last 2 lines testing if `name` is
in `parents`. How likely is this error? Wouldn't it be caught by the
DAG test later anyway?
>>> ;; Clear cached value of specializers with NAME.
>>> (if class
>>> (cl--type-reset-specializers name)
>>> ;; Record new type.
>>> (push name cl--type-list))
>> Shouldn't we test `reged` before `push`ing?
> Not sure to understand this point. name needs to be in cl--type-list
> before to call merge-ordered-lists on the DAG.
IIRC if `reged` is non-nil, `name` is already included in
`cl--type-list` so we shouldn't push it again there.
>>> (defmacro cl-type-undefine (name)
>>> "Remove the definitions of type with NAME.
>>> NAME is an unquoted symbol representing a type.
>>> Signal an error if other types inherit from NAME."
>>> `(progn
>>> (cl-check-type ',name (satisfies cl-type-p))
>>> (cl--type-undefine ',name)))
>> We don't have that for other types. I understand it's somewhat
>> dangerous for the other types and not for this one, but I still wonder
>> if we need it.
> I thought it could be useful, for example to cleanup the environment
> when you kind of uninstall a library which defined types. Maybe it
> could help during tests?
I'm not saying it can't be useful, just wondering if it will be.
In either case it doesn't seem like there's a good reason it should be
a `defmacro` rather than a `defun`.
BTW, part of this is handled by `define-symbol-prop` which makes sure
that the `cl-deftype-handler` is automatically removed when you
`unload-feature`. Maybe we should use `define-symbol-prop` instead of
`setf` for the `cl--class` property as well.
>> That doesn't sound right: it works only if there are no types which are
>> overlapping and "incomparable" (like `cons-car-foo` and `cons-cdr-foo`).
>> We may be able to use the `subtype-of` info to skip some types (e.g. we
>> don't need to test the parents, or if we traverse the list in the other
>> direction, we don't need to test FOO if we already saw that the object
>> failed the test for one of FOO's parents), but in general we'll have to
>> check them all: we definitely can't stop at the first successful check.
> Good point. But you lost me regarding possible optimizations :-(
If BAR is declared as a parent of FOO and `cl-types-of` has already
decided that the value *is* of type FOO, then we already know BAR will
be in the output anyway and there's no point testing BAR.
The converse is that if we have already decided that the value is *not*
for type BAR, then it can't be of type FOO either, so there's no point
testing FOO.
This presumes that the declaration that BAR is parent of FOO is
actually correct, of course.
> I returned to the previous version that check all types.
Good.
>>> ;;; Some tests
> [...]
>> I suggest to define something like `multiples-of-2`, `multiples-of-3`,
>> and `multiples-of-4`, so as to test more complex relationships between
>> types (with overlap but not inclusion).
>
> Do you have any examples in mind?
Test that (c-types-of 4) is (multiples-of-4 multiples-of-2 ...)
Test that (c-types-of 6) is (multiples-of-3 multiples-of-2 ...)
Test that (c-types-of 12) is (multiples-of-4 multiples-of-3 multiples-of-2 ...)
This would have failed with your previous code which didn't check
all types.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 17 Apr 2025 12:30:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 17 08:30:22 2025
Received: from localhost ([127.0.0.1]:46110 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u5ONp-0001EV-AR
for submit <at> debbugs.gnu.org; Thu, 17 Apr 2025 08:30:22 -0400
Received: from smtp-69.smtpout.orange.fr ([80.12.242.69]:60881
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u5ONj-0001Bp-Pv
for 77725 <at> debbugs.gnu.org; Thu, 17 Apr 2025 08:30:19 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id 5ONbu3W2yukJt5ONfumaMJ; Thu, 17 Apr 2025 14:30:13 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1744893013;
bh=jCDpaDrVLruUfA4YPXct/7djE3Qk8M/0HdIFm4+1rKU=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=hNFgD2Vq7/gR1gFLRWhuNh7UzKu02LzXDMBBeTf+e+ejGn9HPYYRRNJJsO4BcUvcW
7M0p8pp1CRFmWAed9Mb5YUCmbppD990SiH3RUwKFjZjL5wgNiOZDyIVJBZ+hIbt3+e
VaZFseV++XvAUKF6C2+lize75ZnSVmpi6b9VD9jiHn/sUWe6CykmVGl0hujx+Zf+lW
7ASARKr1Jua9vxxSsdn9dRgb+IaTy5WgofRrZ2meSvYSSTQaq0e0cij2/6MB2U3vjO
YO25cSl15oWgUuB4BPiEoJuaYVg7V4gOrV4j7rUdZiQmhwDmMxxiPdY4fXABfT8upX
bWY35+cTLqdew==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Thu, 17 Apr 2025 14:30:13 +0200
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------PB4Obs9l4nluomYQAxkWHcmP"
Message-ID: <810ab211-fcb2-490e-83da-6e3b131b0271@HIDDEN>
Date: Thu, 17 Apr 2025 14:30:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
<jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
This is a multi-part message in MIME format.
--------------PB4Obs9l4nluomYQAxkWHcmP
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
[...]
> The cost is doesn't depend on priority, it depends only on which
> generalizers are used for which generic-functions: a generic function
> whose methods don't use cl-types will not be affected at all. A generic
> function which does have at least one method dispatching on a cl-type
> will be affected, even if you never call it with an object of such cl-type.
Good to know :-)
>> (defun cl-type-p (object)
>> "Return non-nil if OBJECT is a used defined type.
>> That is, a type of class `cl-type-class'."
>> (and (symbolp object)
>> (eq (type-of (cl-find-class object)) 'cl-type-class)))
>
> Hmm... yeah... names...
>
> Then again, I don't think we have an equivalent function to test if
> a type is a bultin type or a struct type or a defclass type or an
> OClosure type, so let's push this to the "cl--" namespace.
Done.
>> (cl-defstruct
>> (cl-type-class
>> (:include cl--class)
>> (:noinline t)
>> (:constructor nil)
>> (:constructor cl--type-class-make
>> (name
>> docstring
>> parent-types
>> &aux (parents
>> (mapcar
>> (lambda (type)
>> (cl-check-type type (satisfies cl-type-p))
>> (cl-find-class type))
>> parent-types))))
>> (:copier nil))
>> "Type descriptors for user defined types.")
>
> I'm thinking it might be useful to accept builtin types as parents.
> E.g. we could make `cl-types-p` skip testing those cl-types whose parents
> are incompatible with the output of `cl-type-p`.
I tried to do that, but I am not sure I well understood your point.
Please let me know if the code is what you expect.
> I'd add a FIXME in there noting that the `cl-deftype-handler` property
> should arguably be turned into a field of this struct (but it has
> performance and compatibility implications, so let's not make that
> change for now).
Done.
>> (defun cl-type-parents (name)
>> "Get parents of type with NAME.
>> NAME is a symbol representing a type."
>> (cl--class-allparents (cl-find-class name)))
>
> Let's push this to "cl--" as well.
Done. As it is now internal, I used a macro to reduce function calls
in cl-types-of (see your point below about making `cl-types-of`
returns directly the complete list of types+allparents).
>
>> (defun cl-type-children (name)
>> "Get children of the type with NAME.
>> NAME is a symbol representing a type.
>> Return a possibly empty list of types."
>> (cl-check-type name (satisfies cl-type-p))
>> (let (children)
>> (dolist (elt cl--type-list)
>> (or (eq name elt)
>> (if (memq name (cl-type-parents elt))
>> (push elt children))))
>> children))
>
> Same.
Done.
>> (defun cl--type-generalize (name arglist body)
>> "Generalize type with NAME for method dispatching.
>> ARGLIST and BODY are passed to `cl-deftype'."
>> (let ((oldtlist (copy-sequence cl--type-list))
>> (oldplist (copy-sequence (symbol-plist name))))
>> (condition-case err
>> (pcase-let* ((`(,decls . ,body) (macroexp-parse-body body))
>> (docstring (if (stringp (car decls))
>> (pop decls)
>> (cdr (assq :documentation decls))))
>> (decls (cdr (assq 'declare decls)))
>> (parents (cdr (assq 'subtype-of decls)))
>
> Since we use the word "parents" everywhere, maybe we should look for
> `parents` rather than `subtype-of`?
Make sense. I used parents.
>
>> (class (cl-find-class name))
>> (reged (memq name cl--type-list)))
>> (if (null class)
>> (or (null reged)
>> (error "Type generalized, but doesn't exist"))
>> (or reged "Type exists, but not generalized")
>
> I think there's an `error` missing here or something.
Good catch. Fixed.
>> (or (eq (type-of class) 'cl-type-class)
>> (error "Type in another class: %S" (type-of class))))
>> (or (listp parents) (setq parents (list parents)))
>> (if (memq name parents)
>> (error "Type in parents: %S" parents))
>
> Not sure how useful is this test.
I removed testing if parents is a list, this is always true.
The other test prevents to define a type whose parent is itself.
>> ;; Setup a type descriptor for NAME. Can't use `setf' with
>> ;; `cl-find-class', so fallback to plain `put' to set the
>> ;; `cl--class' symbol property.
>> (put name 'cl--class
>> (cl--type-class-make name docstring parents))
>
> Better use `setf` (with `cl--find-class`).
I switched to `cl--find-class' everywhere for consistency.
>> ;; Clear cached value of specializers with NAME.
>> (if class
>> (cl--type-reset-specializers name)
>> ;; Record new type.
>> (push name cl--type-list))
>
> Shouldn't we test `reged` before `push`ing?
Not sure to understand this point. name needs to be in cl--type-list
before to call merge-ordered-lists on the DAG.
> Also, I think we should skip those types whose arglist is not empty
> (and probably signal an error if `subtype-of` is specified at the same
> time as a non-empty arglist).
Signal an error if arglist and parents are both non-nil.
>> ;; Keep most specific types before more general types.
>> (setq cl--type-list (merge-ordered-lists
>> (cl--type-dag)
>> (lambda (g)
>> (error "Invalid DAG, %S" g))))
>
> Why do we need sorting? Ah, it's so as to avoid sorting in
> `cl-types-of`? Maybe clarify it in the comment, then.
Done.
>> ;; Return the form to declare the type.
>> `(cl-eval-when (compile load eval)
>> (define-symbol-prop ',name 'cl-deftype-handler
>> (cl-function
>> (lambda (&cl-defs ('*) ,@arglist)
>> ,docstring
>> ,@body)))))
>
> Hmm... wait, so all the code before is executed only during
> macro-expansion and not at run-time? That doesn't sound right.
OMG! You are right. I fixed that.
>> (defmacro cl-type-undefine (name)
>> "Remove the definitions of type with NAME.
>> NAME is an unquoted symbol representing a type.
>> Signal an error if other types inherit from NAME."
>> `(progn
>> (cl-check-type ',name (satisfies cl-type-p))
>> (cl--type-undefine ',name)))
>
> We don't have that for other types. I understand it's somewhat
> dangerous for the other types and not for this one, but I still wonder
> if we need it.
I thought it could be useful, for example to cleanup the environment
when you kind of uninstall a library which defined types. Maybe it
could help during tests?
>> ;; Assuming that `cl--type-list' is properly sorted from most specific
>> ;; types to least specific ones, which should be guaranteed by
>> ;; `merge-ordered-list' in `cl--type-generalize' this verions of
>> ;; `cl-types-of' tries sequentially each type in `cl--type-list', but
>> ;; stops on the first type that matches and returns the parents of the
>> ;; type plus the builtin type of OBJECT. If no type is found, return
>> ;; nil to fallback to the "typeof" generalizer.
>
> That doesn't sound right: it works only if there are no types which are
> overlapping and "incomparable" (like `cons-car-foo` and `cons-cdr-foo`).
> We may be able to use the `subtype-of` info to skip some types (e.g. we
> don't need to test the parents, or if we traverse the list in the other
> direction, we don't need to test FOO if we already saw that the object
> failed the test for one of FOO's parents), but in general we'll have to
> check them all: we definitely can't stop at the first successful check.
Good point. But you lost me regarding possible optimizations :-(
I returned to the previous version that check all types.
>> (defvar cl--type-specializers (make-hash-table :test 'eq)
>> "Memoize type specializers.
>> Values are refreshed following the definition or removal of types.")
>>
>> (defun cl--type-reset-specializers (name)
>> "Remove all cached value of specializers related to type with NAME."
>> (maphash (lambda (key _)
>> (if (memq name key)
>> (remhash key cl--type-specializers)))
>> cl--type-specializers))
>
> BTW, you can also make `cl-types-of` return directly the complete list
> of types+allparents, i.e. the ordered list of specializers. And then
> your `cl--type-specializers` function could turn into the identity.
Good idea. I did that, which seems to work well :-)
>> ;;; Some tests
[...]
>
> I suggest to define something like `multiples-of-2`, `multiples-of-3`,
> and `multiples-of-4`, so as to test more complex relationships between
> types (with overlap but not inclusion).
Do you have any examples in mind?
Thank you for your help.
David
--------------PB4Obs9l4nluomYQAxkWHcmP
Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types.el"
Content-Disposition: attachment; filename="cl-types.el"
Content-Transfer-Encoding: base64
OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBXaWxsIGJlIHJlbW92ZWQgd2hl
biBpbmNsdWRlZCBpbiBjbC1saWIuCihyZXF1aXJlICdjbC1saWIpCihldmFsLXdoZW4tY29t
cGlsZSAocmVxdWlyZSAnY2wtbWFjcykpICA7Rm9yIGNsLS1maW5kLWNsYXNzLgoKCgo7OyBF
eHRlbmQgYGNsLWRlZnR5cGUnIHRvIGRlZmluZSBkYXRhIHR5cGVzIHdoaWNoIGFyZSBhbHNv
IHZhbGlkCjs7IGFyZ3VtZW50IHR5cGVzIGZvciBkaXNwYXRjaGluZyBnZW5lcmljIGZ1bmN0
aW9uIG1ldGhvZHMgKHNlZSBhbHNvCjs7IDxodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kv
YnVncmVwb3J0LmNnaT9idWc9Nzc3MjU+KS4KOzsKOzsgVGhlIG1haW4gZW50cnkgcG9pbnRz
IGFyZToKOzsKOzsgLSBgY2wtZGVmdHlwZScsIHRoYXQgZGVmaW5lcyBuZXcgZGF0YSB0eXBl
cy4KOzsKOzsgLSBgY2wtdHlwZXMtb2YnLCB0aGF0IHJldHVybnMgdGhlIHR5cGVzIGFuIG9i
amVjdCBiZWxvbmdzIHRvLgoKKGRlZnZhciBjbC0tdHlwZS1saXN0IG5pbAogICJMaXN0IG9m
IGRlZmluZWQgdHlwZXMgdG8gbG9va3VwIGZvciBtZXRob2QgZGlzcGF0Y2hpbmcuIikKCjs7
IEZJWE1FOiBUaGUgYGNsLWRlZnR5cGUtaGFuZGxlcmAgcHJvcGVydHkgc2hvdWxkIGFyZ3Vh
Ymx5IGJlIHR1cm5lZAo7OyBpbnRvIGEgZmllbGQgb2YgdGhpcyBzdHJ1Y3QgKGJ1dCBpdCBo
YXMgcGVyZm9ybWFuY2UgYW5kCjs7IGNvbXBhdGliaWxpdHkgaW1wbGljYXRpb25zLCBzbyBs
ZXQncyBub3QgbWFrZSB0aGF0IGNoYW5nZSBmb3Igbm93KS4KKGNsLWRlZnN0cnVjdAogICAg
KGNsLXR5cGUtY2xhc3MKICAgICAoOmluY2x1ZGUgY2wtLWNsYXNzKQogICAgICg6bm9pbmxp
bmUgdCkKICAgICAoOmNvbnN0cnVjdG9yIG5pbCkKICAgICAoOmNvbnN0cnVjdG9yIGNsLS10
eXBlLWNsYXNzLW1ha2UKICAgICAgICAgICAgICAgICAgIChuYW1lCiAgICAgICAgICAgICAg
ICAgICAgZG9jc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgcGFyZW50LXR5cGVzCiAgICAg
ICAgICAgICAgICAgICAgJmF1eCAocGFyZW50cwogICAgICAgICAgICAgICAgICAgICAgICAg
IChtYXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAodHlwZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGNsLS1maW5kLWNsYXNzIHR5cGUpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAiVW5rbm93biB0eXBlOiAl
UyIgdHlwZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtdHlwZXMpKSkp
CiAgICAgKDpjb3BpZXIgbmlsKSkKICAiVHlwZSBkZXNjcmlwdG9ycyBmb3IgdHlwZXMgZGVm
aW5lZCBieSBgY2wtZGVmdHlwZScuIikKCihkZWZ1biBjbC0tdHlwZS1wIChvYmplY3QpCiAg
IlJldHVybiBub24tbmlsIGlmIE9CSkVDVCBpcyBhIHVzZWQgZGVmaW5lZCB0eXBlLgpUaGF0
IGlzLCBhIHR5cGUgb2YgY2xhc3MgYGNsLXR5cGUtY2xhc3MnLiIKICAoYW5kIChzeW1ib2xw
IG9iamVjdCkKICAgICAgIChjbC10eXBlcCAoY2wtLWZpbmQtY2xhc3Mgb2JqZWN0KSAnY2wt
dHlwZS1jbGFzcykpKQoKKGRlZm1hY3JvIGNsLS10eXBlLXBhcmVudHMgKG5hbWUpCiAgIkdl
dCBwYXJlbnRzIG9mIHR5cGUgd2l0aCBOQU1FLgpOQU1FIGlzIGEgc3ltYm9sIHJlcHJlc2Vu
dGluZyBhIHR5cGUuIgogIGAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNz
ICxuYW1lKSkpCgooZGVmdW4gY2wtLXR5cGUtY2hpbGRyZW4gKG5hbWUpCiAgIkdldCBjaGls
ZHJlbiBvZiB0aGUgdHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYSBzeW1ib2wgcmVwcmVzZW50
aW5nIGEgdHlwZS4KUmV0dXJuIGEgcG9zc2libHkgZW1wdHkgbGlzdCBvZiB0eXBlcy4iCiAg
KGNsLWNoZWNrLXR5cGUgbmFtZSAoc2F0aXNmaWVzIGNsLS10eXBlLXApKQogIChsZXQgKGNo
aWxkcmVuKQogICAgKGRvbGlzdCAoZWx0IGNsLS10eXBlLWxpc3QpCiAgICAgIChvciAoZXEg
bmFtZSBlbHQpCiAgICAgICAgICAoaWYgKG1lbXEgbmFtZSAoY2wtLXR5cGUtcGFyZW50cyBl
bHQpKQogICAgICAgICAgICAgIChwdXNoIGVsdCBjaGlsZHJlbikpKSkKICAgIGNoaWxkcmVu
KSkKCihkZWZ1biBjbC0tdHlwZS1kYWcgKCkKICAiUmV0dXJuIGEgREFHIGZyb20gdGhlIGxp
c3Qgb2YgZGVmaW5lZCB0eXBlcy4iCiAgKG1hcGNhciAobGFtYmRhICh0eXBlKSAoY2wtLWNs
YXNzLWFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNzIHR5cGUpKSkKICAgICAgICAgIGNsLS10
eXBlLWxpc3QpKQoKOzsgS2VlcCBpdCBmb3Igbm93LCBmb3IgdGVzdGluZy4KKGRlZnVuIGNs
LS10eXBlLXVuZGVmaW5lIChuYW1lKQogICJSZW1vdmUgdGhlIGRlZmluaXRpb24gb2YgdHlw
ZSB3aXRoIE5BTUUuIgogIChkZWNsYXJlLWZ1bmN0aW9uIGNsLXJlbXByb3AgImNsLWV4dHJh
IiAoc3ltYm9sIHByb3BuYW1lKSkKICAod2hlbi1sZXQqICgoY2hpbGRyZW4gKGFuZCAoY2wt
LXR5cGUtcCBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC0tdHlwZS1j
aGlsZHJlbiBuYW1lKSkpKQogICAgKGVycm9yICJUeXBlIGhhcyBjaGlsZHJlbjogJVMiIGNo
aWxkcmVuKSkKICA7OyBDbGVhciBjYWNoZWQgdmFsdWUgb2Ygc3BlY2lhbGl6ZXJzIHdpdGgg
TkFNRS4KICAoY2wtcmVtcHJvcCBuYW1lICdjbC0tY2xhc3MpCiAgKGNsLXJlbXByb3AgbmFt
ZSAnY2wtZGVmdHlwZS1oYW5kbGVyKQogIChzZXRxIGNsLS10eXBlLWxpc3QgKGRlbHEgbmFt
ZSBjbC0tdHlwZS1saXN0KSkpCgo7OyBLZWVwIGl0IGZvciBub3csIGZvciB0ZXN0aW5nLgoo
ZGVmbWFjcm8gY2wtdHlwZS11bmRlZmluZSAobmFtZSkKICAiUmVtb3ZlIHRoZSBkZWZpbml0
aW9ucyBvZiB0eXBlIHdpdGggTkFNRS4KTkFNRSBpcyBhbiB1bnF1b3RlZCBzeW1ib2wgcmVw
cmVzZW50aW5nIGEgdHlwZS4KU2lnbmFsIGFuIGVycm9yIGlmIG90aGVyIHR5cGVzIGluaGVy
aXQgZnJvbSBOQU1FLiIKICBgKHByb2duCiAgICAgKGNsLWNoZWNrLXR5cGUgJyxuYW1lIChz
YXRpc2ZpZXMgY2wtLXR5cGUtcCkpCiAgICAgKGNsLS10eXBlLXVuZGVmaW5lICcsbmFtZSkp
KQoKKGRlZnVuIGNsLS10eXBlLWdlbmVyYWxpemUgKG5hbWUgYXJnbGlzdCBib2R5KQogICJH
ZW5lcmFsaXplIHR5cGUgd2l0aCBOQU1FIGZvciBtZXRob2QgZGlzcGF0Y2hpbmcuClNlZSBg
Y2wtZGVmdHlwZScgYWJvdXQgQVJHTElTVCBhbmQgQk9EWS4iCiAgKGxldCAoKG9sZHRsaXN0
IChjb3B5LXNlcXVlbmNlIGNsLS10eXBlLWxpc3QpKQogICAgICAgIChvbGRwbGlzdCAoY29w
eS1zZXF1ZW5jZSAoc3ltYm9sLXBsaXN0IG5hbWUpKSkpCiAgICAoY29uZGl0aW9uLWNhc2Ug
ZXJyCiAgICAgICAgKGxldCogKChkZWNscyAgICAgKGNhciAobWFjcm9leHAtcGFyc2UtYm9k
eSBib2R5KSkpCiAgICAgICAgICAgICAgIChkb2NzdHJpbmcgKGlmIChzdHJpbmdwIChjYXIg
ZGVjbHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgZGVjbHMpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY2RyIChhc3NxIDpkb2N1bWVudGF0aW9uIGRlY2xz
KSkpKQogICAgICAgICAgICAgICAoZGVjbHNwZWNzIChjZHIgKGFzc3EgJ2RlY2xhcmUgZGVj
bHMpKSkKICAgICAgICAgICAgICAgKHBhcmVudHMgICAoY2RyIChhc3NxICdwYXJlbnRzIGRl
Y2xzcGVjcykpKQogICAgICAgICAgICAgICAoY2xhc3MgICAgIChjbC0tZmluZC1jbGFzcyBu
YW1lKSkKICAgICAgICAgICAgICAgKHJlY29yZGVkICAobWVtcSBuYW1lIGNsLS10eXBlLWxp
c3QpKSkKICAgICAgICAgIChhbmQgcGFyZW50cyBhcmdsaXN0CiAgICAgICAgICAgICAgIChl
cnJvciAiUGFyZW50cyBzcGVjaWZpZWQsIGJ1dCBhcmdsaXN0IG5vdCBlbXB0eSIpKQogICAg
ICAgICAgKGlmIChudWxsIGNsYXNzKQogICAgICAgICAgICAgIChvciAobnVsbCByZWNvcmRl
ZCkKICAgICAgICAgICAgICAgICAgKGVycm9yICJUeXBlIGdlbmVyYWxpemVkLCBidXQgZG9l
c24ndCBleGlzdCIpKQogICAgICAgICAgICAob3IgcmVjb3JkZWQgKGVycm9yICJUeXBlIGV4
aXN0cywgYnV0IG5vdCBnZW5lcmFsaXplZCIpKQogICAgICAgICAgICAob3IgKGNsLXR5cGVw
IGNsYXNzICdjbC10eXBlLWNsYXNzKQogICAgICAgICAgICAgICAgKGVycm9yICJUeXBlIGlu
IGFub3RoZXIgY2xhc3M6ICVTIiAodHlwZS1vZiBjbGFzcykpKSkKICAgICAgICAgIChpZiAo
bWVtcSBuYW1lIHBhcmVudHMpCiAgICAgICAgICAgICAgKGVycm9yICJUeXBlIGluIHBhcmVu
dHM6ICVTIiBwYXJlbnRzKSkKICAgICAgICAgIDs7IFNldHVwIGEgdHlwZSBkZXNjcmlwdG9y
IGZvciBOQU1FLgogICAgICAgICAgKHNldGYgKGNsLS1maW5kLWNsYXNzIG5hbWUpCiAgICAg
ICAgICAgICAgICAoY2wtLXR5cGUtY2xhc3MtbWFrZSBuYW1lIGRvY3N0cmluZyBwYXJlbnRz
KSkKICAgICAgICAgIDs7IFJlY29yZCBuZXcgdHlwZSBub3cgdG8gaW5jbHVkZSBpdHMgZGVw
ZW5kZW5jeSBpbiB0aGUgREFHLgogICAgICAgICAgKG9yIGNsYXNzIChwdXNoIG5hbWUgY2wt
LXR5cGUtbGlzdCkpCiAgICAgICAgICA7OyBgY2wtdHlwZXMtb2YnIGl0ZXJhdGVzIHRocm91
Z2ggYWxsIGtub3duIHR5cGVzIHRvIGNvbGxlY3QKICAgICAgICAgIDs7IGFsbCB0aG9zZSBh
biBvYmplY3QgYmVsb25ncyB0bywgc29ydGVkIGZyb20gdGhlIG1vc3QKICAgICAgICAgIDs7
IHNwZWNpZmljIHR5cGUgdG8gdGhlIG1vcmUgZ2VuZXJhbCB0eXBlLiAgU28sIGtlZXAgdGhl
CiAgICAgICAgICA7OyBnbG9iYWwgbGlzdCBpbiB0aGlzIG9yZGVyLgogICAgICAgICAgKHNl
dHEgY2wtLXR5cGUtbGlzdAogICAgICAgICAgICAgICAgKG1lcmdlLW9yZGVyZWQtbGlzdHMK
ICAgICAgICAgICAgICAgICAoY2wtLXR5cGUtZGFnKQogICAgICAgICAgICAgICAgIChsYW1i
ZGEgKF8pIChlcnJvciAiSW52YWxpZCBkZXBlbmRlbmN5IGdyYXBoIikpKSkpCiAgICAgIChl
cnJvcgogICAgICAgOzsgT24gZXJyb3IgcmVzdG9yZSBwcmV2aW91cyBkYXRhLgogICAgICAg
KHNldHEgY2wtLXR5cGUtbGlzdCBvbGR0bGlzdCkKICAgICAgIChzZXRmIChzeW1ib2wtcGxp
c3QgbmFtZSkgb2xkcGxpc3QpCiAgICAgICAoZXJyb3IgKGZvcm1hdCAiRGVmaW5lICVTIGZh
aWxlZDogJXMiCiAgICAgICAgICAgICAgICAgICAgICBuYW1lIChlcnJvci1tZXNzYWdlLXN0
cmluZyBlcnIpKSkpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmbWFjcm8gY2wtZGVmdHlwZTIg
KG5hbWUgYXJnbGlzdCAmcmVzdCBib2R5KQogICJEZWZpbmUgTkFNRSBhcyBhIG5ldyBkYXRh
IHR5cGUuClRoZSB0eXBlIE5BTUUgY2FuIHRoZW4gYmUgdXNlZCBpbiBgY2wtdHlwZWNhc2Un
LCBgY2wtY2hlY2stdHlwZScsIGV0YywKYW5kIGFzIGFyZ3VtZW50IHR5cGUgZm9yIGRpc3Bh
dGNoaW5nIGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcy4KCkFSR0xJU1QgaXMgYSBDb21tb24g
TGlzcCBhcmd1bWVudCBsaXN0IG9mIHRoZSBzb3J0IGFjY2VwdGVkIGJ5CmBjbC1kZWZtYWNy
bycuICBCT0RZIGZvcm1zIGFyZSBldmFsdWF0ZWQgYW5kIHNob3VsZCByZXR1cm4gYSB0eXBl
CnNwZWNpZmllciB0aGF0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIHR5cGUgKHNlZSB0aGUgSW5m
byBub2RlIGAoY2wpIFR5cGUKUHJlZGljYXRlcycgaW4gdGhlIEdOVSBFbWFjcyBDb21tb24g
TGlzcCBFbXVsYXRpb24gbWFudWFsKS4KCklmIHRoZXJlIGlzIGEgYGRlY2xhcmUnIGZvcm0g
aW4gQk9EWSwgdGhlIHNwZWMgKHBhcmVudHMgUEFSRU5UUykgaXMKcmVjb2duaXplZCB0byBz
cGVjaWZ5IGEgbGlzdCBvZiB0eXBlcyBOQU1FIGlzIGEgc3VidHlwZSBvZi4gIEZvcgppbnN0
YW5jZToKCiAgKGNsLWRlZnR5cGUyIHVuc2lnbmVkLWJ5dGUgKCZvcHRpb25hbCBiaXRzKQog
ICAgXCJVbnNpZ25lZCBpbnRlZ2VyLlwiCiAgICAobGlzdCBcXD0naW50ZWdlciAwIChpZiAo
ZXEgYml0cyBcXD0nKikgYml0cyAoMS0gKGFzaCAxIGJpdHMpKSkpKQoKICAoY2wtZGVmdHlw
ZTIgdW5zaWduZWQtOGJpdHMgKCkKICAgIFwiVW5zaWduZWQgOC1iaXRzIGludGVnZXIuXCIK
ICAgIChkZWNsYXJlIChwYXJlbnRzIHVuc2lnbmVkLWJ5dGUpKQogICAgXFw9Jyh1bnNpZ25l
ZC1ieXRlIDgpKQoKVGhlIGxpc3Qgb2YgUEFSRU5UUyB0eXBlcyBkZXRlcm1pbmVzIHRoZSBv
cmRlciBvZiBtZXRob2RzIGludm9jYXRpb24sCmFuZCBtaXNzaW5nIFBBUkVOVFMgbWF5IGNh
dXNlIGluY29ycmVjdCBvcmRlcmluZyBvZiBtZXRob2RzLCB3aGlsZQpleHRyYW5lb3VzIFBB
UkVOVFMgbWF5IGNhdXNlIHVzZSBvZiBleHRyYW5lb3VzIG1ldGhvZHMuIgogIChkZWNsYXJl
IChkZWJ1ZyBjbC1kZWZtYWNybykgKGRvYy1zdHJpbmcgMykgKGluZGVudCAyKSkKICBgKGNs
LWV2YWwtd2hlbiAoY29tcGlsZSBsb2FkIGV2YWwpCiAgICAgKGNsLS10eXBlLWdlbmVyYWxp
emUgJyxuYW1lICcsYXJnbGlzdCAnLGJvZHkpCiAgICAgKGRlZmluZS1zeW1ib2wtcHJvcCAn
LG5hbWUgJ2NsLWRlZnR5cGUtaGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgKGNs
LWZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoJmNsLWRlZnMg
KCcqKSAsQGFyZ2xpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsQGJvZHkpKSkp
KQoKOzsgSW50ZXJuYWwgZGF0YSB1c2VkIHRvIGRldGVjdCBlbmRsZXNzIHJlY3Vyc2lvbiBp
biAnY2wtdHlwZS1vZicuCihkZWZ2YXIgY2wtLXR5cGUtb2JqZWN0IChtYWtlLXN5bWJvbCAi
dm9pZCIpKQo7OyBFbnN1cmUgZWFjaCB0eXBlIHNhdGlzZmllcyBgZXFsJy4KKGRlZnZhciBj
bC0tdHlwZS11bmlxdWUgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwpCiAgIlJlY29y
ZCBhbiB1bmlxdWUgdmFsdWUgb2YgZWFjaCB0eXBlLiIpCgo7OyBGSVhNRTogYGNsLXR5cGVz
LW9mJyBDUFUgY29zdCBpcyBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZiB0eXBlcwo7
OyBkZWZpbmVkIHdpdGggYGNsLWRlZnR5cGUnLCBzbyB0aGUgbW9yZSBwb3B1bGFyIGl0IGdl
dHMsIHRoZSBzbG93ZXIKOzsgaXQgYmVjb21lcy4gIEFuZCBvZiBjb3Vyc2UsIHRoZSBjb3N0
IG9mIGVhY2ggdHlwZSBjaGVjayBpcwo7OyB1bmJvdW5kZWQsIHNvIGEgc2luZ2xlICJleHBl
bnNpdmUiIHR5cGUgY2FuIHNsb3cgZXZlcnl0aGluZyBkb3duCjs7IGZ1cnRoZXIuCjs7Cjs7
IFRoZSB1c3VhbCBkaXNwYXRjaCBpcwo7Owo7OyAgIChsYW1iZGEgKGFyZyAmcmVzdCBhcmdz
KQo7OyAgICAgKGxldCAoKGYgKGdldGhhc2ggKGNsLXR5cGVvZiBhcmcpIHByZWNvbXB1dGVk
LW1ldGhvZHMtdGFibGUpKSkKOzsgICAgICAgKGlmIGYKOzsgICAgICAgICAgIChhcHBseSBm
IGFyZyBhcmdzKQo7OyAgICAgICAgIDs7IFNsb3cgY2FzZSB3aGVuIGVuY291bnRlcmluZyBh
IG5ldyB0eXBlCjs7ICAgICAgICAgLi4uKSkpCjs7Cjs7IHdoZXJlIG9mdGVuIHRoZSBtb3N0
IGV4cGVuc2l2ZSBwYXJ0IGlzIGAmcmVzdGAgKHdoaWNoIGhhcyB0bwo7OyBhbGxvY2F0ZSBh
IGxpc3QgZm9yIHRob3NlIHJlbWFpbmluZyBhcmd1bWVudHMpLAo7Owo7OyBTbyB3ZSdyZSB0
YWxraW5nIGFib3V0IHJlcGxhY2luZwo7Owo7OyAgICZyZXN0ICsgY2wtdHlwZS1vZiArIGdl
dGhhc2ggKyBpZiArIGFwcGx5Cjs7Cjs7IHdpdGggYSBmdW5jdGlvbiB0aGF0IGxvb3BzIG92
ZXIgTiB0eXBlcywgY2FsbGluZyBgY2wtdHlwZXBgIG9uIGVhY2gKOzsgb25lIG9mIHRoZW0g
KGBjbC10eXBlcGAgaXRzZWxmIGJlaW5nIGEgcmVjdXJzaXZlIGZ1bmN0aW9uIHRoYXQKOzsg
YmFzaWNhbGx5IGludGVycHJldHMgdGhlIHR5cGUgbGFuZ3VhZ2UpLiAgVGhpcyBpcyBnb2lu
ZyB0byBzbG93Cjs7IGRvd24gZGlzcGF0Y2ggdmVyeSBzaWduaWZpY2FudGx5IGZvciB0aG9z
ZSBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0Cjs7IGhhdmUgYSBtZXRob2QgdGhhdCBkaXNwYXRj
aGVzIG9uIGEgdXNlciBkZWZpbmVkIHR5cGUsIGNvbXBhcmVkIHRvCjs7IHRob3NlIHRoYXQg
ZG9uJ3QuCjs7Cjs7IEl0J3Mgbm90IHRoZSBlbmQgb2YgdGhlIHdvcmxkLCBlc3BlY2lhbGx5
IGJlY2F1c2UgdGhlcmUncyBhIGxvdCBvZgo7OyBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6
YXRpb25zIGluIHRoZXJlLCBidXQgaXQncyBzb21ldGhpbmcgdG8KOzsga2VlcCBpbiBtaW5k
LgooZGVmdW4gY2wtdHlwZXMtb2YgKG9iamVjdCkKICAiUmV0dXJuIHRoZSB0eXBlcyBPQkpF
Q1QgYmVsb25ncyB0by4KUmV0dXJuIGFuIHVuaXF1ZSBsaXN0IG9mIHR5cGVzIE9CSkVDVCBi
ZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCm1vc3Qgc3BlY2lmaWMgdHlwZSB0byB0aGUg
bW9zdCBnZW5lcmFsLiIKICA7OyBJZ25vcmUgcmVjdXJzaXZlIGNhbGwgb24gdGhlIHNhbWUg
T0JKRUNULCB3aGljaCBjYW4gbGVnaXRpbWF0ZWx5CiAgOzsgb2NjdXIgd2hlbiBhIHBhcmVu
dCB0eXBlIGlzIGNoZWNraW5nIHdoZXRoZXIgYW4gb2JqZWN0J3MgdHlwZSBpcwogIDs7IHRo
YXQgb2Ygb25lIG9mIGl0cyBjaGlsZHJlbi4KICAodW5sZXNzIChlcSBvYmplY3QgY2wtLXR5
cGUtb2JqZWN0KQogICAgKGxldCAoKGNsLS10eXBlLW9iamVjdCBvYmplY3QpCiAgICAgICAg
ICAoZm91bmQgKGxpc3QgKGNsLS10eXBlLXBhcmVudHMgKGNsLXR5cGUtb2Ygb2JqZWN0KSkp
KSkKICAgICAgOzsgQ29sbGVjdCBhbGwgdHlwZXMgT0JKRUNUIGJlbG9uZ3MgdG8uCiAgICAg
IChkb2xpc3QgKHR5cGUgY2wtLXR5cGUtbGlzdCkKICAgICAgICAoYW5kIChjbC10eXBlcCAo
Y2wtLWZpbmQtY2xhc3MgdHlwZSkgJ2NsLXR5cGUtY2xhc3MpCiAgICAgICAgICAgICAoY2wt
dHlwZXAgb2JqZWN0IHR5cGUpCiAgICAgICAgICAgICAocHVzaCAoY2wtLXR5cGUtcGFyZW50
cyB0eXBlKSBmb3VuZCkpKQogICAgICAoc2V0cSBmb3VuZCAobWVyZ2Utb3JkZXJlZC1saXN0
cyBmb3VuZCkpCiAgICAgIDs7IFJldHVybiBhbiB1bmlxdWUgdmFsdWUgb2YgdHlwZS4KICAg
ICAgKHdpdGgtbWVtb2l6YXRpb24gKGdldGhhc2ggZm91bmQgY2wtLXR5cGUtdW5pcXVlKQog
ICAgICAgIGZvdW5kKSkpKQoKOzs7IE1ldGhvZCBkaXNwYXRjaGluZwo7OwooY2wtZ2VuZXJp
Yy1kZWZpbmUtZ2VuZXJhbGl6ZXIgY2wtLXR5cGUtZ2VuZXJhbGl6ZXIKICAyMCA7OyAidHlw
ZW9mIiA8ICJjbC10eXBlcy1vZiIgPCAiaGVhZCIgcHJpb3JpdHkKICAobGFtYmRhIChvYmog
JnJlc3QgXykgYChjbC10eXBlcy1vZiAsb2JqKSkKICAobGFtYmRhICh0YWcgJnJlc3QgXykg
KGlmIChjb25zcCB0YWcpIHRhZykpKQoKKGNsLWRlZm1ldGhvZCBjbC1nZW5lcmljLWdlbmVy
YWxpemVycyA6ZXh0cmEgImNsLXR5cGVzLW9mIiAodHlwZSkKICAiU3VwcG9ydCBmb3IgZGlz
cGF0Y2ggb24gdHlwZXMuIgogIChpZiAoY2wtLXR5cGUtcCB0eXBlKQogICAgICAobGlzdCBj
bC0tdHlwZS1nZW5lcmFsaXplcikKICAgIChjbC1jYWxsLW5leHQtbWV0aG9kKSkpCgo7Ozsg
U29tZSB0ZXN0cwo7OwonKHByb2duCiAgIChjbC1kZWZ0eXBlMiB1bnNpZ25lZC1ieXRlICgm
b3B0aW9uYWwgYml0cykKICAgICAiVW5zaWduZWQgaW50ZWdlci4iCiAgICAgYChpbnRlZ2Vy
IDAgLChpZiAoZXEgYml0cyAnKikgYml0cyAoMS0gKGFzaCAxIGJpdHMpKSkpKQoKICAgKGNs
LWRlZnR5cGUyIHVuc2lnbmVkLTE2Yml0cyAoKQogICAgICJVbnNpZ25lZCAxNi1iaXRzIGlu
dGVnZXIuIgogICAgIChkZWNsYXJlIChwYXJlbnRzIHVuc2lnbmVkLWJ5dGUpKQogICAgICco
dW5zaWduZWQtYnl0ZSAxNikpCgogICAoY2wtZGVmdHlwZTIgdW5zaWduZWQtOGJpdHMgKCkK
ICAgICAiVW5zaWduZWQgOC1iaXRzIGludGVnZXIuIgogICAgIChkZWNsYXJlIChwYXJlbnRz
IHVuc2lnbmVkLTE2Yml0cykpCiAgICAgJyh1bnNpZ25lZC1ieXRlIDgpKQoKICAgKGNsLXR5
cGVzLW9mIDEwMCkKICAgOzsgKHVuc2lnbmVkLThiaXRzIHVuc2lnbmVkLTE2Yml0cyB1bnNp
Z25lZC1ieXRlIGZpeG51bSkKCiAgIChjbC10eXBlcy1vZiAyNTYpCiAgIDs7ICh1bnNpZ25l
ZC0xNmJpdHMgdW5zaWduZWQtYnl0ZSBmaXhudW0pCgogICAoY2wtdHlwZXMtb2YgbW9zdC1w
b3NpdGl2ZS1maXhudW0pCiAgIDs7ICh1bnNpZ25lZC1ieXRlIGZpeG51bSkKCiAgIChjbC1k
ZWZtZXRob2QgbXktZm9vICgoX24gdW5zaWduZWQtYnl0ZSkpCiAgICAgKGZvcm1hdCAidW5z
aWduZWQiKSkKCiAgIChjbC1kZWZtZXRob2QgbXktZm9vICgoX24gdW5zaWduZWQtMTZiaXRz
KSkKICAgICAoZm9ybWF0ICJ1bnNpZ25lZCAxNmJpdHMgLSBhbHNvICVzIgogICAgICAgICAg
ICAgKGNsLWNhbGwtbmV4dC1tZXRob2QpKSkKCiAgIChjbC1kZWZtZXRob2QgbXktZm9vICgo
X24gdW5zaWduZWQtOGJpdHMpKQogICAgIChmb3JtYXQgInVuc2lnbmVkIDhiaXRzIC0gYWxz
byAlcyIKICAgICAgICAgICAgIChjbC1jYWxsLW5leHQtbWV0aG9kKSkpCgogICAobXktZm9v
IDEwMCkKICAgOzsgInVuc2lnbmVkIDhiaXRzIC0gYWxzbyB1bnNpZ25lZCIKCiAgIChteS1m
b28gMjU2KQogICA7OyAidW5zaWduZWQgMTZiaXRzIC0gYWxzbyB1bnNpZ25lZCA4Yml0cyAt
IGFsc28gdW5zaWduZWQiCgogICAobXktZm9vIG1vc3QtcG9zaXRpdmUtZml4bnVtKQogICA7
OyAidW5zaWduZWQiCgogICAoY2wtZGVmdHlwZTIgdW5zaWduZWQtMTZiaXRzICgpCiAgICAg
IlVuc2lnbmVkIDE2LWJpdHMgaW50ZWdlci4iCiAgICAgKGRlY2xhcmUgKHBhcmVudHMgdW5z
aWduZWQtOGJpdHMpKQogICAgICcodW5zaWduZWQtYnl0ZSAxNikpCiAgIDs7IEludmFsaWQg
REFHIGVycm9yCgogICkK
--------------PB4Obs9l4nluomYQAxkWHcmP--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 16 Apr 2025 19:56:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 16 15:56:45 2025
Received: from localhost ([127.0.0.1]:42539 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u58sG-0001Qa-Nt
for submit <at> debbugs.gnu.org; Wed, 16 Apr 2025 15:56:45 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:2996)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u58sB-0001PG-Pv
for 77725 <at> debbugs.gnu.org; Wed, 16 Apr 2025 15:56:43 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 67253441E98;
Wed, 16 Apr 2025 15:56:33 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744833391;
bh=qIv0EnC0qNRahph0CPsRQ95kAOn+flXgx+ZdutlL9IY=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=QZNaNuShutAGIhjv4x51I8eBUQEj/SB7gWMa5P5VOmoTDyDtg+nqPnbYTNDVL3nis
Z/Lw1qb0Nxlu4vbkZprISVOxKC0b+q/hKuHKwul1I+kjD9kVHg15HqZRDAjd9UWZ3e
7WDIWs2ZJ5Hv0gNZFvnq/YuQ1+MYVbn5ozPIvJ+jKIERKZGSz9xePGlEB/v5oMjcsv
pCwvp2gqwiQqy61032XLKZX28WifVMLac6Vwku45MgNZ90/PVt5kbmMB31GJraaxF4
n14cd+h4rPO9zD1TMj4PEw46d4ZBDM7iAtufACT+JEpXJJxlrRZ3pdV8GO0pROajDw
hslo5S4pJvh8g==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 360634418DA;
Wed, 16 Apr 2025 15:56:31 -0400 (EDT)
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id EC6F11205FA;
Wed, 16 Apr 2025 15:56:30 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
Message-ID: <jwvikn4ufar.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
Date: Wed, 16 Apr 2025 15:56:30 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL 0.201 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Please find attached a first attempt at a cl-types.el to be merged in
> cl-lib. Please feel free to propose new names if mine are not good.
>
> For now, the new `cl-deftype' is named `cl-deftype2' for testing
> without impacting the existing environment.
=F0=9F=91=8D=F0=9F=8F=BE
> so I used the name `cl-types-of' which also better represent that this
> function returns a list of types.
+1
> WDYT?
See comments below.
> The proposed "cl-types-of" generalizer must have a higher priority than
> "typof" to correctly takes precedence over built-in types.
That's right.
> But, what about the defstruct and defclass types? Shouldn't such types
> have higher priority than cl-deftype and builtin types?
Actually, since Emacs-26 `(cl-)type-of` returns the proper struct type
for both defstruct and defclass types, so they both use the
`cl--generic-typeof-generalizer`.
[ That's still not the case for OClosures, sadly. ]
> I wouldn't want "cl-types-of" to have too much of a performance impact on
> method dispatch for defstruct and defclass types, unless it's really
> necessary.
The cost is doesn't depend on priority, it depends only on which
generalizers are used for which generic-functions: a generic function
whose methods don't use cl-types will not be affected at all. A generic
function which does have at least one method dispatching on a cl-type
will be affected, even if you never call it with an object of such cl-type.
> (defun cl-type-p (object)
> "Return non-nil if OBJECT is a used defined type.
> That is, a type of class `cl-type-class'."
> (and (symbolp object)
> (eq (type-of (cl-find-class object)) 'cl-type-class)))
Hmm... yeah... names...
Then again, I don't think we have an equivalent function to test if
a type is a bultin type or a struct type or a defclass type or an
OClosure type, so let's push this to the "cl--" namespace.
> (cl-defstruct
> (cl-type-class
> (:include cl--class)
> (:noinline t)
> (:constructor nil)
> (:constructor cl--type-class-make
> (name
> docstring
> parent-types
> &aux (parents
> (mapcar
> (lambda (type)
> (cl-check-type type (satisfies cl-type-p))
> (cl-find-class type))
> parent-types))))
> (:copier nil))
> "Type descriptors for user defined types.")
I'm thinking it might be useful to accept builtin types as parents.
E.g. we could make `cl-types-p` skip testing those cl-types whose parents
are incompatible with the output of `cl-type-p`.
I'd add a FIXME in there noting that the `cl-deftype-handler` property
should arguably be turned into a field of this struct (but it has
performance and compatibility implications, so let's not make that
change for now).
> (defun cl-type-parents (name)
> "Get parents of type with NAME.
> NAME is a symbol representing a type."
> (cl--class-allparents (cl-find-class name)))
Let's push this to "cl--" as well.
> (defun cl-type-children (name)
> "Get children of the type with NAME.
> NAME is a symbol representing a type.
> Return a possibly empty list of types."
> (cl-check-type name (satisfies cl-type-p))
> (let (children)
> (dolist (elt cl--type-list)
> (or (eq name elt)
> (if (memq name (cl-type-parents elt))
> (push elt children))))
> children))
Same.
> (defun cl--type-generalize (name arglist body)
> "Generalize type with NAME for method dispatching.
> ARGLIST and BODY are passed to `cl-deftype'."
> (let ((oldtlist (copy-sequence cl--type-list))
> (oldplist (copy-sequence (symbol-plist name))))
> (condition-case err
> (pcase-let* ((`(,decls . ,body) (macroexp-parse-body body))
> (docstring (if (stringp (car decls))
> (pop decls)
> (cdr (assq :documentation decls))))
> (decls (cdr (assq 'declare decls)))
> (parents (cdr (assq 'subtype-of decls)))
Since we use the word "parents" everywhere, maybe we should look for
`parents` rather than `subtype-of`?
> (class (cl-find-class name))
> (reged (memq name cl--type-list)))
> (if (null class)
> (or (null reged)
> (error "Type generalized, but doesn't exist"))
> (or reged "Type exists, but not generalized")
I think there's an `error` missing here or something.
> (or (eq (type-of class) 'cl-type-class)
> (error "Type in another class: %S" (type-of class))))
> (or (listp parents) (setq parents (list parents)))
> (if (memq name parents)
> (error "Type in parents: %S" parents))
Not sure how useful is this test.
> ;; Setup a type descriptor for NAME. Can't use `setf' with
> ;; `cl-find-class', so fallback to plain `put' to set the
> ;; `cl--class' symbol property.
> (put name 'cl--class
> (cl--type-class-make name docstring parents))
Better use `setf` (with `cl--find-class`).
> ;; Clear cached value of specializers with NAME.
> (if class
> (cl--type-reset-specializers name)
> ;; Record new type.
> (push name cl--type-list))
Shouldn't we test `reged` before `push`ing?
Also, I think we should skip those types whose arglist is not empty
(and probably signal an error if `subtype-of` is specified at the same
time as a non-empty arglist).
> ;; Keep most specific types before more general types.
> (setq cl--type-list (merge-ordered-lists
> (cl--type-dag)
> (lambda (g)
> (error "Invalid DAG, %S" g))))
Why do we need sorting? Ah, it's so as to avoid sorting in
`cl-types-of`? Maybe clarify it in the comment, then.
> ;; Return the form to declare the type.
> `(cl-eval-when (compile load eval)
> (define-symbol-prop ',name 'cl-deftype-handler
> (cl-function
> (lambda (&cl-defs ('*) ,@arglist)
> ,docstring
> ,@body)))))
Hmm... wait, so all the code before is executed only during
macro-expansion and not at run-time? That doesn't sound right.
> (defmacro cl-type-undefine (name)
> "Remove the definitions of type with NAME.
> NAME is an unquoted symbol representing a type.
> Signal an error if other types inherit from NAME."
> `(progn
> (cl-check-type ',name (satisfies cl-type-p))
> (cl--type-undefine ',name)))
We don't have that for other types. I understand it's somewhat
dangerous for the other types and not for this one, but I still wonder
if we need it.
> ;; Assuming that `cl--type-list' is properly sorted from most specific
> ;; types to least specific ones, which should be guaranteed by
> ;; `merge-ordered-list' in `cl--type-generalize' this verions of
> ;; `cl-types-of' tries sequentially each type in `cl--type-list', but
> ;; stops on the first type that matches and returns the parents of the
> ;; type plus the builtin type of OBJECT. If no type is found, return
> ;; nil to fallback to the "typeof" generalizer.
That doesn't sound right: it works only if there are no types which are
overlapping and "incomparable" (like `cons-car-foo` and `cons-cdr-foo`).
We may be able to use the `subtype-of` info to skip some types (e.g. we
don't need to test the parents, or if we traverse the list in the other
direction, we don't need to test FOO if we already saw that the object
failed the test for one of FOO's parents), but in general we'll have to
check them all: we definitely can't stop at the first successful check.
Stefan
> (defvar cl--type-specializers (make-hash-table :test 'eq)
> "Memoize type specializers.
> Values are refreshed following the definition or removal of types.")
>
> (defun cl--type-reset-specializers (name)
> "Remove all cached value of specializers related to type with NAME."
> (maphash (lambda (key _)
> (if (memq name key)
> (remhash key cl--type-specializers)))
> cl--type-specializers))
BTW, you can also make `cl-types-of` return directly the complete list
of types+allparents, i.e. the ordered list of specializers. And then
your `cl--type-specializers` function could turn into the identity.
> ;;; Some tests
> ;;
> '(progn
> (cl-deftype2 unsigned-byte (&optional bits)
> "Unsigned integer."
> `(integer 0 ,(if (eq bits '*) bits (1- (ash 1 bits)))))
>
> (cl-deftype2 unsigned-16bits ()
> "Unsigned 16-bits integer."
> (declare (subtype-of unsigned-byte))
> '(unsigned-byte 16))
>
> (cl-deftype2 unsigned-8bits ()
> "Unsigned 8-bits integer."
> (declare (subtype-of unsigned-16bits))
> '(unsigned-byte 8))
I suggest to define something like `multiples-of-2`, `multiples-of-3`,
and `multiples-of-4`, so as to test more complex relationships between
types (with overlap but not inclusion).
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 16 Apr 2025 15:42:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 16 11:42:28 2025
Received: from localhost ([127.0.0.1]:40618 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u54uB-0001sh-Li
for submit <at> debbugs.gnu.org; Wed, 16 Apr 2025 11:42:28 -0400
Received: from smtp-15.smtpout.orange.fr ([80.12.242.15]:53949
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u54u7-0001rp-3T
for 77725 <at> debbugs.gnu.org; Wed, 16 Apr 2025 11:42:25 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id 54tduUjyYtvMG54tgu2SnR; Wed, 16 Apr 2025 17:41:59 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1744818119;
bh=oS4g5MBbq40ywNiAlAtv4P5PQp3MBuBMb3MHNVJPLKw=;
h=Message-ID:Date:MIME-Version:Subject:From:To;
b=aIlTuNgWWYyfCN3Aav/K3Dpmqk06d/ZauU1lP4Qwc8EFLLj8e+4x3CzgB9Y5h2kjk
tfc8ya2oUntRuEWgHyiy0GuG1tYJujMouR0U2mNioMqrPomBpQNuBW+Olz0E5kmS0Z
Izu8pXA9ij9oyvKSeYMUVN42le39SINruPRMPs/oy4cbbVNzGGk8tkrDHWkPBgvAL/
7mmx6a5KyM59swuiADI4gnjg41TsVBDOHX077lY5lyq4PSCCWwnm+Uxbl3xWojdPIw
2LgQgNQZSABPeyLJGux3gFM/emICFgFu4eIYEDYLsu8oaKsJEhAkPhl42paAHvd1OE
LNclT9zFwY81g==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Wed, 16 Apr 2025 17:41:59 +0200
X-ME-IP: 90.112.40.65
Message-ID: <e910b889-2d57-41d5-a048-713e6dfb8b58@HIDDEN>
Date: Wed, 16 Apr 2025 17:42:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
From: David Ponce <da_vid@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
<jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
<8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
Content-Language: fr, en-US
In-Reply-To: <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
[...]
> Please find attached a first attempt at a cl-types.el to be merged in
> cl-lib. Please feel free to propose new names if mine are not good.
>
> For now, the new `cl-deftype' is named `cl-deftype2' for testing
> without impacting the existing environment.
>
> I tried to consistent at using the `cl-type-' prefix (or `cl--type-'
> for internals). But some names are very close to already existing
> ones, like 'cl-type-p' vs. `cl-typep'. There is also a collision with
> the name `cl-type-of', already used for a builtin function, so I used
> the name `cl-types-of' which also better represent that this function
> returns a list of types.
>
> The new code is also better at handling errors. It should detect most
> of the possible errors, and will restore the current environnement on
> error. I also tried to improve cl-types-of. Please read my comments
> in the code.
>
> WDYT?
I also have a question regarding the "typeof" generalizer which is defined
like this in cl-generic:
(cl-generic-define-generalizer cl--generic-typeof-generalizer
10 (lambda (name &rest _) `(cl-type-of ,name))
#'cl--generic-type-specializers)
(cl-defmethod cl-generic-generalizers :extra "typeof" (type)
"Support for dispatch on types.
This currently works for built-in types and types built on top of records."
;; FIXME: Add support for other "types" accepted by `cl-typep' such
;; as `character', `face', `keyword', ...?
(or
(and (symbolp type)
(not (eq type t)) ;; Handled by the `t-generalizer'.
(let ((class (cl--find-class type)))
(memq (type-of class)
'(built-in-class cl-structure-class eieio--class)))
(list cl--generic-typeof-generalizer))
(cl-call-next-method)))
The proposed "cl-types-of" generalizer must have a higher priority than
"typof" to correctly takes precedence over built-in types.
But, what about the defstruct and defclass types? Shouldn't such types
have higher priority than cl-deftype and builtin types?
I wouldn't want "cl-types-of" to have too much of a performance impact on
method dispatch for defstruct and defclass types, unless it's really
necessary.
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 16 Apr 2025 15:17:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 16 11:17:50 2025 Received: from localhost ([127.0.0.1]:40364 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u54WK-0007JV-Vk for submit <at> debbugs.gnu.org; Wed, 16 Apr 2025 11:17:50 -0400 Received: from smtp-30.smtpout.orange.fr ([80.12.242.30]:55669 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u54WG-0007JE-G9 for 77725 <at> debbugs.gnu.org; Wed, 16 Apr 2025 11:17:46 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 54W8ubdic1J2g54WCuvErr; Wed, 16 Apr 2025 17:17:42 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1744816662; bh=WlTVe8zAXPdY1jBrOe+EKQmT3vu2i7wM7PfLBCLYlM8=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=HM2AEIxiHj8GfV4KL+S3Qcj0YNgHxp75hxTxuXNbHLkRzPB6l/izrvu0ZyjQISsn0 YI8LzCU3lH3KWDu2GKyD6xw++Ld7rEMlELdI2lMi/b/jEEHS0CX9u9RVjypH0OHXls 8MkGEMiCl4uo+aUOl7cb+jH7B56UlY2U3c3S/caY1+DAKGVDBN5lNGIEap4kj0BKAx +HlJ/Vt4m6MF9a/NxITL8yvWiy00vfays340/PrSADDEneOdB24bFAPD1I0witVCZr HBnscAlJHB1UZdIEnEc5TJ03AFFHCQT64Wh1q7sT5m8Cj/wIzvwteHDZqBj43ze7+z uUzUwxYpMvkVA== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 16 Apr 2025 17:17:42 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------NmUF7puYso0yKcC0qzFBhzuT" Message-ID: <8b5d55ef-4dba-4931-a96c-b48097d0e4ca@HIDDEN> Date: Wed, 16 Apr 2025 17:17:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN> <f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN> <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN> <ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN> <jwvbjt08401.fsf-monnier+emacs@HIDDEN> <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> <jwvcydek5ax.fsf-monnier+emacs@HIDDEN> <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN> <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN> <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN> <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------NmUF7puYso0yKcC0qzFBhzuT Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2025-04-15 21:17, Stefan Monnier wrote: >>>> That would be great. But I need some help here to correctly dispatch >>>> all functions in gtype to Emacs libraries: cl-macs, cl-generic ? >>> Not `cl-generic`, but yes `cl-macs.el` with maybe some parts in >>> `cl-preloaded.el` and/or `cl-lib.el` and/or `cl-extra.el`. >> Shouldn't the code related to method dispatching, at the end of gtype.el, >> go to cl-generic? > > Technically it can go to various places, but ideally `cl-generic` just > provides the machinery whereas the actual generalizers would be > defined next to where we define the corresponding types. In practice, > we have most of the `cl-generic-define-generalizer` in there, > admittedly, but that's because of overriding bootstrapping issues. > > Since we're talking about generalizers defined for `cl-deftype` which is > not a core primitive but one defined in `cl-lib`, it makes sense to > define it elsewhere (i.e. in the `cl-lib` files), like we do for > EIEIO types. OK. > >>> I was thinking that the main(only?) difference between `cl-deftype` and >>> `gdeftype` is: >>> - the PARENTS argument, where the question is how to add a PARENTS >>> argument. Maybe we could use a (declare (parents ...))? >> >> Another possibility could be to have 2 separate definitions: >> >> - cl-deftype to define a data type, as currently. >> >> - cl-types-generalize (or something better) to declare a type previously >> defined by cl-deftype usable to dispatch methods, with specified parents? >> >> (cl-deftype my-type () >> "A user defined type." >> ...) >> (cl-types-generalize my-type) ;; No parents >> >> (cl-deftype my-type1 () >> "Another user defined type." >> ...) >> (cl-types-generalize my-type1 my-type) ;; With parents > > We could, but having them separate begs the question of how to match one > with the other: e.g. if we re-evaluate (cl-deftype my-type ...) should the > corresponding previous (cl-types-generalize ...) be "undone"? > > It's somewhat philosophical, admittedly, but bringing them together > makes it much more clear what is the "right" behavior (regardless if we > end up implementing the right behavior: at least when we get > a bug-report, we know which change is an improvement). I agree. > >>> - The ARGS: Clearly your `gtype-of` can invent which args to pass >>> for a given value to match the resulting type, so `gtype-of` (and >>> everything which relies on it, i.e. method dispatch) wouldn't be >>> usable for types with a non-empty arglist. >> >> I am not sure I understand this point regarding ARGS. >> Is this related to the `cl-deftype' arguments which cannot be used to >> declare argument type of methods: > > Exactly. `cl-deftype` lets you define types such as `(list-of > integer)`, but your code is not able to figure out that a value is of > type `(list-of integer)` so you can't handle those kinds of types. > And that's OK: it's still better than what we currently have. > >> But, below is possible instead: >> >> (defgtype u8 unsigned-byte () >> '(unsigned-byte 8)) >> >> (cl-defmethod my-foo ((n u8)) >> (format "unsigned 8bits, %s - also %s" >> n (cl-call-next-method))) > > That's right. OK. > > We could try to later add support for > > (cl-defmethod my-foo ((n (unsigned-byte 8))) > (format "unsigned, %s" n)) > > but ... one step at a time. Sure. Even better could be to support the full type-specifier syntax ;-) Please find attached a first attempt at a cl-types.el to be merged in cl-lib. Please feel free to propose new names if mine are not good. For now, the new `cl-deftype' is named `cl-deftype2' for testing without impacting the existing environment. I tried to consistent at using the `cl-type-' prefix (or `cl--type-' for internals). But some names are very close to already existing ones, like 'cl-type-p' vs. `cl-typep'. There is also a collision with the name `cl-type-of', already used for a builtin function, so I used the name `cl-types-of' which also better represent that this function returns a list of types. The new code is also better at handling errors. It should detect most of the possible errors, and will restore the current environnement on error. I also tried to improve cl-types-of. Please read my comments in the code. WDYT? Thanks! David --------------NmUF7puYso0yKcC0qzFBhzuT Content-Type: text/x-emacs-lisp; charset=UTF-8; name="cl-types.el" Content-Disposition: attachment; filename="cl-types.el" Content-Transfer-Encoding: base64 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBXaWxsIGJlIHJlbW92ZWQgd2hl biBpbmNsdWRlZCBpbiBjbC1saWIuCihyZXF1aXJlICdjbC1saWIpCgooZGVjbGFyZS1mdW5j dGlvbiBjbC1maW5kLWNsYXNzICJjbC1leHRyYSIgKHR5cGUpKQooZGVjbGFyZS1mdW5jdGlv biBjbC1yZW1wcm9wICJjbC1leHRyYSIgKHN5bWJvbCBwcm9wbmFtZSkpCgo7OyBFeHRlbmQg YGNsLWRlZnR5cGUnIHRvIGRlZmluZSBkYXRhIHR5cGVzIHdoaWNoIGFyZSBhbHNvIHZhbGlk Cjs7IGFyZ3VtZW50IHR5cGVzIGZvciBkaXNwYXRjaGluZyBnZW5lcmljIGZ1bmN0aW9uIG1l dGhvZHMgKHNlZSBhbHNvCjs7IDxodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVw b3J0LmNnaT9idWc9Nzc3MjU+KS4KOzsKOzsgVGhlIG1haW4gZW50cnkgcG9pbnRzIGFyZToK OzsKOzsgLSBgY2wtZGVmdHlwZScsIHRoYXQgZGVmaW5lcyBuZXcgZGF0YSB0eXBlcy4KOzsK OzsgLSBgY2wtdHlwZXMtb2YnLCB0aGF0IGxvb2t1cHMgdGhlIHR5cGVzIGFuIG9iamVjdCBi ZWxvbmdzIHRvLgoKKGRlZnZhciBjbC0tdHlwZS1saXN0IG5pbAogICJMaXN0IG9mIGRlZmlu ZWQgdHlwZXMgdG8gbG9va3VwIGZvciBtZXRob2QgZGlzcGF0Y2hpbmcuIikKCihkZWZ1biBj bC10eXBlLXAgKG9iamVjdCkKICAiUmV0dXJuIG5vbi1uaWwgaWYgT0JKRUNUIGlzIGEgdXNl ZCBkZWZpbmVkIHR5cGUuClRoYXQgaXMsIGEgdHlwZSBvZiBjbGFzcyBgY2wtdHlwZS1jbGFz cycuIgogIChhbmQgKHN5bWJvbHAgb2JqZWN0KQogICAgICAgKGVxICh0eXBlLW9mIChjbC1m aW5kLWNsYXNzIG9iamVjdCkpICdjbC10eXBlLWNsYXNzKSkpCgooY2wtZGVmc3RydWN0CiAg ICAoY2wtdHlwZS1jbGFzcwogICAgICg6aW5jbHVkZSBjbC0tY2xhc3MpCiAgICAgKDpub2lu bGluZSB0KQogICAgICg6Y29uc3RydWN0b3IgbmlsKQogICAgICg6Y29uc3RydWN0b3IgY2wt LXR5cGUtY2xhc3MtbWFrZQogICAgICAgICAgICAgICAgICAgKG5hbWUKICAgICAgICAgICAg ICAgICAgICBkb2NzdHJpbmcKICAgICAgICAgICAgICAgICAgICBwYXJlbnQtdHlwZXMKICAg ICAgICAgICAgICAgICAgICAmYXV4IChwYXJlbnRzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1hcGNhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICh0eXBlKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1jaGVjay10eXBlIHR5cGUgKHNhdGlz ZmllcyBjbC10eXBlLXApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1maW5k LWNsYXNzIHR5cGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtdHlwZXMp KSkpCiAgICAgKDpjb3BpZXIgbmlsKSkKICAiVHlwZSBkZXNjcmlwdG9ycyBmb3IgdXNlciBk ZWZpbmVkIHR5cGVzLiIpCgooZGVmdW4gY2wtdHlwZS1wYXJlbnRzIChuYW1lKQogICJHZXQg cGFyZW50cyBvZiB0eXBlIHdpdGggTkFNRS4KTkFNRSBpcyBhIHN5bWJvbCByZXByZXNlbnRp bmcgYSB0eXBlLiIKICAoY2wtLWNsYXNzLWFsbHBhcmVudHMgKGNsLWZpbmQtY2xhc3MgbmFt ZSkpKQoKKGRlZnVuIGNsLXR5cGUtY2hpbGRyZW4gKG5hbWUpCiAgIkdldCBjaGlsZHJlbiBv ZiB0aGUgdHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYSBzeW1ib2wgcmVwcmVzZW50aW5nIGEg dHlwZS4KUmV0dXJuIGEgcG9zc2libHkgZW1wdHkgbGlzdCBvZiB0eXBlcy4iCiAgKGNsLWNo ZWNrLXR5cGUgbmFtZSAoc2F0aXNmaWVzIGNsLXR5cGUtcCkpCiAgKGxldCAoY2hpbGRyZW4p CiAgICAoZG9saXN0IChlbHQgY2wtLXR5cGUtbGlzdCkKICAgICAgKG9yIChlcSBuYW1lIGVs dCkKICAgICAgICAgIChpZiAobWVtcSBuYW1lIChjbC10eXBlLXBhcmVudHMgZWx0KSkKICAg ICAgICAgICAgICAocHVzaCBlbHQgY2hpbGRyZW4pKSkpCiAgICBjaGlsZHJlbikpCgooZGVm dW4gY2wtLXR5cGUtZGFnICgpCiAgIlJldHVybiBhIERBRyBmcm9tIHRoZSBsaXN0IG9mIGRl ZmluZWQgdHlwZXMuIgogIChjbC1sYWJlbHMgKChhbGxwYXJlbnRzIChjbGFzcykKICAgICAg ICAgICAgICAgIChsZXQgKCh0eXBlIChjbC0tY2xhc3MtbmFtZSBjbGFzcykpKQogICAgICAg ICAgICAgICAgICA7OyBFeGNsdWRlIG5vbi1jbC10eXBlLXAgZnJvbSB0aGUgREFHLgogICAg ICAgICAgICAgICAgICAoaWYgKGNsLXR5cGUtcCB0eXBlKQogICAgICAgICAgICAgICAgICAg ICAgKGNvbnMgdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lcmdlLW9yZGVy ZWQtbGlzdHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyICMnYWxscGFy ZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLS1jbGFzcy1w YXJlbnRzIGNsYXNzKSkpKSkpKSkKICAgIChtYXBjYXIgKGxhbWJkYSAodHlwZSkgKGFsbHBh cmVudHMgKGNsLWZpbmQtY2xhc3MgdHlwZSkpKQogICAgICAgICAgICBjbC0tdHlwZS1saXN0 KSkpCgooZGVmdW4gY2wtLXR5cGUtdW5kZWZpbmUgKG5hbWUpCiAgIlJlbW92ZSB0aGUgZGVm aW5pdGlvbiBvZiB0eXBlIHdpdGggTkFNRS4iCiAgKHdoZW4tbGV0KiAoKGNoaWxkcmVuIChh bmQgKGNsLXR5cGUtcCBuYW1lKSAoY2wtdHlwZS1jaGlsZHJlbiBuYW1lKSkpKQogICAgKGVy cm9yICJUeXBlIGhhcyBjaGlsZHJlbjogJVMiIGNoaWxkcmVuKSkKICA7OyBDbGVhciBjYWNo ZWQgdmFsdWUgb2Ygc3BlY2lhbGl6ZXJzIHdpdGggTkFNRS4KICAoY2wtLXR5cGUtcmVzZXQt c3BlY2lhbGl6ZXJzIG5hbWUpCiAgKGNsLXJlbXByb3AgbmFtZSAnY2wtLWNsYXNzKQogIChj bC1yZW1wcm9wIG5hbWUgJ2NsLWRlZnR5cGUtaGFuZGxlcikKICAoc2V0cSBjbC0tdHlwZS1s aXN0IChkZWxxIG5hbWUgY2wtLXR5cGUtbGlzdCkpKQoKKGRlZnVuIGNsLS10eXBlLWdlbmVy YWxpemUgKG5hbWUgYXJnbGlzdCBib2R5KQogICJHZW5lcmFsaXplIHR5cGUgd2l0aCBOQU1F IGZvciBtZXRob2QgZGlzcGF0Y2hpbmcuCkFSR0xJU1QgYW5kIEJPRFkgYXJlIHBhc3NlZCB0 byBgY2wtZGVmdHlwZScuIgogIChsZXQgKChvbGR0bGlzdCAoY29weS1zZXF1ZW5jZSBjbC0t dHlwZS1saXN0KSkKCShvbGRwbGlzdCAoY29weS1zZXF1ZW5jZSAoc3ltYm9sLXBsaXN0IG5h bWUpKSkpCiAgICAoY29uZGl0aW9uLWNhc2UgZXJyCiAgICAgICAgKHBjYXNlLWxldCogKChg KCxkZWNscyAuICxib2R5KSAobWFjcm9leHAtcGFyc2UtYm9keSBib2R5KSkKICAgICAgICAg ICAgICAgICAgICAgKGRvY3N0cmluZyAoaWYgKHN0cmluZ3AgKGNhciBkZWNscykpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3AgZGVjbHMpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY2RyIChhc3NxIDpkb2N1bWVudGF0aW9uIGRlY2xz KSkpKQogICAgICAgICAgICAgICAgICAgICAoZGVjbHMgICAoY2RyIChhc3NxICdkZWNsYXJl IGRlY2xzKSkpCiAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRzIChjZHIgKGFzc3EgJ3N1 YnR5cGUtb2YgZGVjbHMpKSkKICAgICAgICAgICAgICAgICAgICAgKGNsYXNzICAgKGNsLWZp bmQtY2xhc3MgbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgIChyZWdlZCAgIChtZW1xIG5h bWUgY2wtLXR5cGUtbGlzdCkpKQogICAgICAgICAgKGlmIChudWxsIGNsYXNzKQogICAgICAg ICAgICAgIChvciAobnVsbCByZWdlZCkKICAgICAgICAgICAgICAgICAgKGVycm9yICJUeXBl IGdlbmVyYWxpemVkLCBidXQgZG9lc24ndCBleGlzdCIpKQogICAgICAgICAgICAob3IgcmVn ZWQgIlR5cGUgZXhpc3RzLCBidXQgbm90IGdlbmVyYWxpemVkIikKICAgICAgICAgICAgKG9y IChlcSAodHlwZS1vZiBjbGFzcykgJ2NsLXR5cGUtY2xhc3MpCiAgICAgICAgICAgICAgICAo ZXJyb3IgIlR5cGUgaW4gYW5vdGhlciBjbGFzczogJVMiICh0eXBlLW9mIGNsYXNzKSkpKQog ICAgICAgICAgKG9yIChsaXN0cCBwYXJlbnRzKSAoc2V0cSBwYXJlbnRzIChsaXN0IHBhcmVu dHMpKSkKICAgICAgICAgIChpZiAobWVtcSBuYW1lIHBhcmVudHMpCiAgICAgICAgICAgICAg KGVycm9yICJUeXBlIGluIHBhcmVudHM6ICVTIiBwYXJlbnRzKSkKICAgICAgICAgIDs7IFNl dHVwIGEgdHlwZSBkZXNjcmlwdG9yIGZvciBOQU1FLiAgQ2FuJ3QgdXNlIGBzZXRmJyB3aXRo CiAgICAgICAgICA7OyBgY2wtZmluZC1jbGFzcycsIHNvIGZhbGxiYWNrIHRvIHBsYWluIGBw dXQnIHRvIHNldCB0aGUKICAgICAgICAgIDs7IGBjbC0tY2xhc3MnIHN5bWJvbCBwcm9wZXJ0 eS4KICAgICAgICAgIChwdXQgbmFtZSAnY2wtLWNsYXNzCiAgICAgICAgICAgICAgIChjbC0t dHlwZS1jbGFzcy1tYWtlIG5hbWUgZG9jc3RyaW5nIHBhcmVudHMpKQogICAgICAgICAgOzsg Q2xlYXIgY2FjaGVkIHZhbHVlIG9mIHNwZWNpYWxpemVycyB3aXRoIE5BTUUuCiAgICAgICAg ICAoaWYgY2xhc3MKCSAgICAgIChjbC0tdHlwZS1yZXNldC1zcGVjaWFsaXplcnMgbmFtZSkK CSAgICA7OyBSZWNvcmQgbmV3IHR5cGUuCgkgICAgKHB1c2ggbmFtZSBjbC0tdHlwZS1saXN0 KSkKICAgICAgICAgIDs7IEtlZXAgbW9zdCBzcGVjaWZpYyB0eXBlcyBiZWZvcmUgbW9yZSBn ZW5lcmFsIHR5cGVzLgogICAgICAgICAgKHNldHEgY2wtLXR5cGUtbGlzdCAobWVyZ2Utb3Jk ZXJlZC1saXN0cwoJCQkgICAgICAgKGNsLS10eXBlLWRhZykKCQkJICAgICAgIChsYW1iZGEg KGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAiSW52YWxpZCBE QUcsICVTIiBnKSkpKQogICAgICAgICAgOzsgUmV0dXJuIHRoZSBmb3JtIHRvIGRlY2xhcmUg dGhlIHR5cGUuCiAgICAgICAgICBgKGNsLWV2YWwtd2hlbiAoY29tcGlsZSBsb2FkIGV2YWwp CiAgICAgICAgICAgICAoZGVmaW5lLXN5bWJvbC1wcm9wICcsbmFtZSAnY2wtZGVmdHlwZS1o YW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1mdW5jdGlvbgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoJmNsLWRlZnMgKCcq KSAsQGFyZ2xpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxkb2Nz dHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLEBib2R5KSkpKSkK ICAgICAgKGVycm9yCiAgICAgICA7OyBPbiBlcnJvciByZXN0b3JlIHRoZSBwcmV2aW91cyBk YXRhLgogICAgICAgKHNldHEgY2wtLXR5cGUtbGlzdCBvbGR0bGlzdCkKICAgICAgIChzZXRm IChzeW1ib2wtcGxpc3QgbmFtZSkgb2xkcGxpc3QpCiAgICAgICAoZXJyb3IgKGZvcm1hdCAi RGVmaW5lICVTIGZhaWxlZDogJXMiCiAgICAgICAgICAgICAgICAgICAgICBuYW1lIChlcnJv ci1tZXNzYWdlLXN0cmluZyBlcnIpKSkpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmbWFjcm8g Y2wtZGVmdHlwZTIgKG5hbWUgYXJnbGlzdCAmcmVzdCBib2R5KQogICJEZWZpbmUgTkFNRSBh cyBhIG5ldyBkYXRhIHR5cGUuClRoZSB0eXBlIE5BTUUgY2FuIHRoZW4gYmUgdXNlZCBpbiBg Y2wtdHlwZWNhc2UnLCBgY2wtY2hlY2stdHlwZScsIGV0YywKYW5kIGFzIGFyZ3VtZW50IHR5 cGUgZm9yIGRpc3BhdGNoaW5nIGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcy4KCkFSR0xJU1Qg aXMgYSBDb21tb24gTGlzcCBhcmd1bWVudCBsaXN0IG9mIHRoZSBzb3J0IGFjY2VwdGVkIGJ5 CmBjbC1kZWZtYWNybycuICBCT0RZIGZvcm1zIGFyZSBldmFsdWF0ZWQgYW5kIHNob3VsZCBy ZXR1cm4gYSB0eXBlCnNwZWNpZmllciB0aGF0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIHR5cGUg KHNlZSB0aGUgSW5mbyBub2RlIGAoY2wpIFR5cGUKUHJlZGljYXRlcycgaW4gdGhlIEdOVSBF bWFjcyBDb21tb24gTGlzcCBFbXVsYXRpb24gbWFudWFsKS4KCklmIHRoZSBmaXJzdCBmb3Jt IGluIEJPRFkgaXMgYSBgZGVjbGFyZScgZm9ybSwgdGhlIHNwZWMgKHN1YnR5cGUtb2YKUEFS RU5UUykgaXMgcmVjb2duaXplZCB0byBzcGVjaWZ5IGEgbGlzdCBvZiB0eXBlcyBOQU1FIGlz IGEgc3VidHlwZQpvZi4gIEZvciBpbnN0YW5jZToKCiAgKGNsLWRlZnR5cGUyIHVuc2lnbmVk LWJ5dGUgKCZvcHRpb25hbCBiaXRzKQogICAgXCJVbnNpZ25lZCBpbnRlZ2VyLlwiCiAgICAo bGlzdCBcXD0naW50ZWdlciAwIChpZiAoZXEgYml0cyBcXD0nKikgYml0cyAoMS0gKGFzaCAx IGJpdHMpKSkpKQoKICAoY2wtZGVmdHlwZTIgdW5zaWduZWQtOGJpdHMgKCkKICAgIFwiVW5z aWduZWQgOC1iaXRzIGludGVnZXIuXCIKICAgIChkZWNsYXJlIChzdWJ0eXBlLW9mIHVuc2ln bmVkLWJ5dGUpKQogICAgXFw9Jyh1bnNpZ25lZC1ieXRlIDgpKQoKVGhlIGxpc3Qgb2YgUEFS RU5UUyB0eXBlcyBkZXRlcm1pbmVzIHRoZSBvcmRlciBvZiBtZXRob2RzIGludm9jYXRpb24s CmFuZCBtaXNzaW5nIFBBUkVOVFMgbWF5IGNhdXNlIGluY29ycmVjdCBvcmRlcmluZyBvZiBt ZXRob2RzLCB3aGlsZQpleHRyYW5lb3VzIFBBUkVOVFMgbWF5IGNhdXNlIHVzZSBvZiBleHRy YW5lb3VzIG1ldGhvZHMuIgogIChkZWNsYXJlIChkZWJ1ZyBjbC1kZWZtYWNybykgKGRvYy1z dHJpbmcgMykgKGluZGVudCAyKSkKICAoY2wtLXR5cGUtZ2VuZXJhbGl6ZSBuYW1lIGFyZ2xp c3QgYm9keSkpCgooZGVmbWFjcm8gY2wtdHlwZS11bmRlZmluZSAobmFtZSkKICAiUmVtb3Zl IHRoZSBkZWZpbml0aW9ucyBvZiB0eXBlIHdpdGggTkFNRS4KTkFNRSBpcyBhbiB1bnF1b3Rl ZCBzeW1ib2wgcmVwcmVzZW50aW5nIGEgdHlwZS4KU2lnbmFsIGFuIGVycm9yIGlmIG90aGVy IHR5cGVzIGluaGVyaXQgZnJvbSBOQU1FLiIKICBgKHByb2duCiAgICAgKGNsLWNoZWNrLXR5 cGUgJyxuYW1lIChzYXRpc2ZpZXMgY2wtdHlwZS1wKSkKICAgICAoY2wtLXR5cGUtdW5kZWZp bmUgJyxuYW1lKSkpCgo7OyBJbnRlcm5hbCBkYXRhIHVzZWQgdG8gZGV0ZWN0IGVuZGxlc3Mg cmVjdXJzaW9uIGluICdjbC10eXBlLW9mJy4KKGRlZnZhciBjbC0tdHlwZS1vYmplY3QgKG1h a2Utc3ltYm9sICJ2b2lkIikpCjs7IEVuc3VyZSBlYWNoIHR5cGUgc2F0aXNmaWVzIGBlcWwn LgooZGVmdmFyIGNsLS10eXBlLXVuaXF1ZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVh bCkKICAiUmVjb3JkIGFuIHVuaXF1ZSB2YWx1ZSBvZiBlYWNoIHR5cGUuIikKCjs7IEZJWE1F OiBgZ3R5cGUtb2YnIENQVSBjb3N0IGlzIHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9m IHR5cGVzCjs7IGRlZmluZWQgd2l0aCBgY2wtZGVmdHlwZScsIHNvIHRoZSBtb3JlIHBvcHVs YXIgaXQgZ2V0cywgdGhlIHNsb3dlcgo7OyBpdCBiZWNvbWVzLiAgQW5kIG9mIGNvdXJzZSwg dGhlIGNvc3Qgb2YgZWFjaCB0eXBlIGNoZWNrIGlzCjs7IHVuYm91bmRlZCwgc28gYSBzaW5n bGUgImV4cGVuc2l2ZSIgdHlwZSBjYW4gc2xvdyBldmVyeXRoaW5nIGRvd24KOzsgZnVydGhl ci4KOzsKOzsgVGhlIHVzdWFsIGRpc3BhdGNoIGlzCjs7Cjs7ICAgKGxhbWJkYSAoYXJnICZy ZXN0IGFyZ3MpCjs7ICAgICAobGV0ICgoZiAoZ2V0aGFzaCAoY2wtdHlwZW9mIGFyZykgcHJl Y29tcHV0ZWQtbWV0aG9kcy10YWJsZSkpKQo7OyAgICAgICAoaWYgZgo7OyAgICAgICAgICAg KGFwcGx5IGYgYXJnIGFyZ3MpCjs7ICAgICAgICAgOzsgU2xvdyBjYXNlIHdoZW4gZW5jb3Vu dGVyaW5nIGEgbmV3IHR5cGUKOzsgICAgICAgICAuLi4pKSkKOzsKOzsgd2hlcmUgb2Z0ZW4g dGhlIG1vc3QgZXhwZW5zaXZlIHBhcnQgaXMgYCZyZXN0YCAod2hpY2ggaGFzIHRvCjs7IGFs bG9jYXRlIGEgbGlzdCBmb3IgdGhvc2UgcmVtYWluaW5nIGFyZ3VtZW50cyksCjs7Cjs7IFNv IHdlJ3JlIHRhbGtpbmcgYWJvdXQgcmVwbGFjaW5nCjs7Cjs7ICAgJnJlc3QgKyBjbC10eXBl LW9mICsgZ2V0aGFzaCArIGlmICsgYXBwbHkKOzsKOzsgd2l0aCBhIGZ1bmN0aW9uIHRoYXQg bG9vcHMgb3ZlciBOIHR5cGVzLCBjYWxsaW5nIGBjbC10eXBlcGAgb24gZWFjaAo7OyBvbmUg b2YgdGhlbSAoYGNsLXR5cGVwYCBpdHNlbGYgYmVpbmcgYSByZWN1cnNpdmUgZnVuY3Rpb24g dGhhdAo7OyBiYXNpY2FsbHkgaW50ZXJwcmV0cyB0aGUgdHlwZSBsYW5ndWFnZSkuICBUaGlz IGlzIGdvaW5nIHRvIHNsb3cKOzsgZG93biBkaXNwYXRjaCB2ZXJ5IHNpZ25pZmljYW50bHkg Zm9yIHRob3NlIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQKOzsgaGF2ZSBhIG1ldGhvZCB0aGF0 IGRpc3BhdGNoZXMgb24gYSB1c2VyIGRlZmluZWQgdHlwZSwgY29tcGFyZWQgdG8KOzsgdGhv c2UgdGhhdCBkb24ndC4KOzsKOzsgSXQncyBub3QgdGhlIGVuZCBvZiB0aGUgd29ybGQsIGVz cGVjaWFsbHkgYmVjYXVzZSB0aGVyZSdzIGEgbG90IG9mCjs7IG9wcG9ydHVuaXRpZXMgZm9y IG9wdGltaXphdGlvbnMgaW4gdGhlcmUsIGJ1dCBpdCdzIHNvbWV0aGluZyB0bwo7OyBrZWVw IGluIG1pbmQuCgo7OyAoZGVmdW4gY2wtdHlwZXMtb2YgKG9iamVjdCkKOzsgICAiUmV0dXJu IHRoZSB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0by4KOzsgUmV0dXJuIGFuIHVuaXF1ZSBsaXN0 IG9mIHR5cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCjs7IG1vc3Qg c3BlY2lmaWMgdHlwZSB0byB0aGUgbW9zdCBnZW5lcmFsLiIKOzsgICA7OyBJZ25vcmUgcmVj dXJzaXZlIGNhbGwgb24gdGhlIHNhbWUgT0JKRUNULCB3aGljaCBjYW4gbGVnaXRpbWF0ZWx5 Cjs7ICAgOzsgb2NjdXIgd2hlbiBhIHBhcmVudCB0eXBlIGlzIGNoZWNraW5nIHdoZXRoZXIg YW4gb2JqZWN0J3MgdHlwZSBpcwo7OyAgIDs7IHRoYXQgb2Ygb25lIG9mIGl0cyBjaGlsZHJl bi4KOzsgICAodW5sZXNzIChlcSBvYmplY3QgY2wtLXR5cGUtb2JqZWN0KQo7OyAgICAgKGxl dCAoKGNsLS10eXBlLW9iamVjdCBvYmplY3QpCjs7ICAgICAgICAgICAoZm91bmQgKGxpc3Qg KGNsLXR5cGUtb2Ygb2JqZWN0KSkpKQo7OyAgICAgICA7OyBDb2xsZWN0IGFsbCB0eXBlcyBP QkpFQ1QgYmVsb25ncyB0by4KOzsgICAgICAgKGRvbGlzdCAodHlwZSBjbC0tdHlwZS1saXN0 KQo7OyAgICAgICAgIChpZiAoY2wtdHlwZXAgb2JqZWN0IHR5cGUpCjs7ICAgICAgICAgICAg IChwdXNoIHR5cGUgZm91bmQpKSkKOzsgICAgICAgOzsgUmV0dXJuIGFuIHVuaXF1ZSB2YWx1 ZSBvZiB0eXBlLgo7OyAgICAgICAod2l0aC1tZW1vaXphdGlvbiAoZ2V0aGFzaCBmb3VuZCBj bC0tdHlwZS11bmlxdWUpCjs7ICAgICAgICAgZm91bmQpKSkpCgo7OyBBc3N1bWluZyB0aGF0 IGBjbC0tdHlwZS1saXN0JyBpcyBwcm9wZXJseSBzb3J0ZWQgZnJvbSBtb3N0IHNwZWNpZmlj Cjs7IHR5cGVzIHRvIGxlYXN0IHNwZWNpZmljIG9uZXMsIHdoaWNoIHNob3VsZCBiZSBndWFy YW50ZWVkIGJ5Cjs7IGBtZXJnZS1vcmRlcmVkLWxpc3QnIGluIGBjbC0tdHlwZS1nZW5lcmFs aXplJyB0aGlzIHZlcmlvbnMgb2YKOzsgYGNsLXR5cGVzLW9mJyB0cmllcyBzZXF1ZW50aWFs bHkgZWFjaCB0eXBlIGluIGBjbC0tdHlwZS1saXN0JywgYnV0Cjs7IHN0b3BzIG9uIHRoZSBm aXJzdCB0eXBlIHRoYXQgbWF0Y2hlcyBhbmQgcmV0dXJucyB0aGUgcGFyZW50cyBvZiB0aGUK OzsgdHlwZSBwbHVzIHRoZSBidWlsdGluIHR5cGUgb2YgT0JKRUNULiAgSWYgbm8gdHlwZSBp cyBmb3VuZCwgcmV0dXJuCjs7IG5pbCB0byBmYWxsYmFjayB0byB0aGUgInR5cGVvZiIgZ2Vu ZXJhbGl6ZXIuCihkZWZ1biBjbC10eXBlcy1vZiAob2JqZWN0KQogICJSZXR1cm4gdGhlIHVz ZXIgZGVmaW5lZCB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0bywgb3IgbmlsIGlmIG5vbmUuClJl dHVybiBhbiB1bmlxdWUgbGlzdCBvZiB0eXBlcyBPQkpFQ1QgYmVsb25ncyB0bywgb3JkZXJl ZCBmcm9tIHRoZQptb3N0IHNwZWNpZmljIHR5cGUgdG8gdGhlIG1vc3QgZ2VuZXJhbC4iCiAg OzsgSWdub3JlIHJlY3Vyc2l2ZSBjYWxsIG9uIHRoZSBzYW1lIE9CSkVDVCwgd2hpY2ggY2Fu IGxlZ2l0aW1hdGVseQogIDs7IG9jY3VyIHdoZW4gYSBwYXJlbnQgdHlwZSBpcyBjaGVja2lu ZyB3aGV0aGVyIGFuIG9iamVjdCdzIHR5cGUgaXMKICA7OyB0aGF0IG9mIG9uZSBvZiBpdHMg Y2hpbGRyZW4uCiAgKHVubGVzcyAoZXEgb2JqZWN0IGNsLS10eXBlLW9iamVjdCkKICAgIChs ZXQgKChjbC0tdHlwZS1vYmplY3Qgb2JqZWN0KQogICAgICAgICAgKHR5cGVzIGNsLS10eXBl LWxpc3QpCiAgICAgICAgICAoZm91bmQgbmlsKSkKICAgICAgOzsgVHJ5IGFsbCB0eXBlcyB1 bnRpbCBvbmUgaXMgZm91bmQgT0JKRUNUIGJlbG9uZ3MgdG8uCiAgICAgICh3aGlsZSAoYW5k IHR5cGVzIChub3QgZm91bmQpKQogICAgICAgIChpZiAoY2wtdHlwZXAgb2JqZWN0IChjYXIg dHlwZXMpKQogICAgICAgICAgICA7OyBJZiBPQkpFQ1QgYmVsb25ncyB0byB0eXBlLCBhc3N1 bWluZyB0eXBlIGlzIHRoZSBtb3N0CiAgICAgICAgICAgIDs7IHBvc3NpYmxlIHNwZWNpZmlj IHR5cGUgb2YgT0JKRUNULCB0aGUgbGlzdCBvZiB0eXBlcwogICAgICAgICAgICA7OyBPQkpF Q1RTIGJlbG9uZ3MgdG8gc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBsaXN0IG9mIHR5cGUKICAg ICAgICAgICAgOzsgcGFyZW50cywgcGx1cyB0aGUgYnVpbHRpbiB0eXBlIG9mIE9CSkVDVC4K ICAgICAgICAgICAgKHNldHEgZm91bmQgKG5jb25jIChjbC10eXBlLXBhcmVudHMgKGNhciB0 eXBlcykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAoY2wtdHlwZS1v ZiBvYmplY3QpKSkpCiAgICAgICAgICAoc2V0cSB0eXBlcyAoY2RyIHR5cGVzKSkpKQogICAg ICAoaWYgZm91bmQKICAgICAgICAgIDs7IFJldHVybiBhbiB1bmlxdWUgdmFsdWUuCiAgICAg ICAgICAod2l0aC1tZW1vaXphdGlvbiAoZ2V0aGFzaCBmb3VuZCBjbC0tdHlwZS11bmlxdWUp CiAgICAgICAgICAgIGZvdW5kKSkpKSkKCjs7OyBNZXRob2QgZGlzcGF0Y2hpbmcKOzsKKGRl ZnZhciBjbC0tdHlwZS1zcGVjaWFsaXplcnMgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXEp CiAgIk1lbW9pemUgdHlwZSBzcGVjaWFsaXplcnMuClZhbHVlcyBhcmUgcmVmcmVzaGVkIGZv bGxvd2luZyB0aGUgZGVmaW5pdGlvbiBvciByZW1vdmFsIG9mIHR5cGVzLiIpCgooZGVmdW4g Y2wtLXR5cGUtcmVzZXQtc3BlY2lhbGl6ZXJzIChuYW1lKQogICJSZW1vdmUgYWxsIGNhY2hl ZCB2YWx1ZSBvZiBzcGVjaWFsaXplcnMgcmVsYXRlZCB0byB0eXBlIHdpdGggTkFNRS4iCiAg KG1hcGhhc2ggKGxhbWJkYSAoa2V5IF8pCiAgICAgICAgICAgICAoaWYgKG1lbXEgbmFtZSBr ZXkpCiAgICAgICAgICAgICAgICAgKHJlbWhhc2gga2V5IGNsLS10eXBlLXNwZWNpYWxpemVy cykpKQogICAgICAgICAgIGNsLS10eXBlLXNwZWNpYWxpemVycykpCgooZGVmdW4gY2wtLXR5 cGUtc3BlY2lhbGl6ZXJzICh0YWcgJnJlc3QgXykKICAiSWYgVEFHIGlzIGEgdHlwZSwgcmV0 dXJuIGl0cyBzcGVjaWFsaXplcnMuIgogIDs7IFRoaXMgZnVuY3Rpb24gaXMgb25seSBldmVy IGNhbGxlZCB3aXRoICJ0YWdjb2RlcyIgcmV0dXJuZWQgYnkKICA7OyBgY2wtdHlwZS1vZics IHNvIHRoZSBgY2wtdHlwZS1wJyB0ZXN0IGlzIHJlZHVuZGFudC4KICAoYW5kIChjb25zcCB0 YWcpIDs7IChjbC10eXBlLXAgKGNhciB0YWcpKQogICAgICAgKHdpdGgtbWVtb2l6YXRpb24g KGdldGhhc2ggdGFnIGNsLS10eXBlLXNwZWNpYWxpemVycykKICAgICAgICAgOzsgVG8gZmlu ZCB0aGUgbW9zdCBwb3NzaWJsZSBzcGVjaWZpYyB0eXBlIG9mIGFuIG9iamVjdCwgaXQKICAg ICAgICAgOzsgaXMgY3JpdGljYWwgdG8gaGF2ZSBzcGVjaWFsaXplcnMgb3JkZXJlZCBmcm9t IHRoZSBtb3N0CiAgICAgICAgIDs7IHNwZWNpZmljIHBvc3NpYmxlIHR5cGUgdG8gdGhlIG1v cmUgZ2VuZXJhbCB0eXBlLgogICAgICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cyAobWFwY2Fy ICMnY2wtdHlwZS1wYXJlbnRzIHRhZykpKSkpCgooY2wtZ2VuZXJpYy1kZWZpbmUtZ2VuZXJh bGl6ZXIgY2wtLXR5cGUtZ2VuZXJhbGl6ZXIKICAyMCA7OyAidHlwZW9mIiA8ICJjbC10eXBl cy1vZiIgPCAiaGVhZCIgcHJpb3JpdHkKICAobGFtYmRhIChvYmogJnJlc3QgXykgYChjbC10 eXBlcy1vZiAsb2JqKSkKICAjJ2NsLS10eXBlLXNwZWNpYWxpemVycykKCihjbC1kZWZtZXRo b2QgY2wtZ2VuZXJpYy1nZW5lcmFsaXplcnMgOmV4dHJhICJjbC10eXBlcy1vZiIgKHR5cGUp CiAgIlN1cHBvcnQgZm9yIGRpc3BhdGNoIG9uIHR5cGVzLiIKICAoaWYgKGNsLXR5cGUtcCB0 eXBlKQogICAgICAobGlzdCBjbC0tdHlwZS1nZW5lcmFsaXplcikKICAgIChjbC1jYWxsLW5l eHQtbWV0aG9kKSkpCgo7OzsgU29tZSB0ZXN0cwo7OwonKHByb2duCiAgIChjbC1kZWZ0eXBl MiB1bnNpZ25lZC1ieXRlICgmb3B0aW9uYWwgYml0cykKICAgICAiVW5zaWduZWQgaW50ZWdl ci4iCiAgICAgYChpbnRlZ2VyIDAgLChpZiAoZXEgYml0cyAnKikgYml0cyAoMS0gKGFzaCAx IGJpdHMpKSkpKQoKICAgKGNsLWRlZnR5cGUyIHVuc2lnbmVkLTE2Yml0cyAoKQogICAgICJV bnNpZ25lZCAxNi1iaXRzIGludGVnZXIuIgogICAgIChkZWNsYXJlIChzdWJ0eXBlLW9mIHVu c2lnbmVkLWJ5dGUpKQogICAgICcodW5zaWduZWQtYnl0ZSAxNikpCgogICAoY2wtZGVmdHlw ZTIgdW5zaWduZWQtOGJpdHMgKCkKICAgICAiVW5zaWduZWQgOC1iaXRzIGludGVnZXIuIgog ICAgIChkZWNsYXJlIChzdWJ0eXBlLW9mIHVuc2lnbmVkLTE2Yml0cykpCiAgICAgJyh1bnNp Z25lZC1ieXRlIDgpKQogICAKICAgKGNsLXR5cGVzLW9mIDEwMCkKICAgOzsgKHVuc2lnbmVk LThiaXRzIHVuc2lnbmVkLTE2Yml0cyB1bnNpZ25lZC1ieXRlIGZpeG51bSkKCiAgIChjbC10 eXBlcy1vZiAyNTYpCiAgIDs7ICh1bnNpZ25lZC0xNmJpdHMgdW5zaWduZWQtYnl0ZSBmaXhu dW0pCgogICAoY2wtdHlwZXMtb2YgbW9zdC1wb3NpdGl2ZS1maXhudW0pCiAgIDs7ICh1bnNp Z25lZC1ieXRlIGZpeG51bSkKIAogICAoY2wtZGVmbWV0aG9kIG15LWZvbyAoKF9uIHVuc2ln bmVkLWJ5dGUpKQogICAgIChmb3JtYXQgInVuc2lnbmVkIikpCgogICAoY2wtZGVmbWV0aG9k IG15LWZvbyAoKF9uIHVuc2lnbmVkLTE2Yml0cykpCiAgICAgKGZvcm1hdCAidW5zaWduZWQg MTZiaXRzIC0gYWxzbyAlcyIKICAgICAgICAgICAgIChjbC1jYWxsLW5leHQtbWV0aG9kKSkp CgogICAoY2wtZGVmbWV0aG9kIG15LWZvbyAoKF9uIHVuc2lnbmVkLThiaXRzKSkKICAgICAo Zm9ybWF0ICJ1bnNpZ25lZCA4Yml0cyAtIGFsc28gJXMiCiAgICAgICAgICAgICAoY2wtY2Fs bC1uZXh0LW1ldGhvZCkpKQogICAKICAgKG15LWZvbyAxMDApCiAgIDs7ICJ1bnNpZ25lZCA4 Yml0cyAtIGFsc28gdW5zaWduZWQiCgogICAobXktZm9vIDI1NikKICAgOzsgInVuc2lnbmVk IDE2Yml0cyAtIGFsc28gdW5zaWduZWQgOGJpdHMgLSBhbHNvIHVuc2lnbmVkIgoKICAgKG15 LWZvbyBtb3N0LXBvc2l0aXZlLWZpeG51bSkKICAgOzsgInVuc2lnbmVkIgoKICAgKGNsLWRl ZnR5cGUyIHVuc2lnbmVkLTE2Yml0cyAoKQogICAgICJVbnNpZ25lZCAxNi1iaXRzIGludGVn ZXIuIgogICAgIChkZWNsYXJlIChzdWJ0eXBlLW9mIHVuc2lnbmVkLThiaXRzKSkKICAgICAn KHVuc2lnbmVkLWJ5dGUgMTYpKQogICA7OyBJbnZhbGlkIERBRyBlcnJvcgogICAKICApCg== --------------NmUF7puYso0yKcC0qzFBhzuT--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 15 Apr 2025 19:17:32 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 15 15:17:32 2025
Received: from localhost ([127.0.0.1]:55653 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u4lml-0004Lp-I1
for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 15:17:31 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:60157)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u4lmi-0004LU-Os
for 77725 <at> debbugs.gnu.org; Tue, 15 Apr 2025 15:17:29 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 7ED2C10006B;
Tue, 15 Apr 2025 15:17:20 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744744639;
bh=x4h689TxI62nU9kpKuowSLhSsHhT5I12+dDluphJuIk=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=Tv6tKk4yJr+Z59c8GMv5qE867RJM1Yxe44jvG65tuHypoxXj+d7AFScqDWUjwsoSJ
QzwzQoXAgQydWFRGLRltwqM8KE2z1P9XAalnGPYFXvs6QVcnNi6Evt7nY0fYox+etd
BRLwfTy2RtHO5+PXHF801F9E3Xw4q0kUMtCekOW3qAdSoQpD6Mk5+IHqirvqtCquO2
AHkte45LAGsTUhUvM2QbBY0+rabjEj8/eFH5pVQuMFW6pQPk/2ZDYWEltcWYbRV0ES
ZOeOyD0V+HxeGWwJrSi1qsRfuSz7xO7Y7kUZ8Vn1yhpkmYWdrrRW/kYFGKgkp6lJQv
WCsIWPwmWrtWg==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id B635F100027;
Tue, 15 Apr 2025 15:17:19 -0400 (EDT)
Received: from pastel (unknown [104.247.242.5])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 8B9A31202D5;
Tue, 15 Apr 2025 15:17:19 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
Message-ID: <jwvtt6p1ceh.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
<1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
Date: Tue, 15 Apr 2025 15:17:13 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.376 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>>> That would be great. But I need some help here to correctly dispatch
>>> all functions in gtype to Emacs libraries: cl-macs, cl-generic ?
>> Not `cl-generic`, but yes `cl-macs.el` with maybe some parts in
>> `cl-preloaded.el` and/or `cl-lib.el` and/or `cl-extra.el`.
> Shouldn't the code related to method dispatching, at the end of gtype.el,
> go to cl-generic?
Technically it can go to various places, but ideally `cl-generic` just
provides the machinery whereas the actual generalizers would be
defined next to where we define the corresponding types. In practice,
we have most of the `cl-generic-define-generalizer` in there,
admittedly, but that's because of overriding bootstrapping issues.
Since we're talking about generalizers defined for `cl-deftype` which is
not a core primitive but one defined in `cl-lib`, it makes sense to
define it elsewhere (i.e. in the `cl-lib` files), like we do for
EIEIO types.
>> I was thinking that the main(only?) difference between `cl-deftype` and
>> `gdeftype` is:
>> - the PARENTS argument, where the question is how to add a PARENTS
>> argument. Maybe we could use a (declare (parents ...))?
>
> Another possibility could be to have 2 separate definitions:
>
> - cl-deftype to define a data type, as currently.
>
> - cl-types-generalize (or something better) to declare a type previously
> defined by cl-deftype usable to dispatch methods, with specified parents?
>
> (cl-deftype my-type ()
> "A user defined type."
> ...)
> (cl-types-generalize my-type) ;; No parents
>
> (cl-deftype my-type1 ()
> "Another user defined type."
> ...)
> (cl-types-generalize my-type1 my-type) ;; With parents
We could, but having them separate begs the question of how to match one
with the other: e.g. if we re-evaluate (cl-deftype my-type ...) should the
corresponding previous (cl-types-generalize ...) be "undone"?
It's somewhat philosophical, admittedly, but bringing them together
makes it much more clear what is the "right" behavior (regardless if we
end up implementing the right behavior: at least when we get
a bug-report, we know which change is an improvement).
>> - The ARGS: Clearly your `gtype-of` can invent which args to pass
>> for a given value to match the resulting type, so `gtype-of` (and
>> everything which relies on it, i.e. method dispatch) wouldn't be
>> usable for types with a non-empty arglist.
>
> I am not sure I understand this point regarding ARGS.
> Is this related to the `cl-deftype' arguments which cannot be used to
> declare argument type of methods:
Exactly. `cl-deftype` lets you define types such as `(list-of
integer)`, but your code is not able to figure out that a value is of
type `(list-of integer)` so you can't handle those kinds of types.
And that's OK: it's still better than what we currently have.
> But, below is possible instead:
>
> (defgtype u8 unsigned-byte ()
> '(unsigned-byte 8))
>
> (cl-defmethod my-foo ((n u8))
> (format "unsigned 8bits, %s - also %s"
> n (cl-call-next-method)))
That's right.
We could try to later add support for
(cl-defmethod my-foo ((n (unsigned-byte 8)))
(format "unsigned, %s" n))
but ... one step at a time.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 15 Apr 2025 16:40:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 15 12:40:59 2025
Received: from localhost ([127.0.0.1]:54483 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u4jLE-0006kO-Uz
for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 12:40:59 -0400
Received: from smtp-78.smtpout.orange.fr ([80.12.242.78]:37283
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u4jLA-0006jB-7h
for 77725 <at> debbugs.gnu.org; Tue, 15 Apr 2025 12:40:54 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id 4jL3ubMfUOaHY4jL6ullYy; Tue, 15 Apr 2025 18:40:50 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1744735250;
bh=KTFgPY1OrHLiC8agUTqeR/+FdUF03jrinXGOHLOw3Hc=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=HjjnjfohDSTldUv6t42b1mtxfdVsnXnoog7dQedNxG1WP3buZvMw63DYifgdSwgTW
ebbRyyvftlmzsjXS/zZWvJUfdAPd7e9YUbczJRUn2fnqxdqTKQ8a5ya53HP1TgT0LI
qdyB9L9NeGGdQBuQxRDQosSiDiwLSqWU5hZ+trD1m2FMi94AzJagT+evsIcaS4/Ion
q3IFzAwAWhLcroIpEAEMvyNbdxs27eBBdN4z2XsUGZp+SYtvY9n5BFW/+piASSjfsy
zPcoMK/oio9UC53wYaSktXvA0TGyu9cWMY2yANL9TIM3qx+4XDcoPkgC0eeIq9B/wD
bqskTTnskSOSg==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Tue, 15 Apr 2025 18:40:50 +0200
X-ME-IP: 90.112.40.65
Message-ID: <1f4001c3-b0b4-41f4-8706-1853c3086da7@HIDDEN>
Date: Tue, 15 Apr 2025 18:40:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
<jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
On 2025-04-15 17:13, Stefan Monnier wrote:
>>> I get the impression that the role/impact of PARENTS is not explained
>>> clearly enough. The explanation should be clear enough that the reader
>>> can infer more or less what could happen if a parent is missing or if
>>> a non-parent is incorrectly listed as a parent.
>> This is a very good point. Currently, the role of PARENTS is limited
>> to specify in which order gtype `gtype-of' will check gtypes.
>
> Why does this order matter? I thought the PARENTS was used just in
> `gtype--specializers` to sort the various types.
Sorry for the confusion, you are right, of course.
>> For instance, you can do something like this:
>>
>> (defgtype a-fixnum nil ()
>> 'fixnum)
>>
>> (gtype-of 10)
>> (a-fixnum fixnum)
>>
>> (defgtype a-fixnum-between-1-10 a-fixnum ()
>> `(satisfies ,(lambda (x) (and (numberp x) (> x 0) (< x 11)))))
>>
>> (gtype-of 10.1)
>> (a-fixnum-between-1-10 float)
>> gtype--list
>> (a-fixnum-between-1-10 a-fixnum)
>>
>> Clearly 10.1 is not "a-fixnum-between-1-10", because the type
>> specifier is incorrect; even if `a-fixnum-between-1-10' is a subtype
>> of `a-fixnum'.
>>
>> The correct subtype could be:
>>
>> (defgtype a-fixnum-between-1-10 a-fixnum ()
>> `(and a-fixnum (satisfies ,(lambda (x) (> x 0) (< x 11)))))
>>
>> But the type specifier is not produced automatically.
>
> AFAICT the error will manifest itself in the fact that
> `gtype--specializers` will return
>
> (a-fixnum-between-1-10 a-fixnum float fixnum integer ...)
>
> so a method defined `a-fixnum` may end up incorrectly invoked in this case.
>
> In contrast if `a-fixnum` is missing:
>
> (defgtype a-fixnum-between-1-10 nil ()
> `(and a-fixnum (satisfies ,(lambda (x) (> x 0) (< x 11)))))
>
> then `gtype--specializers` may end up returning
>
> (a-fixnum a-fixnum-between-1-10 float fixnum integer ...)
>
> so a method defined for `a-fixnum` may take precedence over one defined
> for `a-fixnum-between-1-10`.
>
>> Not so easy to put all this in a docstring. Any idea?
>
> AFAICT, missing PARENTS may cause incorrect ordering of methods,
> while extraneous PARENTS may cause use of extraneous methods.
I will add this to the docstring.
>
>>>> (declare (debug cl-defmacro) (doc-string 4) (indent 3))
>>>> (cl-with-gensyms (err)
>>>> `(condition-case ,err
>>>> (progn
>>>> (cl-deftype ,name ,@args)
>>>> (gtype--register ',name ',parents ',args))
>>>> (error
>>>> (gtype--unregister ',name)
>>>> (error (error-message-string ,err))))))
>>> Could we merge this into `cl-deftype`?
>>
>> That would be great. But I need some help here to correctly dispatch
>> all functions in gtype to Emacs libraries: cl-macs, cl-generic ?
>
> Not `cl-generic`, but yes `cl-macs.el` with maybe some parts in
> `cl-preloaded.el` and/or `cl-lib.el` and/or `cl-extra.el`.
Shouldn't the code related to method dispatching, at the end of gtype.el,
go to cl-generic?
>> May be in this case, gtype should be moved to the cl namespace too.
>
> Yup. I guess they'd become "cl-types" instead of "gtypes".
>
>> Or do you envision something different?
>
> I was thinking that the main(only?) difference between `cl-deftype` and
> `gdeftype` is:
>
> - the PARENTS argument, where the question is how to add a PARENTS
> argument. Maybe we could use a (declare (parents ...))?
Another possibility could be to have 2 separate definitions:
- cl-deftype to define a data type, as currently.
- cl-types-generalize (or something better) to declare a type previously
defined by cl-deftype usable to dispatch methods, with specified parents?
(cl-deftype my-type ()
"A user defined type."
...)
(cl-types-generalize my-type) ;; No parents
(cl-deftype my-type1 ()
"Another user defined type."
...)
(cl-types-generalize my-type1 my-type) ;; With parents
It should be possible also to "un-generalize" a type.
> - The ARGS: Clearly your `gtype-of` can invent which args to pass
> for a given value to match the resulting type, so `gtype-of` (and
> everything which relies on it, i.e. method dispatch) wouldn't be
> usable for types with a non-empty arglist.
I am not sure I understand this point regarding ARGS.
Is this related to the `cl-deftype' arguments which cannot be used to
declare argument type of methods:
(defgtype unsigned-byte nil (&optional bits)
(list 'integer 0 (if (eq bits '*) bits (1- (ash 1 bits)))))
(cl-defmethod my-foo ((n (unsigned-byte 8))) ;; fails
(format "unsigned, %s" n))
But, below is possible instead:
(defgtype u8 unsigned-byte ()
'(unsigned-byte 8))
(cl-defmethod my-foo ((n u8))
(format "unsigned 8bits, %s - also %s"
n (cl-call-next-method)))
(my-foo 100)
=> "unsigned 8bits, 100 - also unsigned, 100"
(my-foo 256)
=> "unsigned, 256"
>
>>> But the above looks rather costly. 🙁
>>
>> emacs -Q on my laptop:
>>
>> Processors: 8 × Intel® Core™ i7-7700HQ CPU @ 2.80GHz
>> Memory: 15,5 GiB of RAM
>>
>> consistently takes around 1 millisecond to check 2000 gtypes, which
>> seems not so bad.
>
> AFAICT its CPU cost is proportional to the number of types defined with
> `defgtype`, so the more popular it gets, the slower it becomes.
> And of course, the cost of each type check is unbounded, so a single
> "expensive" type can slow everything down further.
>
> The usual dispatch is
>
> (lambda (arg &rest args)
> (let ((f (gethash (cl-typeof arg) precomputed-methods-table)))
> (if f
> (apply f arg args)
> ;; Slow case when encountering a new type
> ...)))
>
> where often the most expensive part is `&rest` (which has to allocate
> a list for those remaining arguments),
>
> So we're talking about replacing
>
> &rest + cl-type-of + gethash + if + apply
>
> with a function that loops over N types, calling `cl-typep` on each one
> of them (`cl-typep` itself being a recursive function that basically
> interprets the type language). This is going to slow down dispatch
> *very* significantly for those generic functions that have a method that
> dispatches on a gtype, compared to those that don't.
>
> It's not the end of the world, especially because there's a lot of
> opportunities for optimizations in there, but it's something to keep
> in mind.
Sure.
Thanks you again.
David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 15 Apr 2025 15:13:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 15 11:13:29 2025
Received: from localhost ([127.0.0.1]:53548 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u4hyZ-0002mu-G2
for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 11:13:28 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:18849)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u4hyW-0002mD-BO
for 77725 <at> debbugs.gnu.org; Tue, 15 Apr 2025 11:13:25 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 3E10110006B;
Tue, 15 Apr 2025 11:13:18 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744729997;
bh=uYFpb0e61Wege3ORHhpLowYofkmlZ/lgu3o/74+UeEU=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=Mu8dF6vHa3jPsbRVctGSO9OBOXnbzJP4hE7/uRlMavWqKJIQGQfF4jxdqyTpwTwx1
o8zFooxrEaCP4tiO34f5YLvgoLwbjlFOC1nYHw0zmixFDaijV/+j0B1fAsBtvGLYjk
qKdlSHNWajmg6PQDfmEgpq7k5ya2LruxTVGqHstOtzlgeQngf0Yf2r/TM9tcRIVeoF
qF3XhzqJa+ftSFxZBQjg8dpy5GhtWBoEmElGVEy9hJ15cu3N55UrBHlWMZOfmRSgij
kJ6T27bpyyHfkh2+F6yMayYxyDEXQph6NKBFtkC0A4Kj/JC51A0Rcjq8x2st7ZRiY3
zzyY6Tfd+j0WQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 4E54F100027;
Tue, 15 Apr 2025 11:13:17 -0400 (EDT)
Received: from pastel (unknown [104.247.242.5])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 27F24120323;
Tue, 15 Apr 2025 11:13:17 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
Message-ID: <jwv4iyp4i8x.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
<e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
Date: Tue, 15 Apr 2025 11:13:16 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.378 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>>> (eval-when-compile (require 'cl-macs)) ;For cl--find-class.
>> You can also use `cl-find-class` which doesn't require this gymnastics.
>
> Done. I didn't know about this public version of `cl--find-class'.
> However, as it seems not possible to write:
>
> `(setf (cl-find-class object) value)'
Ah, right, we still don't have a pubic version of defining a class,
indeed, sorry. I guess `cl--find-class` it is, huh.
>> I get the impression that the role/impact of PARENTS is not explained
>> clearly enough. The explanation should be clear enough that the reader
>> can infer more or less what could happen if a parent is missing or if
>> a non-parent is incorrectly listed as a parent.
> This is a very good point. Currently, the role of PARENTS is limited
> to specify in which order gtype `gtype-of' will check gtypes.
Why does this order matter? I thought the PARENTS was used just in
`gtype--specializers` to sort the various types.
> For instance, you can do something like this:
>
> (defgtype a-fixnum nil ()
> 'fixnum)
>
> (gtype-of 10)
> (a-fixnum fixnum)
>
> (defgtype a-fixnum-between-1-10 a-fixnum ()
> `(satisfies ,(lambda (x) (and (numberp x) (> x 0) (< x 11)))))
>
> (gtype-of 10.1)
> (a-fixnum-between-1-10 float)
> gtype--list
> (a-fixnum-between-1-10 a-fixnum)
>
> Clearly 10.1 is not "a-fixnum-between-1-10", because the type
> specifier is incorrect; even if `a-fixnum-between-1-10' is a subtype
> of `a-fixnum'.
>
> The correct subtype could be:
>
> (defgtype a-fixnum-between-1-10 a-fixnum ()
> `(and a-fixnum (satisfies ,(lambda (x) (> x 0) (< x 11)))))
>
> But the type specifier is not produced automatically.
AFAICT the error will manifest itself in the fact that
`gtype--specializers` will return
(a-fixnum-between-1-10 a-fixnum float fixnum integer ...)
so a method defined `a-fixnum` may end up incorrectly invoked in this case.
In contrast if `a-fixnum` is missing:
(defgtype a-fixnum-between-1-10 nil ()
`(and a-fixnum (satisfies ,(lambda (x) (> x 0) (< x 11)))))
then `gtype--specializers` may end up returning
(a-fixnum a-fixnum-between-1-10 float fixnum integer ...)
so a method defined for `a-fixnum` may take precedence over one defined
for `a-fixnum-between-1-10`.
> Not so easy to put all this in a docstring. Any idea?
AFAICT, missing PARENTS may cause incorrect ordering of methods,
while extraneous PARENTS may cause use of extraneous methods.
>>> (declare (debug cl-defmacro) (doc-string 4) (indent 3))
>>> (cl-with-gensyms (err)
>>> `(condition-case ,err
>>> (progn
>>> (cl-deftype ,name ,@args)
>>> (gtype--register ',name ',parents ',args))
>>> (error
>>> (gtype--unregister ',name)
>>> (error (error-message-string ,err))))))
>> Could we merge this into `cl-deftype`?
>
> That would be great. But I need some help here to correctly dispatch
> all functions in gtype to Emacs libraries: cl-macs, cl-generic ?
Not `cl-generic`, but yes `cl-macs.el` with maybe some parts in
`cl-preloaded.el` and/or `cl-lib.el` and/or `cl-extra.el`.
> May be in this case, gtype should be moved to the cl namespace too.
Yup. I guess they'd become "cl-types" instead of "gtypes".
> Or do you envision something different?
I was thinking that the main(only?) difference between `cl-deftype` and
`gdeftype` is:
- the PARENTS argument, where the question is how to add a PARENTS
argument. Maybe we could use a (declare (parents ...))?
- The ARGS: Clearly your `gtype-of` can invent which args to pass
for a given value to match the resulting type, so `gtype-of` (and
everything which relies on it, i.e. method dispatch) wouldn't be
usable for types with a non-empty arglist.
>> But the above looks rather costly. =F0=9F=99=81
>
> emacs -Q on my laptop:
>
> Processors: 8 =C3=97 Intel=C2=AE Core=E2=84=A2 i7-7700HQ CPU @ 2.80GHz
> Memory: 15,5 GiB of RAM
>
> consistently takes around 1 millisecond to check 2000 gtypes, which
> seems not so bad.
AFAICT its CPU cost is proportional to the number of types defined with
`defgtype`, so the more popular it gets, the slower it becomes.
And of course, the cost of each type check is unbounded, so a single
"expensive" type can slow everything down further.
The usual dispatch is
(lambda (arg &rest args)
(let ((f (gethash (cl-typeof arg) precomputed-methods-table)))
(if f
(apply f arg args)
;; Slow case when encountering a new type
...)))
where often the most expensive part is `&rest` (which has to allocate
a list for those remaining arguments),
So we're talking about replacing
&rest + cl-type-of + gethash + if + apply
with a function that loops over N types, calling `cl-typep` on each one
of them (`cl-typep` itself being a recursive function that basically
interprets the type language). This is going to slow down dispatch
*very* significantly for those generic functions that have a method that
dispatches on a gtype, compared to those that don't.
It's not the end of the world, especially because there's a lot of
opportunities for optimizations in there, but it's something to keep
in mind.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 15 Apr 2025 09:31:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 15 05:31:14 2025
Received: from localhost ([127.0.0.1]:50695 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u4cdN-0005By-Dv
for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 05:31:14 -0400
Received: from smtp-26.smtpout.orange.fr ([80.12.242.26]:35423
helo=smtp.smtpout.orange.fr)
by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u4cdG-0005BP-5w
for 77725 <at> debbugs.gnu.org; Tue, 15 Apr 2025 05:31:09 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id 4cd8u3VVA2zsA4cdCuBLLG; Tue, 15 Apr 2025 11:31:04 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1744709464;
bh=onn+OKbV2YH2sALAUPnMKhfmSN2BOFCacNtvU2p3DY8=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=fiAIOoKq/shXPEEjY6t2pCTEof4yRgskTeuVMzvLee27/5L/xC0JWn4wMh2kx5+tp
1HKdqDXdieYyqytSd6T7yOr/1S49eYM/ulOu5iuFlvLUy/pD4NVpGZWYOpTSV8mQ+O
DwzEkH4EU/0TWBN1t/T6HIe739/T7y2guperiguR9KmP8K42sXt2DGr2243ag1m/Bo
H6a0jaTgfFweHbv3XemNpQGXT7H/nZPKUxD7rg6OLE3nh0Dr/+IBP+Tnv6tCI65S9U
XA5q48mDw+CeD4R1QGeeETrxtK3gjpAnPaQwF+6/8/5aLlZ4aV13kVCHSNVxy0jdqP
V6mpbOEYzCv4A==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Tue, 15 Apr 2025 11:31:04 +0200
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------VcIOq35tljgy1x8KnkSj0iEX"
Message-ID: <e657ab9e-259a-4b83-8ab9-5f51cae7460b@HIDDEN>
Date: Tue, 15 Apr 2025 11:30:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep'
to cl-generic?
To: Stefan Monnier <monnier@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
<jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
This is a multi-part message in MIME format.
--------------VcIOq35tljgy1x8KnkSj0iEX
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
On 2025-04-14 20:27, Stefan Monnier wrote:
>> I understand more how cl-generic works, and I reworked gtype.el
>> (attached) according to your inputs and my better understanding.
>
> Looks good, thanks.
Thank you for your review! My answers below.
>> (eval-when-compile (require 'cl-macs)) ;For cl--find-class.
>
> You can also use `cl-find-class` which doesn't require this gymnastics.
Done. I didn't know about this public version of `cl--find-class'.
However, as it seems not possible to write:
`(setf (cl-find-class object) value)'
I had to use `put' instead in one place in `gtype--register'.
>> (define-inline gtype-p (object)
>> "Return non-nil if the type of OBJECT is a gtype."
>> (inline-letevals (object)
>> (inline-quote
>> (and (symbolp ,object)
>> (eq (type-of (cl--find-class ,object)) 'gtype-class)))))
>
> I hope this function is not speed-critical (and so can be a plain `defun`).
>
>> (define-inline gtype-parents (name)
>> "Get parents of type with NAME.
>> NAME is a symbol representing a type.
>> Return a possibly empty list of types."
>> (inline-quote
>> (cl--class-allparents (cl--find-class ,name))))
>
> Same here.
Done. I didn't notice any significant impact on performance :-)
>> (defun gtype--topologic-sort (graph &optional tie-breaker)
>
> How is this different from `merge-ordered-lists`?
The result of the two functions are slightly different but seems
consistent, so I switched to `merge-ordered-lists'.
>> ;;;###autoload
>> (defmacro defgtype (name &optional parents &rest args)
>> "Define NAME as a gtype that inherits from PARENTS.
>
> Inheritance != subtyping. Better stick to the term "subtype" here since
> there doesn't seem to be any inheritance going on here.
Done.
> I get the impression that the role/impact of PARENTS is not explained
> clearly enough. The explanation should be clear enough that the reader
> can infer more or less what could happen if a parent is missing or if
> a non-parent is incorrectly listed as a parent.
This is a very good point. Currently, the role of PARENTS is limited
to specify in which order gtype `gtype-of' will check gtypes.
This order is not automatically transposed to the type specifier of
`cl-deftype'. And there is a risk of inconsistency here.
For instance, you can do something like this:
(defgtype a-fixnum nil ()
'fixnum)
(gtype-of 10)
(a-fixnum fixnum)
(defgtype a-fixnum-between-1-10 a-fixnum ()
`(satisfies ,(lambda (x) (and (numberp x) (> x 0) (< x 11)))))
(gtype-of 10.1)
(a-fixnum-between-1-10 float)
gtype--list
(a-fixnum-between-1-10 a-fixnum)
Clearly 10.1 is not "a-fixnum-between-1-10", because the type
specifier is incorrect; even if `a-fixnum-between-1-10' is a subtype
of `a-fixnum'.
The correct subtype could be:
(defgtype a-fixnum-between-1-10 a-fixnum ()
`(and a-fixnum (satisfies ,(lambda (x) (> x 0) (< x 11)))))
But the type specifier is not produced automatically.
Not so easy to put all this in a docstring. Any idea?
>> (declare (debug cl-defmacro) (doc-string 4) (indent 3))
>> (cl-with-gensyms (err)
>> `(condition-case ,err
>> (progn
>> (cl-deftype ,name ,@args)
>> (gtype--register ',name ',parents ',args))
>> (error
>> (gtype--unregister ',name)
>> (error (error-message-string ,err))))))
>
> Could we merge this into `cl-deftype`?
That would be great. But I need some help here to correctly dispatch
all functions in gtype to Emacs libraries: cl-macs, cl-generic ? May
be in this case, gtype should be moved to the cl namespace too.
Or do you envision something different?
>> (defmacro remgtype (name)
>
> Try and stay within the namespace prefix.
Renamed to `gtype-remove'.
>> (defun gtype-of (object)
>> "Return the most specific possible gtype OBJECT belongs to.
>> Return an unique list of types OBJECT belongs to, ordered from the
>> most specific type to the most general."
>> ;; Ignore recursive call on the same OBJECT, which can legitimately
>> ;; occur when, for example, a parent type is investigating whether
>> ;; an object's type is that of one of its children.
>> (unless (eq object gtype--object)
>> (let ((gtype--object object)
>> (found (list (cl-type-of object))))
>> ;; Collect all gtypes OBJECT belongs to.
>> (dolist (gtype gtype--list)
>> (if (cl-typep object gtype)
>> (push gtype found)))
>> ;; Return an unique value of type.
>> (with-memoization (gethash found gtype--unique)
>> found))))
>
> Since `gtype-of` is the function used to get the "tagcode" used for
> method-dispatch, it is speed-critical.
I agree.
> But the above looks rather costly. 🙁
emacs -Q on my laptop:
Processors: 8 × Intel® Core™ i7-7700HQ CPU @ 2.80GHz
Memory: 15,5 GiB of RAM
consistently takes around 1 millisecond to check 2000 gtypes, which
seems not so bad.
Here is the benchmark I use:
(defgtype cons-car-foo nil ()
"A cons with a `foo' car."
`(satisfies ,(lambda (x) (eq (car-safe x) 'foo))))
(defgtype cons-cdr-foo nil ()
"A cons with a `foo' cdr."
`(satisfies ,(lambda (x) (eq (cdr-safe x) 'foo))))
(gtype-of '(foo . foo))
=> (cons-car-foo cons-cdr-foo cons)
;; Create a very long list of gtypes that gtype-of will check
;; sequentially.
(let* ((count 2000)
(gtype--list (let ((list '(cons-cdr-foo)))
(dotimes (_ count)
(push 'cons-car-foo list))
list))
(object '(foo . foo))
(runs 1))
(garbage-collect)
(benchmark-run
(gtype-of object)
runs))
=>(0.00107773 0 0.0)
> I think we could reduce this problem significantly with reasonably
> simple changes to `cl-generic`: we could provide to the TAGCODE-FUNCTION
> the list of specializers used by methods of the current
> generic-function, so we'd only need to check those types which are
> actually useful for the current dispatch.
> [ Hmm... well, maybe not completely "simple" since it might have
> some problematic impact on the `cl--generic-prefill-dispatchers`
> mechanism, but that should be solvable. ]
I am afraid, this looks beyond my knowledge of cl-generic.
>> (defun gtype--specializers (tag &rest _)
>> "If TAG is a gtype, return its specializers."
>> (and (consp tag) (gtype-p (car tag))
>> (with-memoization (gethash tag gtype--specializers)
>> (merge-ordered-lists (mapcar #'gtype-parents tag)))))
>
> AFAIK this function is only ever called with "tagcodes" returned by your
> own TAGCODE-FUNCTION, so I think the `gtype-p` test is redundant.
Good find. Done.
Please find attached the last version.
David
--------------VcIOq35tljgy1x8KnkSj0iEX
Content-Type: text/x-emacs-lisp; charset=UTF-8; name="gtype.el"
Content-Disposition: attachment; filename="gtype.el"
Content-Transfer-Encoding: base64
Ozs7IGd0eXBlLmVsIC0tLSBEYXRhIHR5cGVzIGZvciBnZW5lcmljIGZ1bmN0aW9ucyAtKi0g
bGV4aWNhbC1iaW5kaW5nOnQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMjUgRGF2aWQgUG9u
Y2UKCjs7IEF1dGhvcjogRGF2aWQgUG9uY2UgPGRhX3ZpZEBvcmFuZ2UuZnI+Cjs7IE1haW50
YWluZXI6IERhdmlkIFBvbmNlIDxkYV92aWRAb3JhbmdlLmZyPgo7OyBDcmVhdGVkOiA2IEFw
cmlsIDIwMjUKOzsgS2V5d29yZHM6IGV4dGVuc2lvbnMKCjs7IFRoaXMgZmlsZSBpcyBub3Qg
cGFydCBvZiBHTlUgRW1hY3MuCgo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCjs7IG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCjs7IHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m
IHRoZQo7OyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsIGJ1dAo7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCjs7IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFs
b25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcv
bGljZW5zZXMvPi4KCjs7OyBDb21tZW50YXJ5Ogo7Owo7OyBUaGlzIGxpYnJhcnkgZXh0ZW5k
cyBgY2wtZGVmdHlwZScgdG8gZGVmaW5lIGBndHlwZXMnLCBpLmUuIGRhdGEKOzsgdHlwZXMg
ZGVmaW5lZCBieSAnY2wtZGVmdHlwZScgd2hpY2ggYXJlIGFsc28gdmFsaWQgYXJndW1lbnQg
dHlwZXMKOzsgZm9yIGRpc3BhdGNoaW5nIGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcyAoc2Vl
IGFsc28gQnVnIzc3NzI1IGF0Cjs7IDxodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVn
cmVwb3J0LmNnaT9idWc9Nzc3MjU+KS4KOzsKOzsgVGhlIG1haW4gZW50cnkgcG9pbnRzIGFy
ZToKOzsKOzsgLSBgZGVmZ3R5cGUnLCBhIG1hY3JvIHRoYXQgZGVmaW5lcyBhIGd0eXBlLgo7
Owo7OyAtIGBndHlwZS1vZicsIGEgZnVuY3Rpb24gdGhhdCBsb29rdXAgdGhlIGd0eXBlIG9m
IGFuIG9iamVjdC4KOzsKOzsgLSBgZ3R5cGUtcmVtb3ZlJywgYSBtYWNybyB0aGF0IHJlbW92
ZXMgYSBndHlwZS4KOzsKOzsgQSB0cml2aWFsIGV4YW1wbGU6Cjs7Cjs7IChkZWZndHlwZSBu
ZWdhdGl2ZSBuaWwgKCkKOzsgICAiQSBuZWdhdGl2ZSBudW1iZXIiCjs7ICAgJyhhbmQgbnVt
YmVyIChzYXRpc2ZpZXMgbWludXNwKSkpCjs7Cjs7IChkZWZndHlwZSB6ZXJvIG5pbCAoKQo7
OyAgICJBIHplcm8gbnVtYmVyIgo7OyAgICcoYW5kIG51bWJlciAoc2F0aXNmaWVzIHplcm9w
KSkpCjs7Cjs7IChkZWZndHlwZSBwb3NpdGl2ZSBuaWwgKCkKOzsgICAiQSBwb3NpdGl2ZSBu
dW1iZXIiCjs7ICAgJyhhbmQgbnVtYmVyIChzYXRpc2ZpZXMgcGx1c3ApKSkKOzsKOzsgKGNs
LWRlZm1ldGhvZCB0ZXN0LW51bWJlciAoKG4gbmVnYXRpdmUpKQo7OyAgIChmb3JtYXQgIm5l
Z2F0aXZlIG51bWJlciwgJXMiIG4pKQo7Owo7OyAoY2wtZGVmbWV0aG9kIHRlc3QtbnVtYmVy
ICgobiB6ZXJvKSkKOzsgICAoZm9ybWF0ICJ6ZXJvIG51bWJlciwgJXMiIG4pKQo7Owo7OyAo
Y2wtZGVmbWV0aG9kIHRlc3QtbnVtYmVyICgobiBwb3NpdGl2ZSkpCjs7ICAgKGZvcm1hdCAi
cG9zaXRpdmUgbnVtYmVyLCAlcyIgbikpCjs7Cjs7ICh0ZXN0LW51bWJlciAtMTIzLjApCjs7
ID0+ICJuZWdhdGl2ZSBudW1iZXIsIC0xMjMuMCIKOzsgKHRlc3QtbnVtYmVyIChhYnMgLTEy
My4wKSkKOzsgPT4gInBvc2l0aXZlIG51bWJlciwgMTIzLjAiCjs7ICh0ZXN0LW51bWJlciAo
cm91bmQgMC4wMDAwMDAwMDAwMDEpKQo7OyA9PiAiemVybyBudW1iZXIsIDAiCjs7Cjs7IFBl
cmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zOgo7Owo7OyBUaGUgY3JpdGljYWwgcG9pbnQgb2Yg
dGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdGhlIGZ1bmN0aW9uCjs7IGBndHlwZS1v
Zicgd2hpY2ggc2VxdWVudGlhbGx5IHRyaWVzIGFsbCBrbm93biBndHlwZXMgdG8gY29sbGVj
dCBhbGwKOzsgdGhvc2UgYW4gb2JqZWN0IGJlbG9uZ3MgdG8sIGZyb20gdGhlIG1vc3Qgc3Bl
Y2lmaWMgdG8gdGhlIG1vc3QKOzsgZ2VuZXJhbCB0eXBlLiAgVGhlcmVmb3JlLCB0aGUgbWF4
aW11bSB0aW1lIHRvIGZpbmQgYW4gb2JqZWN0J3MgdHlwZQo7OyBkaXJlY3RseSBkZXBlbmRz
IG9uIHRoZSBudW1iZXIgb2YgZ3R5cGVzLiAgSXMgdGhlcmUgYSBiZXR0ZXIKOzsgc29sdXRp
b24/ICBBbnl3YXksIGFzc3VtaW5nIHRoYXQgZWFjaCBzaW5nbGUgdGVzdCB0byBrbm93IHdo
ZXRoZXIKOzsgYW4gb2JqZWN0IGlzIG9mIGEgZ2l2ZW4gZ3R5cGUgaXMgcmVhc29uYWJseSBm
YXN0LCB0aGUgcGVyZm9ybWFuY2UKOzsgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBzZWVtcyBh
Y2NlcHRhYmxlIChiYXNlZCBvbiB0aGUgdHJpdmlhbAo7OyBleGFtcGxlIGFib3ZlLCBhdHRl
bXB0aW5nIDEsMDAwIGd0eXBlIGNoZWNrcyB0YWtlcyBhYm91dCBoYWxmIGEKOzsgbWlsbGlz
ZWNvbmQgb24gbXkgc2V0dXApLgo7OwoKOzs7IENvZGU6Cjs7CihyZXF1aXJlICdjbC1saWIp
CgooZGVmdmFyIGd0eXBlLS1saXN0IG5pbAogICJQcmVjZWRlbmNlIGxpc3Qgb2YgdGhlIGRl
ZmluZWQgZ3R5cGVzLiIpCgooZGVmdW4gZ3R5cGUtcCAob2JqZWN0KQogICJSZXR1cm4gbm9u
LW5pbCBpZiB0aGUgdHlwZSBvZiBPQkpFQ1QgaXMgYSBndHlwZS4iCiAgKGFuZCAoc3ltYm9s
cCBvYmplY3QpCiAgICAgICAoZXEgKHR5cGUtb2YgKGNsLWZpbmQtY2xhc3Mgb2JqZWN0KSkg
J2d0eXBlLWNsYXNzKSkpCgooY2wtZGVmc3RydWN0CiAgICAoZ3R5cGUtY2xhc3MKICAgICAo
OmluY2x1ZGUgY2wtLWNsYXNzKQogICAgICg6bm9pbmxpbmUgdCkKICAgICAoOmNvbnN0cnVj
dG9yIG5pbCkKICAgICAoOmNvbnN0cnVjdG9yIGd0eXBlLS1jbGFzcy1tYWtlCiAgICAgICAg
ICAgICAgICAgICAobmFtZQogICAgICAgICAgICAgICAgICAgIGRvY3N0cmluZwogICAgICAg
ICAgICAgICAgICAgIHBhcmVudC10eXBlcwogICAgICAgICAgICAgICAgICAgICZhdXggKHBh
cmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsYW1iZGEgKHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGNsLWNoZWNrLXR5cGUgdHlwZSAoc2F0aXNmaWVzIGd0eXBlLXApKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjbC1maW5kLWNsYXNzIHR5cGUpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJlbnQtdHlwZXMpKSkpCiAgICAgKDpjb3BpZXIgbmlsKSkKICAi
VHlwZSBkZXNjcmlwdG9ycyBmb3IgZ3R5cGVzLiIpCgooZGVmdW4gZ3R5cGUtcGFyZW50cyAo
bmFtZSkKICAiR2V0IHBhcmVudHMgb2YgdHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYSBzeW1i
b2wgcmVwcmVzZW50aW5nIGEgdHlwZS4iCiAgKGNsLS1jbGFzcy1hbGxwYXJlbnRzIChjbC1m
aW5kLWNsYXNzIG5hbWUpKSkKCihkZWZ1biBndHlwZS1jaGlsZHJlbiAobmFtZSkKICAiR2V0
IGNoaWxkcmVuIG9mIHRoZSBndHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYSBzeW1ib2wgcmVw
cmVzZW50aW5nIGEgZ3R5cGUuClJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgdHlw
ZXMuIgogIChjbC1jaGVjay10eXBlIG5hbWUgKHNhdGlzZmllcyBndHlwZS1wKSkKICAobGV0
IChjaGlsZHJlbikKICAgIChkb2xpc3QgKGVsdCBndHlwZS0tbGlzdCkKICAgICAgKG9yIChl
cSBuYW1lIGVsdCkKICAgICAgICAgIChpZiAobWVtcSBuYW1lIChndHlwZS1wYXJlbnRzIGVs
dCkpCiAgICAgICAgICAgICAgKHB1c2ggZWx0IGNoaWxkcmVuKSkpKQogICAgY2hpbGRyZW4p
KQoKKGRlZnVuIGd0eXBlLS1kYWcgKCkKICAiUmV0dXJuIGEgREFHIGZyb20gdGhlIGxpc3Qg
b2YgZGVmaW5lZCBndHlwZXMuIgogIChjbC1sYWJlbHMgKChhbGxwYXJlbnRzIChjbGFzcykK
ICAgICAgICAgICAgICAgIChsZXQgKCh0eXBlIChjbC0tY2xhc3MtbmFtZSBjbGFzcykpKQog
ICAgICAgICAgICAgICAgICA7OyBFeGNsdWRlIG5vbi1ndHlwZXMgZnJvbSB0aGUgREFHLiAg
YGd0eXBlLW9mJwogICAgICAgICAgICAgICAgICA7OyBkb2Vzbid0IGNoZWNrIG5vbi1ndHlw
ZXMgYXQgcnVuIHRpbWUsIHRoZXkgYXJlCiAgICAgICAgICAgICAgICAgIDs7IGhhbmRsZWQg
YnkgdGhlICJ0eXBlLW9mIiBnZW5lcmFsaXplci4KICAgICAgICAgICAgICAgICAgKGlmIChn
dHlwZS1wIHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAoY29ucyB0eXBlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChtYXBjYXIgIydhbGxwYXJlbnRzCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoY2wtLWNsYXNzLXBhcmVudHMgY2xhc3MpKSkpKSkpKQog
ICAgKG1hcGNhciAobGFtYmRhIChndHlwZSkgKGFsbHBhcmVudHMgKGNsLS1maW5kLWNsYXNz
IGd0eXBlKSkpCiAgICAgICAgICAgIGd0eXBlLS1saXN0KSkpCgooZGVmdW4gZ3R5cGUtLXJl
Z2lzdGVyIChuYW1lICZvcHRpb25hbCBwYXJlbnRzIGFyZ3MpCiAgIlJlZ2lzdGVyIGEgZ3R5
cGUgd2l0aCBOQU1FIGFuZCBQQVJFTlRTLgpBUkdTIGFyZSB0aG9zZSB0aGF0IHdpbGwgYmUg
cGFzc2VkIHRvIGBjbC1kZWZ0eXBlJy4iCiAgKGNvbmRpdGlvbi1jYXNlIGVycgogICAgICAo
bGV0ICgoY2xhc3MgKGNsLWZpbmQtY2xhc3MgbmFtZSkpCiAgICAgICAgICAgIChyZWdlZCAo
bWVtcSBuYW1lIGd0eXBlLS1saXN0KSkpCiAgICAgICAgKGlmIChudWxsIGNsYXNzKQogICAg
ICAgICAgICAob3IgKG51bGwgcmVnZWQpCiAgICAgICAgICAgICAgICAoZXJyb3IgIk5ldyB0
eXBlLCBidXQgYWxyZWFkeSBpbiBndHlwZXMgbGlzdCIpKQogICAgICAgICAgKG9yIHJlZ2Vk
ICJFeGlzdGluZyB0eXBlLCBidXQgbm90IGluIGd0eXBlcyBsaXN0IikKICAgICAgICAgIChv
ciAoZXEgKHR5cGUtb2YgY2xhc3MpICdndHlwZS1jbGFzcykKICAgICAgICAgICAgICAoZXJy
b3IgIlR5cGUgaW4gYW5vdGhlciBjbGFzczogJVMiICh0eXBlLW9mIGNsYXNzKSkpKQogICAg
ICAgIChvciAobGlzdHAgcGFyZW50cykgKHNldHEgcGFyZW50cyAobGlzdCBwYXJlbnRzKSkp
CiAgICAgICAgKGlmIChtZW1xIG5hbWUgcGFyZW50cykKICAgICAgICAgICAgKGVycm9yICJU
eXBlIGluIHBhcmVudHM6ICVTIiBwYXJlbnRzKSkKICAgICAgICA7OyBTZXR1cCBhIHR5cGUg
ZGVzY3JpcHRvciBmb3IgTkFNRSwgd2l0aCBQQVJFTlRTIGFuZCB0aGUKICAgICAgICA7OyBk
b2NzdHJpbmcgcG9zc2libHkgcHJlc2VudCBpbiBBUkdTLgogICAgICAgIChsZXQgKChkb2Nz
dHJpbmcgKGNhYXIgKG1hY3JvZXhwLXBhcnNlLWJvZHkgKGNkciBhcmdzKSkpKSkKICAgICAg
ICAgIChvciAoc3RyaW5ncCBkb2NzdHJpbmcpIChzZXRxIGRvY3N0cmluZyBuaWwpKQogICAg
ICAgICAgKHB1dCBuYW1lICdjbC0tY2xhc3MKICAgICAgICAgICAgICAgKGd0eXBlLS1jbGFz
cy1tYWtlIG5hbWUgZG9jc3RyaW5nIHBhcmVudHMpKSkKICAgICAgICAoaWYgY2xhc3MKICAg
ICAgICAgICAgOzsgQ2xlYXIgY2FjaGVkIHZhbHVlIG9mIHNwZWNpYWxpemVycyB3aXRoIE5B
TUUuCiAgICAgICAgICAgIChndHlwZS0tcmVzZXQtc3BlY2lhbGl6ZXJzIG5hbWUpCiAgICAg
ICAgICA7OyBSZWNvcmQgdGhlIG5ldyB0eXBlLgogICAgICAgICAgKHB1c2ggbmFtZSBndHlw
ZS0tbGlzdCkpCiAgICAgICAgOzsgVG8gZmluZCB0aGUgbW9zdCBwb3NzaWJsZSBzcGVjaWZp
YyBndHlwZSBvZiBhbiBvYmplY3QsIG1vc3QKICAgICAgICA7OyBzcGVjaWZpYyB0eXBlcyBt
dXN0IGJlIHRyaWVkIGJlZm9yZSBtb3JlIGdlbmVyYWwgdHlwZXMuCiAgICAgICAgKHNldHEg
Z3R5cGUtLWxpc3QgKG1lcmdlLW9yZGVyZWQtbGlzdHMgKGd0eXBlLS1kYWcpKSkKICAgICAg
ICBuYW1lKQogICAgKGVycm9yCiAgICAgKGd0eXBlLS11bnJlZ2lzdGVyIG5hbWUpCiAgICAg
KGVycm9yIChmb3JtYXQgIiVzLCAlUyIgKGVycm9yLW1lc3NhZ2Utc3RyaW5nIGVycikgbmFt
ZSkpKSkpCgooZGVmdW4gZ3R5cGUtLXVucmVnaXN0ZXIgKG5hbWUpCiAgIlVucmVnaXN0ZXIg
dGhlIGd0eXBlIHdpdGggTkFNRS4iCiAgKHdoZW4tbGV0KiAoKGNoaWxkcmVuIChhbmQgKGd0
eXBlLXAgbmFtZSkgKGd0eXBlLWNoaWxkcmVuIG5hbWUpKSkpCiAgICAoZXJyb3IgIlR5cGUg
aGFzIGNoaWxkcmVuOiAlUyIgY2hpbGRyZW4pKQogIDs7IENsZWFyIGNhY2hlZCB2YWx1ZSBv
ZiBzcGVjaWFsaXplcnMgd2l0aCBOQU1FLgogIChndHlwZS0tcmVzZXQtc3BlY2lhbGl6ZXJz
IG5hbWUpCiAgKGNsLXJlbXByb3AgbmFtZSAnZ3R5cGUtLXNlcW4pCiAgKGNsLXJlbXByb3Ag
bmFtZSAnY2wtLWNsYXNzKQogIChjbC1yZW1wcm9wIG5hbWUgJ2NsLWRlZnR5cGUtaGFuZGxl
cikKICAoc2V0cSBndHlwZS0tbGlzdCAoZGVscSBuYW1lIGd0eXBlLS1saXN0KSkKICBuaWwp
Cgo7OzsjIyNhdXRvbG9hZAooZGVmbWFjcm8gZGVmZ3R5cGUgKG5hbWUgJm9wdGlvbmFsIHBh
cmVudHMgJnJlc3QgYXJncykKICAiRGVmaW5lIE5BTUUgYXMgYSBndHlwZSwgc3VidHlwZSBv
ZiBQQVJFTlRTIGd0eXBlcy4KSWYgYSBndHlwZSB3aXRoIE5BTUUgYWxyZWFkeSBleGlzdHMs
IHJlZGVmaW5lIGl0LiAgT24gZXJyb3IsIE5BTUUgaXMKbm8gbW9yZSBkZWZpbmVkIGFzIGEg
Z3R5cGUuCgpOQU1FIGlzIGFuIHVucXVvdGVkIHN5bWJvbCByZXByZXNlbnRpbmcgYSBndHlw
ZS4KCk9wdGlvbmFsIGFyZ3VtZW50IFBBUkVOVFMgaXMgZWl0aGVyIGFuIHVucXVvdGVkIHN5
bWJvbCBvciBsaXN0IG9mCnN5bWJvbHMgb3RoZXIgdGhhbiBOQU1FIHJlcHJlc2VudGluZyBn
dHlwZXMgd2hvc2UgTkFNRSBpcyBhIHN1YnR5cGUuCgpBbHNvIHBhc3MgTkFNRSBhbmQgQVJH
UyB0byBgY2wtZGVmdHlwZScgdG8gZGVmaW5lIE5BTUUgYXMgYSBuZXcgZGF0YQp0eXBlLiIK
ICAoZGVjbGFyZSAoZGVidWcgY2wtZGVmbWFjcm8pIChkb2Mtc3RyaW5nIDQpIChpbmRlbnQg
MykpCiAgYChwcm9nMSAoZ3R5cGUtLXJlZ2lzdGVyICcsbmFtZSAnLHBhcmVudHMgJyxhcmdz
KQogICAgIChjbC1kZWZ0eXBlICxuYW1lICxAYXJncykpKQoKKGRlZm1hY3JvIGd0eXBlLXJl
bW92ZSAobmFtZSkKICAiUmVtb3ZlIHRoZSBndHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYW4g
dW5xdW90ZWQgc3ltYm9sIHJlcHJlc2VudGluZyBhIGd0eXBlLgpTaWduYWwgYW4gZXJyb3Ig
aWYgb3RoZXIgZ3R5cGVzIGluaGVyaXQgZnJvbSBOQU1FLiIKICBgKHByb2duCiAgICAgKGNs
LWNoZWNrLXR5cGUgJyxuYW1lIChzYXRpc2ZpZXMgZ3R5cGUtcCkpCiAgICAgKGd0eXBlLS11
bnJlZ2lzdGVyICcsbmFtZSkpKQoKOzsgSW50ZXJuYWwgZGF0YSB1c2VkIHRvIGRldGVjdCBl
bmRsZXNzIHJlY3Vyc2lvbiBpbiAnZ3R5cGUtb2YnLgooZGVmdmFyIGd0eXBlLS1vYmplY3Qg
KG1ha2Utc3ltYm9sICJ2b2lkIikpCjs7IEVhY2ggZ3R5cGUgbXVzdCBzYXRpc2ZpZXMgYGVx
bCcuCihkZWZ2YXIgZ3R5cGUtLXVuaXF1ZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVh
bCkKICAiUmVjb3JkIGFuIHVuaXF1ZSB2YWx1ZSBmb3IgZWFjaCBndHlwZS4iKQoKKGRlZnVu
IGd0eXBlLW9mIChvYmplY3QpCiAgIlJldHVybiB0aGUgbW9zdCBzcGVjaWZpYyBwb3NzaWJs
ZSBndHlwZSBPQkpFQ1QgYmVsb25ncyB0by4KUmV0dXJuIGFuIHVuaXF1ZSBsaXN0IG9mIHR5
cGVzIE9CSkVDVCBiZWxvbmdzIHRvLCBvcmRlcmVkIGZyb20gdGhlCm1vc3Qgc3BlY2lmaWMg
dHlwZSB0byB0aGUgbW9zdCBnZW5lcmFsLiIKICA7OyBJZ25vcmUgcmVjdXJzaXZlIGNhbGwg
b24gdGhlIHNhbWUgT0JKRUNULCB3aGljaCBjYW4gbGVnaXRpbWF0ZWx5CiAgOzsgb2NjdXIg
d2hlbiwgZm9yIGV4YW1wbGUsIGEgcGFyZW50IHR5cGUgaXMgaW52ZXN0aWdhdGluZyB3aGV0
aGVyCiAgOzsgYW4gb2JqZWN0J3MgdHlwZSBpcyB0aGF0IG9mIG9uZSBvZiBpdHMgY2hpbGRy
ZW4uCiAgKHVubGVzcyAoZXEgb2JqZWN0IGd0eXBlLS1vYmplY3QpCiAgICAobGV0ICgoZ3R5
cGUtLW9iamVjdCBvYmplY3QpCiAgICAgICAgICAoZm91bmQgKGxpc3QgKGNsLXR5cGUtb2Yg
b2JqZWN0KSkpKQogICAgICA7OyBDb2xsZWN0IGFsbCBndHlwZXMgT0JKRUNUIGJlbG9uZ3Mg
dG8uCiAgICAgIChkb2xpc3QgKGd0eXBlIGd0eXBlLS1saXN0KQogICAgICAgIChpZiAoY2wt
dHlwZXAgb2JqZWN0IGd0eXBlKQogICAgICAgICAgICAocHVzaCBndHlwZSBmb3VuZCkpKQog
ICAgICA7OyBSZXR1cm4gYW4gdW5pcXVlIHZhbHVlIG9mIHR5cGUuCiAgICAgICh3aXRoLW1l
bW9pemF0aW9uIChnZXRoYXNoIGZvdW5kIGd0eXBlLS11bmlxdWUpCiAgICAgICAgZm91bmQp
KSkpCgo7OzsgTWV0aG9kIGRpc3BhdGNoaW5nCjs7CihkZWZ2YXIgZ3R5cGUtLXNwZWNpYWxp
emVycyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcSkKICAiTWVtb2l6ZSBndHlwZSBzcGVj
aWFsaXplcnMuClRoaXMgY2FjaGUgaXMgY2xlYXJlZCBieSBgZ3R5cGUtLXJlZ2lzdGVyJyBh
bmQgYGd0eXBlLS11bnJlZ2lzdGVyJy4iKQoKKGRlZnVuIGd0eXBlLS1yZXNldC1zcGVjaWFs
aXplcnMgKG5hbWUpCiAgIlJlbW92ZSBhbGwgY2FjaGVkIHZhbHVlIG9mIHNwZWNpYWxpemVy
cyB3aXRoIE5BTUUuIgogIChtYXBoYXNoIChsYW1iZGEgKGtleSBfKQogICAgICAgICAgICAg
KGlmIChtZW1xIG5hbWUga2V5KQogICAgICAgICAgICAgICAgIChyZW1oYXNoIGtleSBndHlw
ZS0tc3BlY2lhbGl6ZXJzKSkpCiAgICAgICAgICAgZ3R5cGUtLXNwZWNpYWxpemVycykpCgoo
ZGVmdW4gZ3R5cGUtLXNwZWNpYWxpemVycyAodGFnICZyZXN0IF8pCiAgIklmIFRBRyBpcyBh
IGd0eXBlLCByZXR1cm4gaXRzIHNwZWNpYWxpemVycy4iCiAgOzsgVGhpcyBmdW5jdGlvbiBp
cyBvbmx5IGV2ZXIgY2FsbGVkIHdpdGggInRhZ2NvZGVzIiByZXR1cm5lZCBieQogIDs7IGBn
dHlwZS1vZicsIHNvIHRoZSBgZ3R5cGUtcCcgdGVzdCBpcyByZWR1bmRhbnQuCiAgKGFuZCAo
Y29uc3AgdGFnKSA7OyAoZ3R5cGUtcCAoY2FyIHRhZykpCiAgICAgICAod2l0aC1tZW1vaXph
dGlvbiAoZ2V0aGFzaCB0YWcgZ3R5cGUtLXNwZWNpYWxpemVycykKICAgICAgICAgKG1lcmdl
LW9yZGVyZWQtbGlzdHMgKG1hcGNhciAjJ2d0eXBlLXBhcmVudHMgdGFnKSkpKSkKCihjbC1n
ZW5lcmljLWRlZmluZS1nZW5lcmFsaXplciBndHlwZS0tZ2VuZXJhbGl6ZXIKICAyMCA7OyAi
dHlwZW9mIiBwcmlvcml0eSA8ICJndHlwZS1vZiIgcHJpb3JpdHkgPCAiaGVhZCIgcHJpb3Jp
dHkKICAobGFtYmRhIChvYmogJnJlc3QgXykgYChndHlwZS1vZiAsb2JqKSkKICAjJ2d0eXBl
LS1zcGVjaWFsaXplcnMpCgooY2wtZGVmbWV0aG9kIGNsLWdlbmVyaWMtZ2VuZXJhbGl6ZXJz
IDpleHRyYSAiZ3R5cGUtb2YiICh0eXBlKQogICJTdXBwb3J0IGZvciBkaXNwYXRjaCBvbiBn
dHlwZXMuIgogIChpZiAoZ3R5cGUtcCB0eXBlKQogICAgICAobGlzdCBndHlwZS0tZ2VuZXJh
bGl6ZXIpCiAgICAoY2wtY2FsbC1uZXh0LW1ldGhvZCkpKQoKKHByb3ZpZGUgJ2d0eXBlKQoK
Ozs7IGd0eXBlLmVsIGVuZHMgaGVyZQo=
--------------VcIOq35tljgy1x8KnkSj0iEX--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 14 Apr 2025 18:27:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 14 14:27:12 2025
Received: from localhost ([127.0.0.1]:48946 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u4OWW-0002ZQ-5M
for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 14:27:12 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:47983)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u4OWS-0002ZB-Oa
for 77725 <at> debbugs.gnu.org; Mon, 14 Apr 2025 14:27:09 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 3FB9D80860;
Mon, 14 Apr 2025 14:27:02 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744655221;
bh=QCL8PHb28WMr+cpFsspVXKxD74FdIj0XF6kwv20eQts=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=QH41ooHBgLOvpCcScTqwG3HllciIxWdceVO2W/Xhrdqfn8wNQGHN2wwq+4mMwEbRc
gDfBy1b1G2eZJniGdz5/7/rahoJ1PcJ30Q6lh63a1RMxiiS1BaBaVOPp+DCcw0iXgP
/REZ9Ynds8puLC2P+rwo37m/IQ4qmODWydWYF+TIaiy2mil+bNaE0ms2ciYmK+rQ4b
S3BMd69uZfaPl9V3nbxALX09RrxX266lzE1MZfBJHIhnzZpWWq/Q6ceU5lK9Ts+613
kwYwkgRWrwaX6Nsm9MH/3+U3RoGBYcUUfZ+ATHacMuAYk2jVzMZFZR8d+Q9yc3p1Se
ki32u/s7zEs1A==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 35CF280644;
Mon, 14 Apr 2025 14:27:01 -0400 (EDT)
Received: from alfajor (unknown [23.233.149.155])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 0F689120550;
Mon, 14 Apr 2025 14:27:01 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
Message-ID: <jwvcydek5ax.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
<jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
<5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN>
Date: Mon, 14 Apr 2025 14:27:00 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.184 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> I understand more how cl-generic works, and I reworked gtype.el
> (attached) according to your inputs and my better understanding.
Looks good, thanks.
Some comments below.
> (eval-when-compile (require 'cl-macs)) ;For cl--find-class.
You can also use `cl-find-class` which doesn't require this gymnastics.
> (define-inline gtype-p (object)
> "Return non-nil if the type of OBJECT is a gtype."
> (inline-letevals (object)
> (inline-quote
> (and (symbolp ,object)
> (eq (type-of (cl--find-class ,object)) 'gtype-class)))))
I hope this function is not speed-critical (and so can be a plain `defun`).
> (define-inline gtype-parents (name)
> "Get parents of type with NAME.
> NAME is a symbol representing a type.
> Return a possibly empty list of types."
> (inline-quote
> (cl--class-allparents (cl--find-class ,name))))
Same here.
> (defun gtype--topologic-sort (graph &optional tie-breaker)
How is this different from `merge-ordered-lists`?
> ;;;###autoload
> (defmacro defgtype (name &optional parents &rest args)
> "Define NAME as a gtype that inherits from PARENTS.
Inheritance !=3D subtyping. Better stick to the term "subtype" here since
there doesn't seem to be any inheritance going on here.
> If a gtype with NAME already exists, replace it.
>
> NAME is an unquoted symbol representing a gtype.
>
> Optional argument PARENTS is either an unquoted symbol or list of
> symbols other than NAME representing types parents of NAME.
> PARENTS nil or omitted means that NAME is a root type.
>
> Also pass NAME and ARGS to `cl-deftype' to define NAME as a new data
> type."
I get the impression that the role/impact of PARENTS is not explained
clearly enough. The explanation should be clear enough that the reader
can infer more or less what could happen if a parent is missing or if
a non-parent is incorrectly listed as a parent.
> (declare (debug cl-defmacro) (doc-string 4) (indent 3))
> (cl-with-gensyms (err)
> `(condition-case ,err
> (progn
> (cl-deftype ,name ,@args)
> (gtype--register ',name ',parents ',args))
> (error
> (gtype--unregister ',name)
> (error (error-message-string ,err))))))
Could we merge this into `cl-deftype`?
> (defmacro remgtype (name)
Try and stay within the namespace prefix.
> (defun gtype-of (object)
> "Return the most specific possible gtype OBJECT belongs to.
> Return an unique list of types OBJECT belongs to, ordered from the
> most specific type to the most general."
> ;; Ignore recursive call on the same OBJECT, which can legitimately
> ;; occur when, for example, a parent type is investigating whether
> ;; an object's type is that of one of its children.
> (unless (eq object gtype--object)
> (let ((gtype--object object)
> (found (list (cl-type-of object))))
> ;; Collect all gtypes OBJECT belongs to.
> (dolist (gtype gtype--list)
> (if (cl-typep object gtype)
> (push gtype found)))
> ;; Return an unique value of type.
> (with-memoization (gethash found gtype--unique)
> found))))
Since `gtype-of` is the function used to get the "tagcode" used for
method-dispatch, it is speed-critical.
But the above looks rather costly. =F0=9F=99=81
I think we could reduce this problem significantly with reasonably
simple changes to `cl-generic`: we could provide to the TAGCODE-FUNCTION
the list of specializers used by methods of the current
generic-function, so we'd only need to check those types which are
actually useful for the current dispatch.
[ Hmm... well, maybe not completely "simple" since it might have
some problematic impact on the `cl--generic-prefill-dispatchers`
mechanism, but that should be solvable. ]
> (defun gtype--specializers (tag &rest _)
> "If TAG is a gtype, return its specializers."
> (and (consp tag) (gtype-p (car tag))
> (with-memoization (gethash tag gtype--specializers)
> (merge-ordered-lists (mapcar #'gtype-parents tag)))))
AFAIK this function is only ever called with "tagcodes" returned by your
own TAGCODE-FUNCTION, so I think the `gtype-p` test is redundant.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 14 Apr 2025 14:24:18 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 14 10:24:18 2025 Received: from localhost ([127.0.0.1]:48422 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u4KjR-0007XP-3K for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 10:24:18 -0400 Received: from smtp-17.smtpout.orange.fr ([80.12.242.17]:35409 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u4KjM-0007XC-Mt for 77725 <at> debbugs.gnu.org; Mon, 14 Apr 2025 10:24:15 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 4KjEueiXbETiN4KjIul78K; Mon, 14 Apr 2025 16:24:10 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1744640650; bh=mLP7FKcYRctCE9hMv+eccfNJDiiZUjEJ/MlqbcFAEGg=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=OK+P8KhKq8J+ul9wLZ3xzDlsJkiQvw9io0E4C5o1E+P4FVaHKIoe64fgPBhk1HeYx xRAbcjXLwYO3stf6uIDoNMoFr9TGosXIaW67yUyLcZjPabQ3OTcmdxFfw2xE15upNP eE2ooRc0t8D4XTiCgGandTO05B/W7aAX8hAbo8N+17Aw7GGrAR2pHwd60tgcBpGO9R 8ISnBQuR2J2PSejomsdijJhG2zHKfvsOUsMwhQwUO91V+wCBNrkspBc0eXpF6OXCjH DQ/8/uya/06vUYUx3I4oD+gzyQS9XPaI85uABgHiPy4lgg8jz5zCfszSdAruYVcBcx AesVosgYBUM6Q== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Mon, 14 Apr 2025 16:24:10 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------NqVnDj0IabAnTmcUIWM0h849" Message-ID: <5a16adbe-b9f3-4516-b15d-4243e7dcefdd@HIDDEN> Date: Mon, 14 Apr 2025 16:24:04 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN> <f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN> <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN> <ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN> <jwvbjt08401.fsf-monnier+emacs@HIDDEN> <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN> <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------NqVnDj0IabAnTmcUIWM0h849 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025-04-13 19:10, Stefan Monnier wrote: > > In case it can help, here's some example: > > (cl-defmethod my-foo ((x symbol)) > (message "%S is a symbol" x)) > > If I call `(my-foo nil)` it will report that nil is a symbol, even > though `(cl-type-of nil)` returns `null` rather than `symbol`. > > If I add a new method for `null`: > > (cl-defmethod my-foo ((x null)) > (message "%S is null" x) > (cl-call-next-method)) > > Now a call to `(my-foo nil)` will report both that nil is null and that > it's a symbol (in that order). > > For your `button` example, we'd similarly want that > > (cl-defmethod my-foo ((x icon)) > (message "%S is an icon" x) > (cl-call-next-method)) > > `(my-foo 'button)` reports button as both an icon and a symbol (in that > order). Now let's say we add: > > (defgtype face nil () > "Builtin face type." > '(and symbol (satisfies facep))) > > (cl-defmethod my-foo ((x face)) > (message "%S is an face" x) > (cl-call-next-method)) > > We'd want `(my-foo 'button)` now to report that button is an icon, > a face, and a symbol (and here I think it's OK if the ordering between > icon and face is arbitrary, tho they should both come before symbol). > > One way you could do that is for your `(gtype-of 'button)` to return > some new `face&icon` type and to have your SPECIALIZERS-FUNCTION return > the list `(face icon symbol)` or `(icon face symbol)` for that type. > > Does that help? Thank you very much Stefan, it helped much! J'aperçois enfin la lumière au bout du tunnel :-) I understand more how cl-generic works, and I reworked gtype.el (attached) according to your inputs and my better understanding. Now your examples above give the expected results :-) And: (gtype-of '(foo . foo)) => (cons-car-foo cons-cdr-foo cons) (gtype--specializers (gtype-of '(foo . foo))) => (cons-car-foo cons-cdr-foo cons list sequence t) --------------NqVnDj0IabAnTmcUIWM0h849 Content-Type: text/x-emacs-lisp; charset=UTF-8; name="gtype.el" Content-Disposition: attachment; filename="gtype.el" Content-Transfer-Encoding: base64 Ozs7IGd0eXBlLmVsIC0tLSBEYXRhIHR5cGVzIGZvciBnZW5lcmljIGZ1bmN0aW9ucyAtKi0g bGV4aWNhbC1iaW5kaW5nOnQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMjUgRGF2aWQgUG9u Y2UKCjs7IEF1dGhvcjogRGF2aWQgUG9uY2UgPGRhX3ZpZEBvcmFuZ2UuZnI+Cjs7IE1haW50 YWluZXI6IERhdmlkIFBvbmNlIDxkYV92aWRAb3JhbmdlLmZyPgo7OyBDcmVhdGVkOiA2IEFw cmlsIDIwMjUKOzsgS2V5d29yZHM6IGV4dGVuc2lvbnMKCjs7IFRoaXMgZmlsZSBpcyBub3Qg cGFydCBvZiBHTlUgRW1hY3MuCgo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCjs7IG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCjs7IHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZQo7OyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dAo7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCjs7IEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFs b25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KCjs7OyBDb21tZW50YXJ5Ogo7Owo7OyBUaGlzIGxpYnJhcnkgZXh0ZW5k cyBgY2wtZGVmdHlwZScgdG8gZGVmaW5lIGBndHlwZXMnLCBpLmUuIGRhdGEKOzsgdHlwZXMg ZGVmaW5lZCBieSAnY2wtZGVmdHlwZScgd2hpY2ggYXJlIGFsc28gdmFsaWQgYXJndW1lbnQg dHlwZXMKOzsgZm9yIGRpc3BhdGNoaW5nIGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcy4KOzsK OzsgVGhlIG1haW4gZW50cnkgcG9pbnRzIGFyZToKOzsKOzsgLSBgZGVmZ3R5cGUnLCBhIG1h Y3JvIHRoYXQgZGVmaW5lcyBhIGd0eXBlLgo7Owo7OyAtIGBndHlwZS1vZicsIGEgZnVuY3Rp b24gdGhhdCBsb29rdXAgdGhlIGd0eXBlIG9mIGFuIG9iamVjdC4KOzsKOzsgLSBgcmVtZ3R5 cGUnLCBhIG1hY3JvIHRoYXQgcmVtb3ZlcyBhIGd0eXBlLgo7Owo7OyBBIHRyaXZpYWwgZXhh bXBsZToKOzsKOzsgKGRlZmd0eXBlIG5lZ2F0aXZlIG5pbCAoKQo7OyAgICJBIG5lZ2F0aXZl IG51bWJlciIKOzsgICAnKGFuZCBudW1iZXIgKHNhdGlzZmllcyBtaW51c3ApKSkKOzsKOzsg KGRlZmd0eXBlIHplcm8gbmlsICgpCjs7ICAgIkEgemVybyBudW1iZXIiCjs7ICAgJyhhbmQg bnVtYmVyIChzYXRpc2ZpZXMgemVyb3ApKSkKOzsKOzsgKGRlZmd0eXBlIHBvc2l0aXZlIG5p bCAoKQo7OyAgICJBIHBvc2l0aXZlIG51bWJlciIKOzsgICAnKGFuZCBudW1iZXIgKHNhdGlz ZmllcyBwbHVzcCkpKQo7Owo7OyAoY2wtZGVmbWV0aG9kIHRlc3QtbnVtYmVyICgobiBuZWdh dGl2ZSkpCjs7ICAgKGZvcm1hdCAibmVnYXRpdmUgbnVtYmVyLCAlcyIgbikpCjs7Cjs7IChj bC1kZWZtZXRob2QgdGVzdC1udW1iZXIgKChuIHplcm8pKQo7OyAgIChmb3JtYXQgInplcm8g bnVtYmVyLCAlcyIgbikpCjs7Cjs7IChjbC1kZWZtZXRob2QgdGVzdC1udW1iZXIgKChuIHBv c2l0aXZlKSkKOzsgICAoZm9ybWF0ICJwb3NpdGl2ZSBudW1iZXIsICVzIiBuKSkKOzsKOzsg KHRlc3QtbnVtYmVyIC0xMjMuMCkKOzsgPT4gIm5lZ2F0aXZlIG51bWJlciwgLTEyMy4wIgo7 OyAodGVzdC1udW1iZXIgKGFicyAtMTIzLjApKQo7OyA9PiAicG9zaXRpdmUgbnVtYmVyLCAx MjMuMCIKOzsgKHRlc3QtbnVtYmVyIChyb3VuZCAwLjAwMDAwMDAwMDAwMSkpCjs7ID0+ICJ6 ZXJvIG51bWJlciwgMCIKOzsKOzsgUGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnM6Cjs7Cjs7 IFRoZSBjcml0aWNhbCBwb2ludCBvZiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB0 aGUgZnVuY3Rpb24KOzsgYGd0eXBlLW9mJyB3aGljaCBzZXF1ZW50aWFsbHkgdHJpZXMgYWxs IGtub3duIGd0eXBlcyB0byBjb2xsZWN0IGFsbAo7OyB0aG9zZSBhbiBvYmplY3QgYmVsb25n cyB0bywgZnJvbSB0aGUgbW9zdCBzcGVjaWZpYyB0byB0aGUgbW9zdAo7OyBnZW5lcmFsIHR5 cGUuICBUaGVyZWZvcmUsIHRoZSBtYXhpbXVtIHRpbWUgdG8gZmluZCBhbiBvYmplY3QncyB0 eXBlCjs7IGRpcmVjdGx5IGRlcGVuZHMgb24gdGhlIG51bWJlciBvZiBndHlwZXMuICBJcyB0 aGVyZSBhIGJldHRlcgo7OyBzb2x1dGlvbj8gIEFueXdheSwgYXNzdW1pbmcgdGhhdCBlYWNo IHNpbmdsZSB0ZXN0IHRvIGtub3cgd2hldGhlcgo7OyBhbiBvYmplY3QgaXMgb2YgYSBnaXZl biBndHlwZSBpcyByZWFzb25hYmx5IGZhc3QsIHRoZSBwZXJmb3JtYW5jZQo7OyBvZiB0aGlz IGltcGxlbWVudGF0aW9uIHNlZW1zIGFjY2VwdGFibGUgKGJhc2VkIG9uIHRoZSB0cml2aWFs Cjs7IGV4YW1wbGUgYWJvdmUsIGF0dGVtcHRpbmcgMSwwMDAgZ3R5cGUgY2hlY2tzIHRha2Vz IGFib3V0IGhhbGYgYQo7OyBtaWxsaXNlY29uZCBvbiBteSBzZXR1cCkuCjs7Cgo7OzsgQ29k ZToKOzsKKHJlcXVpcmUgJ2NsLWxpYikKKGV2YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdj bC1tYWNzKSkgIDtGb3IgY2wtLWZpbmQtY2xhc3MuCgooZGVmdmFyIGd0eXBlLS1saXN0IG5p bAogICJQcmVjZWRlbmNlIGxpc3Qgb2YgdGhlIGRlZmluZWQgZ3R5cGVzLiIpCihkZWZ2YXIg Z3R5cGUtLXNlcW4gMAogICJTZXF1ZW5jZSBudW1iZXIgb2YgZGVmaW5lZCBndHlwZXMuIikK CihkZWZpbmUtaW5saW5lIGd0eXBlLXAgKG9iamVjdCkKICAiUmV0dXJuIG5vbi1uaWwgaWYg dGhlIHR5cGUgb2YgT0JKRUNUIGlzIGEgZ3R5cGUuIgogIChpbmxpbmUtbGV0ZXZhbHMgKG9i amVjdCkKICAgIChpbmxpbmUtcXVvdGUKICAgICAoYW5kIChzeW1ib2xwICxvYmplY3QpCiAg ICAgICAgICAoZXEgKHR5cGUtb2YgKGNsLS1maW5kLWNsYXNzICxvYmplY3QpKSAnZ3R5cGUt Y2xhc3MpKSkpKQoKKGNsLWRlZnN0cnVjdAogICAgKGd0eXBlLWNsYXNzCiAgICAgKDppbmNs dWRlIGNsLS1jbGFzcykKICAgICAoOm5vaW5saW5lIHQpCiAgICAgKDpjb25zdHJ1Y3RvciBu aWwpCiAgICAgKDpjb25zdHJ1Y3RvciBndHlwZS0tY2xhc3MtbWFrZQogICAgICAgICAgICAg ICAgICAgKG5hbWUKICAgICAgICAgICAgICAgICAgICBkb2NzdHJpbmcKICAgICAgICAgICAg ICAgICAgICBwYXJlbnQtdHlwZXMKICAgICAgICAgICAgICAgICAgICAmYXV4IChwYXJlbnRz CiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhcgogICAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhICh0eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChv ciAoY2wtLWZpbmQtY2xhc3MgdHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVycm9yICJVbmtub3duIHR5cGU6ICVTIiB0eXBlKSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhcmVudC10eXBlcykpKSkKICAgICAoOmNvcGllciBuaWwpKQogICJUeXBl IGRlc2NyaXB0b3JzIGZvciBndHlwZXMuIikKCihkZWZpbmUtaW5saW5lIGd0eXBlLXBhcmVu dHMgKG5hbWUpCiAgIkdldCBwYXJlbnRzIG9mIHR5cGUgd2l0aCBOQU1FLgpOQU1FIGlzIGEg c3ltYm9sIHJlcHJlc2VudGluZyBhIHR5cGUuClJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxp c3Qgb2YgdHlwZXMuIgogIChpbmxpbmUtcXVvdGUKICAgKGNsLS1jbGFzcy1hbGxwYXJlbnRz IChjbC0tZmluZC1jbGFzcyAsbmFtZSkpKSkKCihkZWZ1biBndHlwZS1jaGlsZHJlbiAobmFt ZSkKICAiR2V0IGNoaWxkcmVuIG9mIHRoZSBndHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYSBz eW1ib2wgcmVwcmVzZW50aW5nIGEgZ3R5cGUuClJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxp c3Qgb2YgdHlwZXMuIgogIChjbC1jaGVjay10eXBlIG5hbWUgKHNhdGlzZmllcyBndHlwZS1w KSkKICAobGV0IChjaGlsZHJlbikKICAgIChkb2xpc3QgKGVsdCBndHlwZS0tbGlzdCkKICAg ICAgKG9yIChlcSBuYW1lIGVsdCkKICAgICAgICAgIChpZiAobWVtcSBuYW1lIChndHlwZS1w YXJlbnRzIGVsdCkpCiAgICAgICAgICAgICAgKHB1c2ggZWx0IGNoaWxkcmVuKSkpKQogICAg Y2hpbGRyZW4pKQoKKGRlZnVuIGd0eXBlLS10aWUtYnJlYWtlciAobTEgbTIpCiAgIlJldHVy biB0aGUgbGVzcyBzcGVjaWZpYyBvZiB0d28gbWluLWVsZW1lbnRzIE0xIGFuZCBNMi4KVGhh dCBpcywgdGhlIG1pbi1lbGVtZW50IGZpcnN0IHB1c2hlZCBpbiB0aGUgZ3R5cGUgcHJlY2Vk ZW5jZSBsaXN0LApvcmRlcmVkIGZyb20gbW9zdCB0byBsZXNzIHNwZWNpZmljIHR5cGVzLgpJ ZiBNMSBhbmQgTTIgaG9sZCBndHlwZXMsIHByZWZlciB0aGUgb25lIHdpdGggdGhlIGZpcnN0 IGRlZmluZWQgZ3R5cGUuCk90aGVyd2lzZSwgcHJlZmVyIE0xLCB0aGUgZmlyc3QgbWluLWVs ZW1lbnQgZm91bmQgaW4gdGhlIERBRy4iCiAgKGlmLWxldCogKChpMSAoZ2V0IChjYXIgbTEp ICdndHlwZS0tc2VxbikpCiAgICAgICAgICAgIChpMiAoZ2V0IChjYXIgbTIpICdndHlwZS0t c2VxbikpKQogICAgICAoaWYgKDwgaTEgaTIpIG0xIG0yKQogICAgbTEpKQoKKGRlZnVuIGd0 eXBlLS10b3BvbG9naWMtc29ydCAoZ3JhcGggJm9wdGlvbmFsIHRpZS1icmVha2VyKQogICJS ZXR1cm4gdGhlIHRvcG9sb2dpY2FsbHkgc29ydGVkIGVsZW1lbnRzIG9mIEdSQVBILgpHUkFQ SCBtdXN0IGJlIGEgdmFsaWQgZGlyZWN0ZWQgYWN5Y2xpYyBncmFwaCAoREFHKSBhcyBhIGxp c3Qgb2YKZWxlbWVudHMgKFZpIFtWaiBWay4uLlZuXSkgd2hpY2ggbWVhbnMgdGhhdCBWaSBk ZXBlbmRzIHVwb24gVmosIFZqCnVwb24gVmssIGV0Yy4sIG9yIGRlcGVuZHMgdXBvbiBub3Ro aW5nLiAgU2lnbmFsIGFuIGVycm9yIG90aGVyd2lzZS4KRWxlbWVudHMgYXJlIGNvbXBhcmVk IHVzaW5nIGBlcScuCgpJZiBub24tbmlsLCBUSUUtQlJFQUtFUiBtdXN0IGJlIGEgZnVuY3Rp b24gdGhhdCByZWNlaXZlcyB0aGUKcHJldmlvdXNseSBhbmQgbGFzdCBmb3VuZCBtaW4tZWxl bWVudHMoKiksIGFuZCBtdXN0IHJldHVybiBvbmUgb2YKdGhlbS4gIElmIFRJRS1CUkVBS0VS IGlzIG5pbCBvciBvbWl0dGVkLCBwcmVmZXIgdGhlIGZpcnN0IG1pbi1lbGVtZW50CmZvdW5k LCBpLmUuIHRoZSBvbmUgdGhhdCBhcHBlYXJzIGZpcnN0IGluIHRoZSBuYXR1cmFsIG9yZGVy IG9mIHRoZQpEQUcuCgpbKl0gQSBtaW4tZWxlbWVudCBpcyBhbiBlbGVtZW50IHdpdGggbm8g c3VjY2Vzc29yLCBsaWtlIChEKS4KClNvbWUgZXhhbXBsZXM6CgogIChndHlwZS0tdG9wb2xv Z2ljLXNvcnQgXFw9JygoQSBCIEMpIChCIEQpIChDIEQpIChEKSkpCiAgPT4gKEEgQiBDIEQp CgogIChndHlwZS0tdG9wb2xvZ2ljLXNvcnQgXFw9JygoQSBCIEMpIChCIEQpIChDIEQpIChE KSkKICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKF9wcmV2IGxhc3QpIGxhc3Qp KQogID0+IChBIEMgQiBEKQoKICAoZ3R5cGUtLXRvcG9sb2dpYy1zb3J0IFxcPScoKEEgQiBD KSAoQiBEKSAoRCBCKSAoRCkpKQogID0+IGVycm9yIgogIChkZWNsYXJlIChzaWRlLWVmZmVj dC1mcmVlIHQpKQogIChjbC1sYWJlbHMgKChyZW1xLW1pbmltYWwgKG0gZykKICAgICAgICAg ICAgICAgIDs7IFJlbW92ZSBtaW4tZWxlbWVudCBNIGZyb20gRy4KICAgICAgICAgICAgICAg IChsZXQgKChtZSAoY2FyIG0pKSByZXN1bHQpCiAgICAgICAgICAgICAgICAgIChkb2xpc3Qg KGUgKGRlbHEgbSBnKSkKICAgICAgICAgICAgICAgICAgICAocHVzaCAoY29ucyAoY2FyIGUp IChyZW1xIG1lIChjZHIgZSkpKSByZXN1bHQpKQogICAgICAgICAgICAgICAgICByZXN1bHQp KQogICAgICAgICAgICAgIChuZXh0LW1pbmltYWwgKGcpCiAgICAgICAgICAgICAgICA7OyBS ZXR1cm4gdGhlIG5leHQgbWluLWVsZW1lbnQgZm91bmQgaW4gRy4KICAgICAgICAgICAgICAg IChsZXQgKG0pCiAgICAgICAgICAgICAgICAgIChkb2xpc3QgKGUgZykKICAgICAgICAgICAg ICAgICAgICAob3IgKGNkciBlKQogICAgICAgICAgICAgICAgICAgICAgICA7OyBXaGVuIHRo ZXJlIGFyZSB0d28gbWluLWVsZW1lbnRzLCBjYWxsIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICA7OyBUSUUtQlJFQUtFUiB0byBkZWNpZGUgd2hpY2ggb25lIGlzIG1vcmUKICAgICAg ICAgICAgICAgICAgICAgICAgOzsgc3BlY2lmaWMuCiAgICAgICAgICAgICAgICAgICAgICAg IChzZXRxIG0gKGlmIG0gKGZ1bmNhbGwgdGllLWJyZWFrZXIgbSBlKSBlKSkpKQogICAgICAg ICAgICAgICAgICBtKSkpCiAgICAob3IgdGllLWJyZWFrZXIgKHNldHEgdGllLWJyZWFrZXIg KGxhbWJkYSAocHJldiBfbmV4dCkgcHJldikpKQogICAgKGxldCAoKGcgKGNvcHktc2VxdWVu Y2UgZ3JhcGgpKSB0cykKICAgICAgKHdoaWxlICh3aGVuLWxldCogKChtIChuZXh0LW1pbmlt YWwgZykpKQogICAgICAgICAgICAgICAoc2V0cSBnIChyZW1xLW1pbmltYWwgbSBnKSkKICAg ICAgICAgICAgICAgKHB1c2ggKGNhciBtKSB0cykpKQogICAgICAoY2wtYXNzZXJ0IChlcWwg KGxlbmd0aCBncmFwaCkgKGxlbmd0aCB0cykpIG5pbAogICAgICAgICAgICAgICAgICJJbnZh bGlkIGdyYXBoLCAlUyIgdHMpCiAgICAgIHRzKSkpCgooZGVmdW4gZ3R5cGUtLWRhZyAoKQog ICJSZXR1cm4gYSBEQUcgZnJvbSB0aGUgbGlzdCBvZiBkZWZpbmVkIGd0eXBlcy4iCiAgKGNs LWxhYmVscyAoKGFsbHBhcmVudHMgKGNsYXNzKQogICAgICAgICAgICAgICAgKGxldCAoKHR5 cGUgKGNsLS1jbGFzcy1uYW1lIGNsYXNzKSkpCiAgICAgICAgICAgICAgICAgIDs7IEV4Y2x1 ZGUgbm9uLWd0eXBlcyBmcm9tIHRoZSBEQUcuICBgZ3R5cGUtb2YnCiAgICAgICAgICAgICAg ICAgIDs7IGRvZXNuJ3QgY2hlY2sgbm9uLWd0eXBlcyBhdCBydW4gdGltZSwgdGhleSBhcmUK ICAgICAgICAgICAgICAgICAgOzsgaGFuZGxlZCBieSB0aGUgInR5cGUtb2YiIGdlbmVyYWxp emVyLgogICAgICAgICAgICAgICAgICAoaWYgKGd0eXBlLXAgdHlwZSkKICAgICAgICAgICAg ICAgICAgICAgIChjb25zIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXJn ZS1vcmRlcmVkLWxpc3RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAj J2FsbHBhcmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC0t Y2xhc3MtcGFyZW50cyBjbGFzcykpKSkpKSkpCiAgICAobWFwY2FyIChsYW1iZGEgKGd0eXBl KSAoYWxscGFyZW50cyAoY2wtLWZpbmQtY2xhc3MgZ3R5cGUpKSkKICAgICAgICAgICAgZ3R5 cGUtLWxpc3QpKSkKCihkZWZ1biBndHlwZS0tcmVnaXN0ZXIgKG5hbWUgJm9wdGlvbmFsIHBh cmVudHMgYXJncykKICAiUmVnaXN0ZXIgYSBndHlwZSB3aXRoIE5BTUUgYW5kIFBBUkVOVFMu CkFSR1MgYXJlIHRob3NlIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gYGNsLWRlZnR5cGUnLiIK ICA7OyBBdCB0aGlzIHBvaW50IE5BTUUgbXVzdCBiZSBhIGRlZmluZWQgdHlwZS4KICAoY2wt YXNzZXJ0IChnZXQgbmFtZSAnY2wtZGVmdHlwZS1oYW5kbGVyKSBuaWwKICAgICAgICAgICAg ICJVbmtub3duIHR5cGUgJVMiIG5hbWUpCiAgKGxldCAoKGNsYXNzIChjbC0tZmluZC1jbGFz cyBuYW1lKSkKICAgICAgICAocmVnZWQgKG1lbXEgbmFtZSBndHlwZS0tbGlzdCkpKQogICAg KGlmIChudWxsIGNsYXNzKQogICAgICAgIChjbC1hc3NlcnQgKG51bGwgcmVnZWQpIG5pbCAi RXhpc3RpbmcgdHlwZSBub3QgcmVnaXN0ZXJlZCIpCiAgICAgIChjbC1hc3NlcnQgcmVnZWQg bmlsICJOZXcgdHlwZSBhbHJlYWR5IHJlZ2lzdGVyZWQiKQogICAgICAoY2wtYXNzZXJ0IChl cSAodHlwZS1vZiBjbGFzcykgJ2d0eXBlLWNsYXNzKSBuaWwKICAgICAgICAgICAgICAgICAi VHlwZSBpcyBpbiBhbm90aGVyIGNsYXNzOiAlUyIgKHR5cGUtb2YgY2xhc3MpKSkKICAgIChv ciAobGlzdHAgcGFyZW50cykgKHNldHEgcGFyZW50cyAobGlzdCBwYXJlbnRzKSkpCiAgICAo Y2wtYXNzZXJ0IChudWxsIChtZW1xIG5hbWUgcGFyZW50cykpIG5pbAogICAgICAgICAgICAg ICAiVHlwZSBpcyBpbiBwYXJlbnRzOiAlUyIgcGFyZW50cykKICAgIDs7IFNldHVwIGEgdHlw ZSBkZXNjcmlwdG9yIGZvciBOQU1FLCB3aXRoIFBBUkVOVFMgYW5kIHRoZQogICAgOzsgZG9j c3RyaW5nIHBvc3NpYmx5IHByZXNlbnQgaW4gQVJHUy4KICAgIChsZXQgKChkb2NzdHJpbmcg KGNhYXIgKG1hY3JvZXhwLXBhcnNlLWJvZHkgKGNkciBhcmdzKSkpKSkKICAgICAgKG9yIChz dHJpbmdwIGRvY3N0cmluZykgKHNldHEgZG9jc3RyaW5nIG5pbCkpCiAgICAgIChzZXRmIChj bC0tZmluZC1jbGFzcyBuYW1lKQogICAgICAgICAgICAoZ3R5cGUtLWNsYXNzLW1ha2UgbmFt ZSBkb2NzdHJpbmcgcGFyZW50cykpKQogICAgKGlmIGNsYXNzCiAgICAgICAgOzsgQ2xlYXIg Y2FjaGVkIHZhbHVlIG9mIHNwZWNpYWxpemVycyB3aXRoIE5BTUUuCiAgICAgICAgKGd0eXBl LS1yZXNldC1zcGVjaWFsaXplcnMgbmFtZSkKICAgICAgOzsgUmVjb3JkIHRoZSBuZXcgdHlw ZS4KICAgICAgKHB1c2ggbmFtZSBndHlwZS0tbGlzdCkKICAgICAgOzsgQW5kIGl0cyBzZXF1 ZW5jZSBudW1iZXIuCiAgICAgIChwdXQgbmFtZSAnZ3R5cGUtLXNlcW4gKHByb2cxIGd0eXBl LS1zZXFuIChpbmNmIGd0eXBlLS1zZXFuKSkpKQogICAgOzsgVG8gZmluZCB0aGUgbW9zdCBw b3NzaWJsZSBzcGVjaWZpYyBndHlwZSBvZiBhbiBvYmplY3QsIG1vc3QKICAgIDs7IHNwZWNp ZmljIHR5cGVzIG11c3QgYmUgdHJpZWQgYmVmb3JlIG1vcmUgZ2VuZXJhbCB0eXBlcy4KICAg IDs7IENvbXB1dGUgdGhlIGd0eXBlIHByZWNlZGVuY2UgbGlzdCBieSBhIHRvcG9sb2dpYyBz b3J0IG9mIHRoZQogICAgOzsgZ3R5cGVzIGRlcGVuZGVuY2llcyBEQUcuCiAgICAoc2V0cSBn dHlwZS0tbGlzdCAoZ3R5cGUtLXRvcG9sb2dpYy1zb3J0CiAgICAgICAgICAgICAgICAgICAg ICAgKGd0eXBlLS1kYWcpICMnZ3R5cGUtLXRpZS1icmVha2VyKSkKICAgIG5hbWUpKQoKKGRl ZnVuIGd0eXBlLS11bnJlZ2lzdGVyIChuYW1lKQogICJVbnJlZ2lzdGVyIHRoZSBndHlwZSB3 aXRoIE5BTUUuIgogIChjbC1hc3NlcnQgKG51bGwgKGd0eXBlLWNoaWxkcmVuIG5hbWUpKSB0 ICJUeXBlIGhhcyBjaGlsZHJlbjogJVMiKQogIDs7IENsZWFyIGNhY2hlZCB2YWx1ZSBvZiBz cGVjaWFsaXplcnMgd2l0aCBOQU1FLgogIChndHlwZS0tcmVzZXQtc3BlY2lhbGl6ZXJzIG5h bWUpCiAgKGNsLXJlbXByb3AgbmFtZSAnZ3R5cGUtLXNlcW4pCiAgKGNsLXJlbXByb3AgbmFt ZSAnY2wtLWNsYXNzKQogIChjbC1yZW1wcm9wIG5hbWUgJ2NsLWRlZnR5cGUtaGFuZGxlcikK ICAoc2V0cSBndHlwZS0tbGlzdCAoZGVscSBuYW1lIGd0eXBlLS1saXN0KSkKICBuaWwpCgo7 OzsjIyNhdXRvbG9hZAooZGVmbWFjcm8gZGVmZ3R5cGUgKG5hbWUgJm9wdGlvbmFsIHBhcmVu dHMgJnJlc3QgYXJncykKICAiRGVmaW5lIE5BTUUgYXMgYSBndHlwZSB0aGF0IGluaGVyaXRz IGZyb20gUEFSRU5UUy4KSWYgYSBndHlwZSB3aXRoIE5BTUUgYWxyZWFkeSBleGlzdHMsIHJl cGxhY2UgaXQuCgpOQU1FIGlzIGFuIHVucXVvdGVkIHN5bWJvbCByZXByZXNlbnRpbmcgYSBn dHlwZS4KCk9wdGlvbmFsIGFyZ3VtZW50IFBBUkVOVFMgaXMgZWl0aGVyIGFuIHVucXVvdGVk IHN5bWJvbCBvciBsaXN0IG9mCnN5bWJvbHMgb3RoZXIgdGhhbiBOQU1FIHJlcHJlc2VudGlu ZyB0eXBlcyBwYXJlbnRzIG9mIE5BTUUuClBBUkVOVFMgbmlsIG9yIG9taXR0ZWQgbWVhbnMg dGhhdCBOQU1FIGlzIGEgcm9vdCB0eXBlLgoKQWxzbyBwYXNzIE5BTUUgYW5kIEFSR1MgdG8g YGNsLWRlZnR5cGUnIHRvIGRlZmluZSBOQU1FIGFzIGEgbmV3IGRhdGEKdHlwZS4iCiAgKGRl Y2xhcmUgKGRlYnVnIGNsLWRlZm1hY3JvKSAoZG9jLXN0cmluZyA0KSAoaW5kZW50IDMpKQog IChjbC13aXRoLWdlbnN5bXMgKGVycikKICAgIGAoY29uZGl0aW9uLWNhc2UgLGVycgogICAg ICAgICAocHJvZ24KICAgICAgICAgICAoY2wtZGVmdHlwZSAsbmFtZSAsQGFyZ3MpCiAgICAg ICAgICAgKGd0eXBlLS1yZWdpc3RlciAnLG5hbWUgJyxwYXJlbnRzICcsYXJncykpCiAgICAg ICAoZXJyb3IKICAgICAgICAoZ3R5cGUtLXVucmVnaXN0ZXIgJyxuYW1lKQogICAgICAgIChl cnJvciAoZXJyb3ItbWVzc2FnZS1zdHJpbmcgLGVycikpKSkpKQoKKGRlZm1hY3JvIHJlbWd0 eXBlIChuYW1lKQogICJSZW1vdmUgdGhlIGd0eXBlIHdpdGggTkFNRS4KTkFNRSBpcyBhbiB1 bnF1b3RlZCBzeW1ib2wgcmVwcmVzZW50aW5nIGEgZ3R5cGUuClNpZ25hbCBhbiBlcnJvciBp ZiBvdGhlciBndHlwZXMgaW5oZXJpdCBmcm9tIE5BTUUuIgogIGAocHJvZ24KICAgICAoY2wt Y2hlY2stdHlwZSAnLG5hbWUgKHNhdGlzZmllcyBndHlwZS1wKSkKICAgICAoZ3R5cGUtLXVu cmVnaXN0ZXIgJyxuYW1lKSkpCgo7OyBJbnRlcm5hbCBkYXRhIHVzZWQgdG8gZGV0ZWN0IGVu ZGxlc3MgcmVjdXJzaW9uIGluICdndHlwZS1vZicuCihkZWZ2YXIgZ3R5cGUtLW9iamVjdCAo bWFrZS1zeW1ib2wgInZvaWQiKSkKOzsgRWFjaCBndHlwZSBtdXN0IHNhdGlzZmllcyBgZXFs Jy4KKGRlZnZhciBndHlwZS0tdW5pcXVlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFs KQogICJSZWNvcmQgYW4gdW5pcXVlIHZhbHVlIGZvciBlYWNoIGd0eXBlLiIpCgooZGVmdW4g Z3R5cGUtb2YgKG9iamVjdCkKICAiUmV0dXJuIHRoZSBtb3N0IHNwZWNpZmljIHBvc3NpYmxl IGd0eXBlIE9CSkVDVCBiZWxvbmdzIHRvLgpSZXR1cm4gYW4gdW5pcXVlIGxpc3Qgb2YgdHlw ZXMgT0JKRUNUIGJlbG9uZ3MgdG8sIG9yZGVyZWQgZnJvbSB0aGUKbW9zdCBzcGVjaWZpYyB0 eXBlIHRvIHRoZSBtb3N0IGdlbmVyYWwuIgogIDs7IElnbm9yZSByZWN1cnNpdmUgY2FsbCBv biB0aGUgc2FtZSBPQkpFQ1QsIHdoaWNoIGNhbiBsZWdpdGltYXRlbHkKICA7OyBvY2N1ciB3 aGVuLCBmb3IgZXhhbXBsZSwgYSBwYXJlbnQgdHlwZSBpcyBpbnZlc3RpZ2F0aW5nIHdoZXRo ZXIKICA7OyBhbiBvYmplY3QncyB0eXBlIGlzIHRoYXQgb2Ygb25lIG9mIGl0cyBjaGlsZHJl bi4KICAodW5sZXNzIChlcSBvYmplY3QgZ3R5cGUtLW9iamVjdCkKICAgIChsZXQgKChndHlw ZS0tb2JqZWN0IG9iamVjdCkKICAgICAgICAgIChmb3VuZCAobGlzdCAoY2wtdHlwZS1vZiBv YmplY3QpKSkpCiAgICAgIDs7IENvbGxlY3QgYWxsIGd0eXBlcyBPQkpFQ1QgYmVsb25ncyB0 by4KICAgICAgKGRvbGlzdCAoZ3R5cGUgZ3R5cGUtLWxpc3QpCiAgICAgICAgKGlmIChjbC10 eXBlcCBvYmplY3QgZ3R5cGUpCiAgICAgICAgICAgIChwdXNoIGd0eXBlIGZvdW5kKSkpCiAg ICAgIDs7IFJldHVybiBhbiB1bmlxdWUgdmFsdWUgb2YgdHlwZS4KICAgICAgKHdpdGgtbWVt b2l6YXRpb24gKGdldGhhc2ggZm91bmQgZ3R5cGUtLXVuaXF1ZSkKICAgICAgICBmb3VuZCkp KSkKCjs7OyBNZXRob2QgZGlzcGF0Y2hpbmcKOzsKKGRlZnZhciBndHlwZS0tc3BlY2lhbGl6 ZXJzIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxKQogICJNZW1vaXplIGd0eXBlIHNwZWNp YWxpemVycy4KVGhpcyBjYWNoZSBpcyBjbGVhcmVkIGJ5IGBndHlwZS0tcmVnaXN0ZXInIGFu ZCBgZ3R5cGUtLXVucmVnaXN0ZXInLiIpCgooZGVmdW4gZ3R5cGUtLXJlc2V0LXNwZWNpYWxp emVycyAobmFtZSkKICAiUmVtb3ZlIGFsbCBjYWNoZWQgdmFsdWUgb2Ygc3BlY2lhbGl6ZXJz IHdpdGggTkFNRS4iCiAgKG1hcGhhc2ggKGxhbWJkYSAoa2V5IF8pCiAgICAgICAgICAgICAo aWYgKG1lbXEgbmFtZSBrZXkpCiAgICAgICAgICAgICAgICAgKHJlbWhhc2gga2V5IGd0eXBl LS1zcGVjaWFsaXplcnMpKSkKICAgICAgICAgICBndHlwZS0tc3BlY2lhbGl6ZXJzKSkKCihk ZWZ1biBndHlwZS0tc3BlY2lhbGl6ZXJzICh0YWcgJnJlc3QgXykKICAiSWYgVEFHIGlzIGEg Z3R5cGUsIHJldHVybiBpdHMgc3BlY2lhbGl6ZXJzLiIKICAoYW5kIChjb25zcCB0YWcpIChn dHlwZS1wIChjYXIgdGFnKSkKICAgICAgICh3aXRoLW1lbW9pemF0aW9uIChnZXRoYXNoIHRh ZyBndHlwZS0tc3BlY2lhbGl6ZXJzKQogICAgICAgICAobWVyZ2Utb3JkZXJlZC1saXN0cyAo bWFwY2FyICMnZ3R5cGUtcGFyZW50cyB0YWcpKSkpKQoKKGNsLWdlbmVyaWMtZGVmaW5lLWdl bmVyYWxpemVyIGd0eXBlLS1nZW5lcmFsaXplcgogIDIwIDs7ICJ0eXBlb2YiIHByaW9yaXR5 IDwgImd0eXBlLW9mIiBwcmlvcml0eSA8ICJoZWFkIiBwcmlvcml0eQogIChsYW1iZGEgKG9i aiAmcmVzdCBfKSBgKGd0eXBlLW9mICxvYmopKQogICMnZ3R5cGUtLXNwZWNpYWxpemVycykK CihjbC1kZWZtZXRob2QgY2wtZ2VuZXJpYy1nZW5lcmFsaXplcnMgOmV4dHJhICJndHlwZS1v ZiIgKHR5cGUpCiAgIlN1cHBvcnQgZm9yIGRpc3BhdGNoIG9uIGd0eXBlcy4iCiAgKGlmIChn dHlwZS1wIHR5cGUpCiAgICAgIChsaXN0IGd0eXBlLS1nZW5lcmFsaXplcikKICAgIChjbC1j YWxsLW5leHQtbWV0aG9kKSkpCgoocHJvdmlkZSAnZ3R5cGUpCgo7OzsgZ3R5cGUuZWwgZW5k cyBoZXJlCg== --------------NqVnDj0IabAnTmcUIWM0h849--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 13 Apr 2025 17:10:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 13 13:10:49 2025
Received: from localhost ([127.0.0.1]:43679 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u40r2-0007YF-RW
for submit <at> debbugs.gnu.org; Sun, 13 Apr 2025 13:10:49 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:46662)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u40r0-0007Xv-6F
for 77725 <at> debbugs.gnu.org; Sun, 13 Apr 2025 13:10:47 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 1A51D10006B;
Sun, 13 Apr 2025 13:10:40 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744564239;
bh=aSSofOLOc4E1pgkVpmkiD8zSUSZdSkVVYtiRn8TEpQM=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=bbI/7bNiMQto7q4mC/Tcz3UjDB8nhzdCzhJvGLDws9C70D1F+R0TnqWJ+AKcEgjoo
es98qd5Zb1lXk2jeJh7dmsO0Bu8B+9jUAGHgAwy7K6zKYHLkbJMjdP8ICtfx4M41Bx
R37wiQYhprFOpID811gCDTyXwSId4JKpPlo+GAepKWyt4IwYQsMRgES26U0UEfniNm
emnFa8DBrvVJwkGXp8EN4qxrm0aKl/qxiYDMhEoXaNRb2D0NhnhsP1fEnywMexlSrC
JGN3YDUxFmibhzzHk9/o9u587SJDSuNHhQTWlrr9NC9OQhqdxzfzbIbPe3IFMkNkHr
A62GOn9gktaBA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 23B88100029;
Sun, 13 Apr 2025 13:10:39 -0400 (EDT)
Received: from pastel (unknown [104.247.242.5])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id EA45512075A;
Sun, 13 Apr 2025 13:10:38 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
Message-ID: <jwvzfgk6lzz.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
<jwvbjt08401.fsf-monnier+emacs@HIDDEN>
<4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN>
Date: Sun, 13 Apr 2025 13:10:38 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.385 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Thank you again for your very valuable input.
> I am afraid, this discussion just confirms that I don't understand well
> enough how cl-generic works, and how it can be improved the correct way :-(
In case it can help, here's some example:
(cl-defmethod my-foo ((x symbol))
(message "%S is a symbol" x))
If I call `(my-foo nil)` it will report that nil is a symbol, even
though `(cl-type-of nil)` returns `null` rather than `symbol`.
If I add a new method for `null`:
(cl-defmethod my-foo ((x null))
(message "%S is null" x)
(cl-call-next-method))
Now a call to `(my-foo nil)` will report both that nil is null and that
it's a symbol (in that order).
For your `button` example, we'd similarly want that
(cl-defmethod my-foo ((x icon))
(message "%S is an icon" x)
(cl-call-next-method))
`(my-foo 'button)` reports button as both an icon and a symbol (in that
order). Now let's say we add:
(defgtype face nil ()
"Builtin face type."
'(and symbol (satisfies facep)))
(cl-defmethod my-foo ((x face))
(message "%S is an face" x)
(cl-call-next-method))
We'd want `(my-foo 'button)` now to report that button is an icon,
a face, and a symbol (and here I think it's OK if the ordering between
icon and face is arbitrary, tho they should both come before symbol).
One way you could do that is for your `(gtype-of 'button)` to return
some new `face&icon` type and to have your SPECIALIZERS-FUNCTION return
the list `(face icon symbol)` or `(icon face symbol)` for that type.
Does that help?
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 13 Apr 2025 16:28:57 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 13 12:28:57 2025 Received: from localhost ([127.0.0.1]:43577 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u40CW-0005Ly-RL for submit <at> debbugs.gnu.org; Sun, 13 Apr 2025 12:28:57 -0400 Received: from smtp-78.smtpout.orange.fr ([80.12.242.78]:50109 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u40CS-0005Lk-Bs for 77725 <at> debbugs.gnu.org; Sun, 13 Apr 2025 12:28:54 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 40CKu1K2mNyiG40COuEQKp; Sun, 13 Apr 2025 18:28:50 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1744561730; bh=EEuEGaz0rOBE8XITCKzgxRq/cR6SLVqlrjOsgICsbnk=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=ofXnfJoRf3FQ03nNxKJqVKE55DFwjeKVmzf7zbV3eftiiXZBovIhJTePZriE1AM5H zrIomncj2JFCJJ2fjLmOK5S1YEdkJ7fSjE1A6s3vwZ3Y6Di80ELhi5V2QVHD+DMzGi GsnnRc/ccXDiZKMbCM2QOBHG6WRlFbeBMB2FQUYFKnaO+9wbyuiUCfXFIXFafGrCwT ztdiF3lrco6TuKtWSzTfYbtdMJCfRqUyUpIdNcy7TNANBOG4EnoS1lAkcZqrHIfwLh HTKay/oWTmbrILD3bmsUJTryNtyvBAV4Yi8HaASrBZAyMQQHqRFYT69/aJDvtYUgPr C4A0S/0ABsMyw== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sun, 13 Apr 2025 18:28:50 +0200 X-ME-IP: 90.112.40.65 Message-ID: <4931d938-18b7-412c-8f9a-3856ceb98a6a@HIDDEN> Date: Sun, 13 Apr 2025 18:28:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN> <f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN> <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN> <ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN> <jwvbjt08401.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvbjt08401.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-13 17:53, Stefan Monnier wrote: >> For instance, if you define an icon type like this: >> >> (defgtype icon nil () >> "Builtin icon type." >> '(and symbol (satisfies iconp))) >> >> (gtype-of 'button) >> => icon >> (cl-type-of 'button) >> => symbol >> >> So you cannot have two methods with the same name, one to handle the >> symbol type, and one to handle the icon type. I agree, it is a >> limitation. Is this your point? > > Kind of. Note: you can. It's just that with your current code I expect > it will misbehave (rather than signal an error). > > BTW, for the above case, your code could recognize that `icon` is > a subtype of `symbol` and tell that to cl-generic. > >> I wonder if in practice it is really inconvenient, and worth the >> trouble of complicate more the implementation? > > I don't think I understand what compilations you're talking about, nor > what kind of inconvenience you're referring to. > >> Isn't it clearer to use different methods for icons and symbols? >> Aren't these types fundamentally different, and isn't the fact that an >> icon is a symbol just an implementation choice? > > The question is not whether it's desirable, but whether we can provide > an implementation that works without too many quirks. 🙂 > >>> BTW if you do >>> (defgtype cons-car-foo nil () >>> "A cons with a `foo' car." >>> `(satisfies ,(lambda (x) (eq (car-safe x) 'foo)))) >>> (defgtype cons-cdr-foo nil () >>> "A cons with a `foo' cdr." >>> `(satisfies ,(lambda (x) (eq (cdr-safe x) 'foo)))) >>> what's the `(gtype-of '(foo . foo))` ? >> >> Regarding this point, perhaps it would be possible to use an heuristic >> like: "in case of conflict, the last defined type is chosen as the >> most specific"? > > I'm pretty sure some of your users will still be confused when their > methods are not used, just because some other part of their `cons` cells > happens to have a value recognized by an unrelated type. > > And of course, they'd probably also be confused if the method that > handles `cons` is not used for those cons-cells. > >>> Yeah, it's unsatisfactorily intricate, indeed. It's designed first and >>> foremost to keep the dispatch "simple and reasonable fast", at the cost >>> of making `cl-generic-define-generalizer` a very sharp tool. 🙂 >>> I have recently been thinking about how to make it more reliable (which >>> would also make it more flexible/powerful, allowing the definition of >>> both `and` and `or` specializers). I have some vague idea, but there's >>> no code at all yet, and it might come with some non-trivial tradeoffs >>> (e.g. preloading the byte-compiler). >> I can't wait to see this :-) > > I know I wrote "yet", but I have a very long list of "ideas I've had": > most of those will never become concrete. > > > Stefan > Hi Stefan Thank you again for your very valuable input. I am afraid, this discussion just confirms that I don't understand well enough how cl-generic works, and how it can be improved the correct way :-( Have a nice Sunday. David
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 13 Apr 2025 15:53:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 13 11:53:59 2025
Received: from localhost ([127.0.0.1]:43508 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u3zeh-0003cO-85
for submit <at> debbugs.gnu.org; Sun, 13 Apr 2025 11:53:59 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:47123)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u3zed-0003c2-TM
for 77725 <at> debbugs.gnu.org; Sun, 13 Apr 2025 11:53:57 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id E772B10006B;
Sun, 13 Apr 2025 11:53:47 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744559622;
bh=YnfLEHgg4HqepaDf4ytmvLQFstc5Y2L9H/2wnqWuIYg=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=II37cUntVP3reGSxAIP8eATYSo0juOsVyxKsUy5GiICI4toB1PxS6kqu4kk7BoXBB
Fo+gFclTqoDQyugKepX4BMPReanOan7ZgJIbew/ZbG/d66sB9dm1/l/ty616OcKAM7
iQNCMhRtOBJ70iyXDwMbxzKEsAIBKplCDrdFxrezxvsw3NVAGWPHCJbf/z7JQ4OXtQ
3ykegZcx5gGLz4XZ3wNIl8v1iGq07dsN6YpnLDNcar+gnAcJnBbsjfA0+U0MkmZZ7Q
30zzANj1CCHXRV07HPB0FzLaDEbFsMmU6v7ci6ZNJEArbP5l23dtlI2G+URKYu4VnK
ExTXURwEAzlYA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id B522E100029;
Sun, 13 Apr 2025 11:53:42 -0400 (EDT)
Received: from pastel (unknown [104.247.242.5])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 74867120755;
Sun, 13 Apr 2025 11:53:42 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
Message-ID: <jwvbjt08401.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
<jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
<ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN>
Date: Sun, 13 Apr 2025 11:53:40 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.386 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> For instance, if you define an icon type like this:
>
> (defgtype icon nil ()
> "Builtin icon type."
> '(and symbol (satisfies iconp)))
>
> (gtype-of 'button)
> =3D> icon
> (cl-type-of 'button)
> =3D> symbol
>
> So you cannot have two methods with the same name, one to handle the
> symbol type, and one to handle the icon type. I agree, it is a
> limitation. Is this your point?
Kind of. Note: you can. It's just that with your current code I expect
it will misbehave (rather than signal an error).
BTW, for the above case, your code could recognize that `icon` is
a subtype of `symbol` and tell that to cl-generic.
> I wonder if in practice it is really inconvenient, and worth the
> trouble of complicate more the implementation?
I don't think I understand what compilations you're talking about, nor
what kind of inconvenience you're referring to.
> Isn't it clearer to use different methods for icons and symbols?
> Aren't these types fundamentally different, and isn't the fact that an
> icon is a symbol just an implementation choice?
The question is not whether it's desirable, but whether we can provide
an implementation that works without too many quirks. =F0=9F=99=82
>> BTW if you do
>> (defgtype cons-car-foo nil ()
>> "A cons with a `foo' car."
>> `(satisfies ,(lambda (x) (eq (car-safe x) 'foo))))
>> (defgtype cons-cdr-foo nil ()
>> "A cons with a `foo' cdr."
>> `(satisfies ,(lambda (x) (eq (cdr-safe x) 'foo))))
>> what's the `(gtype-of '(foo . foo))` ?
>
> Regarding this point, perhaps it would be possible to use an heuristic
> like: "in case of conflict, the last defined type is chosen as the
> most specific"?
I'm pretty sure some of your users will still be confused when their
methods are not used, just because some other part of their `cons` cells
happens to have a value recognized by an unrelated type.
And of course, they'd probably also be confused if the method that
handles `cons` is not used for those cons-cells.
>> Yeah, it's unsatisfactorily intricate, indeed. It's designed first and
>> foremost to keep the dispatch "simple and reasonable fast", at the cost
>> of making `cl-generic-define-generalizer` a very sharp tool. =F0=9F=99=
=82
>> I have recently been thinking about how to make it more reliable (which
>> would also make it more flexible/powerful, allowing the definition of
>> both `and` and `or` specializers). I have some vague idea, but there's
>> no code at all yet, and it might come with some non-trivial tradeoffs
>> (e.g. preloading the byte-compiler).
> I can't wait to see this :-)
I know I wrote "yet", but I have a very long list of "ideas I've had":
most of those will never become concrete.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 13 Apr 2025 14:46:29 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 13 10:46:29 2025 Received: from localhost ([127.0.0.1]:43332 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u3ybM-0000Hl-CQ for submit <at> debbugs.gnu.org; Sun, 13 Apr 2025 10:46:29 -0400 Received: from smtp-24.smtpout.orange.fr ([80.12.242.24]:44683 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u3ybH-0000HX-Pi for 77725 <at> debbugs.gnu.org; Sun, 13 Apr 2025 10:46:26 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 3ya2uKxz6RaJG3ya5uQlEl; Sun, 13 Apr 2025 16:45:11 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1744555511; bh=qpk8zId1r1RTtMKitxDoBxUozhQqWAkBI5QVPGt3DsU=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=la3GsbS8HQi0mon4L4hbTrUVs6TPYvQ1N/OT9QVZHFt+UGkudca/1iGGDt+IIj/nd 2O19SEdIMo6lIwGp2LY/f29MkIWAPJ+NceQ++I3dODO/QOIUg8kOuQP7QjBa8fCu+I TvmX+StfSg7/JUTc1l696C7TQlABjl2rg1Fe8P/mbHw/hSQ+qIPYXo36JlTIwzUoGT z/O0ZzOzZhT3CFJxzKntF9mjFbHfyPDrK138UnbUy022pd4ufxLBJOX0BjkY53T49S r1+IGKKwmoAqYDUzDAf+TMkwhfJzLVpGe5x9Vx+LijywzNP3EH1x4gOSdC7mc9qPyF 47A/V/mwG2B0g== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sun, 13 Apr 2025 16:45:11 +0200 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------K7ayjXP8dGQosZr0arxKGOQ6" Message-ID: <ac629e63-a7b0-461f-8f98-6c79f567ebbb@HIDDEN> Date: Sun, 13 Apr 2025 16:45:06 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN> <f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN> <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------K7ayjXP8dGQosZr0arxKGOQ6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Stefan, Sorry for this late answer. It took me a while to take it all in ;-) On 2025-04-11 18:26, Stefan Monnier wrote: >> Does this mean that for a `cl-deftype'-like generalizer to work >> correctly, it must be part of the "typof" generalizer? > > No, but it needs to be either always more precise or always less precise > than `type-of`. > > IOW, either: > > (eql (gtypeof-generalizer A) (gtypeof-generalizer B)) > IMPLIES ((eql (gtypeof-generalizer A) nil) > OR (eql (cl-type-of A) (cl-type-of B))) > > or the reverse. That's a current limitation in the cl-generic system. > > One way to solve this is to use a generalizer that returns either nil or > a pair containing both the `gtype-of` and the `cl-type-of`, so it's > trivially always more precise than `cl-type-of`. But beware: these > things are compared with `eql` so you need to "uniquify" them with > a sort of hashconsing scheme. I am not sure to understand this point. AFAICS, gtypes always take precedence over other types. So, provided I correctly understand your point, the gtype generalizer is more precise than `type-of`. For instance, if you define an icon type like this: (defgtype icon nil () "Builtin icon type." '(and symbol (satisfies iconp))) (gtype-of 'button) => icon (cl-type-of 'button) => symbol So you cannot have two methods with the same name, one to handle the symbol type, and one to handle the icon type. I agree, it is a limitation. Is this your point? I wonder if in practice it is really inconvenient, and worth the trouble of complicate more the implementation? Isn't it clearer to use different methods for icons and symbols? Aren't these types fundamentally different, and isn't the fact that an icon is a symbol just an implementation choice? > > BTW if you do > > (defgtype cons-car-foo nil () > "A cons with a `foo' car." > `(satisfies ,(lambda (x) (eq (car-safe x) 'foo)))) > > (defgtype cons-cdr-foo nil () > "A cons with a `foo' cdr." > `(satisfies ,(lambda (x) (eq (cdr-safe x) 'foo)))) > > what's the `(gtype-of '(foo . foo))` ? Regarding this point, perhaps it would be possible to use an heuristic like: "in case of conflict, the last defined type is chosen as the most specific"? I implemented this idea in gtype (attached) to compute the gtype precedence list, by using a topologic sort with a tie-breaker to decide which gtype will be the most specific between two candidates that cannot be separated otherwise. It should be easy to implement different heuristics by providing different tie-breakers. With your example, if you define `cons-cdr-foo' after `cons-car-foo': (gtype-of '(foo . foo)) => cons-cdr-foo And, if you define `cons-car-foo' after `cons-cdr-foo': (gtype-of '(foo . foo)) => cons-car-foo To avoid inconsistent method dispatching, the order of gtypes does not change if you eval again the definition of an existing gtype. But the order will change if you first remove the gtype, then define it again. >> Or am I missing something? --- Sorry, I only started studying >> cl-generic relatively recently, and I probably don't understand >> all its intricacies ;-) > > Yeah, it's unsatisfactorily intricate, indeed. It's designed first and > foremost to keep the dispatch "simple and reasonable fast", at the cost > of making `cl-generic-define-generalizer` a very sharp tool. 🙂 > > I have recently been thinking about how to make it more reliable (which > would also make it more flexible/powerful, allowing the definition of > both `and` and `or` specializers). I have some vague idea, but there's > no code at all yet, and it might come with some non-trivial tradeoffs > (e.g. preloading the byte-compiler). I can't wait to see this :-) Thanks for your patience! --------------K7ayjXP8dGQosZr0arxKGOQ6 Content-Type: text/x-emacs-lisp; charset=UTF-8; name="gtype.el" Content-Disposition: attachment; filename="gtype.el" Content-Transfer-Encoding: base64 Ozs7IGd0eXBlLmVsIC0tLSBEYXRhIHR5cGVzIGZvciBnZW5lcmljIGZ1bmN0aW9ucyAtKi0g bGV4aWNhbC1iaW5kaW5nOnQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMjUgRGF2aWQgUG9u Y2UKCjs7IEF1dGhvcjogRGF2aWQgUG9uY2UgPGRhX3ZpZEBvcmFuZ2UuZnI+Cjs7IE1haW50 YWluZXI6IERhdmlkIFBvbmNlIDxkYV92aWRAb3JhbmdlLmZyPgo7OyBDcmVhdGVkOiA2IEFw cmlsIDIwMjUKOzsgS2V5d29yZHM6IGV4dGVuc2lvbnMKCjs7IFRoaXMgZmlsZSBpcyBub3Qg cGFydCBvZiBHTlUgRW1hY3MuCgo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCjs7IG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCjs7IHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZQo7OyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dAo7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCjs7IEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFs b25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KCjs7OyBDb21tZW50YXJ5Ogo7Owo7OyBUaGlzIGxpYnJhcnkgZXh0ZW5k cyBgY2wtZGVmdHlwZScgdG8gZGVmaW5lIGBndHlwZXMnLCBpLmUuIGRhdGEKOzsgdHlwZXMg ZGVmaW5lZCBieSAnY2wtZGVmdHlwZScgd2hpY2ggYXJlIGFsc28gdmFsaWQgYXJndW1lbnQg dHlwZXMKOzsgZm9yIGRpc3BhdGNoaW5nIGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcy4KOzsK OzsgVGhlIG1haW4gZW50cnkgcG9pbnRzIGFyZToKOzsKOzsgLSBgZGVmZ3R5cGUnLCBhIG1h Y3JvIHRoYXQgZGVmaW5lcyBhIGd0eXBlLgo7Owo7OyAtIGBndHlwZS1vZicsIGEgZnVuY3Rp b24gdGhhdCBsb29rdXAgdGhlIGd0eXBlIG9mIGFuIG9iamVjdC4KOzsKOzsgLSBgcmVtZ3R5 cGUnLCBhIG1hY3JvIHRoYXQgcmVtb3ZlcyBhIGd0eXBlLgo7Owo7OyBBIHRyaXZpYWwgZXhh bXBsZToKOzsKOzsgKGRlZmd0eXBlIG5lZ2F0aXZlIG5pbCAoKQo7OyAgICJBIG5lZ2F0aXZl IG51bWJlciIKOzsgICAnKGFuZCBudW1iZXIgKHNhdGlzZmllcyBtaW51c3ApKSkKOzsKOzsg KGRlZmd0eXBlIHplcm8gbmlsICgpCjs7ICAgIkEgemVybyBudW1iZXIiCjs7ICAgJyhhbmQg bnVtYmVyIChzYXRpc2ZpZXMgemVyb3ApKSkKOzsKOzsgKGRlZmd0eXBlIHBvc2l0aXZlIG5p bCAoKQo7OyAgICJBIHBvc2l0aXZlIG51bWJlciIKOzsgICAnKGFuZCBudW1iZXIgKHNhdGlz ZmllcyBwbHVzcCkpKQo7Owo7OyAoY2wtZGVmbWV0aG9kIHRlc3QtbnVtYmVyICgobiBuZWdh dGl2ZSkpCjs7ICAgKGZvcm1hdCAibmVnYXRpdmUgbnVtYmVyLCAlcyIgbikpCjs7Cjs7IChj bC1kZWZtZXRob2QgdGVzdC1udW1iZXIgKChuIHplcm8pKQo7OyAgIChmb3JtYXQgInplcm8g bnVtYmVyLCAlcyIgbikpCjs7Cjs7IChjbC1kZWZtZXRob2QgdGVzdC1udW1iZXIgKChuIHBv c2l0aXZlKSkKOzsgICAoZm9ybWF0ICJwb3NpdGl2ZSBudW1iZXIsICVzIiBuKSkKOzsKOzsg KHRlc3QtbnVtYmVyIC0xMjMuMCkKOzsgPT4gIm5lZ2F0aXZlIG51bWJlciwgLTEyMy4wIgo7 OyAodGVzdC1udW1iZXIgKGFicyAtMTIzLjApKQo7OyA9PiAicG9zaXRpdmUgbnVtYmVyLCAx MjMuMCIKOzsgKHRlc3QtbnVtYmVyIChyb3VuZCAwLjAwMDAwMDAwMDAwMSkpCjs7ID0+ICJ6 ZXJvIG51bWJlciwgMCIKOzsKOzsgUGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnM6Cjs7Cjs7 IFRoZSBjcml0aWNhbCBwb2ludCBvZiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB0 aGUgZnVuY3Rpb24KOzsgYGd0eXBlLW9mJyB3aGljaCBzZXF1ZW50aWFsbHkgdHJpZXMgYWxs IGtub3duIGd0eXBlcywgZnJvbSB0aGUgbW9zdAo7OyBzcGVjaWZpYyB0byB0aGUgbW9zdCBn ZW5lcmFsLCB1bnRpbCB0aGUgbW9zdCBzcGVjaWZpYyBndHlwZSB0aGF0Cjs7IGFwcGxpZXMg dG8gYSBnaXZlbiBvYmplY3QgaXMgZm91bmQuICBUaGVyZWZvcmUsIHRoZSBtYXhpbXVtIHRp bWUgdG8KOzsgZmluZCBhbiBvYmplY3QncyB0eXBlIGRpcmVjdGx5IGRlcGVuZHMgb24gdGhl IG51bWJlciBvZiBndHlwZXMgdG8KOzsgdHJ5LiAgSXMgdGhlcmUgYSBiZXR0ZXIgc29sdXRp b24/ICBBbnl3YXksIGFzc3VtaW5nIHRoYXQgZWFjaAo7OyBzaW5nbGUgdGVzdCB0byBrbm93 IHdoZXRoZXIgYW4gb2JqZWN0IGlzIG9mIGEgZ2l2ZW4gZ3R5cGUgaXMKOzsgcmVhc29uYWJs eSBmYXN0LCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBzZWVtcwo7 OyBhY2NlcHRhYmxlIChiYXNlZCBvbiB0aGUgdHJpdmlhbCBleGFtcGxlIGFib3ZlLCBhdHRl bXB0aW5nIDEsMDAwCjs7IGd0eXBlIGNoZWNrcyB0YWtlcyBhYm91dCBoYWxmIGEgbWlsbGlz ZWNvbmQgb24gbXkgc2V0dXApLgo7OwoKOzs7IENvZGU6Cjs7CihyZXF1aXJlICdjbC1saWIp CihldmFsLXdoZW4tY29tcGlsZSAocmVxdWlyZSAnY2wtbWFjcykpICA7Rm9yIGNsLS1maW5k LWNsYXNzLgoKKGRlZnZhciBndHlwZS0tbGlzdCBuaWwKICAiUHJlY2VkZW5jZSBsaXN0IG9m IHRoZSBkZWZpbmVkIGd0eXBlcy4iKQooZGVmdmFyIGd0eXBlLS1zZXFuIDAKICAiU2VxdWVu Y2UgbnVtYmVyIG9mIGRlZmluZWQgZ3R5cGVzLiIpCgooZGVmaW5lLWlubGluZSBndHlwZS1w IChvYmplY3QpCiAgIlJldHVybiBub24tbmlsIGlmIHRoZSB0eXBlIG9mIE9CSkVDVCBpcyBh IGd0eXBlLiIKICAoaW5saW5lLWxldGV2YWxzIChvYmplY3QpCiAgICAoaW5saW5lLXF1b3Rl CiAgICAgKGFuZCAoc3ltYm9scCAsb2JqZWN0KQogICAgICAgICAgKGVxICh0eXBlLW9mIChj bC0tZmluZC1jbGFzcyAsb2JqZWN0KSkgJ2d0eXBlLWNsYXNzKSkpKSkKCihkZWZpbmUtaW5s aW5lIGd0eXBlLS1hbGxwYXJlbnRzIChuYW1lKQogICJSZXR1cm4gYWxsIHBhcmVudHMgb2Yg dHlwZSB3aXRoIE5BTUUuCk5BTUUgbXVzdCBiZSBhIHN5bWJvbCByZXByZXNlbnRpbmcgYSB0 eXBlLiIKICA7OyBUbyBzYXZlIGNhbGxzIHRvIGBjbC0tY2xhc3MtYWxscGFyZW50cycgY2Fj aGUgcGFyZW50cyBvZiBndHlwZXMKICA7OyAocG9zc2libHkgYnVpbHRpbiB0eXBlcykuIGBn dHlwZS0tcmVnaXN0ZXInIHRha2VzIGNhcmUgb2YKICA7OyBjbGVhcmluZyBjYWNoZWQgdmFs dWVzIGlmIGEgZ3R5cGUgaXMgcmVkZWZpbmVkOyBhbmQgdGhlcmUgc2hvdWxkCiAgOzsgYmUg bm90aGluZyB0byBkbyBmb3IgYnVpbHRpbiB0eXBlcyB3aGljaCBzaG91bGQgbm90IGNoYW5n ZS4KICAoaW5saW5lLXF1b3RlCiAgIChvciAoZ2V0ICxuYW1lICdndHlwZS0tYWxscGFyZW50 cykKICAgICAgIChwdXQgLG5hbWUgJ2d0eXBlLS1hbGxwYXJlbnRzCiAgICAgICAgICAgIChj bC0tY2xhc3MtYWxscGFyZW50cyAoY2wtLWZpbmQtY2xhc3MgLG5hbWUpKSkpKSkKCihjbC1k ZWZzdHJ1Y3QKICAgIChndHlwZS1jbGFzcwogICAgICg6aW5jbHVkZSBjbC0tY2xhc3MpCiAg ICAgKDpub2lubGluZSB0KQogICAgICg6Y29uc3RydWN0b3IgbmlsKQogICAgICg6Y29uc3Ry dWN0b3IgZ3R5cGUtLWNsYXNzLW1ha2UKICAgICAgICAgICAgICAgICAgIChuYW1lCiAgICAg ICAgICAgICAgICAgICAgZG9jc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgcGFyZW50LXR5 cGVzCiAgICAgICAgICAgICAgICAgICAgJmF1eCAocGFyZW50cwogICAgICAgICAgICAgICAg ICAgICAgICAgIChtYXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo dHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2wtY2hlY2stdHlwZSB0eXBl IChzYXRpc2ZpZXMgZ3R5cGUtcCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNs LS1maW5kLWNsYXNzIHR5cGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQt dHlwZXMpKSkpCiAgICAgKDpjb3BpZXIgbmlsKSkKICAiVHlwZSBkZXNjcmlwdG9ycyBmb3Ig Z3R5cGVzLiIpCgooZGVmdW4gZ3R5cGUtcGFyZW50cyAobmFtZSkKICAiR2V0IHBhcmVudHMg b2YgdHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYSBzeW1ib2wgcmVwcmVzZW50aW5nIGEgdHlw ZS4KUmV0dXJuIGEgcG9zc2libHkgZW1wdHkgbGlzdCBvZiB0eXBlcy4iCiAgKGNsLWNoZWNr LXR5cGUgbmFtZSAoc2F0aXNmaWVzIGd0eXBlLXApKQogIChndHlwZS0tYWxscGFyZW50cyBu YW1lKSkKCihkZWZ1biBndHlwZS1jaGlsZHJlbiAobmFtZSkKICAiR2V0IGNoaWxkcmVuIG9m IHRoZSBndHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYSBzeW1ib2wgcmVwcmVzZW50aW5nIGEg Z3R5cGUuClJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgdHlwZXMuIgogIChjbC1j aGVjay10eXBlIG5hbWUgKHNhdGlzZmllcyBndHlwZS1wKSkKICAobGV0IChjaGlsZHJlbikK ICAgIChkb2xpc3QgKGVsdCBndHlwZS0tbGlzdCkKICAgICAgKG9yIChlcSBuYW1lIGVsdCkK ICAgICAgICAgIChpZiAobWVtcSBuYW1lIChndHlwZS0tYWxscGFyZW50cyBlbHQpKQogICAg ICAgICAgICAgIChwdXNoIGVsdCBjaGlsZHJlbikpKSkKICAgIGNoaWxkcmVuKSkKCihkZWZ1 biBndHlwZS0tdGllLWJyZWFrZXIgKG0xIG0yKQogICJSZXR1cm4gdGhlIGxlc3Mgc3BlY2lm aWMgb2YgdHdvIG1pbi1lbGVtZW50cyBNMSBhbmQgTTIuClRoYXQgaXMsIHRoZSBtaW4tZWxl bWVudCBmaXJzdCBwdXNoZWQgaW4gdGhlIGd0eXBlIHByZWNlZGVuY2UgbGlzdCwKb3JkZXJl ZCBmcm9tIG1vc3QgdG8gbGVzcyBzcGVjaWZpYyB0eXBlcy4KSWYgTTEgYW5kIE0yIGhvbGQg Z3R5cGVzLCBwcmVmZXIgdGhlIG9uZSB3aXRoIHRoZSBmaXJzdCBkZWZpbmVkIGd0eXBlLgpP dGhlcndpc2UsIHByZWZlciBNMSwgdGhlIGZpcnN0IG1pbi1lbGVtZW50IGZvdW5kIGluIHRo ZSBEQUcuIgogIChpZi1sZXQqICgoaTEgKGdldCAoY2FyIG0xKSAnZ3R5cGUtLXNlcW4pKQog ICAgICAgICAgICAoaTIgKGdldCAoY2FyIG0yKSAnZ3R5cGUtLXNlcW4pKSkKICAgICAgKGlm ICg8IGkxIGkyKSBtMSBtMikKICAgIG0xKSkKCihkZWZ1biBndHlwZS0tdG9wb2xvZ2ljLXNv cnQgKGdyYXBoICZvcHRpb25hbCB0aWUtYnJlYWtlcikKICAiUmV0dXJuIHRoZSB0b3BvbG9n aWNhbGx5IHNvcnRlZCBlbGVtZW50cyBvZiBHUkFQSC4KR1JBUEggbXVzdCBiZSBhIHZhbGlk IGRpcmVjdGVkIGFjeWNsaWMgZ3JhcGggKERBRykgYXMgYSBsaXN0IG9mCmVsZW1lbnRzIChW aSBbVmogVmsuLi5Wbl0pIHdoaWNoIG1lYW5zIHRoYXQgVmkgZGVwZW5kcyB1cG9uIFZqLCBW agp1cG9uIFZrLCBldGMuLCBvciBkZXBlbmRzIHVwb24gbm90aGluZy4gIFNpZ25hbCBhbiBl cnJvciBvdGhlcndpc2UuCkVsZW1lbnRzIGFyZSBjb21wYXJlZCB1c2luZyBgZXEnLgoKSWYg bm9uLW5pbCwgVElFLUJSRUFLRVIgbXVzdCBiZSBhIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMg dGhlCnByZXZpb3VzbHkgYW5kIGxhc3QgZm91bmQgbWluLWVsZW1lbnRzKCopLCBhbmQgbXVz dCByZXR1cm4gb25lIG9mCnRoZW0uICBJZiBUSUUtQlJFQUtFUiBpcyBuaWwgb3Igb21pdHRl ZCwgcHJlZmVyIHRoZSBmaXJzdCBtaW4tZWxlbWVudApmb3VuZCwgaS5lLiB0aGUgb25lIHRo YXQgYXBwZWFycyBmaXJzdCBpbiB0aGUgbmF0dXJhbCBvcmRlciBvZiB0aGUKREFHLgoKWypd IEEgbWluLWVsZW1lbnQgaXMgYW4gZWxlbWVudCB3aXRoIG5vIHN1Y2Nlc3NvciwgbGlrZSAo RCkuCgpTb21lIGV4YW1wbGVzOgoKICAoZ3R5cGUtLXRvcG9sb2dpYy1zb3J0IFxcPScoKEEg QiBDKSAoQiBEKSAoQyBEKSAoRCkpKQogID0+IChBIEIgQyBEKQoKICAoZ3R5cGUtLXRvcG9s b2dpYy1zb3J0IFxcPScoKEEgQiBDKSAoQiBEKSAoQyBEKSAoRCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAobGFtYmRhIChfcHJldiBsYXN0KSBsYXN0KSkKICA9PiAoQSBDIEIgRCkK CiAgKGd0eXBlLS10b3BvbG9naWMtc29ydCBcXD0nKChBIEIgQykgKEIgRCkgKEQgQikgKEQp KSkKICA9PiBlcnJvciIKICAoZGVjbGFyZSAoc2lkZS1lZmZlY3QtZnJlZSB0KSkKICAoY2wt bGFiZWxzICgocmVtcS1taW5pbWFsIChtIGcpCiAgICAgICAgICAgICAgICA7OyBSZW1vdmUg bWluLWVsZW1lbnQgTSBmcm9tIEcuCiAgICAgICAgICAgICAgICAobGV0ICgobWUgKGNhciBt KSkgcmVzdWx0KQogICAgICAgICAgICAgICAgICAoZG9saXN0IChlIChkZWxxIG0gZykpCiAg ICAgICAgICAgICAgICAgICAgKHB1c2ggKGNvbnMgKGNhciBlKSAocmVtcSBtZSAoY2RyIGUp KSkgcmVzdWx0KSkKICAgICAgICAgICAgICAgICAgcmVzdWx0KSkKICAgICAgICAgICAgICAo bmV4dC1taW5pbWFsIChnKQogICAgICAgICAgICAgICAgOzsgUmV0dXJuIHRoZSBuZXh0IG1p bi1lbGVtZW50IGZvdW5kIGluIEcuCiAgICAgICAgICAgICAgICAobGV0IChtKQogICAgICAg ICAgICAgICAgICAoZG9saXN0IChlIGcpCiAgICAgICAgICAgICAgICAgICAgKG9yIChjZHIg ZSkKICAgICAgICAgICAgICAgICAgICAgICAgOzsgV2hlbiB0aGVyZSBhcmUgdHdvIG1pbi1l bGVtZW50cywgY2FsbCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgOzsgVElFLUJSRUFL RVIgdG8gZGVjaWRlIHdoaWNoIG9uZSBpcyBtb3JlCiAgICAgICAgICAgICAgICAgICAgICAg IDs7IHNwZWNpZmljLgogICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBtIChpZiBtIChm dW5jYWxsIHRpZS1icmVha2VyIG0gZSkgZSkpKSkKICAgICAgICAgICAgICAgICAgbSkpKQog ICAgKG9yIHRpZS1icmVha2VyIChzZXRxIHRpZS1icmVha2VyIChsYW1iZGEgKHByZXYgX25l eHQpIHByZXYpKSkKICAgIChsZXQgKChnIChjb3B5LXNlcXVlbmNlIGdyYXBoKSkgdHMpCiAg ICAgICh3aGlsZSAod2hlbi1sZXQqICgobSAobmV4dC1taW5pbWFsIGcpKSkKICAgICAgICAg ICAgICAgKHNldHEgZyAocmVtcS1taW5pbWFsIG0gZykpCiAgICAgICAgICAgICAgIChwdXNo IChjYXIgbSkgdHMpKSkKICAgICAgKGNsLWFzc2VydCAoZXFsIChsZW5ndGggZ3JhcGgpIChs ZW5ndGggdHMpKSBuaWwKICAgICAgICAgICAgICAgICAiSW52YWxpZCBncmFwaCwgJVMiIHRz KQogICAgICB0cykpKQoKKGRlZnVuIGd0eXBlLS1kYWcgKCkKICAiUmV0dXJuIGEgREFHIGZy b20gdGhlIGxpc3Qgb2YgZGVmaW5lZCBndHlwZXMuIgogIChtYXBjYXIgIydndHlwZS0tYWxs cGFyZW50cyBndHlwZS0tbGlzdCkpCgooZGVmdW4gZ3R5cGUtLXJlZ2lzdGVyIChuYW1lICZv cHRpb25hbCBwYXJlbnRzIGFyZ3MpCiAgIlJlZ2lzdGVyIGEgZ3R5cGUgd2l0aCBOQU1FIGFu ZCBQQVJFTlRTLgpBUkdTIGFyZSB0aG9zZSB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIGBjbC1k ZWZ0eXBlJy4iCiAgOzsgQXQgdGhpcyBwb2ludCBOQU1FIG11c3QgYmUgYSBkZWZpbmVkIHR5 cGUuCiAgKGNsLWFzc2VydCAoZ2V0IG5hbWUgJ2NsLWRlZnR5cGUtaGFuZGxlcikgbmlsCiAg ICAgICAgICAgICAiVW5rbm93biB0eXBlICVTIiBuYW1lKQogIChsZXQgKChjbGFzcyAoY2wt LWZpbmQtY2xhc3MgbmFtZSkpCiAgICAgICAgKHJlZ2VkIChtZW1xIG5hbWUgZ3R5cGUtLWxp c3QpKSkKICAgIChpZiAobnVsbCBjbGFzcykKICAgICAgICAoY2wtYXNzZXJ0IChudWxsIHJl Z2VkKSBuaWwgIkV4aXN0aW5nIHR5cGUgbm90IHJlZ2lzdGVyZWQiKQogICAgICAoY2wtYXNz ZXJ0IHJlZ2VkIG5pbCAiTmV3IHR5cGUgYWxyZWFkeSByZWdpc3RlcmVkIikKICAgICAgKGNs LWFzc2VydCAoZXEgKHR5cGUtb2YgY2xhc3MpICdndHlwZS1jbGFzcykgbmlsCiAgICAgICAg ICAgICAgICAgIlR5cGUgaXMgaW4gYW5vdGhlciBjbGFzczogJVMiICh0eXBlLW9mIGNsYXNz KSkpCiAgICAob3IgKGxpc3RwIHBhcmVudHMpIChzZXRxIHBhcmVudHMgKGxpc3QgcGFyZW50 cykpKQogICAgKGNsLWFzc2VydCAobnVsbCAobWVtcSBuYW1lIHBhcmVudHMpKSBuaWwKICAg ICAgICAgICAgICAgIlR5cGUgaXMgaW4gcGFyZW50czogJVMiIHBhcmVudHMpCiAgICA7OyBT ZXR1cCBhIHR5cGUgZGVzY3JpcHRvciBmb3IgTkFNRSwgd2l0aCBQQVJFTlRTIGFuZCB0aGUg ZG9jc3RyaW5nCiAgICA7OyBwb3NzaWJseSBwcmVzZW50IGluIEFSR1MuCiAgICAobGV0ICgo ZG9jc3RyaW5nIChjYWFyIChtYWNyb2V4cC1wYXJzZS1ib2R5IChjZHIgYXJncykpKSkpCiAg ICAgIChvciAoc3RyaW5ncCBkb2NzdHJpbmcpIChzZXRxIGRvY3N0cmluZyBuaWwpKQogICAg ICAoc2V0ZiAoY2wtLWZpbmQtY2xhc3MgbmFtZSkKICAgICAgICAgICAgKGd0eXBlLS1jbGFz cy1tYWtlIG5hbWUgZG9jc3RyaW5nIHBhcmVudHMpKSkKICAgIChpZiBjbGFzcwogICAgICAg IDs7IENsZWFyIHRoZSBjYWNoZWQgdmFsdWUgb2YgcGFyZW50cyBmb3IgZWFjaCBjaGlsZHJl biBvZiBhCiAgICAgICAgOzsgbW9kaWZpZWQgZ3R5cGUuCiAgICAgICAgKGRvbGlzdCAoYyAo Z3R5cGUtY2hpbGRyZW4gbmFtZSkpCiAgICAgICAgICAoY2wtcmVtcHJvcCBjICdndHlwZS0t YWxscGFyZW50cykpCiAgICAgIDs7IFJlY29yZCB0aGUgbmV3IHR5cGUuCiAgICAgIChwdXNo IG5hbWUgZ3R5cGUtLWxpc3QpCiAgICAgIDs7IEFuZCBpdHMgc2VxdWVuY2UgbnVtYmVyLgog ICAgICAocHV0IG5hbWUgJ2d0eXBlLS1zZXFuIChwcm9nMSBndHlwZS0tc2VxbiAoaW5jZiBn dHlwZS0tc2VxbikpKSkKICAgIDs7IFRvIGZpbmQgdGhlIG1vc3QgcG9zc2libGUgc3BlY2lm aWMgZ3R5cGUgb2YgYW4gb2JqZWN0LCBtb3N0CiAgICA7OyBzcGVjaWZpYyB0eXBlcyBtdXN0 IGJlIHRyaWVkIGJlZm9yZSBtb3JlIGdlbmVyYWwgdHlwZXMuCiAgICA7OyBDb21wdXRlIHRo ZSBndHlwZSBwcmVjZWRlbmNlIGxpc3QgYnkgYSB0b3BvbG9naWMgc29ydCBvZiB0aGUKICAg IDs7IGd0eXBlcyBkZXBlbmRlbmNpZXMgREFHLiAgQXMgdGhlIERBRyBtYXkgaW5jbHVkZSBu b24tZ3R5cGVzCiAgICA7OyBuZWVkZWQgdG8gY29ycmVjdGx5IGNvbXB1dGUgdGhlIHByZWNl ZGVuY2UgbGlzdCwgcmVtb3ZlIHRoZW0KICAgIDs7IGZyb20gdGhlIGZpbmFsIHByZWNlZGVu Y2UgbGlzdDogYGd0eXBlLW9mJyBkb2Vzbid0IGNoZWNrCiAgICA7OyBub24tZ3R5cGUgYXQg cnVuIHRpbWUsIGhhbmRsZWQgYnkgdGhlICJ0eXBlLW9mIiBnZW5lcmFsaXplci4KICAgIChz ZXRxIGd0eXBlLS1saXN0IChzZXEtZmlsdGVyICMnZ3R5cGUtcAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGd0eXBlLS10b3BvbG9naWMtc29ydAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChndHlwZS0tZGFnKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMnZ3R5cGUtLXRpZS1icmVha2VyKSkpCiAgICBuYW1lKSkKCihk ZWZ1biBndHlwZS0tdW5yZWdpc3RlciAobmFtZSkKICAiVW5yZWdpc3RlciB0aGUgZ3R5cGUg d2l0aCBOQU1FLiIKICAoY2wtYXNzZXJ0IChudWxsIChndHlwZS1jaGlsZHJlbiBuYW1lKSkg dCAiVHlwZSBoYXMgY2hpbGRyZW46ICVTIikKICAoY2wtcmVtcHJvcCBuYW1lICdndHlwZS0t YWxscGFyZW50cykKICAoY2wtcmVtcHJvcCBuYW1lICdndHlwZS0tc2VxbikKICAoY2wtcmVt cHJvcCBuYW1lICdjbC0tY2xhc3MpCiAgKGNsLXJlbXByb3AgbmFtZSAnY2wtZGVmdHlwZS1o YW5kbGVyKQogIChzZXRxIGd0eXBlLS1saXN0IChkZWxxIG5hbWUgZ3R5cGUtLWxpc3QpKQog IG5pbCkKCjs7OyMjI2F1dG9sb2FkCihkZWZtYWNybyBkZWZndHlwZSAobmFtZSAmb3B0aW9u YWwgcGFyZW50cyAmcmVzdCBhcmdzKQogICJEZWZpbmUgTkFNRSBhcyBhIGd0eXBlIHRoYXQg aW5oZXJpdHMgZnJvbSBQQVJFTlRTLgpJZiBhIGd0eXBlIHdpdGggTkFNRSBhbHJlYWR5IGV4 aXN0cywgcmVwbGFjZSBpdC4KCk5BTUUgaXMgYW4gdW5xdW90ZWQgc3ltYm9sIHJlcHJlc2Vu dGluZyBhIGd0eXBlLgoKT3B0aW9uYWwgYXJndW1lbnQgUEFSRU5UUyBpcyBlaXRoZXIgYW4g dW5xdW90ZWQgc3ltYm9sIG9yIGxpc3Qgb2YKc3ltYm9scyBvdGhlciB0aGFuIE5BTUUgcmVw cmVzZW50aW5nIHR5cGVzIHBhcmVudHMgb2YgTkFNRS4KUEFSRU5UUyBuaWwgb3Igb21pdHRl ZCBtZWFucyB0aGF0IE5BTUUgaXMgYSByb290IHR5cGUuCgpBbHNvIHBhc3MgTkFNRSBhbmQg QVJHUyB0byBgY2wtZGVmdHlwZScgdG8gZGVmaW5lIE5BTUUgYXMgYSBuZXcgZGF0YQp0eXBl LiIKICAoZGVjbGFyZSAoZGVidWcgY2wtZGVmbWFjcm8pIChkb2Mtc3RyaW5nIDQpIChpbmRl bnQgMykpCiAgKGNsLXdpdGgtZ2Vuc3ltcyAoZXJyKQogICAgYChjb25kaXRpb24tY2FzZSAs ZXJyCiAgICAgICAgIChwcm9nbgogICAgICAgICAgIChjbC1kZWZ0eXBlICxuYW1lICxAYXJn cykKICAgICAgICAgICAoZ3R5cGUtLXJlZ2lzdGVyICcsbmFtZSAnLHBhcmVudHMgJyxhcmdz KSkKICAgICAgIChlcnJvcgogICAgICAgIChndHlwZS0tdW5yZWdpc3RlciAnLG5hbWUpCiAg ICAgICAgKGVycm9yIChlcnJvci1tZXNzYWdlLXN0cmluZyAsZXJyKSkpKSkpCgooZGVmbWFj cm8gcmVtZ3R5cGUgKG5hbWUpCiAgIlJlbW92ZSB0aGUgZ3R5cGUgd2l0aCBOQU1FLgpOQU1F IGlzIGFuIHVucXVvdGVkIHN5bWJvbCByZXByZXNlbnRpbmcgYSBndHlwZS4KU2lnbmFsIGFu IGVycm9yIGlmIG90aGVyIGd0eXBlcyBpbmhlcml0IGZyb20gTkFNRS4iCiAgYChwcm9nbgog ICAgIChjbC1jaGVjay10eXBlICcsbmFtZSAoc2F0aXNmaWVzIGd0eXBlLXApKQogICAgIChn dHlwZS0tdW5yZWdpc3RlciAnLG5hbWUpKSkKCjs7IEludGVybmFsIGRhdGEgdXNlZCB0byBk ZXRlY3QgZW5kbGVzcyByZWN1cnNpb24gaW4gJ2d0eXBlLW9mJy4KKGRlZnZhciBndHlwZS0t b2JqZWN0IChtYWtlLXN5bWJvbCAidm9pZCIpKQooZGVmdmFyIGd0eXBlLS10eXBlIG5pbCkK CihkZWZ1biBndHlwZS1vZiAob2JqZWN0KQogICJSZXR1cm4gdGhlIG1vc3Qgc3BlY2lmaWMg cG9zc2libGUgZ3R5cGUgb2YgT0JKRUNULCBvciBuaWwgaWYgbm9uZS4iCiAgOzsgSWdub3Jl IHJlY3Vyc2l2ZSBjYWxsIG9uIHRoZSBzYW1lIE9CSkVDVCwgd2hpY2ggY2FuIGxlZ2l0aW1h dGVseQogIDs7IG9jY3VyIHdoZW4sIGZvciBleGFtcGxlLCBhIHBhcmVudCB0eXBlIGlzIGlu dmVzdGlnYXRpbmcgd2hldGhlcgogIDs7IGFuIG9iamVjdCdzIHR5cGUgaXMgdGhhdCBvZiBv bmUgb2YgaXRzIGNoaWxkcmVuLgogICh1bmxlc3MgKGVxIG9iamVjdCBndHlwZS0tb2JqZWN0 KQogICAgKGxldCAoKGd0eXBlLS1vYmplY3Qgb2JqZWN0KQogICAgICAgICAgKHR5cGVzIGd0 eXBlLS1saXN0KQogICAgICAgICAgZm91bmQpCiAgICAgIDs7IFRyeSBlYWNoIGd0eXBlLCBm cm9tIG1vc3Qgc3BlY2lmaWMgdG8gbGVhc3Qgc3BlY2lmaWMsIHVudGlsCiAgICAgIDs7IG9u ZSBpcyBmb3VuZCBhcyB0aGUgbW9zdCBzcGVjaWZpYyBwb3NzaWJsZSBndHlwZSBvZiBPQkpF Q1QuCiAgICAgICh3aGlsZSAoYW5kIChub3QgZm91bmQpIHR5cGVzKQogICAgICAgIChsZXQg KChndHlwZS0tdHlwZSAoY2FyIHR5cGVzKSkpCiAgICAgICAgICAoaWYgKGNsLXR5cGVwIG9i amVjdCBndHlwZS0tdHlwZSkKICAgICAgICAgICAgICAoc2V0cSBmb3VuZCBndHlwZS0tdHlw ZSkKICAgICAgICAgICAgKHNldHEgdHlwZXMgKGNkciB0eXBlcykpKSkpCiAgICAgIGZvdW5k KSkpCgo7OzsgTWV0aG9kIGRpc3BhdGNoaW5nCjs7CihkZWZ1biBndHlwZS0tc3BlY2lhbGl6 ZXJzICh0YWcgJnJlc3QgXykKICAiSWYgVEFHIGlzIGEgZ3R5cGUsIHJldHVybiBpdHMgc3Bl Y2lhbGl6ZXJzLiIKICAoaWYgKGd0eXBlLXAgdGFnKSAoZ3R5cGUtLWFsbHBhcmVudHMgdGFn KSkpCgooY2wtZ2VuZXJpYy1kZWZpbmUtZ2VuZXJhbGl6ZXIgZ3R5cGUtLWdlbmVyYWxpemVy CiAgMTAKICAobGFtYmRhIChvYmogJnJlc3QgXykgYChndHlwZS1vZiAsb2JqKSkKICAjJ2d0 eXBlLS1zcGVjaWFsaXplcnMpCgooY2wtZGVmbWV0aG9kIGNsLWdlbmVyaWMtZ2VuZXJhbGl6 ZXJzIDpleHRyYSAiZ3R5cGUtb2YiICh0eXBlKQogICJTdXBwb3J0IGZvciBkaXNwYXRjaCBv biBndHlwZXMuIgogIChpZiAoZ3R5cGUtcCB0eXBlKQogICAgICAobGlzdCBndHlwZS0tZ2Vu ZXJhbGl6ZXIpCiAgICAoY2wtY2FsbC1uZXh0LW1ldGhvZCkpKQoKKHByb3ZpZGUgJ2d0eXBl KQoKOzs7IGd0eXBlLmVsIGVuZHMgaGVyZQo= --------------K7ayjXP8dGQosZr0arxKGOQ6--
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 11 Apr 2025 16:26:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 11 12:26:18 2025
Received: from localhost ([127.0.0.1]:51471 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u3HCs-00019w-1N
for submit <at> debbugs.gnu.org; Fri, 11 Apr 2025 12:26:18 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:13865)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u3HCq-00019h-8a
for 77725 <at> debbugs.gnu.org; Fri, 11 Apr 2025 12:26:16 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 48E9D801CC;
Fri, 11 Apr 2025 12:26:10 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744388763;
bh=QkUTtgbokRJaxYtUqIgLaDHF0CO7A5VqS7cLdC/eL6k=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=JHLQ3zmd+ezW+6m0IJuVg9XTyhx9Urhct2oHSKKTd004fYH2qCPYXOucz9MtHvT1W
HR4brIcUm+K7sBgsFH8MSGP+4RZaTbYiVXXAYj+wSwAPqfsdqfu9i9JcDAmUEXe3LA
LrxE+7qUFHp3/AZ64Cghffe8IqpNzqmzGyBXPzz8KpPr2FEz6Nv94lldOVvRAxbt0g
4O9CqQL6wAerIG6fDDMOJ/RNVH/OxKXdVl6z0afBrrmd9LIpaWegfr2khZbE3U8dIv
GHptrVnivCZoGpSMwYjusPYogZm2Bw/3PR4pKbOrfBkRZMIxCc59LpidK/w5RLX6yq
xKURWrQ1dh72g==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 9A8C9804C9;
Fri, 11 Apr 2025 12:26:03 -0400 (EDT)
Received: from alfajor (unknown [23.233.149.155])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 7B1031202BB;
Fri, 11 Apr 2025 12:26:03 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
Message-ID: <jwv8qo6n0py.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
<f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN>
Date: Fri, 11 Apr 2025 12:26:05 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.172 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Does this mean that for a `cl-deftype'-like generalizer to work
> correctly, it must be part of the "typof" generalizer?
No, but it needs to be either always more precise or always less precise
than `type-of`.
IOW, either:
(eql (gtypeof-generalizer A) (gtypeof-generalizer B))
IMPLIES ((eql (gtypeof-generalizer A) nil)
OR (eql (cl-type-of A) (cl-type-of B)))
or the reverse. That's a current limitation in the cl-generic system.
One way to solve this is to use a generalizer that returns either nil or
a pair containing both the `gtype-of` and the `cl-type-of`, so it's
trivially always more precise than `cl-type-of`. But beware: these
things are compared with `eql` so you need to "uniquify" them with
a sort of hashconsing scheme.
BTW if you do
(defgtype cons-car-foo nil ()
"A cons with a `foo' car."
`(satisfies ,(lambda (x) (eq (car-safe x) 'foo))))
(defgtype cons-cdr-foo nil ()
"A cons with a `foo' cdr."
`(satisfies ,(lambda (x) (eq (cdr-safe x) 'foo))))
what's the `(gtype-of '(foo . foo))` ?
> Or am I missing something? --- Sorry, I only started studying
> cl-generic relatively recently, and I probably don't understand
> all its intricacies ;-)
Yeah, it's unsatisfactorily intricate, indeed. It's designed first and
foremost to keep the dispatch "simple and reasonable fast", at the cost
of making `cl-generic-define-generalizer` a very sharp tool. =F0=9F=99=82
I have recently been thinking about how to make it more reliable (which
would also make it more flexible/powerful, allowing the definition of
both `and` and `or` specializers). I have some vague idea, but there's
no code at all yet, and it might come with some non-trivial tradeoffs
(e.g. preloading the byte-compiler).
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.Received: (at 77725) by debbugs.gnu.org; 11 Apr 2025 15:04:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 11 11:04:24 2025 Received: from localhost ([127.0.0.1]:51202 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u3Fvc-0004Vi-46 for submit <at> debbugs.gnu.org; Fri, 11 Apr 2025 11:04:24 -0400 Received: from smtp-29.smtpout.orange.fr ([80.12.242.29]:50725 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u3FvW-0004V7-O0 for 77725 <at> debbugs.gnu.org; Fri, 11 Apr 2025 11:04:21 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id 3FvOu4XDK724L3FvSuQZmY; Fri, 11 Apr 2025 17:04:16 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1744383856; bh=c9KZDmLNFIGaaw/k0e8rChzd4Scd8yW6K5hacRM5uZE=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=qYV8GdC2tVCb+4AKMQUo+/iTNt1tX85CRWje87Gj/vKVOJoKSM1XXUvREfxO9z+Y4 S/1Y8BOb33D1P5dzFw7SIdbeB/HrgmapxhUQC5t2lPNWajlsUMrEhLlleYa5TnvN3b OcHi4mgi335n/E/nZbfKsllfXw0BYwUGpYdgto1JZD1lCNLWjovGk4Hxz0qmC29eyS DGtyhnlkM27uxOVTEG1JrdI9/f8P9UniCLN7EaeFazDF9+My15lRBaDo3SN2anQSvK li0LBsv4k75oyrgDFW+rurZrZWtxpvR4dAu5kpsoUfy+g0OOmEMC+hvhRiDOsb+Cof cU+wEwbktnnmg== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Fri, 11 Apr 2025 17:04:16 +0200 X-ME-IP: 90.112.40.65 Message-ID: <f63cd290-ba06-4f67-b106-0a7ca7b2c881@HIDDEN> Date: Fri, 11 Apr 2025 17:04:10 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic? To: Stefan Monnier <monnier@HIDDEN>, Eli Zaretskii <eliz@HIDDEN> References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN> <868qo7ozzh.fsf@HIDDEN> <jwvplhiestk.fsf-monnier+emacs@HIDDEN> Content-Language: fr, en-US From: David Ponce <da_vid@HIDDEN> In-Reply-To: <jwvplhiestk.fsf-monnier+emacs@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77725 Cc: 77725 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-04-11 15:41, Stefan Monnier wrote: > Hi David, > >>> As part of some other works, I created the attached "gtype" library, >>> which complements `cl-deftype' so that such defined types are also >>> recognized as argument types for dispatching generic function methods. >>> Here is a quick example of use: >>> >>> (defgtype face nil () >>> "A face type." >>> '(satisfies facep)) >>> >>> (gtype-of 'default) >>> => face >>> (cl-type-of 'default) >>> => symbol >>> >>> (cl-defmethod my-add-face ((text string) (face face)) >>> (propertize text 'face face)) >>> => my-add-face > > Nice. > >>> I've been using this library successfully in some of my code, and was >>> wondering if it could help add this functionality to Emacs. My goal >>> is not to include this library, but to use it as a starting point for >>> further reflection on this subject. > > The problem with adding new generalizers is to make sure they interact > correctly with others. If you allow `satisfies` kind of definitions, > then it's easy to end up with situations where one of your new types is > neither a subtype (aka sub-specializer) nor a supertype > (super-specializer) of an existing type (specializer). > > Let's take `function` defined as `(satisfies functionp)` is an example. > > (functionp '(lambda () 1)) > => t > (type-of '(lambda a)) > => cons > > this suggests (satisfies functionp) should be a subtype of `cons`, but > that is clearly wrong because > > (functionp (lambda () 1)) > => t > (consp (lambda () 1)) > => nil > > The type-dispatch code wants *one* value (generalizer) to lookup the > hash-table where it will find the corresponding effective method. > That one value should be "the most specific" generalizer among the > generalizers currently used for that generic function. > > Now a `gtype-of` called `g-function` built from `(satisfies functionp)` > will be sometimes more specific and sometimes less specific than > `type-of`, so there is no correct PRIORITY to indicate to > `cl-generic-define-generalizer`: we'll end up with dispatch errors if > a generic function has a method for both `g-function` and for `cons`. > > > Stefan > Hi Stefan, Thank you very much for your feedback! Your remarks make sense, for sure. Does this mean that for a `cl-deftype'-like generalizer to work correctly, it must be part of the "typof" generalizer? In other words, that a function like `gtype-of' should fall back to `cl-type-of' when there is no corresponding gtype for an object? Or am I missing something? --- Sorry, I only started studying cl-generic relatively recently, and I probably don't understand all its intricacies ;-)
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 11 Apr 2025 13:41:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 11 09:41:52 2025
Received: from localhost ([127.0.0.1]:49601 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u3Edj-0006if-Gm
for submit <at> debbugs.gnu.org; Fri, 11 Apr 2025 09:41:51 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:65131)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1u3Edh-0006iJ-Iu
for 77725 <at> debbugs.gnu.org; Fri, 11 Apr 2025 09:41:50 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id B8749801CC;
Fri, 11 Apr 2025 09:41:42 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1744378901;
bh=aLrlpaqrdo3szFgPr5+3BgiajoyN0PqHkYE9mLN7rDY=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=eyke12sbTDv3I7bVpCeuU+4lDGZSf95t98hNYuEC/g7tTrT7CZ02EhZJ06BFHQrEA
KVAABz94w3+WkHCtlZlCWgoOgR6WZgJiSpJ5VPX9T4agTa7SZcJJ7LMSL0um2cx/ch
Wh5cL+hkUtDo3s4KzSiwutk//pPIMSfNSUp4Wz1tb9df9lWRHFJSmuyd0GPjmrhZcW
zlEbM7j4bJ4rKkLi5WcDCdx3hh2mMgDF5T8n1fuVySXo6tjsaTMUjX1g43kgzxfrUt
esEpO5AhJXW1n8PKuAiw5qGzjDglyNXdaGMeZgNWjWFUkyUzJAGIFV1HmmdAt7aGlE
kMs/tmnt42UbA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id D6C2E80599;
Fri, 11 Apr 2025 09:41:41 -0400 (EDT)
Received: from pastel (unknown [104.247.242.5])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id AD62E120346;
Fri, 11 Apr 2025 09:41:41 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#77725: 31.0.50; Add support for types accepted by
`cl-typep' to cl-generic?
In-Reply-To: <868qo7ozzh.fsf@HIDDEN>
Message-ID: <jwvplhiestk.fsf-monnier+emacs@HIDDEN>
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
<868qo7ozzh.fsf@HIDDEN>
Date: Fri, 11 Apr 2025 09:41:40 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.354 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: David Ponce <da_vid@HIDDEN>, 77725 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
Hi David,
>> As part of some other works, I created the attached "gtype" library,
>> which complements `cl-deftype' so that such defined types are also
>> recognized as argument types for dispatching generic function methods.
>> Here is a quick example of use:
>>
>> (defgtype face nil ()
>> "A face type."
>> '(satisfies facep))
>>
>> (gtype-of 'default)
>> => face
>> (cl-type-of 'default)
>> => symbol
>>
>> (cl-defmethod my-add-face ((text string) (face face))
>> (propertize text 'face face))
>> => my-add-face
Nice.
>> I've been using this library successfully in some of my code, and was
>> wondering if it could help add this functionality to Emacs. My goal
>> is not to include this library, but to use it as a starting point for
>> further reflection on this subject.
The problem with adding new generalizers is to make sure they interact
correctly with others. If you allow `satisfies` kind of definitions,
then it's easy to end up with situations where one of your new types is
neither a subtype (aka sub-specializer) nor a supertype
(super-specializer) of an existing type (specializer).
Let's take `function` defined as `(satisfies functionp)` is an example.
(functionp '(lambda () 1))
=> t
(type-of '(lambda a))
=> cons
this suggests (satisfies functionp) should be a subtype of `cons`, but
that is clearly wrong because
(functionp (lambda () 1))
=> t
(consp (lambda () 1))
=> nil
The type-dispatch code wants *one* value (generalizer) to lookup the
hash-table where it will find the corresponding effective method.
That one value should be "the most specific" generalizer among the
generalizers currently used for that generic function.
Now a `gtype-of` called `g-function` built from `(satisfies functionp)`
will be sometimes more specific and sometimes less specific than
`type-of`, so there is no correct PRIORITY to indicate to
`cl-generic-define-generalizer`: we'll end up with dispatch errors if
a generic function has a method for both `g-function` and for `cons`.
Stefan
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at 77725) by debbugs.gnu.org; 11 Apr 2025 08:37:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 11 04:37:57 2025
Received: from localhost ([127.0.0.1]:48625 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u39td-0002fw-0u
for submit <at> debbugs.gnu.org; Fri, 11 Apr 2025 04:37:57 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:50592)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u39ta-0002fe-2p
for 77725 <at> debbugs.gnu.org; Fri, 11 Apr 2025 04:37:54 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1u39tT-0000ay-ND; Fri, 11 Apr 2025 04:37:47 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
mime-version; bh=X78ael6JLBIlHxw3SCMO1KkSDUVuJxhisIHg6i7pLZ4=; b=XYNivL5nk8bb
Du5Bfihzz1Hcun/JTMmQMSu0EOKv196XzBNOI/uarvZU9cNLW9+r4DW83f5ZnAX7zDg5VhPWWm4Ut
SsiHnZOBfbfrLcmGbjMYE2XtFwu74JM50YNBrGI5T6TvywCB+JWY2QLW2GdIHjS9Kp1OsoOGA16/C
PSnQGcc+pabiofqJauDMOfqD1aPP9flVzy9go7cVpiOzlVlWOaWP7CfHrqUVCMv3hJKu+0N3tgtYd
OngDoK3dFqcvOu0smscVbss2W+dweN3Kx7ELlI/Vt+mY/t3cDaDenEKZkhvzmcvOmfCDOJQgxQrKl
N4R5jtlTekD/CoTyqzVk+Q==;
Date: Fri, 11 Apr 2025 11:37:38 +0300
Message-Id: <868qo7ozzh.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: David Ponce <da_vid@HIDDEN>, Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
(bug-gnu-emacs@HIDDEN)
Subject: Re: bug#77725: 31.0.50;
Add support for types accepted by `cl-typep' to cl-generic?
References: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77725
Cc: 77725 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Date: Fri, 11 Apr 2025 09:14:41 +0200
> From: David Ponce via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
> In the cl-generic library, the implementation of the
> `cl-generic-generalizers' "typeof" method, used to dispatch
> "normal types", mentions in a FIXME on line 1367: "Add support for
> other "types" accepted by `cl-typep' such as `character', `face',
> `keyword', ...?".
>
> As part of some other works, I created the attached "gtype" library,
> which complements `cl-deftype' so that such defined types are also
> recognized as argument types for dispatching generic function methods.
> Here is a quick example of use:
>
> (defgtype face nil ()
> "A face type."
> '(satisfies facep))
>
> (gtype-of 'default)
> => face
> (cl-type-of 'default)
> => symbol
>
> (cl-defmethod my-add-face ((text string) (face face))
> (propertize text 'face face))
> => my-add-face
>
> (my-add-face "text" 'bold)
> => #("text" 0 4 (face bold))
>
> (my-add-face "text" 'bad-face)
> => No applicable method: add-face, "text", bad-face
>
> I've been using this library successfully in some of my code, and was
> wondering if it could help add this functionality to Emacs. My goal
> is not to include this library, but to use it as a starting point for
> further reflection on this subject.
>
> My library is relatively concise and adopts a design similar to that
> used for built-in types. The new types (which I call "gtypes") are
> instances of the structure `gtype-class', derived from `cl--class',
> just as built-in types are instances of the structure `built-in-class'
> also derived from `cl--class'. gtypes thus benefits from the existing
> infrastructure used for other types. I also chose to have a separate
> "generalizer" for gtypes. I'm not sure if it would be desirable to
> extend the existing generalizer "typof" to support such types.
>
> I would therefore be interested in hearing more expert opinions on
> my implementation and whether it could help add this functionality to
> cl-generic, if it makes sense.
Thanks, adding Stefan to the discussion.
bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
Received: (at submit) by debbugs.gnu.org; 11 Apr 2025 07:15:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 11 03:15:08 2025
Received: from localhost ([127.0.0.1]:48406 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1u38bS-0004DG-LI
for submit <at> debbugs.gnu.org; Fri, 11 Apr 2025 03:15:08 -0400
Received: from lists.gnu.org ([2001:470:142::17]:60348)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1u38bP-0003wx-Sv
for submit <at> debbugs.gnu.org; Fri, 11 Apr 2025 03:15:05 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <da_vid@HIDDEN>) id 1u38bJ-0003rO-5q
for bug-gnu-emacs@HIDDEN; Fri, 11 Apr 2025 03:14:57 -0400
Received: from smtp-30.smtpout.orange.fr ([80.12.242.30]
helo=smtp.smtpout.orange.fr)
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.90_1) (envelope-from <da_vid@HIDDEN>) id 1u38bG-0005SS-7Q
for bug-gnu-emacs@HIDDEN; Fri, 11 Apr 2025 03:14:56 -0400
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
id 38b3u04qE724L38b6uxRDI; Fri, 11 Apr 2025 09:14:45 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
s=t20230301; t=1744355685;
bh=2UI7M3qLfQE5LbfHoG1pFjvgVsqiCTDgOReIVK8khWo=;
h=Message-ID:Date:MIME-Version:To:From:Subject;
b=DlseKPD6Q8EBYzCfgBJE7FXzd/8CbIHS8dfQc6WwrWKIq3tqOGvApEgWgQZ6BBXRu
yRE092/fdwN28uhqigpcPRas/9G45Qp1BC0IuT7Yi7X93uk7KfftQa4lZnCSoosBEu
xozZ/MZFOIJJ+C8fYXafzAuHbJqFDChNsCT6FNcbjVOcl7nBgkYNePqhPy9az2+Pq8
WahzECAkjHiOweXoYhtG+QxJy8bWqDq3IMfqyl0omTdTxKpsFOFaLn0TipOW4cTmqY
75q3x0qFZlmWWRJVoeZ8Ncg/sPJe0Mx3+IjuO+AApfvlWV5quC+iEKWpuOA6UA1Sv0
sk32cmoA28KuA==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Fri, 11 Apr 2025 09:14:45 +0200
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------n1eQXsc1ZT8h0XgHFf6i8M60"
Message-ID: <8cf44be2-96da-4383-84bd-9470a748d500@HIDDEN>
Date: Fri, 11 Apr 2025 09:14:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: fr, en-US
To: bug-gnu-emacs@HIDDEN
From: David Ponce <da_vid@HIDDEN>
Subject: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic?
Received-SPF: pass client-ip=80.12.242.30; envelope-from=da_vid@HIDDEN;
helo=smtp.smtpout.orange.fr
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001,
RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)
This is a multi-part message in MIME format.
--------------n1eQXsc1ZT8h0XgHFf6i8M60
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Hello
In the cl-generic library, the implementation of the
`cl-generic-generalizers' "typeof" method, used to dispatch
"normal types", mentions in a FIXME on line 1367: "Add support for
other "types" accepted by `cl-typep' such as `character', `face',
`keyword', ...?".
As part of some other works, I created the attached "gtype" library,
which complements `cl-deftype' so that such defined types are also
recognized as argument types for dispatching generic function methods.
Here is a quick example of use:
(defgtype face nil ()
"A face type."
'(satisfies facep))
(gtype-of 'default)
=> face
(cl-type-of 'default)
=> symbol
(cl-defmethod my-add-face ((text string) (face face))
(propertize text 'face face))
=> my-add-face
(my-add-face "text" 'bold)
=> #("text" 0 4 (face bold))
(my-add-face "text" 'bad-face)
=> No applicable method: add-face, "text", bad-face
I've been using this library successfully in some of my code, and was
wondering if it could help add this functionality to Emacs. My goal
is not to include this library, but to use it as a starting point for
further reflection on this subject.
My library is relatively concise and adopts a design similar to that
used for built-in types. The new types (which I call "gtypes") are
instances of the structure `gtype-class', derived from `cl--class',
just as built-in types are instances of the structure `built-in-class'
also derived from `cl--class'. gtypes thus benefits from the existing
infrastructure used for other types. I also chose to have a separate
"generalizer" for gtypes. I'm not sure if it would be desirable to
extend the existing generalizer "typof" to support such types.
I would therefore be interested in hearing more expert opinions on
my implementation and whether it could help add this functionality to
cl-generic, if it makes sense.
Thank you for your time.
--------------n1eQXsc1ZT8h0XgHFf6i8M60
Content-Type: text/x-emacs-lisp; charset=UTF-8; name="gtype.el"
Content-Disposition: attachment; filename="gtype.el"
Content-Transfer-Encoding: base64
Ozs7IGd0eXBlLmVsIC0tLSBEYXRhIHR5cGVzIGZvciBnZW5lcmljIGZ1bmN0aW9ucyAtKi0g
bGV4aWNhbC1iaW5kaW5nOnQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMjUgRGF2aWQgUG9u
Y2UKCjs7IEF1dGhvcjogRGF2aWQgUG9uY2UgPGRhX3ZpZEBvcmFuZ2UuZnI+Cjs7IE1haW50
YWluZXI6IERhdmlkIFBvbmNlIDxkYV92aWRAb3JhbmdlLmZyPgo7OyBDcmVhdGVkOiA2IEFw
cmlsIDIwMjUKOzsgS2V5d29yZHM6IGV4dGVuc2lvbnMKCjs7IFRoaXMgZmlsZSBpcyBub3Qg
cGFydCBvZiBHTlUgRW1hY3MuCgo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCjs7IG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCjs7IHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m
IHRoZQo7OyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsIGJ1dAo7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCjs7IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFs
b25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcv
bGljZW5zZXMvPi4KCjs7OyBDb21tZW50YXJ5Ogo7Owo7OyBUaGlzIGxpYnJhcnkgZXh0ZW5k
cyBgY2wtZGVmdHlwZScgdG8gZGVmaW5lIGBndHlwZXMnLCBpLmUuIGRhdGEKOzsgdHlwZXMg
ZGVmaW5lZCBieSAnY2wtZGVmdHlwZScgd2hpY2ggYXJlIGFsc28gdmFsaWQgYXJndW1lbnQg
dHlwZXMKOzsgZm9yIGRpc3BhdGNoaW5nIGdlbmVyaWMgZnVuY3Rpb24gbWV0aG9kcy4KOzsK
OzsgVGhlIG1haW4gZW50cnkgcG9pbnRzIGFyZToKOzsKOzsgLSBgZGVmZ3R5cGUnLCBhIG1h
Y3JvIHRoYXQgZGVmaW5lcyBhIGd0eXBlLgo7Owo7OyAtIGBndHlwZS1vZicsIGEgZnVuY3Rp
b24gdGhhdCBsb29rdXAgdGhlIGd0eXBlIG9mIGFuIG9iamVjdC4KOzsKOzsgLSBgcmVtZ3R5
cGUnLCBhIG1hY3JvIHRoYXQgcmVtb3ZlcyBhIGd0eXBlLgo7Owo7OyBBIHRyaXZpYWwgZXhh
bXBsZToKOzsKOzsgKGRlZmd0eXBlIG5lZ2F0aXZlIG5pbCAoKQo7OyAgICJBIG5lZ2F0aXZl
IG51bWJlciIKOzsgICAnKGFuZCBudW1iZXIgKHNhdGlzZmllcyBtaW51c3ApKSkKOzsKOzsg
KGRlZmd0eXBlIHplcm8gbmlsICgpCjs7ICAgIkEgemVybyBudW1iZXIiCjs7ICAgJyhhbmQg
bnVtYmVyIChzYXRpc2ZpZXMgemVyb3ApKSkKOzsKOzsgKGRlZmd0eXBlIHBvc2l0aXZlIG5p
bCAoKQo7OyAgICJBIHBvc2l0aXZlIG51bWJlciIKOzsgICAnKGFuZCBudW1iZXIgKHNhdGlz
ZmllcyBwbHVzcCkpKQo7Owo7OyAoY2wtZGVmbWV0aG9kIHRlc3QtbnVtYmVyICgobiBuZWdh
dGl2ZSkpCjs7ICAgKGZvcm1hdCAibmVnYXRpdmUgbnVtYmVyLCAlcyIgbikpCjs7Cjs7IChj
bC1kZWZtZXRob2QgdGVzdC1udW1iZXIgKChuIHplcm8pKQo7OyAgIChmb3JtYXQgInplcm8g
bnVtYmVyLCAlcyIgbikpCjs7Cjs7IChjbC1kZWZtZXRob2QgdGVzdC1udW1iZXIgKChuIHBv
c2l0aXZlKSkKOzsgICAoZm9ybWF0ICJwb3NpdGl2ZSBudW1iZXIsICVzIiBuKSkKOzsKOzsg
KHRlc3QtbnVtYmVyIC0xMjMuMCkKOzsgPT4gIm5lZ2F0aXZlIG51bWJlciwgLTEyMy4wIgo7
OyAodGVzdC1udW1iZXIgKGFicyAtMTIzLjApKQo7OyA9PiAicG9zaXRpdmUgbnVtYmVyLCAx
MjMuMCIKOzsgKHRlc3QtbnVtYmVyIChyb3VuZCAwLjAwMDAwMDAwMDAwMSkpCjs7ID0+ICJ6
ZXJvIG51bWJlciwgMCIKOzsKOzsgUGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnM6Cjs7Cjs7
IFRoZSBjcml0aWNhbCBwb2ludCBvZiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB0
aGUgZnVuY3Rpb24KOzsgYGd0eXBlLW9mJyB3aGljaCBzZXF1ZW50aWFsbHkgdHJpZXMgYWxs
IGtub3duIGd0eXBlcywgZnJvbSB0aGUgbW9zdAo7OyBzcGVjaWZpYyB0byB0aGUgbW9zdCBn
ZW5lcmFsLCB1bnRpbCB0aGUgbW9zdCBzcGVjaWZpYyBndHlwZSB0aGF0Cjs7IGFwcGxpZXMg
dG8gYSBnaXZlbiBvYmplY3QgaXMgZm91bmQuICBUaGVyZWZvcmUsIHRoZSBtYXhpbXVtIHRp
bWUgdG8KOzsgZmluZCBhbiBvYmplY3QncyB0eXBlIGRpcmVjdGx5IGRlcGVuZHMgb24gdGhl
IG51bWJlciBvZiBndHlwZXMgdG8KOzsgdHJ5LiAgSXMgdGhlcmUgYSBiZXR0ZXIgc29sdXRp
b24/ICBBbnl3YXksIGFzc3VtaW5nIHRoYXQgZWFjaAo7OyBzaW5nbGUgdGVzdCB0byBrbm93
IHdoZXRoZXIgYW4gb2JqZWN0IGlzIG9mIGEgZ2l2ZW4gZ3R5cGUgaXMKOzsgcmVhc29uYWJs
eSBmYXN0LCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBzZWVtcwo7
OyBhY2NlcHRhYmxlIChiYXNlZCBvbiB0aGUgdHJpdmlhbCBleGFtcGxlIGFib3ZlLCBhdHRl
bXB0aW5nIDEsMDAwCjs7IGd0eXBlIGNoZWNrcyB0YWtlcyBhYm91dCBoYWxmIGEgbWlsbGlz
ZWNvbmQgb24gbXkgc2V0dXApLgo7OwoKOzs7IENvZGU6Cjs7CihyZXF1aXJlICdjbC1saWIp
CgooY2wtZGVmc3RydWN0CiAgICAoZ3R5cGUtY2xhc3MKICAgICAoOmluY2x1ZGUgY2wtLWNs
YXNzKQogICAgICg6bm9pbmxpbmUgdCkKICAgICAoOmNvbnN0cnVjdG9yIG5pbCkKICAgICAo
OmNvbnN0cnVjdG9yIGd0eXBlLS1jbGFzcy1tYWtlCiAgICAgICAgICAgICAgICAgICAobmFt
ZSBkb2NzdHJpbmcgcGFyZW50LXR5cGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAmYXV4
IChwYXJlbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAodHlwZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChvciAoY2wtLWZpbmQtY2xhc3MgdHlwZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIlVua25vd24gdHlwZTog
JVMiIHR5cGUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtdHlw
ZXMpKSkpCiAgICAgKDpjb3BpZXIgbmlsKSkKICAiVHlwZSBkZXNjcmlwdG9ycyBmb3IgZ3R5
cGVzLiIpCgooZGVmdmFyIGd0eXBlLS1saXN0IG5pbAogICJMaXN0IG9mIGFsbCB0aGUgZ3R5
cGVzIGN1cnJlbnRseSBkZWZpbmVkLiIpCgooZGVmaW5lLWlubGluZSBndHlwZS1wIChvYmpl
Y3QpCiAgIlJldHVybiBub24tbmlsIGlmIHRoZSB0eXBlIG9mIE9CSkVDVCBpcyBhIGd0eXBl
LiIKICAoaW5saW5lLWxldGV2YWxzIChvYmplY3QpCiAgICAoaW5saW5lLXF1b3RlCiAgICAg
KGFuZCAoc3ltYm9scCAsb2JqZWN0KQogICAgICAgICAgKGVxICh0eXBlLW9mIChjbC0tZmlu
ZC1jbGFzcyAsb2JqZWN0KSkgJ2d0eXBlLWNsYXNzKSkpKSkKCihkZWZtYWNybyBndHlwZS0t
YWxscGFyZW50cyAobmFtZSkKICAiUmV0dXJuIGFsbCBwYXJlbnRzIG9mIHR5cGUgd2l0aCBO
QU1FLgpOQU1FIG11c3QgYmUgYSBzeW1ib2wgcmVwcmVzZW50aW5nIGEgdHlwZS4iCiAgOzsg
VG8gc2F2ZSBjYWxscyB0byBgY2wtLWNsYXNzLWFsbHBhcmVudHMnIGNhY2hlIHBhcmVudHMg
b2YgZ3R5cGVzCiAgOzsgKHBvc3NpYmx5IGJ1aWx0aW4gdHlwZXMpLiBgZ3R5cGUtLXJlZ2lz
dGVyJyB0YWtlcyBjYXJlIG9mCiAgOzsgY2xlYXJpbmcgY2FjaGVkIHZhbHVlcyBpZiBhIGd0
eXBlIGlzIHJlZGVmaW5lZDsgYW5kIHRoZXJlIHNob3VsZAogIDs7IGJlIG5vdGhpbmcgdG8g
ZG8gZm9yIGJ1aWx0aW4gdHlwZXMgd2hpY2ggc2hvdWxkIG5vdCBjaGFuZ2UuCiAgYChvciAo
Z2V0ICxuYW1lICdndHlwZS0tYWxscGFyZW50cykKICAgICAgIChwdXQgLG5hbWUgJ2d0eXBl
LS1hbGxwYXJlbnRzCiAgICAgICAgICAgIChjbC0tY2xhc3MtYWxscGFyZW50cyAoY2wtLWZp
bmQtY2xhc3MgLG5hbWUpKSkpKQoKKGRlZnVuIGd0eXBlLXBhcmVudHMgKG5hbWUpCiAgIkdl
dCBwYXJlbnRzIG9mIHR5cGUgd2l0aCBOQU1FLgpOQU1FIGlzIGEgc3ltYm9sIHJlcHJlc2Vu
dGluZyBhIHR5cGUuClJldHVybiBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgdHlwZXMuIgog
IChhbmQgKHN5bWJvbHAgbmFtZSkKICAgICAgIChsZXQgKChjbGFzcyAoY2wtLWZpbmQtY2xh
c3MgbmFtZSkpKQogICAgICAgICAoaWYgY2xhc3MKICAgICAgICAgICAgIChpZiAobWVtcSAo
dHlwZS1vZiBjbGFzcykgJyhndHlwZS1jbGFzcyBidWlsdC1pbi1jbGFzcykpCiAgICAgICAg
ICAgICAgICAgOzsgQ2FjaGUgZ3R5cGUgKGFuZCBidWlsdGluIHR5cGUpIHBhcmVudHMuCiAg
ICAgICAgICAgICAgICAgKGd0eXBlLS1hbGxwYXJlbnRzIG5hbWUpCiAgICAgICAgICAgICAg
IDs7IERvbid0IGNhY2hlIG90aGVyIHR5cGUgcGFyZW50cy4KICAgICAgICAgICAgICAgKGNs
LS1jbGFzcy1hbGxwYXJlbnRzIGNsYXNzKSkpKSkpCgooZGVmdW4gZ3R5cGUtY2hpbGRyZW4g
KG5hbWUpCiAgIkdldCBjaGlsZHJlbiBvZiB0aGUgZ3R5cGUgd2l0aCBOQU1FLgpOQU1FIGlz
IGEgc3ltYm9sIHJlcHJlc2VudGluZyBhIGd0eXBlLgpSZXR1cm4gYSBwb3NzaWJseSBlbXB0
eSBsaXN0IG9mIHR5cGVzLiIKICAobGV0IChjaGlsZHJlbikKICAgIChkb2xpc3QgKGVsdCBn
dHlwZS0tbGlzdCkKICAgICAgKG9yIChlcSBuYW1lIGVsdCkKICAgICAgICAgIChpZiAobWVt
cSBuYW1lIChndHlwZS0tYWxscGFyZW50cyBlbHQpKQogICAgICAgICAgICAgIChwdXNoIGVs
dCBjaGlsZHJlbikpKSkKICAgIGNoaWxkcmVuKSkKCihkZWZ1biBndHlwZS0tcmVnaXN0ZXIg
KG5hbWUgJm9wdGlvbmFsIHBhcmVudHMgYXJncykKICAiUmVnaXN0ZXIgYSBndHlwZSB3aXRo
IE5BTUUgYW5kIFBBUkVOVFMuCkFSR1MgYXJlIHRob3NlIHRoYXQgd2lsbCBiZSBwYXNzZWQg
dG8gYGNsLWRlZnR5cGUnLiIKICA7OyBBdCB0aGlzIHBvaW50IE5BTUUgbXVzdCBiZSBhIGRl
ZmluZWQgdHlwZS4KICAoY2wtYXNzZXJ0IChnZXQgbmFtZSAnY2wtZGVmdHlwZS1oYW5kbGVy
KSBuaWwKICAgICAgICAgICAgICJVbmtub3duIHR5cGUgJVMiIG5hbWUpCiAgKGxldCAoKGNs
YXNzIChjbC0tZmluZC1jbGFzcyBuYW1lKSkKICAgICAgICAocmVnZWQgKG1lbXEgbmFtZSBn
dHlwZS0tbGlzdCkpKQogICAgKGlmIChudWxsIGNsYXNzKQogICAgICAgIChjbC1hc3NlcnQg
KG51bGwgcmVnZWQpIG5pbCAiRXhpc3RpbmcgdHlwZSBub3QgcmVnaXN0ZXJlZCIpCiAgICAg
IChjbC1hc3NlcnQgcmVnZWQgbmlsICJOZXcgdHlwZSBhbHJlYWR5IHJlZ2lzdGVyZWQiKQog
ICAgICAoY2wtYXNzZXJ0IChlcSAodHlwZS1vZiBjbGFzcykgJ2d0eXBlLWNsYXNzKSBuaWwK
ICAgICAgICAgICAgICAgICAiVHlwZSBpcyBpbiBhbm90aGVyIGNsYXNzOiAlUyIgKHR5cGUt
b2YgY2xhc3MpKSkKICAgIChvciAobGlzdHAgcGFyZW50cykgKHNldHEgcGFyZW50cyAobGlz
dCBwYXJlbnRzKSkpCiAgICAoY2wtYXNzZXJ0IChudWxsIChtZW1xIG5hbWUgcGFyZW50cykp
IG5pbAogICAgICAgICAgICAgICAiVHlwZSBpcyBpbiBwYXJlbnRzOiAlUyIgcGFyZW50cykK
ICAgIDs7IFNldHVwIGEgdHlwZSBkZXNjcmlwdG9yIGZvciBOQU1FLCB3aXRoIFBBUkVOVFMg
YW5kIHRoZSBkb2NzdHJpbmcKICAgIDs7IHBvc3NpYmx5IHByZXNlbnQgaW4gQVJHUy4KICAg
IChsZXQgKChkb2NzdHJpbmcgKGNhYXIgKG1hY3JvZXhwLXBhcnNlLWJvZHkgKGNkciBhcmdz
KSkpKSkKICAgICAgKG9yIChzdHJpbmdwIGRvY3N0cmluZykgKHNldHEgZG9jc3RyaW5nIG5p
bCkpCiAgICAgIChzZXRmIChjbC0tZmluZC1jbGFzcyBuYW1lKQogICAgICAgICAgICAoZ3R5
cGUtLWNsYXNzLW1ha2UgbmFtZSBkb2NzdHJpbmcgcGFyZW50cykpKQogICAgKGlmIGNsYXNz
CiAgICAgICAgOzsgQ2xlYXIgdGhlIGNhY2hlZCB2YWx1ZSBvZiBwYXJlbnRzIGZvciBlYWNo
IGNoaWxkcmVuIG9mIGEKICAgICAgICA7OyBtb2RpZmllZCBndHlwZS4KICAgICAgICAoZG9s
aXN0IChjIChndHlwZS1jaGlsZHJlbiBuYW1lKSkKICAgICAgICAgIChjbC1yZW1wcm9wIGMg
J2d0eXBlLS1hbGxwYXJlbnRzKSkKICAgICAgOzsgUmVjb3JkIHRoZSBuZXcgdHlwZS4KICAg
ICAgKHB1c2ggbmFtZSBndHlwZS0tbGlzdCkpCiAgICA7OyBUbyBmaW5kIHRoZSBtb3N0IHBv
c3NpYmxlIHNwZWNpZmljIGd0eXBlIG9mIGFuIG9iamVjdCwgdGhlIG1vc3QKICAgIDs7IHNw
ZWNpZmljIHR5cGVzIG11c3QgYmUgdHJpZWQgYmVmb3JlIHRoZSBtb3JlIGdlbmVyYWwgdHlw
ZXMuIFRoZQogICAgOzsgbGlzdCBvZiBndHlwZXMgaXMgdGhlcmVmb3JlIHNvcnRlZCBhY2Nv
cmRpbmdseSwgYXNzdW1pbmcgZWFjaAogICAgOzsgdHlwZSBpcyBkaXN0aW5jdCBhbmQgdGhh
dCB0aGUgbW9yZSBwYXJlbnRzIGEgdHlwZSBoYXMsIHRoZSBtb3JlCiAgICA7OyBzcGVjaWZp
YyBpdCBpcy4KICAgIChzZXRxIGd0eXBlLS1saXN0CiAgICAgICAgICAoc29ydCBndHlwZS0t
bGlzdAogICAgICAgICAgICAgICAgOmtleSAobGFtYmRhICh0eXBlKSAobGVuZ3RoIChndHlw
ZS0tYWxscGFyZW50cyB0eXBlKSkpCiAgICAgICAgICAgICAgICA6bGVzc3AgIyc+PQogICAg
ICAgICAgICAgICAgOmluLXBsYWNlIHQpKQogICAgbmFtZSkpCgooZGVmdW4gZ3R5cGUtLXVu
cmVnaXN0ZXIgKG5hbWUpCiAgIlVucmVnaXN0ZXIgdGhlIGd0eXBlIHdpdGggTkFNRS4iCiAg
KGNsLWNoZWNrLXR5cGUgbmFtZSAoc2F0aXNmaWVzIGd0eXBlLXApKQogIChjbC1hc3NlcnQg
KG51bGwgKGd0eXBlLWNoaWxkcmVuIG5hbWUpKSB0ICJUeXBlIGhhcyBjaGlsZHJlbjogJVMi
KQogIChjbC1yZW1wcm9wIG5hbWUgJ2d0eXBlLS1hbGxwYXJlbnRzKQogIChjbC1yZW1wcm9w
IG5hbWUgJ2NsLS1jbGFzcykKICAoY2wtcmVtcHJvcCBuYW1lICdjbC1kZWZ0eXBlLWhhbmRs
ZXIpCiAgKHNldHEgZ3R5cGUtLWxpc3QgKGRlbHEgbmFtZSBndHlwZS0tbGlzdCkpCiAgbmls
KQoKOzs7IyMjYXV0b2xvYWQKKGRlZm1hY3JvIGRlZmd0eXBlIChuYW1lICZvcHRpb25hbCBw
YXJlbnRzICZyZXN0IGFyZ3MpCiAgIkRlZmluZSBOQU1FIGFzIGEgZ3R5cGUgdGhhdCBpbmhl
cml0cyBmcm9tIFBBUkVOVFMuCklmIGEgZ3R5cGUgd2l0aCBOQU1FIGFscmVhZHkgZXhpc3Rz
LCByZXBsYWNlIGl0LgoKTkFNRSBpcyBhbiB1bnF1b3RlZCBzeW1ib2wgcmVwcmVzZW50aW5n
IGEgZ3R5cGUuCgpPcHRpb25hbCBhcmd1bWVudCBQQVJFTlRTIGlzIGVpdGhlciBhbiB1bnF1
b3RlZCBzeW1ib2wgb3IgbGlzdCBvZgpzeW1ib2xzIG90aGVyIHRoYW4gTkFNRSByZXByZXNl
bnRpbmcgdHlwZXMgcGFyZW50cyBvZiBOQU1FLgpQQVJFTlRTIG5pbCBvciBvbWl0dGVkIG1l
YW5zIHRoYXQgTkFNRSBpcyBhIHJvb3QgdHlwZS4KCkFsc28gcGFzcyBOQU1FIGFuZCBBUkdT
IHRvIGBjbC1kZWZ0eXBlJyB0byBkZWZpbmUgTkFNRSBhcyBhIG5ldyBkYXRhCnR5cGUuIgog
IChkZWNsYXJlIChkZWJ1ZyBjbC1kZWZtYWNybykgKGRvYy1zdHJpbmcgNCkgKGluZGVudCAz
KSkKICBgKHByb2duCiAgICAgKGNsLWRlZnR5cGUgLG5hbWUgLEBhcmdzKQogICAgIChndHlw
ZS0tcmVnaXN0ZXIgJyxuYW1lICcscGFyZW50cyAnLGFyZ3MpKSkKCihkZWZtYWNybyByZW1n
dHlwZSAobmFtZSkKICAiUmVtb3ZlIHRoZSBndHlwZSB3aXRoIE5BTUUuCk5BTUUgaXMgYW4g
dW5xdW90ZWQgc3ltYm9sIHJlcHJlc2VudGluZyBhIGd0eXBlLgpTaWduYWwgYW4gZXJyb3Ig
aWYgb3RoZXIgZ3R5cGVzIGluaGVyaXQgZnJvbSBOQU1FLiIKICBgKGd0eXBlLS11bnJlZ2lz
dGVyICcsbmFtZSkpCgo7OyBJbnRlcm5hbCBkYXRhIHVzZWQgdG8gZGV0ZWN0IGVuZGxlc3Mg
cmVjdXJzaW9uIGluICdndHlwZS1vZicuCihkZWZ2YXIgZ3R5cGUtLW9iamVjdCAobWFrZS1z
eW1ib2wgInZvaWQiKSkKKGRlZnZhciBndHlwZS0tdHlwZSBuaWwpCgooZGVmdW4gZ3R5cGUt
b2YgKG9iamVjdCkKICAiUmV0dXJuIHRoZSBtb3N0IHNwZWNpZmljIHBvc3NpYmxlIGd0eXBl
IG9mIE9CSkVDVCwgb3IgbmlsIGlmIG5vbmUuIgogIDs7IElnbm9yZSByZWN1cnNpdmUgY2Fs
bCBvbiB0aGUgc2FtZSBPQkpFQ1QsIHdoaWNoIGNhbiBsZWdpdGltYXRlbHkKICA7OyBvY2N1
ciB3aGVuLCBmb3IgZXhhbXBsZSwgYSBwYXJlbnQgdHlwZSBpcyBpbnZlc3RpZ2F0aW5nIHdo
ZXRoZXIKICA7OyBhbiBvYmplY3QncyB0eXBlIGlzIHRoYXQgb2Ygb25lIG9mIGl0cyBjaGls
ZHJlbi4KICAodW5sZXNzIChlcSBvYmplY3QgZ3R5cGUtLW9iamVjdCkKICAgIChsZXQgKChn
dHlwZS0tb2JqZWN0IG9iamVjdCkKICAgICAgICAgICh0eXBlcyBndHlwZS0tbGlzdCkKICAg
ICAgICAgIGZvdW5kKQogICAgICA7OyBUcnkgZWFjaCBndHlwZSwgZnJvbSBtb3N0IHNwZWNp
ZmljIHRvIGxlYXN0IHNwZWNpZmljLCB1bnRpbAogICAgICA7OyBvbmUgaXMgZm91bmQgYXMg
dGhlIG1vc3Qgc3BlY2lmaWMgcG9zc2libGUgZ3R5cGUgb2YgT0JKRUNULgogICAgICAod2hp
bGUgKGFuZCAobm90IGZvdW5kKSB0eXBlcykKICAgICAgICAobGV0ICgoZ3R5cGUtLXR5cGUg
KGNhciB0eXBlcykpKQogICAgICAgICAgKGlmIChjbC10eXBlcCBvYmplY3QgZ3R5cGUtLXR5
cGUpCiAgICAgICAgICAgICAgKHNldHEgZm91bmQgZ3R5cGUtLXR5cGUpCiAgICAgICAgICAg
IChzZXRxIHR5cGVzIChjZHIgdHlwZXMpKSkpKQogICAgICBmb3VuZCkpKQoKOzs7IE1ldGhv
ZCBkaXNwYXRjaGluZwo7OwooZGVmdW4gZ3R5cGUtLXNwZWNpYWxpemVycyAodGFnICZyZXN0
IF8pCiAgIklmIFRBRyBpcyBhIGd0eXBlLCByZXR1cm4gaXRzIHNwZWNpYWxpemVycy4iCiAg
KGlmIChndHlwZS1wIHRhZykgKGd0eXBlLS1hbGxwYXJlbnRzIHRhZykpKQoKKGNsLWdlbmVy
aWMtZGVmaW5lLWdlbmVyYWxpemVyIGd0eXBlLS1nZW5lcmFsaXplcgogIDEwCiAgKGxhbWJk
YSAob2JqICZyZXN0IF8pIGAoZ3R5cGUtb2YgLG9iaikpCiAgIydndHlwZS0tc3BlY2lhbGl6
ZXJzKQoKKGNsLWRlZm1ldGhvZCBjbC1nZW5lcmljLWdlbmVyYWxpemVycyA6ZXh0cmEgImd0
eXBlLW9mIiAodHlwZSkKICAiU3VwcG9ydCBmb3IgZGlzcGF0Y2ggb24gZ3R5cGVzLiIKICAo
aWYgKGd0eXBlLXAgdHlwZSkKICAgICAgKGxpc3QgZ3R5cGUtLWdlbmVyYWxpemVyKQogICAg
KGNsLWNhbGwtbmV4dC1tZXRob2QpKSkKCihwcm92aWRlICdndHlwZSkKCjs7OyBndHlwZS5l
bCBlbmRzIGhlcmUK
--------------n1eQXsc1ZT8h0XgHFf6i8M60--
David Ponce <da_vid@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#77725; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.