Subject: bug#78844: 30.1; feature request: public interface for querying builtin packages and versions

From: Xiyue Deng <[email-masked]>
Date: Sat, 12 Jul 2025 00:59:43 -0700

Hi Eli,

Eli Zaretskii <[email-masked]> writes:

>> From: Xiyue Deng <[email-masked]>
>> Cc: Eli Zaretskii <[email-masked]>, [email-masked],
>>  [email-masked]
>> Date: Sat, 28 Jun 2025 17:36:03 -0700
>> 
>> Stefan Monnier <[email-masked]> writes:
>> 
>> >>> FWIW, I'd consider it an error if an entry in
>> >>> `package--builtin-versions` has a nil "version".
>> >>> There are no such things as "unversioned packages" in this respect.
>> >>> So, I think the code is OK but the docstring should not mention that
>> >>> we return nil for packages without a version.
>> >>
>> >> I think in principle you are correct given that the current public
>> >> functions don't provide a way to obtain such a symbol.  But it's
>> >> possible that someone can construct a symbol, either by hand or through
>> >> a new interface that queries all builtin packages, which is in
>> >> `package--builtins' but not in `package--builtin-versions', and the
>> >> function will return nil.  Do you think it's worth keeping such
>> >> possibility into consideration?
>> >
>> > Returning nil for packages (aka symbols) which aren't in
>> > `package--builtin-versions` is fine and I have no objection to
>> > documenting it.
>> >
>> > My objection is to
>> >
>> >     if @var{package} does not have a version
>> >
>> > but not to
>> >
>> >     if @var{package} ... is not a buil-tin package
>> >
>> 
>> I see.  Though technically people can get a package symbol from
>> `package--builtins', and hence built-in, but not in
>> `package--builtin-versions', and hence does not have a version
>> associated.  Maybe I can be more explicit to say "if @var{package} is
>> built-in but does not have a version ..."?  (Revised as such.)
>> 
>> > [ BTW, note the typo above.  ]
>> 
>> Thanks for spotting.  Also fixed.
>
> Now installed on the master branch, and closing the bug.
>
> Please note that there were missing pieces in the documentation part
> (missing menu items), which caused makeinfo to emit error messages.
> Please in the future always be sure to build Emacs with your patches,
> including the documentation, and please examine the output for any
> warnings/errors that need to be fixed.

Thanks for the fixes!  Will be more careful in the future.

-- 
Regards,
Xiyue Deng