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

From: Stefan Monnier <[email-masked]>
Date: Sat, 28 Jun 2025 17:27:03 -0400

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

[ BTW, note the typo above.  ]

        Stefan