<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/pkgcache.h, branch 3.1.11</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.1.11</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.1.11'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-10-25T18:42:14Z</updated>
<entry>
<title>Implement architecture variants</title>
<updated>2025-10-25T18:42:14Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-01-07T16:39:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=9d62eef571ffd1fd2df8b97884d3689fced27fb1'/>
<id>urn:sha1:9d62eef571ffd1fd2df8b97884d3689fced27fb1</id>
<content type='text'>
Architecture variants are children of an architecture that share
the same ABI but are optimized for different ISA levels. They
are available in Ubuntu 25.10 and newer, and not supported in
Debian or other distributions.

A deb built for a variant contains the Architecture-Variant field,
and the Architecture field points to the baseline, for example:

    Architecture: amd64
    Architecture-Variant: amd64v3

However, the apt-get indextargets command reports the variant in the
Architecture: field, and most of the code in APT presents the variant
as the architecture.

There are two types of variants:

1. Standalone variants are recorded in the Architectures field of the
   Release file as if they were a real architecture:

        Architectures: amd64 amd64v3

   Standalone architecture variants only fetch the standalone
   architecture variant's Packages file. To do this, this patch
   changes the code such that the variants indextargets "supplant"
   the base targets.

   This may have complicated outcomes on the apt-get indextargets
   command.

2. Other variants can only be identified by their files being recorded
   with hashes in the Release file.

   APT fetches both the base architecture's as well as the variant's
   Packages file.

Variants are configured in the

    APT::Architecture-Variants

list.

Image builders may want to build specific variant images using

    APT::Architecture-Variants { "amd64v3"; }

But this commit also implements an automatic discovery mechanism
using the varianttable and /proc/cpuinfo.

    APT::Architecture-Variants "auto";
</content>
</entry>
<entry>
<title>Avoid cast alignment warning in cache string view</title>
<updated>2025-06-10T15:29:33Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-06-10T15:23:41Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ed836aa73a87b9d60e81c607d5b4f57e9b82f948'/>
<id>urn:sha1:ed836aa73a87b9d60e81c607d5b4f57e9b82f948</id>
<content type='text'>
The cache allocates strings as

    uint16_t size;
    char content[];
    char zero;

Aligned to the uint16_t. When doing the casting, this causes a
warning on some architectures that cannot do unaligned loads, such
as armhf.

Use __builtin_assume_aligned() to explictly say that the pointer
is aligned to 16 bits. This is a bit of a backhanded approach,
as the warning seems to be actually avoided by the function
returning a void* rather than the assumed alignment, but this
is very much self-documenting.
</content>
</entry>
<entry>
<title>Add missing #include &lt;string_view&gt;</title>
<updated>2025-02-15T15:57:45Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-15T15:57:45Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=957de0abd4a3c5fe9142b48455165498ea785b3c'/>
<id>urn:sha1:957de0abd4a3c5fe9142b48455165498ea785b3c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cache: Introduce partial SourceVersion support</title>
<updated>2025-02-15T15:37:19Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-15T15:37:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4bcb198a67156b2654f3b64173499ab78f0d4d9a'/>
<id>urn:sha1:4bcb198a67156b2654f3b64173499ab78f0d4d9a</id>
<content type='text'>
This is the first step that introduces a 1:1 mapping between version
and source version. In a future version this can use the fields
currently marked unavailable to deduplicate the SourceVersion
objects across the group.

The policy gains a member for storing pins for sourceversions.

Together, in the future we should be able to determine candidates
for source versions.
</content>
</entry>
<entry>
<title>Run unifdef -DAPT_PKG_ABI=700 again</title>
<updated>2025-02-15T08:40:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-15T08:40:15Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6e877571bc2dd50e38f2f35675c401d74dbe233d'/>
<id>urn:sha1:6e877571bc2dd50e38f2f35675c401d74dbe233d</id>
<content type='text'>
main picked up a couple new ifdefs since the branch started; so
clean them up again.
</content>
</entry>
<entry>
<title>APT::StringView -&gt; std::string_view [textonly]</title>
<updated>2025-02-14T18:45:12Z</updated>
<author>
<name>наб</name>
<email>nabijaczleweli@nabijaczleweli.xyz</email>
</author>
<published>2024-11-12T16:59:18Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=793c9b1f3059c35b66c19f62fa39b6607809fea0'/>
<id>urn:sha1:793c9b1f3059c35b66c19f62fa39b6607809fea0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Drop unused version stanza size info from binary cache</title>
<updated>2025-01-30T19:10:50Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2025-01-30T18:03:26Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=1bc8dab8df60c5da7cc817bec5f53e60f7eb9817'/>
<id>urn:sha1:1bc8dab8df60c5da7cc817bec5f53e60f7eb9817</id>
<content type='text'>
Same reason as with the description size before, but this one had
actually one extremely dated user in src:apt left with dumpavail,
which is changed to an implementation that is (in comparison) a bit
slower, but should be good enough for a command that is ideally not
used anymore (even if codesearch suggests otherwise).

After all, what makes this a bit slower is not that we don't know the
size, but that this one does additional work preparing for accessing
the fields which we don't do. In exchange pkgTagFile has a better
implementation for "Jitter" than the old code that we would "just"
need to copy here if speed were really an issue.
</content>
</entry>
<entry>
<title>Drop unused description size info from binary cache</title>
<updated>2025-01-30T16:39:40Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2025-01-30T16:39:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=1bc221a9dd22baa6e2e516d45dc858774cafddd0'/>
<id>urn:sha1:1bc221a9dd22baa6e2e516d45dc858774cafddd0</id>
<content type='text'>
Nothing in src:apt uses this information and that isn't all to
surprising as it is usually not that interesting to know how big
a specific stanza of a description is as the max size is available
and you are usually working with more than one description.

So this information just takes up space in our binary cache…
64 bits per structure which can quickly add up to whole MBs
depending on how many (and which) sources you have enabled.
</content>
</entry>
<entry>
<title>Do not overflow ver/desc&lt;-&gt;file relation counters</title>
<updated>2025-01-30T15:22:14Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2025-01-30T15:22:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=2e39d0fdeff5f9db91b3490d6750c8033aca9057'/>
<id>urn:sha1:2e39d0fdeff5f9db91b3490d6750c8033aca9057</id>
<content type='text'>
The counters aren't used for anything really except for the 'stats'
command that is off in its display and calculation due to 16bit not
being enough for counting all the relations we have.

Semi-broken more than a decade ago as I accidentally aligned it with
the other file relation counters which count far less frequent ones
through, so 'unsigned long' should have been changed to the id type
rather than the smaller fileid type.

Of course, this commit only prepares the fix as this would be an ABI
break, so with the current ABI we are still overflowing.

Regression-of: 4ad8619bb1f0bf777d17c568bb7a6cf7f30aac34
</content>
</entry>
<entry>
<title>Add pkgCache::{Priority,DepType}_NoL10n to avoid duplication</title>
<updated>2025-01-05T22:16:08Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2024-12-26T20:43:34Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6828ae2c2f9268c8187f0fa91b3c464ed84a8476'/>
<id>urn:sha1:6828ae2c2f9268c8187f0fa91b3c464ed84a8476</id>
<content type='text'>
We don't have many places, but lets reduce the amount of duplicating
these short strings, so that we may find all the places we have to
change if that ever happens.
</content>
</entry>
</feed>
