pkgconf/libpkgconf
Ariadne Conill 80b5011e69 Use traverse_serial to short circuit graph evaluation for already visited nodes.
In our previous attempt to optimize this problem, we did not track the type of the
visit to the node, e.g. whether it came from evaluating Requires or Requires.private,
which resulted in some solutions being correctly incalculated due to greedy optimization
of the dependency graph.

We reintroduce this optimization by adding a second traversal serial as well as
re-introducing the PROPF_VISITED node property as well as a new PROPF_VISITED_PRIVATE
node property flag.  This allows a node to be revisted at maximum two times per
traversal level.

Co-authored-by: Yi Chou <yich@google.com>
2024-02-04 03:04:52 -08:00
..
argvsplit.c libpkgconf: fix -Walloc-size 2023-11-22 10:06:14 -08:00
audit.c libpkgconf: document audit module 2016-12-10 19:28:34 -06:00
bsdstubs.c use AC_CHECK_DECLS to avoid implicit function definition 2023-05-02 11:49:34 -07:00
bsdstubs.h bsdstubs: add pkgconf_reallocarray 2022-06-26 04:37:18 +00:00
cache.c use SIZE_FMT_SPECIFIER everywhere 2023-01-21 20:45:29 +00:00
client.c libpkgconf: fix -Walloc-size 2023-11-22 10:06:14 -08:00
config.h.meson fix meson.build 2023-05-02 11:52:10 -07:00
dependency.c Fix it's -> its 2023-11-29 12:02:44 -08:00
fileio.c libpkgconf: fileio: pkgconf_fgetline(): handle quoted=true when a comment introduction is encountered 2021-03-18 05:45:41 -06:00
fragment.c libpkgconf: fix -Walloc-size 2023-11-22 10:06:14 -08:00
iter.h libpkgconf: Add a helper to zero `pkgconf_list_t`s 2022-06-26 03:12:34 +00:00
libpkgconf-api.h docs: mention Meson instead of CMake for Win build 2021-12-11 14:49:19 +01:00
libpkgconf.h Use traverse_serial to short circuit graph evaluation for already visited nodes. 2024-02-04 03:04:52 -08:00
meson.build meson: install headers into pkgconf/libpkgconf instead of just libpkgconf 2020-11-28 19:42:00 -07:00
parser.c Avoid undefined behaviour with the ctype(3) functions. 2023-05-02 11:43:56 -07:00
path.c libpkgconf: fix -Walloc-size 2023-11-22 10:06:14 -08:00
personality.c Search XDG Base Directories for personality files 2023-11-22 10:07:41 -08:00
pkg.c Use traverse_serial to short circuit graph evaluation for already visited nodes. 2024-02-04 03:04:52 -08:00
queue.c queue: ensure the initial solution is cleaned up when it is no longer needed 2023-11-22 18:43:04 +00:00
stdinc.h stdinc: include strings.h on POSIX 2022-02-21 04:42:26 -06:00
tuple.c libpkgconf: fix -Walloc-size 2023-11-22 10:06:14 -08:00
win-dirent.h Avoid undefined behaviour with the ctype(3) functions. 2023-05-02 11:43:56 -07:00