portage-ng v1.5.0
Pre-release
Pre-release
What's Changed (since v1.4.0)
The headline of this release is interactive resolve speed: a warm-daemon IPC path with an ultralight SWI client (and an optional native C++ client), plus a full-tree pm-bench comparison against emerge, pkgcore, and Paludis.
Performance (pm-bench on vm-linux.local)
Process wall-clock for cold --pretend / resolve-only (not builds). Same Portage tree, VDB, and /etc/portage for every tool. portage-ng IPC uses a warm daemon; the timed sample is client connect + prove + print.
16,313 packages where emerge -vp exited 0 (actual plan):
| Tool | Median | Total | Median speedup vs emerge |
|---|---|---|---|
| emerge | 1,234 ms | 6.09 hours | 1.0× |
| cave (Paludis) | 520 ms | 6.22 hours | 2.4× |
| pmerge (pkgcore) | 245 ms | 1.28 hours | 5.0× |
ng-ipc (SWI ipclient.pl) |
82 ms | 32.4 minutes | 15.1× |
| ng-ipc-cpp (native client) | 55 ms | 25.0 minutes | 22.4× |
- C++ IPC is ~27 ms faster than the SWI lite client at the median (same daemon; gap is client boot).
- Both IPC clients finished every package in this set with exit code 0.
- Full methodology and all-package tables: Handbook ch. 26 · FEATURES.md
Ultralight IPC clients
--mode ipcfast-path loadsSource/Application/Client/ipclient.plonly (no common modules / world) — ~30 ms client overhead vs ~140 ms previously- Optional C++ client:
make ipcclient→Source/Application/Wrapper/ipcclient(functional parity: env forward, autostart,--status,--cmd halt|relaunch) - Full-stack
ipc.plremains the façade for daemon/server--backgroundforking; protocol lives inipclient - Escape hatch:
PORTAGE_NG_IPC_LEGACY=1for the old heavy boot path
pm-bench
- New wrapper for cold pretend timing across emerge / pmerge / cave / ng-standalone / ng-ipc / ng-ipc-cpp
--resumefor reboot-safe full-tree runs; live TSV append
Resolver
- Sub-slot ABI rebuilds proven in pass 1 via proof obligations (#89, #118)
- Fix sub-slot rebuild avalanche on perl major bumps (#118)
- Gate
||SlotScore to same-CN groups; stop slot-ranking ruby-single arms
Documentation
- Handbook performance chapter rewritten around pm-bench multi-PM wall-clock stats
- Pigeonhole-style slot allocation documented across resolvers
Full Changelog: v1.4.0...v1.5.0