<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/cmdline, branch main</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=main</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2026-04-08T10:41:43Z</updated>
<entry>
<title>apt: modernize to make_unique C++17</title>
<updated>2026-04-08T10:41:43Z</updated>
<author>
<name>Herman Semenoff</name>
<email>GermanAizek@yandex.ru</email>
</author>
<published>2026-04-08T09:58:55Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=23dba65f031954df896bc3c6dfb1a9705574886b'/>
<id>urn:sha1:23dba65f031954df896bc3c6dfb1a9705574886b</id>
<content type='text'>
References:
- https://stackoverflow.com/questions/79700634/pros-and-cons-of-make-unique-vs-direct-constructor-call-in-c17
- https://towardsdev.com/why-std-make-unique-beats-new-in-modern-c-7e2ba653737e
- https://www.sololearn.com/en/Discuss/3334779/where-make_unique-is-better-than-unique_ptrraw-pointer
</content>
</entry>
<entry>
<title>apt: push to emplace C++11 if possible</title>
<updated>2026-04-08T10:40:55Z</updated>
<author>
<name>Herman Semenoff</name>
<email>GermanAizek@yandex.ru</email>
</author>
<published>2026-04-08T08:51:08Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ef70431f02e2ec13ecedab7ac342574e52d1877b'/>
<id>urn:sha1:ef70431f02e2ec13ecedab7ac342574e52d1877b</id>
<content type='text'>
References:
- https://www.reddit.com/r/cpp_questions/comments/pm63yx/why_clangtidy_says_use_emplace_back_instead_of/
- https://clang.llvm.org/extra/clang-tidy/checks/modernize/use-emplace.html
</content>
</entry>
<entry>
<title>apt: funcs called with a string literal consisting of a single character</title>
<updated>2026-04-08T08:37:24Z</updated>
<author>
<name>Herman Semenoff</name>
<email>GermanAizek@yandex.ru</email>
</author>
<published>2026-04-08T08:37:24Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=af5b9453a1908021cf75c348522c1a12eeb0dee4'/>
<id>urn:sha1:af5b9453a1908021cf75c348522c1a12eeb0dee4</id>
<content type='text'>
Benchmark:
- https://stackoverflow.com/questions/62058906/why-my-performance-benchmark-gives-me-wrong-results

References:
- https://clang.llvm.org/extra/clang-tidy/checks/performance/prefer-single-char-overloads.html
</content>
</entry>
<entry>
<title>Drop warning about unstable CLI interface</title>
<updated>2026-04-07T09:40:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2026-02-24T18:25:21Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f0c71b95ca00bae2b364c4b4858c51d84b002387'/>
<id>urn:sha1:f0c71b95ca00bae2b364c4b4858c51d84b002387</id>
<content type='text'>
A specific CLI version can now be requested using the --cli-version
flag, and old versions can be deprecated on a reasonable cadence.
Therefore, a warning is no longer necessary.

Gbp-Dch: full
</content>
</entry>
<entry>
<title>solver3: Extract DependencySolver</title>
<updated>2026-01-05T21:20:24Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-12-22T21:33:12Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=e92750f895af0e957d297c17149878235467cca1'/>
<id>urn:sha1:e92750f895af0e957d297c17149878235467cca1</id>
<content type='text'>
Extract almost all dependency logic into a subclass
</content>
</entry>
<entry>
<title>solver3: Refactor to use a namespace</title>
<updated>2026-01-05T21:20:24Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-12-22T21:12:33Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=59b8099d79b5e103585b66279f191f4cb421a770'/>
<id>urn:sha1:59b8099d79b5e103585b66279f191f4cb421a770</id>
<content type='text'>
This removes the need for the forward references, thus fixing part
of the libc++ issues pointed out in [merge-511].

[merge-511] https://salsa.debian.org/apt-team/apt/-/merge_requests/511/diffs
</content>
</entry>
<entry>
<title>fix compiling with musl</title>
<updated>2025-10-06T15:27:14Z</updated>
<author>
<name>Gyorgy Sarvari</name>
<email>skandigraun@gmail.com</email>
</author>
<published>2025-08-30T16:51:20Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4aa4fcfa83a7866ce1868465b473239326f92c7c'/>
<id>urn:sha1:4aa4fcfa83a7866ce1868465b473239326f92c7c</id>
<content type='text'>
In case apt is compiled against musl-libc, then compilation fails with the
following error:

cmdline/apt-internal-solver.cc:122:20: error: 'basename' was not declared in this scope; did you mean 'rename'?
|   122 |         if (strcmp(basename(argv[0]), "solver3") == 0)
|       |                    ^~~~~~~~
|       |                    rename

To fix it, include libgen header where musl can find this function also.

Once this is fixed, compilation fails once again with musl-libc, because
the basename function takes *char argument instead of const *char:
this is because the musl implementation cuts off the trailing slashes
of the path, in case the argument is a folder path.

To account for this, instead of passing argv[0] directly, create a non-const
string copy of it, and pass that to base.

Signed-off-by: Gyorgy Sarvari &lt;skandigraun@gmail.com&gt;
</content>
</entry>
<entry>
<title>Add history undo, redo, and rollback features</title>
<updated>2025-10-02T10:49:58Z</updated>
<author>
<name>Simon Johnsson</name>
<email>simon.johnsson@canonical.com</email>
</author>
<published>2025-10-02T10:49:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a65dca5d5e9b4bc71722bc91a5641126a1b0ec61'/>
<id>urn:sha1:a65dca5d5e9b4bc71722bc91a5641126a1b0ec61</id>
<content type='text'>
</content>
</entry>
<entry>
<title>History Command and Parsing</title>
<updated>2025-09-26T16:18:42Z</updated>
<author>
<name>Simon Johnsson</name>
<email>simon.johnsson@canonical.com</email>
</author>
<published>2025-09-26T16:18:42Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=66962bee233b617e4a9ce436f9b26875511b35e6'/>
<id>urn:sha1:66962bee233b617e4a9ce436f9b26875511b35e6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Introduce apt why, apt why-not</title>
<updated>2025-05-19T15:20:09Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-05-19T12:17:23Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7724d170751b3dc1717ba7a08881437cf7151996'/>
<id>urn:sha1:7724d170751b3dc1717ba7a08881437cf7151996</id>
<content type='text'>
These are implemented somewhat differently from aptitudes
why and why-not commands: They produce the actual solver
trace for why a particular decision has been taken.

For the why-not case, we need to explicitly discover our
specified package, as if nothing else depends on it in
our graph, it would otherwise always be undiscovered and
conflicts not detected (see e.g. level-3 in the test).
</content>
</entry>
</feed>
