|
1 | 1 | This is the changelog file for the POCO C++ Libraries. |
2 | 2 |
|
3 | 3 |
|
| 4 | +Release 1.15.0 (2026-02-10) |
| 5 | +=========================== |
| 6 | + |
| 7 | +Summary of Changes: |
| 8 | + |
| 9 | +This is a major feature release with C++20 as the default standard, comprehensive |
| 10 | +MongoDB replica set support, a new reactor-based HTTP server implementation, ULID |
| 11 | +support, C++17 modernization of core classes, and significant third-party library |
| 12 | +upgrades. |
| 13 | + |
| 14 | +Contributors: |
| 15 | + |
| 16 | +Matej Kenda, Aleksandar Fabijanic, siren186, Günter Obiltschnig, nyashbox, |
| 17 | +Lara Dzivdzanovic, Gleb Popov, Andrew Auclair, Mikhail Khachayants, Alexander Bychuk, |
| 18 | +solarobot, Tomislav Petrović, Andrew Slabko, sky92zwq, Duncan Cunningham, |
| 19 | +Marian Krivoš, Miko (Toyosatomimi no Miko), Ben Wolsieffer, Luis Caro Campos, Jonas Bülow, |
| 20 | +Friedrich Wilckens, Austin Beer, Rajendra Singh, Miracle-1996, Nathan Jensen, |
| 21 | +Peter Zmanovsky, nitram96, Nino Belušić, Matthew Stoltenberg, Katalin Rebhan, |
| 22 | +Eric Engels, Milan Tepic, David Roman, Mert Övün, lanthora, Jouke Witteveen, |
| 23 | +Jeremy Rifkin, Dan Rosser, Étienne Dupuis, Thomas Beutlich, Sergei Trofimovich, Kacper Piwiński, |
| 24 | +Peter Klotz, Kari Argillander, Hussein Ismail, Mias du Plessis, Wei Liguo, |
| 25 | +Arthur Chan, Olivier Smeesters, Karthik Bhat A |
| 26 | + |
| 27 | +Notable Features: |
| 28 | + |
| 29 | +Poco::MongoDB: |
| 30 | +- Full replica set support: automatic server discovery, topology monitoring, failover |
| 31 | + handling, read preference-based server selection, connection pooling, and URI parsing. |
| 32 | +- Note: Legacy wire protocol (pre-MongoDB 5.1) has been removed. Use OP_MSG-based |
| 33 | + interface for all MongoDB operations. |
| 34 | + |
| 35 | +Poco::Net: |
| 36 | +- New reactor-based HTTP server implementation (HTTPReactorServer) for high-performance |
| 37 | + scenarios using the SocketReactor pattern instead of thread-per-connection model. |
| 38 | +- HTTP cookies updated to RFC 6265 specification. |
| 39 | + |
| 40 | +Poco::Redis: |
| 41 | +- Event notifications support for pub/sub integration. |
| 42 | + |
| 43 | +Poco::Foundation: |
| 44 | +- ULID (Universally Unique Lexicographically Sortable Identifier) support with |
| 45 | + ULIDGenerator class, similar to existing UUID support. |
| 46 | +- C++17 modernization of Tuple, TypeList, ScopedLock and other core classes with |
| 47 | + significant code reduction. Full backward API compatibility maintained. |
| 48 | +- New AsyncNotificationCenter for asynchronous notification dispatch with auto-configured |
| 49 | + worker threads. |
| 50 | +- FastLogger (Quill wrapper, fully compatible with Poco Logging system) |
| 51 | +- Single/Multiple Producer, Single Consumer lock-free notification queues. |
| 52 | +- DataNotification class for carrying typed payloads in notifications. |
| 53 | +- NativeThreadInfo support for including native thread ID and name in log messages. |
| 54 | +- Thread interrupt feature added for cooperative thread cancellation. |
| 55 | +- LogFileImpl::createFile() now creates parent directories if they don't exist. |
| 56 | +- Poco::format() now supports %g and %G format specifiers like printf(). |
| 57 | +- Windows: Missing DLL names now reported in SharedLibrary load errors. |
| 58 | +- Poco::Observer is now deprecated; use Poco::NObserver instead. |
| 59 | + |
| 60 | +Poco::NetSSL_Win: |
| 61 | +- Find certificates from Windows store using SHA-1 thumbprint for easier certificate |
| 62 | + selection in enterprise environments. |
| 63 | + |
| 64 | +Poco::Data: |
| 65 | +- PostgreSQL: UUID field type (UUIDOID) now correctly mapped to Poco::UUID instead |
| 66 | + of BLOB, enabling direct UUID value extraction from RecordSet. |
| 67 | +- ODBC: Improved Oracle database integer type handling. |
| 68 | +- ODBC: Fixed UUID handling in Preparator for SQL Server. |
| 69 | + |
| 70 | +Build System: |
| 71 | +- C++20 is now the default standard (use POCO_ENABLE_CPP20 CMake option). |
| 72 | +- C++20 modules support added (ENABLE_MODULES). Modules match namespace names |
| 73 | + (Poco.Foundation, Poco.Net, etc.) with a unified Poco module for importing all. |
| 74 | +- External dependencies reorganised into separate 'dependencies' subdirectory. |
| 75 | +- New POCO_UNBUNDLED_SQLITE option for fine-grained unbundled control. |
| 76 | +- New POCO_MINIMAL_BUILD option builds only the libraries explicitly enabled via |
| 77 | + ENABLE_* options, useful for reducing build times and binary size. |
| 78 | +- CMake uninstall target renamed to 'uninstall-poco' to avoid conflicts. |
| 79 | + |
| 80 | +Bundled Third-Party Library Upgrades: |
| 81 | + |
| 82 | +- expat 2.7.1 → 2.7.4 - fixes CVE-2026-24515 (NULL pointer dereference), CVE-2026-25210 (integer overflow), |
| 83 | + CVE-2025-59375 (DoS via memory allocation), CVE-2024-8176 (stack overflow) |
| 84 | +- PCRE2 10.44 → 10.47 - skips 10.45 which had CVE-2025-58050 (heap-buffer-overflow) |
| 85 | +- SQLite 3.49.1 → 3.51.1 - fixes CVE-2025-6965 (memory corruption) |
| 86 | +- libpng 1.6.43 → 1.6.53 - fixes CVE-2025-64720, CVE-2025-65018 (buffer overflows), 5 security fixes total |
| 87 | +- libharu 2.3.0RC2 → 2.4.5 (first stable release since RC) |
| 88 | +- utf8proc 2.9.0 → 2.11.0 - adds Unicode 16 and 17 support |
| 89 | +- LZMA SDK 9.22 → 25.01 (major upgrade from 2011 version) |
| 90 | +- Quill 11.0.2 (new) |
| 91 | + |
| 92 | +Breaking Changes and Migration Notes: |
| 93 | + |
| 94 | +- GH #5030 Foundation: DateTimeParser rejects trailing garbage. Review any code that |
| 95 | + relies on specific parsing behavior for non-standard date/time formats. |
| 96 | + |
| 97 | +- GH #4844 AbstractConfiguration::createView() and createLocalView() return |
| 98 | + AbstractConfiguration::Ptr (AutoPtr) since version 1.11. Code that assigns the |
| 99 | + return value to a raw pointer (AbstractConfiguration*) will compile but cause |
| 100 | + use-after-free crashes. Always use AbstractConfiguration::Ptr or auto for the |
| 101 | + return value. |
| 102 | + |
| 103 | +- GH #4781 Poco::MongoDB legacy wire protocol (OP_INSERT, OP_UPDATE, OP_DELETE, |
| 104 | + OP_QUERY, OP_GET_MORE) has been removed. These were deprecated in MongoDB 5.0 |
| 105 | + and removed in MongoDB 5.1. All code must use the OP_MSG-based interface |
| 106 | + (OpMsgMessage, OpMsgCursor). MongoDB 3.6+ is required. |
| 107 | + |
| 108 | +- GH #4460 Remove VS projects from release. Use CMake to generate Visual Studio |
| 109 | + solutions. |
| 110 | + |
| 111 | +- GH #3739 Drop support for OpenSSL < 1.1.1. Systems with older OpenSSL versions |
| 112 | + must upgrade before using this release. |
| 113 | + |
| 114 | +Security Fixes: |
| 115 | + |
| 116 | +- GH #5177 Upgrade bundled expat to 2.7.4 [fixes CVE-2026-24515, CVE-2026-25210] |
| 117 | +- PR #5096 enh(deps): Upgrade bundled SQLite from 3.49.1 to 3.51.1 |
| 118 | +- PR #5093 enh(PDF): Upgrade bundled libpng from 1.6.43 to 1.6.53 (security fixes) |
| 119 | +- GH #5028 Upgrade bundled libexpat to 2.7.3 [fixes CVE] |
| 120 | +- GH #4912 Upgrade bundled PCRE2 to 10.47 |
| 121 | +- GH #4623 Poco::Zip library now checks archive consistency before extracting to |
| 122 | + prevent path traversal and zip bomb attacks |
| 123 | + |
| 124 | +Features: |
| 125 | + |
| 126 | +- GH #5163 Foundation: Add demangleDot function for type name formatting |
| 127 | +- GH #5162 Add IOLock |
| 128 | +- GH #5134 Lock-free queues |
| 129 | +- GH #5133 Add Channel::log(message&&) |
| 130 | +- GH #5132 Make SpinlockMutex adaptive |
| 131 | +- PR #5129 Foundation: Add ULID support |
| 132 | +- GH #5083 CppUnit: Improve test name display and selection |
| 133 | +- PR #5081 Foundation: Add benchmark infrastructure and FastLogger |
| 134 | +- GH #5069 Missing DLLs not reported on Windows |
| 135 | +- PR #5068 MongoDB: Add replica set support with automatic failover |
| 136 | +- GH #5060 Auto-configure AsyncNotificationCenter number of workers |
| 137 | +- GH #5058 Add event notifications to Redis |
| 138 | +- GH #5047 Foundation: Add DataNotification for typed payload |
| 139 | +- PR #4999 Modules: Add C++20 modules component |
| 140 | +- PR #4946 Net: Add reactor-based HTTP server |
| 141 | +- GH #4932 Windows: Better Poco::Environment::osDisplayName |
| 142 | +- GH #4851 Foundation: AsyncNotificationCenter should dispatch asynchronously |
| 143 | +- GH #4731 Foundation: Allow specifying SharedLibrary flags in ClassLoader |
| 144 | +- GH #4518 Net: Update HTTP cookies to RFC 6265 |
| 145 | +- GH #3333 Foundation: Add NativeThreadInfo and blend in Message |
| 146 | + |
| 147 | +Enhancements and Third-Party Updates: |
| 148 | + |
| 149 | +- PR #5186 Foundation: Proper implementation of File::getExecutablePath |
| 150 | +- GH #5178 XML: Use vanilla Expat sources instead of POCO-patched version |
| 151 | +- PR #5166 Update readme with Windows and Arch Linux instructions |
| 152 | +- PR #5154 MongoDB: Document performance header cleanup |
| 153 | +- PR #5153 Util: Modernize Poco::Util and clean up code duplications |
| 154 | +- GH #5150 Net: SocketReactor socket removal |
| 155 | +- PR #5149 Build: Add unit testing build to oss-fuzz build script |
| 156 | +- GH #5146 CMake: Use platform-specific cppignore files |
| 157 | +- GH #5144 ODBC: Add nix shells for mssql and oracle |
| 158 | +- PR #5136 Data: C++17 modernization of TypeHandler with variadic templates |
| 159 | +- PR #5130 fix: Resolve compiler warnings and fix potential bugs |
| 160 | +- PR #5119 Util: Add [[nodiscard]] to createView/createLocalView |
| 161 | +- GH #5115 Data/SQLite: Remove redundant error messages |
| 162 | +- PR #5103 fix: Resolve compiler warnings across multiple modules |
| 163 | +- PR #5100 fix(Net): Use MessageHeader::quote() for boundary in HTMLForm |
| 164 | +- PR #5099 enh(expat): Add patch system for POCO-specific xmlparse modifications |
| 165 | +- PR #5098 enh(deps): Upgrade bundled libharu from 2.3.0RC2 to 2.4.5 |
| 166 | +- PR #5097 enh(deps): Upgrade bundled utf8proc from 2.9.0 to 2.11.0 |
| 167 | +- PR #5094 enh(SevenZip): Upgrade bundled LZMA SDK from 9.22 to 25.01 |
| 168 | +- PR #5092 fix: Resolve compiler warnings in Net, Zip, and Foundation modules |
| 169 | +- PR #5086 Foundation: Simplify Tuple, TypeList, FunctionPriorityDelegate and other with C++17 |
| 170 | +- GH #5084 Add C++20 support and make it default |
| 171 | +- GH #5078 Foundation: Improve logging system performance |
| 172 | +- GH #5033 Build: Improve Linux debug build flags |
| 173 | +- PR #5031 enh(MongoDB): Improve stability of the OpMsgCursor |
| 174 | +- PR #5029 JSON: Eliminate extra copies in Object |
| 175 | +- PR #5023 Find certificate from Windows store using its thumbprint |
| 176 | +- PR #5013 CMake minimal build and dependencies |
| 177 | +- PR #5005 enh(ScopedLock): Add std::adopt_lock, try_to_lock, defer_lock support |
| 178 | +- GH #5002 Data/ODBC: Oracle integer types fail with v23 driver |
| 179 | +- PR #4995 Foundation: Add deprecation reasons to APIs |
| 180 | +- PR #4993 Enable Avahi support on FreeBSD |
| 181 | +- PR #4991 Enable building Poco::Trace on FreeBSD |
| 182 | +- PR #4990 Teach FindApache2.cmake to locate Apache on FreeBSD |
| 183 | +- PR #4987 Poco Zip: link ZLIB::ZLIB when unbundled |
| 184 | +- PR #4983 New SQLite Only Unbundled Option |
| 185 | +- PR #4972 Add ENABLE_CPPUNIT to enable CppUnit without building the tests |
| 186 | +- PR #4971 enh(CMake): FindOpenSSL.cmake with modifications for ARM Windows |
| 187 | +- GH #4962 Add `bool Application::exists()` |
| 188 | +- GH #4958 Poco::Observer is obsolete in favour of Poco::NObserver |
| 189 | +- PR #4956 enh(cmake): Add option POCO_ENABLE_CPP20 |
| 190 | +- PR #4942 fix(Thread): fix Thread reuse error, add thread interrupt feature |
| 191 | +- PR #4879 CMake: Include pcre2 source files to unbundled build based on pcre2 library type |
| 192 | +- PR #4867 enh(Foundation): modernised header files (override, using, nullptr, ...) |
| 193 | +- PR #4841 enh(Poco::Dynamic): Modernised code to use C++17 features |
| 194 | +- GH #4789 Build: Provide zlib as shared dependency for Foundation and PDF |
| 195 | +- GH #4651 Incorporate wdx_ziptype changes (fix for Poco::Zlib: Unexpected exceptions) |
| 196 | +- GH #4348 0 (or NULL) for null pointer shall be replaced with nullptr |
| 197 | +- GH #4202 Foundation: LogFileImpl::createFile() fails if path does not exist |
| 198 | +- GH #2731 Poco::format() supports %g and %G format specifiers |
| 199 | + |
| 200 | +Bug Fixes: |
| 201 | + |
| 202 | +- GH #5191 Process/Win: Fix PROCESS_CLOSE_STD* flags closing parent's handles |
| 203 | + instead of child's |
| 204 | +- GH #5187 Foundation: Use setenv instead of putenv in Environment |
| 205 | +- PR #5183 MongoDB: Fix Document::toString() to produce valid JSON by quoting |
| 206 | + all string-like values |
| 207 | +- GH #5182 Data: SQLChannel does not create directory for absolute paths |
| 208 | +- GH #5180 Foundation: Fix ProcessRunner::start() to handle Windows executables |
| 209 | + without .exe extension |
| 210 | +- GH #5175 Foundation: Fix format specifiers in DateTimeFormatter and |
| 211 | + PatternFormatter |
| 212 | +- GH #5174 Foundation: Fix bad casing in include |
| 213 | +- GH #5172 Foundation: Fix DateTimeParser tests with day 0 |
| 214 | +- GH #5168 Foundation: Lock-Order-Inversion Deadlock in NObserver/Observer |
| 215 | +- PR #5165 fix(Foundation): VS2022 clang-cl compatibility |
| 216 | +- GH #5161 Pipe is not thread-safe |
| 217 | +- GH #5159 Lock-order-inversion deadlock in NotificationCenter |
| 218 | +- GH #5158 Foundation: Change lock type to ScopedWriteLock in NotificationCenter |
| 219 | +- GH #5147 Net: Fix TSAN warnings in SocketImpl |
| 220 | +- GH #5142 VarHolderImpl: Implement isDate/isTime diagnostics |
| 221 | +- PR #5140 Data: Refactor ODBC tests and fix testReconnect TypeInfo caching |
| 222 | +- PR #5137 fix(Foundation): Replace timing-dependent tests with condition-based waiting |
| 223 | +- GH #5131 Build: Fix PCRE compile with clang/c++20 and GNU make |
| 224 | +- PR #5114 fix(Foundation): Fix deadlock in NotificationCenter removeObserver |
| 225 | +- PR #5107 fix(Zip): Improve parsing of non-standard ZIP archives |
| 226 | +- GH #5090 UBSan: Integer overflow errors in VarHolder.h |
| 227 | +- GH #5087 Net: Fix dll attribute position in pocoNetworkInitializer to support |
| 228 | + MinGW-GCC/Clang |
| 229 | +- GH #5085 CMake build not stripping release binaries |
| 230 | +- GH #5083 CppUnit: Improve test name display and selection |
| 231 | +- GH #5070 CMake does not produce proper binary names |
| 232 | +- GH #5064 Net: Build fails when POCO_HAS_UNIX_SOCKET is not defined |
| 233 | +- GH #5059 Foundation: AsyncNotificationCenter hangs on stop() |
| 234 | +- GH #5055 Make Socket::select() deprecation conditional |
| 235 | +- GH #5054 Foundation: ProcessRunner termination detection unreliable |
| 236 | +- GH #5048 Adapt makefiles for external dependencies |
| 237 | +- GH #5044 Build: Missing bundled dependencies |
| 238 | +- PR #5038 Prevent hostname being replaced with IP during handshake |
| 239 | +- GH #5032 HTTPChunkedInputStream does not raise an error when stream ends prematurely |
| 240 | +- GH #5025 PostgreSQL reconnect() doesn't restore session state correctly |
| 241 | +- PR #5020 Poco::Path("C:") throws if path is disk-letter only |
| 242 | +- GH #5018 Data/ODBC: Wrong UUID handling in Preparator |
| 243 | +- GH #5017 Poco::Data ODBC recordset is reading previous row value |
| 244 | +- GH #5011 Foundation: File crashes with Windows long path prefix (\\?\) |
| 245 | +- GH #5010 Build failure with ODBC due to PREFIX macro conflict |
| 246 | +- GH #5004 Bugcheck::poco_unexpected trailing semicolon |
| 247 | +- PR #4994 chore(CI): Fix installation of Microsoft ODBC connector |
| 248 | +- PR #4992 Fix building of FileStreamTest.cpp on FreeBSD |
| 249 | +- PR #4986 Fix Thread_POSIX not compiling with Emscripten |
| 250 | +- GH #4980 Zip component build error with CMake + POCO_UNBUNDLED |
| 251 | +- GH #4978 ODBC MSSQL bulk insert UNIQUEIDENTIFIER type does not work |
| 252 | +- GH #4977 Possible flaky tests when building for nixpkgs |
| 253 | +- GH #4976 Net: SocketReactor dispatches ErrorNotification to all observers |
| 254 | +- GH #4973 MSVC 2017 Build error: Cannot open include file 'version' |
| 255 | +- GH #4970 Net: Deadlock in SocketReactor when removing handler from callback |
| 256 | +- GH #4969 MongoDB::Database::authSCRAM() fails due to protocol typographic error |
| 257 | +- PR #4966 Foundation: Resolve Poco::format ambiguity with std::format in C++23 |
| 258 | +- GH #4949 Foundation: TaskManager memory leak |
| 259 | +- GH #4947 Build: ENABLE_SEVENZIP and ENABLE_ZIP still require ENABLE_XML |
| 260 | +- GH #4924 Data/PostgreSQL: RecordSet does not recognize UUID field |
| 261 | +- GH #4908 CI: UBSan errors in GitHub CI |
| 262 | +- GH #4900 Data/ODBC: Binder hides AbstractBinder::bind() |
| 263 | +- GH #4881 Conflicting 'uninstall' targets with CMake |
| 264 | +- GH #4877 NetSSL: Context throws on unimplemented DH group |
| 265 | +- GH #4871 CMake: static build with POCO_UNBUNDLED fails with static external pcre2 |
| 266 | +- GH #4870 Foundation: Incorrect bitwise check for newline mode in RegularExpression |
| 267 | +- GH #4854 Poco::Data::Session constructor freezes when opening non-SQLite file |
| 268 | +- GH #4848 Foundation: FileChannel purge race condition with compression (#2439) |
| 269 | +- GH #4801 publish_release.yml should also update documentation website |
| 270 | +- GH #4800 QA: packages-qa.yml should check result of mkdoc job |
| 271 | +- GH #4756 Net: WebSocket sendFrame delay due to missing TCP_NODELAY |
| 272 | +- GH #4639 Cannot run Crypto sample code |
| 273 | +- GH #4627 Loading passphrase-protected key should not prompt cin |
| 274 | +- GH #4549 ClassLoader crash when DLL and EXE use different runtime library |
| 275 | +- GH #4537 Net: Socket::available causes connection reset on Windows UDP sockets |
| 276 | +- GH #4439 Enable CodeQL fail if error found |
| 277 | +- GH #4358 Reorganise source code of external libraries |
| 278 | +- GH #4122 Util: ServerApplication compile error with C++20 |
| 279 | +- GH #3907 NetSSL_Win certificate verification failure with intermediate certificates |
| 280 | +- GH #3694 Poco::Zip::Compress::addFile with MemoryInputStream broken since 1.12.0 |
| 281 | + |
| 282 | + |
4 | 283 | Release 1.14.2 (2025-05-12) |
5 | 284 | =========================== |
6 | 285 |
|
|
0 commit comments