Skip to content

portage-ng v1.5.0

Pre-release
Pre-release

Choose a tag to compare

@pvdabeel pvdabeel released this 13 Aug 17:18
· 1 commit to master since this 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 ipc fast-path loads Source/Application/Client/ipclient.pl only (no common modules / world) — ~30 ms client overhead vs ~140 ms previously
  • Optional C++ client: make ipcclientSource/Application/Wrapper/ipcclient (functional parity: env forward, autostart, --status, --cmd halt|relaunch)
  • Full-stack ipc.pl remains the façade for daemon/server --background forking; protocol lives in ipclient
  • Escape hatch: PORTAGE_NG_IPC_LEGACY=1 for the old heavy boot path

pm-bench

  • New wrapper for cold pretend timing across emerge / pmerge / cave / ng-standalone / ng-ipc / ng-ipc-cpp
  • --resume for 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