Skip to content

chore(dependencies): refresh bundled third-party libraries - #5306

Merged
matejk merged 5 commits into
mainfrom
update-bundled-deps
Apr 11, 2026
Merged

chore(dependencies): refresh bundled third-party libraries#5306
matejk merged 5 commits into
mainfrom
update-bundled-deps

Conversation

@matejk

@matejk matejk commented Apr 11, 2026

Copy link
Copy Markdown
Contributor

Summary

Refresh four bundled third-party libraries and add tooling to check and
update bundled dependencies going forward.

Library updates

Library From To Reason
libpng 1.6.55 1.6.57 Security fixes (1.6.56 + 1.6.57)
libharu (hpdf) 2.4.5 2.4.6 Security (TTF fixes) + memory alloc / Windows build fixes
SQLite 3.51.2 3.53.0 WAL-reset database corruption fix + query planner / ALTER TABLE / REINDEX improvements (3.52.0 was withdrawn)
Quill 11.0.2 11.1.0 Thread-local context duplication fix across shared libraries, nullptr checks in macro-free logging, backend worker poll loop hooks

All update commits were built and verified locally. For Quill, the
three source files that drive the ENABLE_FASTLOGGER platform whitelist
in the top-level CMakeLists.txt (ThreadUtilities.h,
BackendWorkerLock.h, Rdtsc.h) were diffed -- only ThreadUtilities.h
changed and the change is an opt-in feature (QUILL_USE_SEQUENTIAL_THREAD_ID)
that leaves existing platform branches intact, so the whitelist does not
need updating.

Note: libpng was further updated from 1.6.56 to 1.6.57 in a follow-up
commit pushed directly to main (55492bf) after this PR was merged,
because 1.6.57 was released upstream in the interim.

Tooling

Two new helper scripts under dependencies/:

  • check-upstream-versions.sh: queries each bundled library's upstream
    (GitHub releases API, plus scraping for sqlite / libpng / 7zip) and
    compares to the # Version: comment in each
    dependencies/<lib>/CMakeLists.txt (with a README.md fallback). Prints
    a table and exits 1 if any updates are available. Honors GITHUB_TOKEN
    to raise the API rate limit. Usable from CI as a freshness check.

  • update-bundled-dep.sh: downloads an upstream release tarball and
    refreshes the currently-bundled subset of files by matching each
    bundled file by relative path (basename fallback) in the upstream tree,
    then updates the # Version: / # Source: URL comments in
    CMakeLists.txt and the version cell in README.md. Handles tar.gz,
    tar.xz, tar.bz2, and zip archives; for sqlite3 it derives the
    year-dependent download URL automatically.

Also replaces non-ASCII em-dashes in dependencies/README.md with ASCII
equivalents to comply with the project's ASCII-only convention, and bumps
the stale expat row in the README (2.7.4 -> 2.7.5) to match the
bundled source, which was updated in an earlier commit without touching
the README table.

Test plan

  • cmake --build --target _BUNDLED_PNG then PDF -- libpng 1.6.56 and 1.6.57 compile, PDF links
  • cmake --build --target _BUNDLED_HPDF then PDF -- libharu 2.4.6 compiles, PDF links
  • cmake --build --target _BUNDLED_SQLITE3 then DataSQLite -- SQLite 3.53.0 compiles and DataSQLite links
  • cmake --build --target Foundation -- Quill 11.1.0 headers compile via FastLogger.cpp
  • ./dependencies/check-upstream-versions.sh -- all tracked libraries report "up to date"
  • CI: full test suite passed

matejk added 5 commits April 11, 2026 09:43
Security update. From the libpng release notes: 'libpng 1.6.56 has
two more security fixes.'

Source: https://github.com/pnggroup/libpng/releases/tag/v1.6.56

Bundled file pnglibconf.h is preserved as-is since it is a
pre-configured build artifact (not shipped in the release tarball).
Security update. From the libharu 2.4.6 release notes: includes
TTF security fixes and resolves memory allocation errors,
compatibility with newer Delphi versions, and Windows 32-bit
build fixes.

Source: https://github.com/libharu/libharu/releases/tag/v2.4.6
Key fixes in this range:
- WAL-reset database corruption bug (critical)
- Incorrect results from nested EXISTS queries (3.51.2 fix retained)
- Query planner, ALTER TABLE, REINDEX EXPRESSIONS improvements
- New SQL and C-language interfaces

SQLite 3.52.0 was withdrawn due to backwards-compatibility issues,
so we jump straight from 3.51.2 to 3.53.0.

Source: https://www.sqlite.org/2026/sqlite-amalgamation-3530000.zip
Key fixes in 11.0.3, 11.0.4, 11.1.0:
- Thread-local context duplication across shared libraries
- Nullptr checks in macro-free logging functions
- New backend worker poll loop hooks
- New optional QUILL_USE_SEQUENTIAL_THREAD_ID feature (not enabled
  by POCO)

Only ThreadUtilities.h changed among the three files that derive the
ENABLE_FASTLOGGER platform whitelist in the top-level CMakeLists.txt
(ThreadUtilities.h, BackendWorkerLock.h, Rdtsc.h). The change adds a
new opt-in code path but leaves the existing platform branches intact,
so the whitelist does not need to be updated.

Source: https://github.com/odygrd/quill/releases/tag/v11.1.0
Add two helper scripts under dependencies/:

- check-upstream-versions.sh: queries each bundled library's upstream
  (GitHub releases API, plus scraping for sqlite/libpng/7zip) and
  compares against the '# Version:' comment in each dependencies/<lib>/
  CMakeLists.txt (with a README.md fallback for libraries without
  that comment). Prints a table and exits 1 if any updates are
  available. Uses jq when present, falls back to grep/sed. Honors
  GITHUB_TOKEN to raise the rate limit.

- update-bundled-dep.sh: downloads an upstream release tarball and
  refreshes the currently-bundled subset of files by matching each
  bundled file by relative path (with basename fallback) in the
  upstream tree, then updates the '# Version:' and '# Source:' URL
  comments in CMakeLists.txt and the version cell in README.md.
  Handles tar.gz, tar.xz, tar.bz2 and zip archives. For sqlite3,
  derives the year-dependent download URL automatically.

Also:
- Replace non-ASCII em-dashes in README.md with ASCII equivalents
  to comply with the ASCII-only project convention.
- Bump the stale expat row in the README (2.7.4 -> 2.7.5) to match
  the bundled source, which was updated in an earlier commit without
  touching the README table.
@matejk matejk added this to the Release 1.15.2 milestone Apr 11, 2026
@matejk
matejk merged commit 1179ce0 into main Apr 11, 2026
106 checks passed
@matejk
matejk deleted the update-bundled-deps branch April 11, 2026 12:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant