Subject: Re: bug#55972: 28.1; Package quickstart generated for large number of packages generates byte-code string larger than 64K, triggering bytecode overflow error

From: Jonas Bernoulli <[email-masked]>
Date: Wed, 13 Sep 2023 16:52:06 +0200

Stefan Kangas <[email-masked]> writes:

> Stefan Monnier <[email-masked]> writes:
>
>>> For instance, `magit` generates a 5 KiB bytecode chunk and 750-element
>>> constant vector which is perfectly manageable, but a package with more
>>> autoloads may be troublesome. Do you know a package that would fit
>>> the description?
>>
>> I suspect none.  I suspect in the case of Magit the magit-autoloads.el
>> file is actually too large for its own good: it should probably be split
>> into autoloads that "face outside" (i.e. those that need to be defined
>> before Magit is used) from those facing inside (those that are needed
>> for internal lazy loading).
>
> Copying in Jonas, in case he has any comments.

I have no idea how I would split the autoloads into two parts.  Is there
some mechanism, say ;;;###autoload[external] / ;;;###autoload[internal],
that would be respected by `loaddefs-generate' and/or code that uses that?
Does package.el know how to use it, and what about other package managers
and homegrown makefiles and scripts?

Then there is also the question of how much work it would mean for me to
go over all autoloaded things and decide which bucket they belong into.