xref: /freebsd/contrib/pkgconf/NEWS (revision a3cefe7f2b4df0f70ff92d4570ce18e517af43ec)
1Changes from previous version of pkgconf
2========================================
3
4Changes from 2.5.0 to 2.5.1:
5----------------------------
6
7* Fix processing of empty dependency lists.
8
9Changes from 2.4.3 to 2.5.0:
10----------------------------
11
12* Added a manual page for bomtool.
13
14* Add support for preloaded packages.
15  These are modules which are preloaded into the package database
16  and preferred over searching the module search path when present.
17
18* Refactor Windows registry PKG_CONFIG_PATH support so that it
19  augments the main directory search list instead of being treated
20  as a special case.
21
22* Processing of `--with-path` arguments by the pkgconf CLI is
23  now deferred until libpkgconf is fully initialized, effectively
24  aligning behavior with PKG_CONFIG_PATH processing.
25
26* Fix several minor memory safety bugs which were identified by
27  the GCC 15 static analyzer.
28
29* Added support for pledge(2) and unveil(2) on systems where
30  this functionality is available.
31
32* Significant improvements to pkgconf's manual pages.
33  Patches by Ingo Schwarze and Jonathan Gray (OpenBSD).
34
35* Remove questionable default-static assumption on Windows that
36  was inherited from the original pkg-config.  Most distributions
37  of pkgconf on Windows were already patching this out.
38  Patch by Kai Pastor.
39
40* Add -D_POSIX_C_SOURCE=200809L to the build definitions, which
41  is needed for readlinkat on glibc.
42  Patch by Filipe Laíns.
43
44Changes from 2.4.2 to 2.4.3:
45----------------------------
46
47* Fix additional logic errors relating to the new fragment trees
48  functionality.
49
50Changes from 2.4.1 to 2.4.2:
51----------------------------
52
53* Fix several logic errors in the pkg-config file parser that were
54  surfaced by recent refactoring work.
55
56* Fix BSD make compatibility so that it generates the test data
57  before running kyua on BSD make implementations.
58
59Changes from 2.4.0 to 2.4.1:
60----------------------------
61
62* Ensure the full DAG is solved for all query types.
63
64Changes from 2.3.0 to 2.4.0:
65----------------------------
66
67* Allow multiple package names in solution-based queries such as
68  `--print-requires`, `--print-requires-private` and `--print-provides`.
69
70* Use `_DEFAULT_SOURCE` where appropriate on Meson.
71
72* Add an abstract buffer type and use it when loading files from disk
73  instead of a 64KB buffer.  This ensures large pkg-config files are
74  not truncated.
75
76* Disable graph recursion in `--variable` queries as it was generating
77  duplicate output.
78
79* Add infrastructure for tracking fragment group relations and convert
80  storage of fragments to use a tree-like structure instead of string
81  concatenation.
82
83* Add support for tracking linker groups, e.g.
84
85    -Wl,--start-group -la -lb -lc -Wl,--end-group
86
87  as fragment groups.
88
89* Properly contextualize the sysroot directory when processing package
90  information, ensuring packages where ${pc_sysrootdir} does not match
91  the default are properly processed.
92
93Changes from 2.2.0 to 2.3.0:
94----------------------------
95
96* Fix compile with Meson on Solaris by defining __EXTENSIONS__.
97
98* Add support for the PKG_CONFIG_RELOCATE_PATHS environmental variable.
99  When set, the program will act as if --define-prefix is always enabled.
100
101* Color solution nodes that were part of the original query, and use
102  that coloring to skip over dependencies when generating DocumentNames
103  in bomtool.
104
105* Enhance --env option to support variables with both --variable=varname
106  and --print-variables.
107
108* Add --exists-cflags option which creates synthetic preprocessor
109  definition flags for every queried dependency when found.
110
111* Document that Requires.private is always used for header paths.
112  Patch by Petr Písař.
113
114* Fix minor documentation typos.
115  Patch by Pierce.
116
117* Ensure string comparisons using <ctype.h> functions are done with
118  unsigned bytes to avoid undefined behavior.
119  Patch by Taylor R Campbell.
120
121* Fix parsing edge-case bugs with dependency versions.
122  Patch by Kai Pastor.
123
124* Change PKG_PROG_PKG_CONFIG autoconf macro to add a customizable
125  failure handler if pkg-config is not found.
126  Patch by Ismael Luceno.
127
128Changes from 2.1.1 to 2.2.0:
129----------------------------
130
131* libpkgconf SOVERSION is now 5.
132
133* Significant solver rework to flatten both requires and requires.private
134  dependencies in a single pass.  Improves performance slightly and ensures
135  proper dependency order.
136  Patches by Kai Pastor.
137
138* Improve `--digraph` output to reflect more of the solver's state in the
139  rendered dependency graph.
140  Patches by Kai Pastor.
141
142* Do not reference the graph root by name when presenting error messages about
143  directly requested dependency nodes.
144  Patch by Kai Pastor.
145
146Changes from 2.1.0 to 2.1.1:
147----------------------------
148
149* Documentation fixes from Sam James and Stefan Weil.
150
151* Fix --modversion with constraints.
152  Patch by Kai Pastor.
153
154* Reintroduce an optimization to the dependency graph walker which avoids
155  revisiting already visited nodes.
156  Patch by Yi Chou with some modifications.
157
158* Add a regression test to check that the dependency flattener is working
159  as expected.
160  Patch by Kai Pastor.
161
162Changes from 2.0.3 to 2.1.0:
163----------------------------
164
165* Do not flatten the solver solution into the original world used as
166  input to the solver.
167  Patches by Kai Pastor.
168
169* Fix warnings with GCC 14 -Walloc-size.
170  Patch by Sam James.
171
172* Add --solution to the pkgconf CLI to dump the solver state.
173
174* Improve the --digraph output to clarify cancelled edges in a given
175  solution.
176
177* Demote requires dependencies to requires.private when a parent
178  dependency is pulled in via requires.private.
179
180* Trim trailing whitespace when processing package arguments.
181  Patch by Colin Gillespie.
182
183* Avoid strncmp() in --modversion version comparison.
184  Patch by Colin Gillespie.
185
186* Update autoconf compile flag checking macro.
187  Patch by Peter Kokot.
188
189* Add system default path configuration to Meson.
190  Patch by L. E. Segovia.
191
192* Fix order of PKG_CONFIG_LIBDIR and PKG_CONFIG_PATH element processing.
193
194Changes from 2.0.2 to 2.0.3:
195----------------------------
196
197* Fix some edge-cases with the new `--modversion` implementation
198  and add additional regression tests.
199  Patch by Colin Gillespie.
200
201* Fix some format specifiers to use PRIu64 in debug tracing.
202
203Changes from 2.0.1 to 2.0.2:
204----------------------------
205
206* Fix long-standing bug where package identifiers for "uninstalled"
207  packages incorrectly included the "-uninstalled" suffix.
208
209  This was exposed by the recent change to `--modversion` in 2.0.1.
210
211Changes from 2.0.0 to 2.0.1:
212----------------------------
213
214* The behavior of --modversion was largely reverted back to the traditional
215  pkg-config behavior, but still operates on a solved dependency graph.
216
217  The order of --modversion output is based on the dependency resolution
218  queue which is passed to the solver, which itself generally maps to the
219  order of the constrants provided on the command line.
220
221* A new flag, --verbose, has been added.  When used with `--modversion`, it
222  is possible to disambiguate which version belongs to which module:
223
224    % pkgconf --modversion --verbose foo bar
225    foo: 1.2.3
226    bar: 1.3
227
228Changes from 1.9.5 to 2.0.0:
229----------------------------
230
231* When flattening the dependency graph, retain the latest seen edges
232  rather than the earliest.
233
234* Fix a long-standing bug where the dependency resolution queue was
235  evaluated in reverse.  This bug masked the aforementioned dependency
236  flattening bug in many cases.
237
238* Fix handling of --with-path, which was appending paths to the search
239  list rather than prepending them as intended.
240
241* Error when --modversion is requested with more than one package, as
242  the output is ambiguous.
243
244Changes from 1.9.4 to 1.9.5:
245----------------------------
246
247* Fix incorrect assumptions involving the use of ctype(3) functions.
248  Patch by Taylor R Campbell.
249
250* Fix detection of provided functions on autoconf.
251  Patches by Harmen Stoppels.
252
253* Fix deletion of tests/meson.build by the autoconf build system.
254  Patch by h30032433.
255
256* Fix quoting rules in argvsplit.c.
257  Patch by huyubiao.
258
259* Update libpkgconf documentation and documentation building scripts.
260  Patches by Andrew Shadura.
261
262* Enforce maximum package count correctly for --modversion.
263
264Changes from 1.9.3 to 1.9.4:
265----------------------------
266
267* Fix a buffer overflow vulnerability involving very large variable expansions.
268  CVE-2023-24056
269
270* Fix a bunch of minor regressions with the solver.
271
272* Create separate solutions for `--cflags` and `--libs` when `--static` is not
273  used.
274
275* Remove final trailing whitespace in pkgconf_fragment_render_buf().
276
277* Revert broken pkg.m4 change involving querying module versions in
278  PKG_CHECK_MODULES.
279
280* Fix handling of tildes in version strings.
281
282* Various C99 formatting string fixes involving SIZE_FMT_SPECIFIER.
283
284Changes from 1.9.2 to 1.9.3:
285----------------------------
286
287* Fix a bunch of minor code issues pointed out using Clang static analyzer.
288
289* New API: pkgconf_solution_free(), which frees a compiled solution graph.
290
291* Fix behavior when overriding global variables with `--define-variable`.
292
293Changes from 1.9.1 to 1.9.2:
294----------------------------
295
296* Do not try to break dependency cycles across dependency lists.  This causes
297  the solved graph to sometimes miss required dependency nodes because the
298  solver detected an incorrect dependency cycle.
299
300* New API: pkgconf_queue_solve(), which replaces pkgconf_queue_apply().
301  pkgconf_queue_apply is now deprecated and should not be used in new code.
302
303Changes from 1.9.0 to 1.9.1:
304----------------------------
305
306* Skip graph flattening and traversal for query types which only make sense
307  for a single pkg-config module.
308
309  The old solver walked these graphs with --maximum-traverse-depth=1 in
310  these cases, but this is no longer helpful because the graph is flattened
311  by the new solver.
312
313Changes from 1.8.0 to 1.9.0:
314----------------------------
315
316* pkgconf 1.9.0 is the first testing release in the pkgconf 2.0 development
317  series.  While it is believed to be suitable for production, there may be
318  bugs due to the overall redesign of the solver and other initiatives.
319  Additionally, a future release of pkgconf plans will have additional ABI
320  breaks for the libpkgconf library before the pkgconf 2.0 release is cut.
321
322* There is now a new solver that is designed to provide higher performance
323  with complicated graphs, which works by flattening the dependency graph
324  into a smaller set of dependencies.  This graph can then be evaluated
325  instead of the original dependency graph without having to visit every
326  edge in the graph.
327
328  NOTE: This solver, while providing significant performance improvements,
329  does so, at the cost of changed behavior for some edge cases (such as
330  circular dependencies).
331
332* Bug fixes:
333  - Resolved several memory leaks with edge cases when using libpkgconf
334    directly.
335  - pkgconf CLI now consistently frees libpkgconf resources under all
336    circumstances.
337  - SYSROOT rules are no longer applied to `-uninstalled` packages by
338    default.  Use `PKG_CONFIG_PKGCONF1_SYSROOT_RULES` for legacy behavior.
339
340* A new `--license` selector has been added to the pkgconf CLI.  This uses
341  SPDX expressions which can be set as the `License` field in `.pc` files.
342  See the `pc(5)` manpage for more information.
343
344* The canonical location for pkgconf maintenance going forward is
345  <https://gitea.treehouse.systems/ariadne/pkgconf>.  This is presently
346  mirrored to GitHub for user convenience, but that mirroring will
347  be terminated at some point (due to GitHub Copilot).
348
349Changes from 1.7.4 to 1.8.0:
350----------------------------
351
352* This is the last planned maintenance branch.  I see pkgconf as basically
353  a finished tool at this point, and very few people were ultimately interested
354  in libpkgconf.  So, from here on out, it will just be bug fixes only and
355  very minor enhancements.
356
357* Bug fixes:
358  - Improved path handling on Windows to conform to what the MSYS2
359    and Cygwin teams were already modifying pkgconf to do.
360    Patches by Christoph Reiter.
361  - Fix a minor memory leak relating to cross-personalities.
362    Patch by Stone Tickle.
363  - Fix static builds for Windows on Meson.
364    Patch by Alexander Neumann.
365  - Fix some edge cases with --redefine-prefix.
366    Patch by midipix.
367  - Do not prepend sysroot_dir if the .pc file does not exist in the
368    sysroot.
369    Patch by Sandro Mani.
370  - Do not perform path filtering on default system include and library
371    path lists.  This fixes consistency with other mechanisms that modify
372    these path lists.
373
374* Enhancements:
375  - Document the --validate option in the manpage.
376    Patch by orbea.
377
378Changes from 1.7.3 to 1.7.4:
379----------------------------
380
381* Bug fixes:
382  - Fix null-dereference crash when pulling a malformed 'uninstalled'
383    .pc file into a dependency tree.  Patch by Tobias Stöckmann.
384  - Fix truncation of comment characters when quoted.
385  - Fix handling of .pc module names in --list-all on Windows.
386    Patch by Ryan Scott.
387  - Handle platforms where realpath(3) requires a pre-allocated buffer.
388    Patch by Fabian Groffen.
389  - Fix version whitespace warning.
390    Patch by Christoph Reiter.
391
392* Enhancements:
393  - Rewrite DOS paths on native Windows builds that don't use
394    Cygwin/MSYS.
395  - Add WantDefaultPure cross-compiler personality option.
396  - Prefer --static --pure linking on Windows.
397  - Add PKG_CONFIG_DONT_DEFINE_PREFIX environment variable.
398    Patch by Jeff Moguillansky.
399  - Many improvements when building pkgconf with Meson.
400    Patches by Christoph Reiter.
401
402Changes from 1.7.2 to 1.7.3:
403----------------------------
404
405* Bug fixes:
406  - Fix a possible out of boundary write when evaluating dependencies.
407    Patch by Tobias Stöckmann.
408  - Fix escaping logic on Windows.  Patch by Vincent Torri.
409  - Fix out of boundary reads and writes with a malformed fragment.
410    Patches by Tobias Stöckmann.
411  - Fix a possible out of boundary write when evaluating tuples.
412    Patch by Tobias Stöckmann.
413
414Changes from 1.7.1 to 1.7.2:
415----------------------------
416
417* Bug fixes:
418  - Fix a windows-specific crash relating to path fixups.
419
420Changes from 1.7.0 to 1.7.1:
421----------------------------
422
423* Bug fixes:
424  - Fix a possible out of boundary access in the parser for the
425    cross-compile database.  Patch by Tobias Stöckmann.
426  - Missing files for building with Meson are now included in the
427    tarball.  Patch by Neal Gompa.
428  - Fix calculation of package atoms on Windows with paths that
429    use both directory separator characters.
430
431Changes from 1.6.3 to 1.7.0:
432----------------------------
433
434* Bug fixes:
435  - Fix a possible buffer overflow involving newline escaping.
436    Patch by Tobias Stöckmann.
437  - Fix an out of boundary access in the parser.
438    Patch by Tobias Stöckmann.
439  - Fix leakage of strcmp() result value in pkgconf_compare_version()
440    responses.
441  - Return the default personality if loading a cross-compile
442    personality file failed.
443  - Do not complain about newlines when validating package versions.
444  - Properly detect strndup() on Windows when building with Meson.
445
446* Enhancements:
447  - A new --shared option and WantDefaultStatic cross-compile
448    configuration option have been added.  This allows for toolchains
449    to specify that static linking should be used by default.
450  - Support for the PKG_CONFIG_MSVC_SYNTAX environment variable has
451    been added.  Patch by Dan Kegel.
452  - Support for the PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS
453    client flag which disables emulation of freedesktop.org pkg-config
454    fragment merging semantics has been added.
455    Patch by Karen Arutyunov.
456
457Changes from 1.6.2 to 1.6.3:
458----------------------------
459
460* Bug fixes:
461  - Properly tokenize versions.  Versions cannot logically contain
462    whitespace, as dependency-lists would not properly tokenize if
463    they could.  A diagnostic is generated for malformed version
464    strings containing whitespace when --validate is used.
465
466* Enhancements:
467  - CMake support has been dropped.  Use Meson to build on Windows.
468
469Changes from 1.6.1 to 1.6.2:
470----------------------------
471
472* Bug fixes:
473  - Fixed a memory leak when deduplicating paths.
474  - Fixed strndup-related build regression on Windows.
475
476* Enhancements:
477  - Added pkgconf-lite variant.  pkgconf-lite is a stripped down
478    variant of pkgconf that only includes pkg-config features.
479  - Added --modversion description to pkgconf(1) man page.
480
481Changes from 1.6.0 to 1.6.1:
482----------------------------
483
484* Bug fixes:
485  - Fixed an issue where a personality may not be properly selected
486    due to argv[0] containing a full path.
487  - Fixed a regression where having an empty PKG_CONFIG_LIBDIR
488    environment variable would not eliminate the default search
489    paths.
490  - Use POSIX realpath(3) instead of readlink() for deduplicating the
491    search path.  Use _fullpath() on Windows for the same purpose.
492  - The dequoting logic for tuples has been improved to ensure that
493    quotes *inside* a value remain quoted when necessary.
494
495Changes from 1.5.4 to 1.6.0:
496----------------------------
497
498* Bug fixes:
499  - Fixed issue where packages which referenced missing packages in
500    Requires.private may have crashed due to memory corruption issues
501    in some circumstances.
502  - Fixed warnings reported by GCC 8 diagnostics.
503
504* Enhancements:
505  - Add LIBPKGCONF_VERSION and LIBPKGCONF_VERSION_STR macros for
506    determining libpkgconf version.
507  - Add pkgconf_fragment_copy_list() to copy a fragment list to
508    another fragment list.
509
510Changes from 1.5.3 to 1.5.4:
511----------------------------
512
513* Bug fixes:
514  - fix build on Windows with Meson
515  - fix edge cases for path canonicalization (especially on Windows)
516
517Changes from 1.5.2 to 1.5.3:
518----------------------------
519
520* Security fixes:
521  - Fix edge cases involving dequoting zero-length tuples that can lead to a
522    buffer overflow under the right circumstances.  Thanks to A. Wilcox for
523    reporting and supplying a patch.  (MR 3)
524
525Changes from 1.5.1 to 1.5.2:
526----------------------------
527
528* Bug fixes:
529  - Ensure environment variables override values learned from personality files
530    or built-in defaults.
531
532* Documentation enhancements:
533  - Add pkgconf-personality(5) manpage documenting the personality file format.
534
535Changes from 1.5.0 to 1.5.1:
536----------------------------
537
538* Bug fixes:
539  - fixed a crash with some invalid multi-line .pc files
540
541Changes from 1.4.2 to 1.5.0:
542---------------------------
543
544* Administrative:
545  - The git repository has moved to <https://git.dereferenced.org/pkgconf/pkgconf>,
546    due to the acquisition of GitHub by Microsoft.
547
548* Overall enhancements:
549  - pkgconf now supports the proposed Requires.internal pkg-config extension,
550    by merging it with the Requires.private list (there is no functional difference
551    between the two in our resolver implementation)
552  - Support for cross-compilation personalities have been added.  To make use of this
553    functionality, create a file in the new personality.d directory that sits inside
554    the pkgconfig directory.  The personality file format is described in
555    pc-personality(5). (github #166)
556  - Support for Haiku has been added, including interpretation of BELIBRARIES and
557    other toolchain specifics. (github #180)
558  - Testsuite support can be disabled when building with Meson. (github #175)
559
560* Bug fixes:
561  - tuples are now appropriately dequoted when added by the parser (github #186).
562
563* Various Windows enhancements:
564  - CMake supports building with GCC on Windows. (github #179)
565  - Prefix rewriting has been improved. (github #177)
566  - PKGCONF_API support has been implemented when building with Meson,
567    allowing Meson to be used to build pkgconf on Windows. (github #174)
568
569* Documentation fixes:
570  - The manpages have been linted and fixed. (github #181, #182, #183)
571  - The description of pkgconf --exists has been corrected. (github #173)
572
573Changes from 1.4.1 to 1.4.2:
574----------------------------
575
576* Bug fixes:
577  - ensure pkgconf_dependency_t nodes have a solution marked when satisfied
578    by an indirect provider (github #172)
579
580Changes from 1.4.0 to 1.4.1:
581----------------------------
582
583* Bug fixes:
584  - revert some quoting changes because they don't work well with certain
585    GCC edge cases (github #168)
586
587* Enhancements:
588  - add limited support for --cflags with --msvc-syntax
589
590Changes from 1.3.7 to 1.4.0:
591----------------------------
592
593* Notable libpkgconf API changes:
594  - pkgconf_pkg_t.requires has been renamed to pkgconf_pkg_t.required for
595    C++20 compatibility.
596
597* Enhancements:
598  - pkgconf and libpkgconf has been ported to Windows as native binaries.
599  - improved compatibility with freedesktop.org pkg-config's ${pc_sysrootdir}
600    usage pattern.
601  - do not mention PKG_CONFIG_SKIP_CONFLICTS environmental variable when
602    simplified errors are requested, as with PKG_CONFIG_PATH.
603  - the dependency solver now stores solutions to dependency graph elements
604    it visits, allowing for the dependency graph to be incrementally solved.
605    this improves dependency solving time by an order of magnitude in most
606    cases.
607  - new --env option allows for exporting cflags/libs fragments as export
608    variables
609  - new support for building pkgconf with CMake and Meson
610  - improved compiler warning flag detection on autoconf and CMake
611  - removed PKGCONF_BUFSIZE allocations from the stack where possible
612  - allow for customizing the way fragment lists are rendered using a callback API
613  - new support for --msvc-syntax output using the new fragment rendering callbacks
614  - fragments are now quoted according to POSIX literal rules
615  - new variables on the pkg-config builtin:
616    - ${pc_system_includedirs}: the system includedir search path known by pkgconf
617    - ${pc_system_libdirs}: the system libdir search path known by pkgconf
618  - new manpages:
619    - pc(5) describing pkgconf's interpretation of pkg-config .pc files
620    - pkg.m4(7) describing the autotools macros bundled with pkgconf
621
622* Bug fixes:
623  - fix pkgconf_pkg_t.id generation on native Windows where either \ or / are usable
624    as path separator.
625  - add missing --modversion to --help output
626  - do not evaluate module paths for modules that are not actually on disk
627  - ensure we work on a zeroed buffer prior to calling realpath(2) with it
628  - fix path deduplication edge case when cache-inodes feature is unavailable
629  - fix path rewriting regression with PKG_CONFIG_SYSROOT_DIR when
630    PKG_CONFIG_SYSROOT_DIR is set to /
631  - fix crash in edge case where a .pc file has misquoting in a fragment list.
632  - fix logic edge case when comparing relocated paths
633
634Changes from 1.3.6 to 1.3.7:
635----------------------------
636
637* Enhancements:
638  - improved diagnostics for malformed packages.
639
640* Bug fixes:
641  - reject packages which contain incomplete metadata in post-parse phase.
642
643Changes from 1.3.5 to 1.3.6:
644----------------------------
645
646* Enhancements:
647  - add many cflags to the protected set: -Wa, -Wl, -Wp, -ansi, -std=, -stdlib=,
648    -pedantic, -pthread, -trigraphs, -nostdinc, -nostdlibinc, -nobuiltininc.
649
650* Bug fixes:
651  - handle -include cflag fragments properly.
652
653Changes from 1.3.4 to 1.3.5:
654----------------------------
655
656* Bug fixes:
657  - fix --variable output for compatibility some broken configure scripts when they
658    request the same variable from multiple packages
659
660Changes from 1.3.3 to 1.3.4:
661----------------------------
662
663* Bug fixes:
664  - fix a quoting issue exposed by the Go testsuite
665
666Changes from 1.3.2 to 1.3.3:
667----------------------------
668
669* Bug fixes:
670  - back out disabling the dependency resolver for single-package queries, it caused
671    too many regressions.
672
673* Enhancements:
674  - allow explicitly disabling the dependency resolver via new environment variable,
675    PKG_CONFIG_MINIMUM_TRAVERSE_DEPTH=1.  while pkgconf could already do this using
676    --minimum-traverse-depth=1, other pkg-config implementations do not have this
677    option, so adding an environment variable allows to make better use of this
678    feature (other implementations won't error due to unknown option this way)
679
680Changes from 1.3.1 to 1.3.2:
681----------------------------
682
683* Bug fixes:
684  - rewrite handling of --modversion, --print-variables and --variable to not require
685    the dependency resolver
686  - ensure we disable the dependency resolver in all cases where it is a single-package
687    query (1.3.1 did not go far enough)
688
689Changes from 1.3.0 to 1.3.1:
690----------------------------
691
692* Features:
693  - implement --short-errors
694
695* Bug fixes:
696  - only consider a single package at a time with --print-requires, --print-requires-private,
697    --print-provides, --modversion, --print-variable and --print-variables
698
699* Enhancements:
700  - synchronized latest freedesktop.org changes to pkg.m4
701  - improve error reporting with legacy --atleast-version and similar flags.
702
703Changes from 1.2.0 to 1.3.0:
704----------------------------
705
706* Features:
707  - pkgconf --debug now provides a facility for tracing most relevant libpkgconf operations
708  - libpkgconf: add warn and trace handlers for warnings
709  - replace realpath() with faster, lighter weight path normalization function (github #112)
710  - pkgconf CLI now emulates pkg-config quoting rules precisely, while allowing direct access
711    to the actual fragments via libpkgconf
712
713* Bug fixes:
714  - pkg: properly separate static and virtual packages so they are not inappropriately
715    optimized out of the dependency graph (github #108)
716  - argvsplit: do not consider ' and " to have similar rules to escape sequences (github #111)
717  - pkg: strip trailing whitespace when parsing .pc files
718
719* Enhancements:
720  - argvsplit basically rewritten from scratch
721  - many code fixes spotted by coverity
722  - add PKG_CONFIG_DONT_RELOCATE_PATHS and --dont-relocate-paths environment variables to
723    disable path relocation feature if needed
724  - remove extra whitespace that was present for compatibility with older pkg-config releases
725    (github #113)
726
727Changes from 1.1.0 to 1.2.0:
728----------------------------
729
730* Features:
731  - new --path option lists the .pc files which provided the requested dependencies
732  - new path relocation API: pkgconf_path_relocate(), which wraps functions such as
733    realpath() and cygwin_conv_path().
734  - new --with-path option adds a path to the search list
735  - new --define-prefix and --dont-define-prefix features enable automatic prefix
736    detection for relocatable SDKs.  this is mostly useful on windows.
737
738* Bug fixes:
739  - fragments: fix even more edge cases involving token concatenation
740  - path lists: don't attempt to collect path inodes if the filter is disabled
741  - path lists: explicitly avoid uninitialised data for the path inode cache
742  - client: properly handle --keep-system-cflags and --keep-system-libs
743
744* Enhancements:
745  - windows: build libpkgconf as a DLL
746  - fragments: only munge fragments if sysroot_dir is actually set
747  - overall API: resolver flags have been moved to being a client-object setting
748    instead of used for every function invocation
749
750Changes from 1.0.1 to 1.1.0:
751----------------------------
752
753* Features:
754  - new Provides system allows alternate .pc files to provide a dependency
755  - stable library API (with documentation): http://pkgconf.readthedocs.io/
756
757* Enhancements:
758  - make it possible to programmatically declare dependencies instead of just using the parser
759  - testsuite migrated to run under kyua
760  - provide a libpkgconf.pc file for consumers to use
761  - pkgconf client: new --pure flag to enable dependency graph optimization in --static mode
762  - significant .pc parser speedups using bsearch(3).
763  - handle -idirafter in the same way as -isystem CFLAGS
764  - learn toolchain "system" paths from GCC environment variables, if present
765  - filter duplicate PKG_CONFIG_PATH (and other) entries by inode
766
767* Bug fixes:
768  - fragments: fix another edge case involving empty tokens being concatenated onto previous tokens
769    (github #99)
770  - libpkgconf: remove dependencies on config.h in public headers
771
772Changes from 1.0.0 to 1.0.1:
773----------------------------
774
775* Enhancements:
776  - new stub implementation of --print-provides (github #95)
777
778* Bug fixes:
779  - fragments: fix an edge case involving path-only fragments and PKG_CONFIG_SYSROOT_DIR (github #94)
780
781Changes from 0.9.12 to 1.0.0:
782-----------------------------
783
784* Features:
785  - new library: libpkgconf
786
787* Enhancements:
788  - testsuite: use an explicit prefix on all tests
789  - build: switch to automake
790
791* Bug fixes:
792  - cast all usage of ctype(3) functions
793  - do not expand variables passed via --define-variable for compatibility with pkg-config 0.29
794  - let the CFLAGS being user settable
795
796Changes from 0.9.11 to 0.9.12:
797------------------------------
798
799* Features:
800  - add --list-package-names
801
802* Enhancements:
803  - ensure -I and -L are never pushed back
804
805* Bug fixes:
806  - fix implicit conversion warnings with variables over 31bits
807
808Changes from 0.9.10 to 0.9.11:
809------------------------------
810
811* Features:
812  - add --validate
813
814* Enhancements:
815  - add large file support checks in autoconf
816
817* Bug fixes:
818  - fix private lib deduplication
819  - handle --static correctly in some more esoteric scenarios
820
821Changes from 0.9.9 to 0.9.10:
822-----------------------------
823
824* Features:
825
826* Enhancements:
827
828* Bug fixes:
829  - Fix parser when dealing with commented lines
830
831Changes from 0.9.8 to 0.9.9:
832----------------------------
833
834* Features:
835  - add a sub out --print-provides
836
837* Enhancements:
838
839* Bug fixes:
840  - Fix parser when dealing with comments in fields
841
842Changes from 0.9.7 to 0.9.8:
843----------------------------
844
845* Features:
846
847* Enhancements:
848  - Convert manpages to mdoc(7)
849
850* Bug fixes:
851  - Fix parsing multiline fields
852
853Changes from 0.9.6 to 0.9.7:
854----------------------------
855
856* Features:
857
858* Enhancements:
859  - Convert manpages to mdoc(7)
860
861* Bug fixes:
862  - Fix parsing multiline fields
863
864Changes from 0.9.5 to 0.9.6:
865----------------------------
866
867* Features:
868  - add a sub --debug
869
870* Enhancements:
871  - Do not hardcode non-posix install(1)
872
873* Bug fixes:
874  - fix --with-system-includedir and --with-system-libdir behaviour
875
876Changes from 0.9.4 to 0.9.5:
877----------------------------
878
879* Features:
880
881* Enhancements:
882  - Make all variables but CFLAGS and LIBS case sensitive
883
884* Bug fixes:
885
886Changes from 0.9.3 to 0.9.4:
887----------------------------
888
889* Features:
890  - Add a pkgconf(1) manpage
891
892* Enhancements:
893  - Improve support for MacOS -framework
894
895* Bug fixes:
896
897Changes from 0.9.2 to 0.9.3:
898----------------------------
899
900* Features:
901  - Add support for CFLAGS.private
902
903* Enhancements:
904  - Support out of source build
905  - Improved private libs deduplication
906
907* Bug fixes:
908
909Changes from 0.9.1 to 0.9.2:
910----------------------------
911
912* Features:
913
914* Enhancements:
915
916* Bug fixes:
917  - Fix PKG_CONFIG_PATH being ignored when a .pc is directly supplied from
918    command line
919
920Changes from 0.9.0 to 0.9.1:
921----------------------------
922
923* Features:
924
925* Enhancements:
926  - --simulate: print depgraph operations
927  - --simulate: print bytecode program as a human-readable AST
928
929* Bug fixes:
930  - reset parser state on new package atom
931
932Changes from 0.8.12 to 0.9.0:
933----------------------------
934
935* Features:
936
937* Enhancements:
938  - Rework the internal cache API
939  - Rework the internal code to use the new pkg_list_t framework
940  - Rework PKG_CONFIG_PATH handling code
941
942* Bug fixes:
943  - fix multi-recursion with -framework
944