Skip to content

Releases: pocoproject/poco

Release 1.14.0

01 Dec 20:12
Compare
Choose a tag to compare

Summary of Changes

This release marks many functions and classes as deprecated with C++ [[deprecated]]
attribute. Warnings can be silenced by defining POCO_SILENCE_DEPRECATED.

Deprecated functionality will be removed in one of the next releases.

Minimal supported standard is C++17 since version 1.13. Decent part of the
source code is modernised in this release.

Bundled software libraries are updated to latest versions:

  • zlib 1.3.1
  • expat 2.6.4
  • pcre2 10.44
  • libpng 1.6.43
  • SQLite 3.47.1

Poco::Foundation:

  • Support for Version 6 and Version 7 UUIDs

Poco::MongoDB:

  • Obsolete wire-protocol (pre 3.6) that was removed from MongoDB in version 5.1
    is obsolete in this version of Poco. It will be removed in one of next versions. Update code to use
    OpMsg-based interface.

Poco::Data:

  • Full Nullable support (including bulk inserts)
  • ODBC SQL Server big strings support

Breaking Changes

  • GH #4426 Mark deprecated code for removal

Security Fixes

  • GH #4760 Upgrade libexpat to release 2.6.4
  • GH #4690 Net: stack-buffer-overflow if HTTP request contains a header with invalid UTF32 sequence
  • GH #4687 Net::MailMessage: Double free if Content-Disposition header is empty
  • GH #4629 XML: fuzzing stack overflow
  • GH #4123 DoS vulnerability in XML/src/xmlparse.cpp
  • GH #4478 Upgrade bundled PCRE2 to 10.44
  • PR #4677 libpng version 1.6.43

Features, Enhancements and Third Party Updates

  • PR #4787 NetSSL_OpenSSL and NetSSL_Win: non-blocking support, shutdown behavior fix
  • PR #4681 zlib: Version 1.3.1 in module PDF (#4582)
  • PR #4788 Update bundled SQLite to version 3.47.1 (released 2024-11-25)
  • GH #4669 Upgrade JSON parser
  • GH #4580 Poco::UUID/UUIDGenerator: add support for Version 6 and Version 7 UUIDs
  • PR #4724 Hide zlib and expat libs from the user of Poco libraries (replaces #4579)
  • GH #4766 ProcessRunner sync
  • GH #4750 DBLogger sample
  • GH #4712 Error code for pthread_mutex_lock failure
  • GH #4710 UTF8::normalize()
  • GH #4680 Poco::Path::forDirectory("C:") throws if the path is disk-letter only
  • GH #4556 Overriding SocketReactor::run() is not reasonably possible
  • GH #4553 Poco::Logger can not output FILE and LINE
  • GH #4544 The load balancing issue in Poco::ActiveThreadPool
  • GH #4502 Optional and Nullable Improvements
  • GH #4431 Consolidate LogFile implementation to use FileOutputStream
  • GH #4423 Dynamic::Var silently loses precision on int->float conversion
  • GH #4230 Poco::Data fixes and improvements
  • GH #3997 operator<<() for SocketAddress doesn't work with ADL
  • GH #3801 ODBC: DataFormatException getting Time value from SQL Server
  • GH #3656 Parse json into specified descendant class
  • GH #2808 Failed to insert Poco::Nullable< Poco::Data::Date> data into MSSQL using ODBC
  • GH #1540 Poco::DateTime uses assertions for validation
  • GH #4769 pocoNetworkInitializer - change fixed path (Windows Platform related)
  • GH #4716 Logging: JSONFormatter
  • GH #4692 Stacktrace
  • GH #4643 ServerApplication callbacks
  • GH #4632 Add prebuild action to make build
  • GH #4630 Make Util::Application::getApplicationPath() and findAppConfigFile() protected
  • GH #4559 ServerApplication has no pidfile option on windows
  • GH #4536 Serializable Isolation level for SQLite Databases
  • GH #4529 SQLChannel stops logging on LoggingSubsystem shutdown
  • GH #4493 PocoDoc: search support
  • GH #4447 Add checkers for Any holding nullptr
  • GH #4414 Improve NotificationCenter speed and usability
  • GH #4413 StreamCopier range support
  • GH #4409 Add string_view format type spec
  • GH #4365 Poco::Data::Statement: unified '?' placeholder support
  • GH #4341 1.12.4 version Json set enum value failed
  • GH #4324 Poco:Data::ODBC - MSSQL (n)varchar(max) length issue
  • GH #4001 Insert NULL using BULK
  • GH #3281 DTLS 1.2 support
  • PR #4777 enh(ODBC): ODBC: DataFormatException getting Time value from SQL Serv…
  • PR #4774 Non-blocking sockets support (TLS, WebSocket)
  • PR #4770 feat(WindowsBuild): customizable path to include for pocoNetworkInitializer #4769
  • PR #4755 Insert NULL using BULK #4001
  • PR #4748 Activity now sets _running flag to false when it finishes or throws.
  • PR #4721 fix(Data::ODBC): use connection and login timeouts in ODBC session implementation
  • PR #4714 Add missing relational operators to VarIterator
  • PR #4699 Apply patches from Debian packaging
  • PR #4693 Serializable Isolation level for SQLite Databases
  • PR #4663 Fixed incorrect SSL_CTX_set0_tmp_dh_pkey() usage
  • PR #4624 enh(Poco::ActiveThreadPool): make it easy to use correctly
  • PR #4621 enh(FileStream): Add FileStreamBuf::resizeBuffer
  • PR #4617 enh(CI): Add unbundled build on Linux.
  • PR #4616 Cppunit and data test enhancements
  • PR #4569 Allow ADL for swapping Optional values
  • PR #4563 enh(MongoDB): Document::get returns value by const reference
  • PR #3040 HTTPS proxy support
  • PR #4734 File lock
  • PR #4424 Allow using Poco::FileStream to wrap arbitrary file handles/descriptors as C++ streams
  • PR #4685 CMake: Remove possibility to build with internal OpenSSL

Bug Fixes and Improvements

  • GH #4773 Non-blocking sockets support (TLS, WebSocket)
  • GH #4768 Data: warning: 'isNull' overrides a member function but is not marked 'override'
  • GH #4742 Poco does not build on AIX
  • GH #4722 libcxx: error: implicit instantiation of undefined template 'std::char_traits'
  • GH #4713 replaceInPlace std::wstring
  • GH #4711 Poco::Placeholder initialization uses wrong size
  • GH #4703 File Channel Logs in UTC Despite ‘times = local’
  • GH #4695 Build error with GCC-15 (class Poco::PriorityDelegate<TObj, void, true>’ has no member named ‘_pTarget’)
  • GH #4689 SMTPClientSession: replace bare newlines in message content with CRLF.
  • GH #4668 Cross-module exception issue with pre-compiler define _HAS_EXCEPTIONS=0 used in an application
  • GH #4664 HTTPCookie Constructor Fails to Handle Discard Attribute Properly
  • GH #4648 ProcessRunner erases its PID file name
  • GH #4644 TryParse scoped ipv6 addressess for addresses enclosed in [ ]
  • GH #4634 Poco::ActiveThreadPool _targetCompleted event never reset
  • GH #4610 Incorrect setting of ciphersuites for TLSv1.3
  • GH #4592 Significant performance degradation of Poco::DateTimeParser
  • GH #4586 MacOS ARM64 build error: symbol fdopen is duplicated defined
  • GH #4585 MacOS ARM64 build warning: 'OS_CODE' macro redefined
  • GH #4557 NestedDiagnosticContext should be thread local
  • GH #4540 Postgres CMakeList.txt
  • GH #4535 decodeWord adds spaces at folding borders, when there are special characters encoded
  • GH #4525 RecordSet issue since 1.10.0
  • GH #4503 GitHub runner: Linux thread sanitizer tests fail with "unexpected memory mapping"
  • GH #4482 ProcessRunner does not detect launch errors
  • GH #4395 There is no way to resolve host in advance and connect to HTTPS server with SNI.
  • GH #4368 fix Oracle failing ODBC tests
  • GH #3913 Missing sources in release package - buildwin.ps1 and NetSSL_Win
  • GH #3896 TryParse scoped ipv6 addressess
  • GH #3180 Poco::Environment::osDisplayName
  • GH #2971 Poco::NamedEvent does not release System V semaphore on Linux
  • GH #2439 Issue with log purging when FileChannel compression is enabled
  • PR #4762 Properly define POCO_DLL and POCO_STATIC based on BUILD_SHARED_LIBS
  • PR #4753 Openssl DH key size
  • PR #4737 fix(cmake): fix Data::PostgreSQL target include, remove unnecessary cmake modules.
  • PR #4727 GitHub runner ubuntu 24.04 and resolve some issues
  • PR #4726 Explicitly define conditional LOB constructors for const (w)string &
  • PR #4725 Exception (VS): static assert to make sure that _HAS_EXCEPTIONS is set
  • PR #4702 SimpleRowFormatter.h: fix the build on gcc-15 (unsatisfied noexcept)
  • PR #4688 Fix double free in Net::MailMessage if Content-Disposition header is empty
  • PR #4657 LibPNG Unbundled
  • PR #4652 enh(ScopedLockWithUnlock): make it more alike std::unique_lock
  • PR #4647 Use Int64 for TcpServerDispatcher::totalConnections()
  • PR #4635 fix(Poco::Zip::ZipLocalFileHeader) Fix const-correctness
  • PR #4622 fix(SimpleFileChannel): unify default "flush" to be false as it is in FileChannel
  • PR #4613 Usage modern C++ features on JSON modules (enhanced)
  • PR #4597 Fix MinGW build error
  • PR #4593 DateTimeParser Validation and Performance Improvements
  • PR #4550 enh: resolve unit test and few other warnings.
  • PR #4545 Add CACHE PATH to multi-config output directory variables
  • PR #4542 Decode word
  • PR #4417 fix(logs): synchronise log file rotation and compression.
  • PR #4085 Usage modern C++ features on JSON modules

Release 1.13.3

05 Apr 05:00
Compare
Choose a tag to compare

Summary of Changes

This is a bugfix release.

Security Fixes

  • GH #4496 Upgrade bundled libexpat to 2.6.2

Features, Enhancements and Third Party Updates

  • GH #4488 Add Poco::Util::Timer::idle() method to check if timer has any tasks scheduled
  • GH #3807 DNS.resolve() should not be sorted in HostEntry::removeDuplicates()
  • GH #4515 Upgrade bundled SQLite to 3.45.2
  • PR #4517 Optimize Net module for Android

Bug Fixes and Improvements

  • GH #4505 ODBC Unicode wrappers do not check for null length pointers
  • GH #4492 Poco::BasicMemoryStreamBuf is missing seekpos()
  • GH #4486 DateTimeFormat RFC1036 Sunday name is short (should be long)
  • GH #4468 Poco::URI: don't lowercase host part if it's a Unix domain socket
  • GH #4450 Error between Poco::ActiveRecord and Poco::Data::PostgreSQL
  • GH #4435 SecureStreamSocket is not thread-safe
  • GH #4415 SecureSocketImpl::reset shouldn't close socket
  • GH #3857 Thread_POSIX.cpp shouldn't convert thread IDs to long
  • GH #3725 secure socket receiveTimeout throwing after configured timeout * 2

Release 1.13.2

19 Feb 22:02
Compare
Choose a tag to compare

Summary of Changes:

This is a bugfix release.

Breaking Changes:

  • GH #4378 [Data] Unconditionally includes of SQLParser.h

Bug fixes and Improvements:

  • GH #4462 Disable SQL parsing by default

Release 1.13.1

07 Feb 08:08
6d17354
Compare
Choose a tag to compare

Features and enhancements

  • GH #4367 SQLite FTS5 (full text search)
  • GH #4335 Implement patches that Debian/Ubuntu applies when preparing deb packages
  • GH #4216 Replace C string literals (const char*) with C++ std::string literals for std::string parameters.
  • GH #3890 Get rid of SingletonHolder
  • GH #2450 Why does it take the ThreadPool 10+ seconds to shutdown when there is nothing running.
  • GH #2443 FileChannel doesn't flush to disk on unix until close
  • GH #4437 Add arm cross-compile config and CI
  • PR #4422 enh(File): Linux, macOS: microsecond precision for file times
  • PR #4390 enh(DateTimeParser): option to cleanup input string before parsing (#569)

Bug fixes and improvements

Release 1.13.0

22 Dec 22:53
Compare
Choose a tag to compare
Release 1.13.0 Pre-release
Pre-release

Highlights

  • Support for MongoDB 5.1 and newer
  • C++17 is the lowest supported standard
  • Poco::Data SQLParser (experimental, optional at build and runtime)

Breaking changes

  • GH #4305 Remove deprecated toJSON functions
  • GH #4304 NumericString conversions inconsistencies
  • GH #4235 Minimum standards: C++17 and C11
  • GH #4230 Poco::Data fixes and improvements
  • GH #3701 SocketReactor: Remove not useful handlers calls
  • GH #569 SyntaxException for DateTimeParser::parse not working

Features and enhancements

Bug fixes and improvements

Release 1.12.5p2

04 Dec 19:57
Compare
Choose a tag to compare

This is a patch release fixing issue #4320: Integer overflow in Poco::UTF32Encoding.

Release 1.11.8p2

04 Dec 19:58
Compare
Choose a tag to compare

This is a patch release fixing issue #4320: Integer overflow in Poco::UTF32Encoding.

Release 1.12.5p1

02 Nov 11:17
Compare
Choose a tag to compare

This is a patch release fixing issue #4241: Poco::FileInputStream broken in 1.12.5 and 1.11.8.

Release 1.11.8p1

02 Nov 11:17
Compare
Choose a tag to compare

This is a patch release fixing issue #4241: Poco::FileInputStream broken in 1.12.5 and 1.11.8.

Release 1.11.8

27 Oct 04:49
Compare
Choose a tag to compare

This is the final maintenance release of the 1.11 series.

  • GH #1372: Possible deadlock in SessionPool
  • GH #4170: Poco::FileStream is always opened with std::ios::in | std::ios::out bug
  • GH #4169: Upgrade bundled zlib to 1.3.
  • GH #4171: Upgrade bundled sqlite to 3.43.1
  • GH #4162: [Bug] class KeylessActiveRecord is missing export macro
  • GH #4164: [Bug] SharedLibraryImpl::loadImpl uses an incorrect format specifier
  • GH #4173: AbstractConfiguration: when expanding property references, allow specifying a default value
  • GH #4174: AbstractConfiguration: support Int16/UInt16 and Int32/UInt32
  • GH #4182: Util: Make load()/save()/clear() operations on configurations thread-safe
  • GH #4184: Poco::TemporaryFile: make filenames less predictable
  • GH #4195: Poco::File::created() on macOS should use birthtime
  • GH #4197: ODBC::Binder UUID new/free mismatch