Skip to content

Commit 3d9415c

Browse files
committed
Merge branch 'main' into archive-strategy
2 parents 78f0956 + b09d563 commit 3d9415c

97 files changed

Lines changed: 2551 additions & 10749 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,8 @@ jobs:
645645
steps:
646646
- uses: actions/checkout@v4
647647
- run: >-
648-
cmake -S. -Bcmake-build -DENABLE_NETSSL_WIN=ON -DENABLE_NETSSL=OFF
648+
cmake -S. -Bcmake-build -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON
649+
-DENABLE_NETSSL_WIN=ON -DENABLE_NETSSL=OFF
649650
-DENABLE_CRYPTO=OFF -DENABLE_JWT=OFF -DENABLE_DATA=ON -DENABLE_DATA_ODBC=ON
650651
-DENABLE_DATA_MYSQL=OFF -DENABLE_DATA_POSTGRESQL=OFF -DENABLE_TESTS=ON
651652
- run: cmake --build cmake-build --config Release --parallel 4

.github/workflows/packages-qa.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@ jobs:
1616
uses: actions/checkout@v2
1717
-
1818
name: Install packages
19-
run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev redis-server libmysqlclient-dev libpq-dev
19+
run: sudo apt -y update && sudo apt -y install cmake ninja-build libssl-dev unixodbc-dev redis-server libmysqlclient-dev libpq-dev
2020
-
2121
name: Build documentation
2222
run: |
2323
export POCO_BASE=`pwd`
2424
export PATH=$POCO_BASE/release/script:$PATH
25-
export LD_LIBRARY_PATH=$POCO_BASE/stage/tools/lib/Linux/x86_64
2625
mkdoc all
2726
2827
mkrelease_win:

.github/workflows/publish_release.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
uses: actions/checkout@v2
2121
-
2222
name: Install packages
23-
run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev redis-server libmysqlclient-dev libpq-dev
23+
run: sudo apt -y update && sudo apt -y install cmake ninja-build libssl-dev unixodbc-dev redis-server libmysqlclient-dev libpq-dev
2424
-
2525
name: Install SSH key
2626
run: |
@@ -33,7 +33,6 @@ jobs:
3333
run: |
3434
export POCO_BASE=`pwd`
3535
export PATH=$POCO_BASE/release/script:$PATH
36-
export LD_LIBRARY_PATH=$POCO_BASE/stage/tools/lib/Linux/x86_64
3736
mkdoc all
3837
-
3938
name: Copy to web server

CHANGELOG

Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,285 @@
11
This is the changelog file for the POCO C++ Libraries.
22

33

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+
4283
Release 1.14.2 (2025-05-12)
5284
===========================
6285

0 commit comments

Comments
 (0)