The Poco C++ Libraries include third-party code in two forms:
- Bundled dependencies in this
dependencies/directory -- self-contained libraries that can be updated independently - Embedded code in the main source tree -- algorithms and small components integrated directly into Poco source files
When POCO_UNBUNDLED is enabled (CMake) or set in the environment (GNU Make), marked libraries
are replaced with system-installed versions via find_package() or -l flags.
| Library | Version | License | Used by | Unbundleable | Source |
|---|---|---|---|---|---|
| zlib | 1.3.2 | Zlib | Foundation (compression/decompression streams) | Yes | https://github.com/madler/zlib |
| pcre2 | 10.47 | BSD-3-Clause | Foundation (regular expressions) | Yes | https://github.com/PCRE2Project/pcre2 |
| utf8proc | 2.11.3 | MIT | Foundation (Unicode normalization) | Yes | https://github.com/JuliaStrings/utf8proc |
| expat | 2.8.2 | MIT | XML (SAX/DOM parser) | Yes | https://github.com/libexpat/libexpat |
| sqlite3 | 3.53.1 | Public Domain | Data/SQLite (embedded database) | Yes | https://www.sqlite.org |
| png | 1.6.58 | libpng License | PDF (PNG image support) | Yes | https://github.com/pnggroup/libpng |
| v8_double_conversion | 3.4.0 | BSD-3-Clause | Foundation (float-to-string conversion) | No | https://github.com/google/double-conversion |
| pdjson | n/a | Public Domain | JSON (streaming parser) | No | https://github.com/skeeto/pdjson |
| tessil | 1.2.0 | MIT | Foundation (insertion-order-preserving hash containers) | No | https://github.com/Tessil/ordered-map |
| hpdf (libharu) | 2.4.6 | Zlib-like | PDF (PDF document generation) | No | https://github.com/libharu/libharu |
| 7zip (LZMA SDK) | 26.01 | Public Domain | SevenZip (7z archive support) | No | https://github.com/ip7z/7zip |
| cpptrace | 1.0.4 | MIT | Foundation (stack trace support, optional) | No | https://github.com/jeremy-rifkin/cpptrace |
| quill | 11.1.0 | MIT | Foundation (high-performance async logging, optional) | No | https://github.com/odygrd/quill |
| wepoll | 1.5.8 | BSD-2-Clause | Net (epoll emulation, Windows only) | No | https://github.com/piscisaureus/wepoll |
The following third-party code is embedded directly in Poco source files. These are algorithm implementations or minimal compatibility headers that are tightly integrated with Poco classes and not practical to extract as separate libraries.
| Component | Files | License | Copyright | Notes |
|---|---|---|---|---|
| Hyrise SQL Parser | Data/SQLParser/ |
MIT | Markus Dreseler, Hasso Plattner Institute | SQL query parsing (diverged fork) |
| CppUnit test framework | CppUnit/ |
CppUnit-old (permissive) | Michael Feathers | Poco's unit test framework |
| BSD random number generator | Foundation/src/Random.cpp, Foundation/include/Poco/Random.h |
BSD-4-Clause | 1983-1993 The Regents of the University of California | FreeBSD libc random() algorithm |
| RSA MD4 algorithm | Foundation/src/MD4Engine.cpp, Foundation/include/Poco/MD4Engine.h |
RSA-MD | 1991-1992 RSA Data Security, Inc. | RFC 1320 reference implementation |
| RSA MD5 algorithm | Foundation/src/MD5Engine.cpp, Foundation/include/Poco/MD5Engine.h |
RSA-MD | 1991-1992 RSA Data Security, Inc. | RFC 1321 reference implementation |
| SHA-1 algorithm | Foundation/src/SHA1Engine.cpp |
Public Domain | Peter C. Gutmann (1992), modified by Carl Ellison | Based on public domain implementation |
| SHA-2 algorithm | Foundation/src/SHA2Engine.cpp |
Apache-2.0 | mbed TLS project (ARM) | FIPS 180-4 (SHA-224/256/384/512) |
| CMake C++17 detection | cmake/CXX1x.cmake |
MIT | Nathan Osman (2013) | C++17 compiler feature detection module |
| PostgreSQL large object header | Data/PostgreSQL/include/libpq/libpq-fs.h |
PostgreSQL License | PostgreSQL Global Development Group | Minimal header for large object definitions |
tessil/ordered-mapis modified so thattsl::detail_ordered_hash::numeric_cast()andtsl::detail_ordered_hash::deserialize_value()have external linkage. These functions originally have internal linkage (markedstatic), which prevented thePocomodule from being built as all exported symbols require external linkage. This should remain until Tessil/ordered-map#54 is merged.quillonly supports specific OS and CPU architecture combinations.ENABLE_FASTLOGGERis auto-disabled on unsupported platforms via a whitelist in the top-levelCMakeLists.txt(derived fromThreadUtilities.h,BackendWorkerLock.h, andRdtsc.h). When updating quill from upstream, re-assess the whitelist against the new version's platform support.