From be19dc4a2f30eb97cc9bdd7551460db11cc27353 Mon Sep 17 00:00:00 2001 From: Aleksandar Fabijanic Date: Sun, 7 Aug 2022 12:10:18 +0200 Subject: [PATCH] 1.12.2 release merge (#3695) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 1.12.2 versions and notes * chore: spelling fix * fix(): Linking Crypto-testrunner fails #3688 * fix(Event): POSIX Event state need not be atomic #3699 * fix(OpenSSLInitializer): SIGABRT in OSSL_PROVIDER_unload with static OpenSSL3 #3698 * #3700: Release script must include build_vs170.cmd * fix(mingw): lowercase winsock2 and iphlpapi to allow cross compile #3711 * fix(PollSet): wakeup fd is never read #3708 * fix(PollSet): wakeup fd is never read (windows portion and some other optimizations) #3708 * fix(PollSet): wakeup fd is never read #3708 * fix(PollSet): Compiling with clang_cl_x64_x64 on Visual Studio 2022 failed #3716 * fix(SpinlockMutex): VS2022 compilation issues #3693 * Only support extracting JSON fields when the SDK supports it (#3717) * Added preprocessor defined to detect support for JSON * Only support extracting JSON fields when the SDK supports it * Fix version comparison * fix(MSVC): PocoNet Project File does not support Visual Studio 2022 #3719 * Update max MSVC version information (#3720) add visual studio 2022 support * Added missing Crypto Header to ProGen source (#3722) * fix(Crypto): fails to build with Visual Studio projects #3721 * Crypto: Progen again to add new files and bring back ARM64 configuration (#3724) * Progen Crypto to re-add ARM64 * Add new files * Add how to install using Conan section on README (#3727) Signed-off-by: Uilian Ries * fix(Platform): LoongArch support #3460 * fix(format): Poco::format and C++20 #3733 * fix: g++ C++20 warnings #3734 * core(CI): add c++20 * fix(CI): skip MySQL tests for c++20 * release 1.12.2 Co-authored-by: Günter Obiltschnig Co-authored-by: Hernan Martinez Co-authored-by: Byungjun Lee <40881444+OneTop4458@users.noreply.github.com> Co-authored-by: Hernan Martinez Co-authored-by: Uilian Ries --- .github/workflows/ci.yml | 2 +- CHANGELOG | 23 +++++++++ CONTRIBUTORS | 2 + Crypto/Crypto_VS90.vcproj | 16 ++++++ Crypto/Crypto_vs140.vcxproj | 8 +++ Crypto/Crypto_vs140.vcxproj.filters | 48 ++++++++++------- Crypto/Crypto_vs150.vcxproj | 8 +++ Crypto/Crypto_vs150.vcxproj.filters | 48 ++++++++++------- Crypto/Crypto_vs160.vcxproj | 8 +++ Crypto/Crypto_vs160.vcxproj.filters | 48 ++++++++++------- Crypto/Crypto_vs170.vcxproj | 13 +++-- Crypto/Crypto_vs170.vcxproj.filters | 48 ++++++++++------- Crypto/include/Poco/Crypto/Envelope.h | 4 +- .../include/Poco/Crypto/OpenSSLInitializer.h | 4 +- Crypto/src/OpenSSLInitializer.cpp | 4 +- Crypto/testsuite/TestSuite_VS90.vcproj | 8 +++ Crypto/testsuite/TestSuite_vs140.vcxproj | 4 ++ .../testsuite/TestSuite_vs140.vcxproj.filters | 22 +++++--- Crypto/testsuite/TestSuite_vs150.vcxproj | 4 ++ .../testsuite/TestSuite_vs150.vcxproj.filters | 22 +++++--- Crypto/testsuite/TestSuite_vs160.vcxproj | 6 ++- .../testsuite/TestSuite_vs160.vcxproj.filters | 22 +++++--- Crypto/testsuite/TestSuite_vs170.vcxproj | 9 ++-- .../testsuite/TestSuite_vs170.vcxproj.filters | 22 +++++--- DLLVersion.rc | 4 +- .../MySQL/include/Poco/Data/MySQL/Extractor.h | 4 +- Data/MySQL/include/Poco/Data/MySQL/MySQL.h | 12 +++++ Data/MySQL/src/Extractor.cpp | 10 +++- Data/MySQL/src/ResultMetadata.cpp | 2 + Data/MySQL/testsuite/src/MySQLTest.cpp | 7 +-- Data/MySQL/testsuite/src/MySQLTest.h | 4 ++ Data/MySQL/testsuite/src/SQLExecutor.cpp | 3 +- Data/MySQL/testsuite/src/SQLExecutor.h | 2 + Foundation/include/Poco/Event_POSIX.h | 8 +-- Foundation/include/Poco/Format.h | 51 ++++++++----------- Foundation/include/Poco/Mutex.h | 19 +------ Foundation/include/Poco/Platform.h | 37 +++++++------- Foundation/include/Poco/Semaphore_POSIX.h | 9 ++-- Foundation/include/Poco/UnWindows.h | 6 ++- Foundation/include/Poco/Version.h | 2 +- Foundation/src/MD4Engine.cpp | 10 +++- Foundation/src/MD5Engine.cpp | 10 +++- Foundation/src/Mutex.cpp | 4 -- Foundation/src/SHA1Engine.cpp | 7 +++ Foundation/testsuite/src/FormatTest.cpp | 23 +++++++++ Foundation/testsuite/src/FormatTest.h | 1 + Foundation/testsuite/src/RWLockTest.cpp | 23 ++++++++- Foundation/testsuite/src/StringTest.h | 2 + Net/Net_vs170.vcxproj | 24 ++++----- Net/src/PollSet.cpp | 42 +++++++++++---- Net/testsuite/TestSuite_vs170.vcxproj | 24 ++++----- Net/testsuite/src/PollSetTest.cpp | 7 ++- README | 23 ++++++++- README.md | 17 +++++++ VERSION | 2 +- doc/99100-ReleaseNotes.page | 25 +++++++++ doc/99150-WindowsPlatformNotes.page | 13 +++++ libversion | 2 +- release/script/mkrelease | 10 ++++ 59 files changed, 597 insertions(+), 255 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 27e717067..8182d1edf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: - run: ./configure --config=Linux-c++20 --everything --omit=PDF && make all -s -j4 && sudo make install - run: >- sudo -s - EXCLUDE_TESTS="Data/ODBC Data/PostgreSQL MongoDB" + EXCLUDE_TESTS="Data/ODBC Data/MySQL Data/PostgreSQL MongoDB" ./ci/runtests.sh linux-gcc-make-asan: diff --git a/CHANGELOG b/CHANGELOG index c94031ccb..b79b38c8d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,28 @@ This is the changelog file for the POCO C++ Libraries. +Release 1.12.2 (2022-08-08) +=========================== + +- GH #3460 fix(Platform): LoongArch support +- GH #3688 Linking Crypto-testrunner fails +- GH #3693 VS2022 compilation issues +- GH #3698 SIGABRT in OSSL_PROVIDER_unload with static OpenSSL3 +- GH #3699 POSIX Event state need not be atomic +- GH #3700 Release script must include build_vs170.cmd +- GH #3708 wakeup fd is never read +- GH #3711 lowercase winsock2 and iphlpapi to allow cross compile +- GH #3716 Compiling with clang_cl_x64_x64 on Visual Studio 2022 failed +- GH #3717 Only support extracting JSON fields when the SDK supports it +- GH #3719 PocoNet Project File does not support Visual Studio 2022 +- GH #3720 Update max MSVC version information +- GH #3721 fails to build with Visual Studio projects +- GH #3722 Added missing Crypto Header to ProGen source +- GH #3724 Crypto: Progen again to add new files and bring back ARM64 configuration +- GH #3727 Add how to install using Conan section on README +- GH #3733 Poco::format and C++20 +- GH #3734 g++ C++20 warnings + + Release 1.12.1 (2022-07-18) =========================== diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 102a4a299..7bc689d68 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -51,3 +51,5 @@ Martin Osborne Björn Schramke Francis Andre Kacper Piwiński +Hernan Martinez +Jacky Woo diff --git a/Crypto/Crypto_VS90.vcproj b/Crypto/Crypto_VS90.vcproj index 4f8545e6d..0a76f3c16 100644 --- a/Crypto/Crypto_VS90.vcproj +++ b/Crypto/Crypto_VS90.vcproj @@ -653,6 +653,10 @@ RelativePath=".\include\Poco\Crypto\CryptoException.h" > + + @@ -677,6 +681,10 @@ RelativePath=".\src\CryptoException.cpp" > + + @@ -733,6 +741,10 @@ RelativePath=".\include\Poco\Crypto\ECKeyImpl.h" > + + + + + + @@ -607,6 +609,12 @@ true + + true + + + true + true diff --git a/Crypto/Crypto_vs140.vcxproj.filters b/Crypto/Crypto_vs140.vcxproj.filters index d270f7e75..489e410f6 100644 --- a/Crypto/Crypto_vs140.vcxproj.filters +++ b/Crypto/Crypto_vs140.vcxproj.filters @@ -2,58 +2,58 @@ - {04b70b04-697e-42a9-9aeb-e9ce6c343be9} + {60a8c7e2-2faa-4d2f-9395-a8a7b0b27799} - {75a7f23f-980b-4c33-b078-16605d946917} + {5810f1ac-f1a0-4eec-805c-4f10c8731258} - {af502e4d-9e80-4ff0-8e62-177ccd345d80} + {079a0514-d9e9-4c7e-814e-7bc6941f7492} - {ee9d5c88-630f-41f3-9e82-4c7dd16e8125} + {d9e32eb5-0f20-4262-8c04-ce30a11b5278} - {ac0454d9-cb57-4244-b7be-2dc1b78415bd} + {4d5ddd1e-5b34-493d-b3e6-696b3950239d} - {9356d389-2a2b-4bbb-9a48-0069ebce4ac6} + {52e2d122-9409-4b00-bb5d-8596e350271f} - {9edcc672-ed8e-493a-8a98-716bcc14c6e9} + {dc9887bc-80fa-4400-8ae3-798d0216e70e} - {e07cca81-0e0c-45ca-85f7-901a3ad549de} + {9af8f56b-58e6-471c-99dd-649f82bb513d} - {3cb68e52-e52f-453e-b02a-e88618254bcb} + {e986c9a0-8d5f-4ece-b226-97b00f75c36b} - {4ad478a3-34ab-4eb5-aff3-f3c6c93f4c5d} + {815003c3-868c-4edb-b8fc-71239f111d12} - {2af5aa00-cfb8-4d7a-9aed-fed3ee3f9ca1} + {83254184-d4b3-4e90-aaf8-6185be913f80} - {7cec80c3-6ea2-43cc-ada1-53605f124468} + {975ee625-4d9c-42c8-a51a-5ae6c152f3f7} - {f76416de-9deb-4dba-b54f-35ed9e474073} + {3ab5ac8f-2b83-4dfc-9603-0dac69d52013} - {696a1fff-7f4d-4595-9c40-e6596ef086b6} + {8b978dca-eb5f-4437-a1c2-4491c531c24e} - {9e86ecc5-a026-4432-8b10-45b575c1fa87} + {0a3d66e4-a2fd-41a2-b579-95aa9bd44595} - {edffd197-3071-4677-bdff-b0a00c7a014a} + {a612ef80-bf86-4cd6-912c-ba726353cc2a} - {dc754ea7-075d-48ff-9777-ff9aa6c9ddac} + {c46a2637-5bab-4cf6-93c0-d09d784e65f6} - {7a39a221-fafa-4375-9b1b-19488f30606b} + {e84f7326-3466-4a9e-bba3-1b0c4885717a} @@ -102,6 +102,9 @@ CryptoCore\Header Files + + CryptoCore\Header Files + CryptoCore\Header Files @@ -126,6 +129,9 @@ EC\Header Files + + EC\Header Files + @@ -170,6 +176,9 @@ CryptoCore\Source Files + + CryptoCore\Source Files + CryptoCore\Source Files @@ -194,6 +203,9 @@ EC\Source Files + + EC\Source Files + diff --git a/Crypto/Crypto_vs150.vcxproj b/Crypto/Crypto_vs150.vcxproj index 53f4b5d2b..66fe82987 100644 --- a/Crypto/Crypto_vs150.vcxproj +++ b/Crypto/Crypto_vs150.vcxproj @@ -559,6 +559,8 @@ + + @@ -607,6 +609,12 @@ true + + true + + + true + true diff --git a/Crypto/Crypto_vs150.vcxproj.filters b/Crypto/Crypto_vs150.vcxproj.filters index a30052634..3e30674e9 100644 --- a/Crypto/Crypto_vs150.vcxproj.filters +++ b/Crypto/Crypto_vs150.vcxproj.filters @@ -2,58 +2,58 @@ - {d9c44334-4a59-4b62-9f69-ceece97c18ed} + {75698788-03bc-4370-ab55-99d48c973dce} - {b8ed2f18-0b9c-4769-bc96-7a08bbdf8467} + {bcaac4d6-7340-4f39-9b36-724a1408f06c} - {42d8ab87-49fa-462d-8eab-709bb5c01557} + {e455849b-48cb-431b-983f-30c955a93552} - {b9a6f7a6-4b5c-4098-9d5c-65c2c2c394ef} + {b3905243-9455-4c38-a56e-1edaf52d18c3} - {29984b35-3df8-42a1-a712-2aecf201add5} + {8541c53c-aa29-4062-9029-6ba5ab950d9a} - {d33e4790-ed28-418b-9833-4bc1076e96f5} + {43690a3d-2085-46bd-8722-a153c2170f3e} - {646c27d1-6e6e-4637-88b3-4319186e3c55} + {c7c75237-17b5-443e-b48d-d276bedafb7e} - {3524e378-6f24-42ad-b273-c566e755b3ef} + {ca5d30c0-a95e-413d-a182-8ee7dfed0bff} - {47293d8d-14cd-43a0-b269-750216980bf1} + {cd24b06b-7900-4c1f-b1a3-8d5b2110ef46} - {e7a8b613-2fca-4175-8c42-19f40617fff7} + {ef3bafde-f2e0-4779-b50a-bcb066c09583} - {b9e2d34e-d0d6-49c5-912b-745b2d6aef07} + {deb5208b-9e44-47da-b191-718552850f5f} - {e07d97b9-8fd9-4c1d-bf49-65bce81a160d} + {01df9f00-078a-4cca-829a-d7421dfe4a43} - {cb31088c-c4cd-4a55-85a2-b59ac56cdecf} + {08b5b434-275e-46a4-a528-b6da06cc5691} - {9fc80937-4552-4263-b935-d62b68bfb981} + {d7cb049c-8340-4eda-899a-27c4d0ff3746} - {45c655ac-89aa-41b9-8d45-22b15ae4d07e} + {7e05b39f-e6ff-4225-8527-eb37bbcdfb18} - {ed9f6c2f-b58a-4306-b9aa-2142ebb895dd} + {3c7f4c55-1189-43b5-a9f6-5debd66906ba} - {61b07ccd-ce5a-4b1b-9254-8925309edbda} + {c3c69023-452b-455e-902a-684735fc89c7} - {3daecefa-a485-48f9-8297-854d4ca4b2ae} + {f3238968-0490-44f5-8031-00edec99904c} @@ -102,6 +102,9 @@ CryptoCore\Header Files + + CryptoCore\Header Files + CryptoCore\Header Files @@ -126,6 +129,9 @@ EC\Header Files + + EC\Header Files + @@ -170,6 +176,9 @@ CryptoCore\Source Files + + CryptoCore\Source Files + CryptoCore\Source Files @@ -194,6 +203,9 @@ EC\Source Files + + EC\Source Files + diff --git a/Crypto/Crypto_vs160.vcxproj b/Crypto/Crypto_vs160.vcxproj index 2ed57cca2..833edebbb 100644 --- a/Crypto/Crypto_vs160.vcxproj +++ b/Crypto/Crypto_vs160.vcxproj @@ -559,6 +559,8 @@ + + @@ -607,6 +609,12 @@ true + + true + + + true + true diff --git a/Crypto/Crypto_vs160.vcxproj.filters b/Crypto/Crypto_vs160.vcxproj.filters index 3ebeca3fb..f50401387 100644 --- a/Crypto/Crypto_vs160.vcxproj.filters +++ b/Crypto/Crypto_vs160.vcxproj.filters @@ -2,58 +2,58 @@ - {3ecf5332-c0c0-4122-b6e6-5dfabcb3b7fa} + {3e947499-e07e-49ae-9368-67ebdce7e2d9} - {4f8087f2-96ea-4728-8555-d1188d7dc40a} + {56cd8b79-7799-4706-be30-2f2551da9b06} - {546fc14e-2cad-438b-9670-e97a20c93227} + {ba015481-3cdc-4b4e-979f-73af16c9f113} - {78b6b52e-8707-4bad-8e63-a00446e610b5} + {29330975-8f63-4932-ae8b-2fc823bb5729} - {8da8d37c-0726-4c66-8375-9c2215bfdb6e} + {0de2d2fa-d52e-4b93-8429-1cc40ac5d89c} - {b33478ac-7764-436b-9419-797b445d9e83} + {73da9949-c7b1-450e-bfca-78e4fbaf01d0} - {9f50f3b5-a45f-45cd-a667-5c287f5f9025} + {56b61611-cae5-4a96-bec3-89dce21181c0} - {9d19bec5-a10f-4327-b252-0d33d1b4364f} + {7c16cc60-1306-47e1-aebf-18a33bbc40d3} - {d4e7ac76-ba3e-42d8-a8fb-1657f654d44b} + {15ccacc4-e673-4461-979f-862c147d2d0b} - {c0e23a57-a0d8-46aa-b1c5-977e4e8f95d1} + {26ce3381-5dc3-4241-8d27-09e14c4043b6} - {20f51cfd-b923-4182-a7ab-31806eccc848} + {9c578c8e-c65f-4088-9ca6-7609d2e7ebc0} - {765d54fc-025a-4e99-9274-a88d057bb402} + {418ebbbe-2a7d-4015-adf8-2e86566935a2} - {f5523a96-c1d3-493a-bc12-5033ec02d098} + {0a5aa58f-8179-480c-8805-7b64cb7c282a} - {ae54a1d7-7704-4a81-a841-ea05b0dc149c} + {66cbfe0e-ff30-42fe-9736-9fe8afad9463} - {e5b2f762-c12e-4cb6-9800-3df0cfcf2359} + {5ef84937-9e64-4f4a-af40-1118ac399fdc} - {95bc93c4-7fa9-4859-81b8-e7e886e927fe} + {59903614-4362-40ca-90f9-61958a40bf02} - {a996aa2c-ddc3-433f-9c82-a45e8e2ed763} + {6f907377-ea23-41d7-8008-63bf458c1a99} - {f39359ba-7374-4c3a-a42e-d9bafcf29f3e} + {e724e3f7-8adc-4738-8be3-fb6edbd76351} @@ -102,6 +102,9 @@ CryptoCore\Header Files + + CryptoCore\Header Files + CryptoCore\Header Files @@ -126,6 +129,9 @@ EC\Header Files + + EC\Header Files + @@ -170,6 +176,9 @@ CryptoCore\Source Files + + CryptoCore\Source Files + CryptoCore\Source Files @@ -194,6 +203,9 @@ EC\Source Files + + EC\Source Files + diff --git a/Crypto/Crypto_vs170.vcxproj b/Crypto/Crypto_vs170.vcxproj index aa7b65bff..ca4d885d4 100644 --- a/Crypto/Crypto_vs170.vcxproj +++ b/Crypto/Crypto_vs170.vcxproj @@ -1,5 +1,5 @@ - + debug_shared @@ -75,7 +75,6 @@ - 17.0 Crypto {EEEE7259-32E9-4D56-B023-C733940AB2A0} Crypto @@ -230,7 +229,7 @@ - <_ProjectFileVersion>17.0.32505.173 + <_ProjectFileVersion>16.0.32629.160 PocoCryptoA64d PocoCryptomdd PocoCryptomtd @@ -824,6 +823,8 @@ + + @@ -872,6 +873,12 @@ true + + true + + + true + true diff --git a/Crypto/Crypto_vs170.vcxproj.filters b/Crypto/Crypto_vs170.vcxproj.filters index 2b1a7842b..151ae5735 100644 --- a/Crypto/Crypto_vs170.vcxproj.filters +++ b/Crypto/Crypto_vs170.vcxproj.filters @@ -2,58 +2,58 @@ - {34bbacdf-fe33-4bd3-9426-3bc26ade9b94} + {956bb6d7-1946-4d8e-a988-6f840553f433} - {5d80018e-2cc9-4741-bf05-930dd617444a} + {ac7c9562-5031-4fd3-bf00-58ee2afd58f1} - {0a531e76-fe1e-4f3f-81b0-68b751b255ff} + {bc2c461a-a460-43c5-9dda-e1ac05590b4a} - {18b9cc08-9f8f-4054-b083-30cc3c4fb631} + {6f66dac0-646c-425e-98f9-0443b14bea15} - {1f2b177f-bc05-4046-bd13-d0eba7040221} + {3cd7a042-61b8-4430-88a3-96de91011504} - {dec8e5e1-0478-4ab2-b9a7-f8ce2553beb3} + {5480a739-70e8-4989-9388-858bc73745bf} - {93c35b55-d82d-4c54-a768-cacc2338318a} + {10a1798e-fd19-4a4b-a4fa-078316b35b4a} - {20ccf5ae-68a5-49be-85e8-fb0eac59c086} + {948b072b-d50b-4e17-bed4-3bae8345be51} - {d1864542-e04e-4829-b119-802d2fefe699} + {984e69ae-d972-430f-84ad-885ce648930e} - {e634f764-4976-4869-a6ae-e7d6be341199} + {c4a637d7-9aad-4d1b-b9ce-b00a3a9bf47c} - {7640a028-9ec4-47e6-9e54-e9832ca6fa8e} + {ef263eac-80d3-4c1a-abee-af439456b293} - {a137182c-8f17-4807-865a-c599fdcab1fd} + {2af1dbe7-277e-4ab3-b8ad-255c4cf4f3ac} - {2ecfa06f-6c01-4bbd-89be-ecbe4ea42f71} + {8d350d20-818d-4e10-8a87-6df008441927} - {52707f46-92c1-456e-9b3f-979119fa2765} + {a6bd57e4-6d39-4a42-aa3d-4b1ad9e262fa} - {c0dea038-b0d7-4230-ae2a-6109a956d171} + {1c3b1b7c-2a2b-4eba-bc22-cedfdcc12b48} - {139e856e-92e1-4ab0-8a01-0f4e5187d1da} + {a692dced-8e66-4531-9567-6b57a3f9d89f} - {034d828f-2206-4327-808c-4a8bec130031} + {d6b09c46-8d74-4ab2-99b0-31923c880bed} - {aedbce70-7a08-408c-9a8e-99ab85222508} + {b0414365-c964-4c45-a80e-8539c5fe0b5b} @@ -102,6 +102,9 @@ CryptoCore\Header Files + + CryptoCore\Header Files + CryptoCore\Header Files @@ -126,6 +129,9 @@ EC\Header Files + + EC\Header Files + @@ -170,6 +176,9 @@ CryptoCore\Source Files + + CryptoCore\Source Files + CryptoCore\Source Files @@ -194,6 +203,9 @@ EC\Source Files + + EC\Source Files + diff --git a/Crypto/include/Poco/Crypto/Envelope.h b/Crypto/include/Poco/Crypto/Envelope.h index 0fe3c3ad2..5102de3d5 100644 --- a/Crypto/include/Poco/Crypto/Envelope.h +++ b/Crypto/include/Poco/Crypto/Envelope.h @@ -150,13 +150,13 @@ inline std::string Envelope::openAsString(const EVPPKey& privKey, const ByteVec& } -const Envelope::ByteVec& Envelope::getContent() const +inline const Envelope::ByteVec& Envelope::getContent() const { return _encContent; } -void Envelope::setContent(const ByteVec& enc) +inline void Envelope::setContent(const ByteVec& enc) { _encContent = enc; } diff --git a/Crypto/include/Poco/Crypto/OpenSSLInitializer.h b/Crypto/include/Poco/Crypto/OpenSSLInitializer.h index 25e4c477a..c46fd741c 100644 --- a/Crypto/include/Poco/Crypto/OpenSSLInitializer.h +++ b/Crypto/include/Poco/Crypto/OpenSSLInitializer.h @@ -92,8 +92,8 @@ private: #endif #if OPENSSL_VERSION_NUMBER >= 0x30000000L - static std::atomic _defaultProvider; - static std::atomic _legacyProvider; + static OSSL_PROVIDER* _defaultProvider; + static OSSL_PROVIDER* _legacyProvider; #endif }; diff --git a/Crypto/src/OpenSSLInitializer.cpp b/Crypto/src/OpenSSLInitializer.cpp index c537c3f9c..1d2c92551 100644 --- a/Crypto/src/OpenSSLInitializer.cpp +++ b/Crypto/src/OpenSSLInitializer.cpp @@ -66,8 +66,8 @@ Poco::FastMutex* OpenSSLInitializer::_mutexes(0); #endif #if OPENSSL_VERSION_NUMBER >= 0x30000000L -std::atomic OpenSSLInitializer::_defaultProvider(0); -std::atomic OpenSSLInitializer::_legacyProvider(0); +OSSL_PROVIDER* OpenSSLInitializer::_defaultProvider(0); +OSSL_PROVIDER* OpenSSLInitializer::_legacyProvider(0); #endif diff --git a/Crypto/testsuite/TestSuite_VS90.vcproj b/Crypto/testsuite/TestSuite_VS90.vcproj index 9804eb3f9..3d38900f3 100644 --- a/Crypto/testsuite/TestSuite_VS90.vcproj +++ b/Crypto/testsuite/TestSuite_VS90.vcproj @@ -582,6 +582,10 @@ RelativePath=".\src\PKCS12ContainerTest.h" > + + @@ -610,6 +614,10 @@ RelativePath=".\src\PKCS12ContainerTest.cpp" > + + diff --git a/Crypto/testsuite/TestSuite_vs140.vcxproj b/Crypto/testsuite/TestSuite_vs140.vcxproj index 63f4268ef..de77af4b0 100644 --- a/Crypto/testsuite/TestSuite_vs140.vcxproj +++ b/Crypto/testsuite/TestSuite_vs140.vcxproj @@ -602,6 +602,7 @@ + @@ -622,6 +623,9 @@ true + + true + true diff --git a/Crypto/testsuite/TestSuite_vs140.vcxproj.filters b/Crypto/testsuite/TestSuite_vs140.vcxproj.filters index 92766ad14..dec7fb619 100644 --- a/Crypto/testsuite/TestSuite_vs140.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_vs140.vcxproj.filters @@ -2,28 +2,28 @@ - {0307e461-0372-4b61-b88a-24f59d5291f5} + {9dff95b8-7a0a-42a2-882d-240353eebc86} - {ea60f0b1-8f41-4785-b21c-ea51871b27b6} + {c461d935-f1d4-468f-8e89-a06090c1b7d6} - {73a5e4b2-0a40-4682-adcd-f76a09839671} + {dcfe4ffa-6b62-4c48-9625-6fa8d16841f6} - {1cf95bad-cc85-45a5-82db-4348109089a6} + {66610ad9-d08d-4cd7-b3d2-d6d71a7d9ac5} - {e596f9e4-e909-41be-9311-df2d6d3747aa} + {0cfb4e9f-5fe7-42dd-96f1-3dc5e779bf88} - {4484ecb8-1194-4fc5-bb53-264ad9a608b2} + {0cd7e466-afb0-40c7-abff-08147e0e6da7} - {4d620dde-5cd7-4b0e-a142-d965960c8a72} + {89a0f0f0-fd2a-49aa-91f2-5b766adcd945} - {be860c27-4ecf-4076-bf9a-214fec9a6bb5} + {e110d68e-1724-4d5e-8ab5-f774c2735147} @@ -42,6 +42,9 @@ Crypto\Header Files + + Crypto\Header Files + Crypto\Header Files @@ -65,6 +68,9 @@ Crypto\Source Files + + Crypto\Source Files + Crypto\Source Files diff --git a/Crypto/testsuite/TestSuite_vs150.vcxproj b/Crypto/testsuite/TestSuite_vs150.vcxproj index b57bc883b..1167f02c1 100644 --- a/Crypto/testsuite/TestSuite_vs150.vcxproj +++ b/Crypto/testsuite/TestSuite_vs150.vcxproj @@ -602,6 +602,7 @@ + @@ -622,6 +623,9 @@ true + + true + true diff --git a/Crypto/testsuite/TestSuite_vs150.vcxproj.filters b/Crypto/testsuite/TestSuite_vs150.vcxproj.filters index 3c4912f82..ab329fa92 100644 --- a/Crypto/testsuite/TestSuite_vs150.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_vs150.vcxproj.filters @@ -2,28 +2,28 @@ - {2bb088de-648b-44f3-a6da-7e01203baa0c} + {c36620ad-ed1f-44db-b632-628f09517b5a} - {b0434cc3-d68a-4a24-a60e-ba34498152ea} + {93ac862f-ef66-4c96-82c6-82f03c87b786} - {c7b2facf-5022-4c9b-85b2-55ca7ff19a47} + {c59358e6-8395-4e21-b952-d8f99d0805c9} - {cbd4a023-92b8-4bb5-a9df-435c6a7afe13} + {f96aacb4-a5dc-4cd9-9af3-9181ca3d08e8} - {2a3ebbe8-0b82-4b0b-b75a-2a14e7cf8510} + {0f12e848-51bd-4dcb-ac5a-21cfe7a2d3f9} - {6384c5af-9c91-4a65-b82a-f21cd1e0889e} + {79f7b368-e662-4165-b04b-4a1d652b6a32} - {c41d57c8-f31f-4791-ba37-a1976e798c72} + {4c17d29d-4e86-4175-8704-3d1374a9e47c} - {4c8e8c4a-0480-47c4-ab2e-0271c7874e63} + {d54ac5e8-d98b-4c54-a8a4-8553a21a9ac7} @@ -42,6 +42,9 @@ Crypto\Header Files + + Crypto\Header Files + Crypto\Header Files @@ -65,6 +68,9 @@ Crypto\Source Files + + Crypto\Source Files + Crypto\Source Files diff --git a/Crypto/testsuite/TestSuite_vs160.vcxproj b/Crypto/testsuite/TestSuite_vs160.vcxproj index adf780891..4ff3fed0a 100644 --- a/Crypto/testsuite/TestSuite_vs160.vcxproj +++ b/Crypto/testsuite/TestSuite_vs160.vcxproj @@ -157,7 +157,7 @@ - <_ProjectFileVersion>15.0.28307.799 + <_ProjectFileVersion>16.0.32629.160 TestSuited TestSuited TestSuited @@ -602,6 +602,7 @@ + @@ -622,6 +623,9 @@ true + + true + true diff --git a/Crypto/testsuite/TestSuite_vs160.vcxproj.filters b/Crypto/testsuite/TestSuite_vs160.vcxproj.filters index 10566c169..9319e7674 100644 --- a/Crypto/testsuite/TestSuite_vs160.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_vs160.vcxproj.filters @@ -2,28 +2,28 @@ - {0dc0ac78-ca59-458b-8c95-bb50bba12e83} + {8e27cadf-c720-479f-92da-b1e97f437438} - {7ab4046f-488c-47f4-b6db-18fe2cc37af5} + {91a5793c-8b68-45d0-b350-877dd6cf2c02} - {a2b63aa7-58ba-4f3a-b391-a3f32a67bce7} + {a14e5add-e33d-424b-be23-0b8371e22609} - {92de59df-1db3-4ac4-a545-9e16c5a4aaeb} + {f231f366-be62-4292-ab26-f91a41191403} - {859f2c78-4de9-4aa2-b113-d5b2fc4fda8f} + {ec44c7f3-b2a1-4b59-9081-8e61ddef1c44} - {62840282-6976-4ef5-934c-9e7ef7f4aad1} + {728bece6-f76d-483c-a028-52f91599a7e7} - {c2dfb797-2cf1-48e9-a3db-9578c1be834d} + {57064194-c6d7-414b-9f0d-a1707f6e0c8d} - {68a624c7-5f73-4259-9035-b8c7eb047dd9} + {60671a47-3546-4b5d-b1e9-275110dd36ca} @@ -42,6 +42,9 @@ Crypto\Header Files + + Crypto\Header Files + Crypto\Header Files @@ -65,6 +68,9 @@ Crypto\Source Files + + Crypto\Source Files + Crypto\Source Files diff --git a/Crypto/testsuite/TestSuite_vs170.vcxproj b/Crypto/testsuite/TestSuite_vs170.vcxproj index 8c416e4e5..0cb17b77c 100644 --- a/Crypto/testsuite/TestSuite_vs170.vcxproj +++ b/Crypto/testsuite/TestSuite_vs170.vcxproj @@ -1,5 +1,5 @@ - + debug_shared @@ -75,7 +75,6 @@ - 17.0 TestSuite {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15} TestSuite @@ -230,7 +229,7 @@ - <_ProjectFileVersion>17.0.32505.173 + <_ProjectFileVersion>16.0.32629.160 TestSuited TestSuited TestSuited @@ -894,6 +893,7 @@ + @@ -914,6 +914,9 @@ true + + true + true diff --git a/Crypto/testsuite/TestSuite_vs170.vcxproj.filters b/Crypto/testsuite/TestSuite_vs170.vcxproj.filters index 5fbae8767..ffa5b9bc9 100644 --- a/Crypto/testsuite/TestSuite_vs170.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_vs170.vcxproj.filters @@ -2,28 +2,28 @@ - {d1b16a39-59cc-4ef0-9d73-4d04996f08fa} + {acf5407e-78f8-481f-aede-24ca7504422d} - {c9623c27-0634-4604-bd61-89ca38d7950f} + {ed75d974-1e6e-4d97-83fb-7111122dba8b} - {66f4dae6-1522-476f-be79-2c602dd14fb3} + {0271bc10-a0c8-408a-8b2b-64e557c63f32} - {6846cd67-bb5c-486a-93ed-10ceb333c0ac} + {30319608-5ad4-43c1-af6e-84729e9e9aa6} - {872a61f1-451a-4126-a12d-b3a1f5919df4} + {aa5fc0e5-cee3-4f44-8a6a-7f64fbbda341} - {fa41b61e-ec0f-426c-ac7c-5b47efa76ea8} + {d2e3ae91-4bc3-4259-ab5d-9bc19d47d37c} - {33db57c6-abab-46f8-9c57-5a2646a695a5} + {9e497b70-abc5-4962-8853-36eb7d61b4ba} - {2b6fc30d-653d-4128-afd1-182c60660088} + {d16fc517-f3ee-4181-acac-c11efb90d9e8} @@ -42,6 +42,9 @@ Crypto\Header Files + + Crypto\Header Files + Crypto\Header Files @@ -65,6 +68,9 @@ Crypto\Source Files + + Crypto\Source Files + Crypto\Source Files diff --git a/DLLVersion.rc b/DLLVersion.rc index ffca82f26..fcdc251cd 100644 --- a/DLLVersion.rc +++ b/DLLVersion.rc @@ -4,8 +4,8 @@ #include "winres.h" -#define POCO_VERSION 1,12,1,0 -#define POCO_VERSION_STR "1.12.1" +#define POCO_VERSION 1,12,2,0 +#define POCO_VERSION_STR "1.12.2" VS_VERSION_INFO VERSIONINFO FILEVERSION POCO_VERSION diff --git a/Data/MySQL/include/Poco/Data/MySQL/Extractor.h b/Data/MySQL/include/Poco/Data/MySQL/Extractor.h index 6952f8cd4..606916b7c 100644 --- a/Data/MySQL/include/Poco/Data/MySQL/Extractor.h +++ b/Data/MySQL/include/Poco/Data/MySQL/Extractor.h @@ -324,9 +324,9 @@ private: bool realExtractFixed(std::size_t pos, enum_field_types type, void* buffer, bool isUnsigned = false); bool extractLongLOB(std::size_t pos); - +#ifdef POCO_MYSQL_JSON bool extractJSON(std::size_t pos); - +#endif // Prevent VC8 warning "operator= could not be generated" Extractor& operator=(const Extractor&); diff --git a/Data/MySQL/include/Poco/Data/MySQL/MySQL.h b/Data/MySQL/include/Poco/Data/MySQL/MySQL.h index 6ddcd3988..238659094 100644 --- a/Data/MySQL/include/Poco/Data/MySQL/MySQL.h +++ b/Data/MySQL/include/Poco/Data/MySQL/MySQL.h @@ -62,5 +62,17 @@ #endif #endif +// +// Detect support for JSON data type +// +#if defined(MARIADB_VERSION_ID) + #if MARIADB_VERSION_ID >= 100207 + #define POCO_MYSQL_JSON + #endif +#else + #if MYSQL_VERSION_ID >= 50708 + #define POCO_MYSQL_JSON + #endif +#endif #endif // MySQL_MySQL_INCLUDED diff --git a/Data/MySQL/src/Extractor.cpp b/Data/MySQL/src/Extractor.cpp index cb06a2d5d..9af6ba46e 100644 --- a/Data/MySQL/src/Extractor.cpp +++ b/Data/MySQL/src/Extractor.cpp @@ -128,12 +128,16 @@ bool Extractor::extract(std::size_t pos, std::string& val) //mysql reports TEXT types as FDT_BLOB when being extracted MetaColumn::ColumnDataType columnType = _metadata.metaColumn(static_cast(pos)).type(); +#ifdef POCO_MYSQL_JSON if (columnType != Poco::Data::MetaColumn::FDT_STRING && columnType != Poco::Data::MetaColumn::FDT_BLOB && columnType != Poco::Data::MetaColumn::FDT_JSON) +#else + if (columnType != Poco::Data::MetaColumn::FDT_STRING && columnType != Poco::Data::MetaColumn::FDT_BLOB) +#endif throw MySQLException("Extractor: not a string"); - +#ifdef POCO_MYSQL_JSON if (columnType == Poco::Data::MetaColumn::FDT_JSON && !extractJSON(pos)) return false; - +#endif if (columnType == Poco::Data::MetaColumn::FDT_BLOB && !extractLongLOB(pos)) return false; @@ -291,6 +295,7 @@ bool Extractor::extractLongLOB(std::size_t pos) return true; } +#ifdef POCO_MYSQL_JSON bool Extractor::extractJSON(std::size_t pos) { // JSON columns are fetched with a zero-length @@ -306,6 +311,7 @@ bool Extractor::extractJSON(std::size_t pos) return true; } +#endif ////////////// // Not implemented diff --git a/Data/MySQL/src/ResultMetadata.cpp b/Data/MySQL/src/ResultMetadata.cpp index 33c3785ed..61b49dd54 100644 --- a/Data/MySQL/src/ResultMetadata.cpp +++ b/Data/MySQL/src/ResultMetadata.cpp @@ -72,7 +72,9 @@ namespace case MYSQL_TYPE_MEDIUM_BLOB: case MYSQL_TYPE_LONG_BLOB: case MYSQL_TYPE_BLOB: +#ifdef POCO_MYSQL_JSON case MYSQL_TYPE_JSON: +#endif return field.length; default: diff --git a/Data/MySQL/testsuite/src/MySQLTest.cpp b/Data/MySQL/testsuite/src/MySQLTest.cpp index cbe6a5dc8..80a3683b1 100644 --- a/Data/MySQL/testsuite/src/MySQLTest.cpp +++ b/Data/MySQL/testsuite/src/MySQLTest.cpp @@ -487,6 +487,7 @@ void MySQLTest::testLongTEXT() _pExecutor->longText(); } +#ifdef POCO_MYSQL_JSON void MySQLTest::testJSON() { if (!_pSession) fail("Test not available."); @@ -494,7 +495,7 @@ void MySQLTest::testJSON() recreatePersonJSONTable(); _pExecutor->json(); } - +#endif void MySQLTest::testUnsignedInts() { @@ -796,7 +797,7 @@ void MySQLTest::recreatePersonLongBLOBTable() catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail ("recreatePersonLongBLOBTable()"); } } - +#ifdef POCO_MYSQL_JSON void MySQLTest::recreatePersonJSONTable() { dropTable("Person"); @@ -804,7 +805,7 @@ void MySQLTest::recreatePersonJSONTable() catch (ConnectionException& ce) { std::cout << ce.displayText() << std::endl; fail("recreatePersonJSONTable()"); } catch (StatementException& se) { std::cout << se.displayText() << std::endl; fail("recreatePersonJSONTable()"); } } - +#endif void MySQLTest::recreateIntsTable() { diff --git a/Data/MySQL/testsuite/src/MySQLTest.h b/Data/MySQL/testsuite/src/MySQLTest.h index 8afdfb2d2..9a2568b3d 100644 --- a/Data/MySQL/testsuite/src/MySQLTest.h +++ b/Data/MySQL/testsuite/src/MySQLTest.h @@ -81,7 +81,9 @@ public: void testBLOBStmt(); void testLongBLOB(); void testLongTEXT(); +#ifdef POCO_MYSQL_JSON void testJSON(); +#endif void testUnsignedInts(); void testFloat(); @@ -122,7 +124,9 @@ private: void recreatePersonTimeTable(); void recreatePersonTimestampTable(); void recreatePersonLongBLOBTable(); +#ifdef POCO_MYSQL_JSON void recreatePersonJSONTable(); +#endif void recreateStringsTable(); void recreateIntsTable(); void recreateUnsignedIntsTable(); diff --git a/Data/MySQL/testsuite/src/SQLExecutor.cpp b/Data/MySQL/testsuite/src/SQLExecutor.cpp index 6c036b9b4..cd43f7797 100644 --- a/Data/MySQL/testsuite/src/SQLExecutor.cpp +++ b/Data/MySQL/testsuite/src/SQLExecutor.cpp @@ -1513,6 +1513,7 @@ void SQLExecutor::longText() poco_assert (longTextRes == biography); } +#ifdef POCO_MYSQL_JSON void SQLExecutor::json() { std::string funct = "json()"; @@ -1537,7 +1538,7 @@ void SQLExecutor::json() catch (StatementException& se) { std::cout << se.displayText() << std::endl; fail(funct); } poco_assert(res == biography); } - +#endif void SQLExecutor::tuples() { diff --git a/Data/MySQL/testsuite/src/SQLExecutor.h b/Data/MySQL/testsuite/src/SQLExecutor.h index 0bec61457..ba300212e 100644 --- a/Data/MySQL/testsuite/src/SQLExecutor.h +++ b/Data/MySQL/testsuite/src/SQLExecutor.h @@ -86,7 +86,9 @@ public: void timestamp(); void longBlob(); void longText(); +#ifdef POCO_MYSQL_JSON void json(); +#endif void unsignedInts(); void floats(); void doubles(); diff --git a/Foundation/include/Poco/Event_POSIX.h b/Foundation/include/Poco/Event_POSIX.h index 93b64e67c..a6368bd25 100644 --- a/Foundation/include/Poco/Event_POSIX.h +++ b/Foundation/include/Poco/Event_POSIX.h @@ -39,10 +39,10 @@ protected: void resetImpl(); private: - bool _auto; - std::atomic _state; - pthread_mutex_t _mutex; - pthread_cond_t _cond; + bool _auto; + bool _state; + pthread_mutex_t _mutex; + pthread_cond_t _cond; }; diff --git a/Foundation/include/Poco/Format.h b/Foundation/include/Poco/Format.h index 515df47e9..e76326c6e 100644 --- a/Foundation/include/Poco/Format.h +++ b/Foundation/include/Poco/Format.h @@ -106,20 +106,26 @@ std::string Foundation_API format(const std::string& fmt, const Any& value); /// std::string s2 = format("second: %[1]d, first: %[0]d", 1, 2); void Foundation_API format(std::string& result, const char *fmt, const std::vector& values); - /// Supports a variable number of arguments and is used by - /// all other variants of format(). + /// Supports a variable number of arguments. void Foundation_API format(std::string& result, const std::string& fmt, const std::vector& values); + /// Supports a variable number of arguments. + +inline void formatAny(std::string& result, const std::string& fmt, const std::vector& values) /// Supports a variable number of arguments and is used by /// all other variants of format(). +{ + format(result, fmt, values); +} +inline void formatAny(std::string& result, const char *fmt, const std::vector& values) + /// Supports a variable number of arguments and is used by + /// all other variants of format(). +{ + format(result, fmt, values); +} -template < - typename T, -#ifdef __cpp_lib_remove_cvref - typename std::enable_if_t, std::vector>>, -#endif - typename... Args> +template void format(std::string& result, const std::string& fmt, T arg1, Args... args) /// Appends the formatted string to result. { @@ -127,16 +133,11 @@ void format(std::string& result, const std::string& fmt, T arg1, Args... args) values.reserve(sizeof...(Args) + 1); values.emplace_back(arg1); values.insert(values.end(), { args... }); - format(result, fmt, values); + formatAny(result, fmt, values); } -template < - typename T, -#ifdef __cpp_lib_remove_cvref - typename std::enable_if_t, std::vector>>, -#endif - typename... Args> +template void format(std::string& result, const char* fmt, T arg1, Args... args) /// Appends the formatted string to result. { @@ -144,16 +145,11 @@ void format(std::string& result, const char* fmt, T arg1, Args... args) values.reserve(sizeof...(Args) + 1); values.emplace_back(arg1); values.insert(values.end(), { args... }); - format(result, fmt, values); + formatAny(result, fmt, values); } -template < - typename T, -#ifdef __cpp_lib_remove_cvref - typename std::enable_if_t, std::vector>>, -#endif - typename... Args> +template std::string format(const std::string& fmt, T arg1, Args... args) /// Returns the formatted string. { @@ -162,17 +158,12 @@ std::string format(const std::string& fmt, T arg1, Args... args) values.emplace_back(arg1); values.insert(values.end(), { args... }); std::string result; - format(result, fmt, values); + formatAny(result, fmt, values); return result; } -template < - typename T, -#ifdef __cpp_lib_remove_cvref - typename std::enable_if_t, std::vector>>, -#endif - typename... Args> +template std::string format(const char* fmt, T arg1, Args... args) /// Returns the formatted string. { @@ -181,7 +172,7 @@ std::string format(const char* fmt, T arg1, Args... args) values.emplace_back(arg1); values.insert(values.end(), { args... }); std::string result; - format(result, fmt, values); + formatAny(result, fmt, values); return result; } diff --git a/Foundation/include/Poco/Mutex.h b/Foundation/include/Poco/Mutex.h index 5070ab37a..b6f84aa56 100644 --- a/Foundation/include/Poco/Mutex.h +++ b/Foundation/include/Poco/Mutex.h @@ -22,16 +22,7 @@ #include "Poco/Exception.h" #include "Poco/ScopedLock.h" #include "Poco/Timestamp.h" - -#if __cplusplus >= 201103L - #ifndef POCO_HAVE_STD_ATOMICS - #define POCO_HAVE_STD_ATOMICS - #endif -#endif - -#ifdef POCO_HAVE_STD_ATOMICS - #include -#endif +#include #if defined(POCO_OS_FAMILY_WINDOWS) @@ -161,8 +152,6 @@ private: }; -#ifdef POCO_HAVE_STD_ATOMICS - class Foundation_API SpinlockMutex /// A SpinlockMutex, implemented in terms of std::atomic_flag, as /// busy-wait mutual exclusion. @@ -210,8 +199,6 @@ private: std::atomic_flag _flag = ATOMIC_FLAG_INIT; }; -#endif // POCO_HAVE_STD_ATOMICS - class Foundation_API NullMutex /// A NullMutex is an empty mutex implementation @@ -336,8 +323,6 @@ inline void FastMutex::unlock() } -#ifdef POCO_HAVE_STD_ATOMICS - // // SpinlockMutex // @@ -382,8 +367,6 @@ inline void SpinlockMutex::unlock() _flag.clear(std::memory_order_release); } -#endif // POCO_HAVE_STD_ATOMICS - } // namespace Poco diff --git a/Foundation/include/Poco/Platform.h b/Foundation/include/Poco/Platform.h index f5cc457a7..192d6c75f 100644 --- a/Foundation/include/Poco/Platform.h +++ b/Foundation/include/Poco/Platform.h @@ -118,24 +118,25 @@ // // Hardware Architecture and Byte Order // -#define POCO_ARCH_ALPHA 0x01 -#define POCO_ARCH_IA32 0x02 -#define POCO_ARCH_IA64 0x03 -#define POCO_ARCH_MIPS 0x04 -#define POCO_ARCH_HPPA 0x05 -#define POCO_ARCH_PPC 0x06 -#define POCO_ARCH_POWER 0x07 -#define POCO_ARCH_SPARC 0x08 -#define POCO_ARCH_AMD64 0x09 -#define POCO_ARCH_ARM 0x0a -#define POCO_ARCH_M68K 0x0b -#define POCO_ARCH_S390 0x0c -#define POCO_ARCH_SH 0x0d -#define POCO_ARCH_NIOS2 0x0e -#define POCO_ARCH_AARCH64 0x0f -#define POCO_ARCH_ARM64 0x0f // same as POCO_ARCH_AARCH64 -#define POCO_ARCH_RISCV64 0x10 -#define POCO_ARCH_RISCV32 0x11 +#define POCO_ARCH_ALPHA 0x01 +#define POCO_ARCH_IA32 0x02 +#define POCO_ARCH_IA64 0x03 +#define POCO_ARCH_MIPS 0x04 +#define POCO_ARCH_HPPA 0x05 +#define POCO_ARCH_PPC 0x06 +#define POCO_ARCH_POWER 0x07 +#define POCO_ARCH_SPARC 0x08 +#define POCO_ARCH_AMD64 0x09 +#define POCO_ARCH_ARM 0x0a +#define POCO_ARCH_M68K 0x0b +#define POCO_ARCH_S390 0x0c +#define POCO_ARCH_SH 0x0d +#define POCO_ARCH_NIOS2 0x0e +#define POCO_ARCH_AARCH64 0x0f +#define POCO_ARCH_ARM64 0x0f // same as POCO_ARCH_AARCH64 +#define POCO_ARCH_RISCV64 0x10 +#define POCO_ARCH_RISCV32 0x11 +#define POCO_ARCH_LOONGARCH64 0x12 #if defined(__ALPHA) || defined(__alpha) || defined(__alpha__) || defined(_M_ALPHA) diff --git a/Foundation/include/Poco/Semaphore_POSIX.h b/Foundation/include/Poco/Semaphore_POSIX.h index 841f0a702..30ba2abbc 100644 --- a/Foundation/include/Poco/Semaphore_POSIX.h +++ b/Foundation/include/Poco/Semaphore_POSIX.h @@ -22,6 +22,7 @@ #include "Poco/Exception.h" #include #include +#include namespace Poco { @@ -37,10 +38,10 @@ protected: bool waitImpl(long milliseconds); private: - volatile int _n; - int _max; - pthread_mutex_t _mutex; - pthread_cond_t _cond; + std::atomic _n; + int _max; + pthread_mutex_t _mutex; + pthread_cond_t _cond; }; diff --git a/Foundation/include/Poco/UnWindows.h b/Foundation/include/Poco/UnWindows.h index b4778bf31..e9a7eeba2 100644 --- a/Foundation/include/Poco/UnWindows.h +++ b/Foundation/include/Poco/UnWindows.h @@ -25,12 +25,14 @@ #endif #endif +// disable min/max macros +#define NOMINMAX #if !defined(POCO_NO_WINDOWS_H) #include #ifdef __MINGW32__ - #include - #include + #include + #include #include #endif // __MINGW32__ #endif diff --git a/Foundation/include/Poco/Version.h b/Foundation/include/Poco/Version.h index d881ed123..83e49b36f 100644 --- a/Foundation/include/Poco/Version.h +++ b/Foundation/include/Poco/Version.h @@ -36,6 +36,6 @@ // Bx: beta releases // -#define POCO_VERSION 0x010C0100 +#define POCO_VERSION 0x010C0200 #endif // Foundation_Version_INCLUDED diff --git a/Foundation/src/MD4Engine.cpp b/Foundation/src/MD4Engine.cpp index 02d37a03c..434c46a06 100644 --- a/Foundation/src/MD4Engine.cpp +++ b/Foundation/src/MD4Engine.cpp @@ -129,10 +129,16 @@ const DigestEngine::Digest& MD4Engine::digest() /* Store state in digest */ unsigned char digest[16]; - encode(digest, _context.state, 16); + encode(digest, _context.state, sizeof(digest)); _digest.clear(); +#if defined(POCO_COMPILER_GCC) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstringop-overflow" +#endif _digest.insert(_digest.begin(), digest, digest + sizeof(digest)); - +#if defined(POCO_COMPILER_GCC) + #pragma GCC diagnostic pop +#endif /* Zeroize sensitive information. */ std::memset(&_context, 0, sizeof (_context)); reset(); diff --git a/Foundation/src/MD5Engine.cpp b/Foundation/src/MD5Engine.cpp index 8ba995842..c780a1480 100644 --- a/Foundation/src/MD5Engine.cpp +++ b/Foundation/src/MD5Engine.cpp @@ -129,10 +129,16 @@ const DigestEngine::Digest& MD5Engine::digest() /* Store state in digest */ unsigned char digest[16]; - encode(digest, _context.state, 16); + encode(digest, _context.state, sizeof(digest)); _digest.clear(); +#if defined(POCO_COMPILER_GCC) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstringop-overflow" +#endif _digest.insert(_digest.begin(), digest, digest + sizeof(digest)); - +#if defined(POCO_COMPILER_GCC) + #pragma GCC diagnostic pop +#endif /* Zeroize sensitive information. */ std::memset(&_context, 0, sizeof (_context)); reset(); diff --git a/Foundation/src/Mutex.cpp b/Foundation/src/Mutex.cpp index 362a41533..843562aff 100644 --- a/Foundation/src/Mutex.cpp +++ b/Foundation/src/Mutex.cpp @@ -51,8 +51,6 @@ FastMutex::~FastMutex() } -#ifdef POCO_HAVE_STD_ATOMICS - SpinlockMutex::SpinlockMutex() { } @@ -62,7 +60,5 @@ SpinlockMutex::~SpinlockMutex() { } -#endif // POCO_HAVE_STD_ATOMICS - } // namespace Poco diff --git a/Foundation/src/SHA1Engine.cpp b/Foundation/src/SHA1Engine.cpp index 71fe2d857..2e4d68727 100644 --- a/Foundation/src/SHA1Engine.cpp +++ b/Foundation/src/SHA1Engine.cpp @@ -143,7 +143,14 @@ const DigestEngine::Digest& SHA1Engine::digest() for (count = 0; count < DIGEST_SIZE; count++) hash[count] = (BYTE) ((_context.digest[count>>2]) >> (8*(3-(count & 0x3)))) & 0xff; _digest.clear(); +#if defined(POCO_COMPILER_GCC) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstringop-overflow" +#endif _digest.insert(_digest.begin(), hash, hash + DIGEST_SIZE); +#if defined(POCO_COMPILER_GCC) + #pragma GCC diagnostic pop +#endif reset(); return _digest; } diff --git a/Foundation/testsuite/src/FormatTest.cpp b/Foundation/testsuite/src/FormatTest.cpp index 229ecc0a2..b852f1736 100644 --- a/Foundation/testsuite/src/FormatTest.cpp +++ b/Foundation/testsuite/src/FormatTest.cpp @@ -20,6 +20,7 @@ using Poco::format; using Poco::BadCastException; using Poco::Int64; using Poco::UInt64; +using Poco::Any; FormatTest::FormatTest(const std::string& name): CppUnit::TestCase(name) @@ -453,6 +454,27 @@ void FormatTest::testIndex() } +void FormatTest::testAny() +{ + Any a = 42; + std::string s(format("%d", a)); + assertTrue (s == "42"); + + a = std::string("42"); + s = format("%s", a); + assertTrue (s == "42"); + + a = 42.; + s = format("%f", a); + assertTrue (s.find("42.0") == 0); + + s.clear(); + std::vector av{ 42, std::string("42"), 42. }; + format(s, "%d '%s' %f", av); + assertTrue (s.find("42 '42' 42.0") == 0); +} + + void FormatTest::setUp() { } @@ -476,6 +498,7 @@ CppUnit::Test* FormatTest::suite() CppUnit_addTest(pSuite, FormatTest, testString); CppUnit_addTest(pSuite, FormatTest, testMultiple); CppUnit_addTest(pSuite, FormatTest, testIndex); + CppUnit_addTest(pSuite, FormatTest, testAny); return pSuite; } diff --git a/Foundation/testsuite/src/FormatTest.h b/Foundation/testsuite/src/FormatTest.h index cf3885d14..0dc326358 100644 --- a/Foundation/testsuite/src/FormatTest.h +++ b/Foundation/testsuite/src/FormatTest.h @@ -30,6 +30,7 @@ public: void testString(); void testMultiple(); void testIndex(); + void testAny(); void setUp(); void tearDown(); diff --git a/Foundation/testsuite/src/RWLockTest.cpp b/Foundation/testsuite/src/RWLockTest.cpp index 98e7244e1..afdd6a271 100644 --- a/Foundation/testsuite/src/RWLockTest.cpp +++ b/Foundation/testsuite/src/RWLockTest.cpp @@ -14,6 +14,7 @@ #include "Poco/RWLock.h" #include "Poco/Thread.h" #include "Poco/Runnable.h" +#include using Poco::RWLock; @@ -24,7 +25,12 @@ using Poco::Runnable; class RWLockRunnable: public Runnable { public: - RWLockRunnable(RWLock& lock, volatile int& counter): _lock(lock), _counter(counter), _ok(true) +#ifdef __cpp_lib_atomic_ref + RWLockRunnable(RWLock& lock, int& counter): +#else + RWLockRunnable(RWLock& lock, volatile int& counter): +#endif + _lock(lock), _counter(counter), _ok(true) { } @@ -65,7 +71,11 @@ public: private: RWLock& _lock; +#ifdef __cpp_lib_atomic_ref + std::atomic_ref _counter; +#else volatile int& _counter; +#endif bool _ok; }; @@ -73,7 +83,12 @@ private: class RWTryLockRunnable: public Runnable { public: - RWTryLockRunnable(RWLock& lock, volatile int& counter): _lock(lock), _counter(counter), _ok(true) +#ifdef __cpp_lib_atomic_ref + RWTryLockRunnable(RWLock& lock, int& counter): +#else + RWTryLockRunnable(RWLock& lock, volatile int& counter): +#endif + _lock(lock), _counter(counter), _ok(true) { } @@ -114,7 +129,11 @@ public: private: RWLock& _lock; +#ifdef __cpp_lib_atomic_ref + std::atomic_ref _counter; +#else volatile int& _counter; +#endif bool _ok; }; diff --git a/Foundation/testsuite/src/StringTest.h b/Foundation/testsuite/src/StringTest.h index 84ef9b4c2..1de335301 100644 --- a/Foundation/testsuite/src/StringTest.h +++ b/Foundation/testsuite/src/StringTest.h @@ -77,7 +77,9 @@ private: { T result = 0; if (123 <= std::numeric_limits::max()) + { assertTrue (Poco::strToInt("123", result, 10)); assertTrue (result == 123); + } assertTrue (Poco::strToInt("0", result, 10)); assertTrue (result == 0); assertTrue (Poco::strToInt("000", result, 10)); assertTrue (result == 0); diff --git a/Net/Net_vs170.vcxproj b/Net/Net_vs170.vcxproj index 884044023..42baadb23 100644 --- a/Net/Net_vs170.vcxproj +++ b/Net/Net_vs170.vcxproj @@ -59,62 +59,62 @@ StaticLibrary - v142 + v143 MultiByte StaticLibrary - v142 + v143 MultiByte StaticLibrary - v142 + v143 MultiByte StaticLibrary - v142 + v143 MultiByte DynamicLibrary - v142 + v143 MultiByte DynamicLibrary - v142 + v143 MultiByte StaticLibrary - v142 + v143 MultiByte StaticLibrary - v142 + v143 MultiByte StaticLibrary - v142 + v143 MultiByte StaticLibrary - v142 + v143 MultiByte DynamicLibrary - v142 + v143 MultiByte DynamicLibrary - v142 + v143 MultiByte diff --git a/Net/src/PollSet.cpp b/Net/src/PollSet.cpp index c60fa867e..ae66a3d74 100644 --- a/Net/src/PollSet.cpp +++ b/Net/src/PollSet.cpp @@ -69,11 +69,16 @@ public: using SocketMap = std::map; PollSetImpl(): _events(1024), + _port(0), _eventfd(eventfd(_port, 0)), _epollfd(epoll_create(1)) { int err = addFD(_eventfd, PollSet::POLL_READ, EPOLL_CTL_ADD); +#ifdef WEPOLL_H_ + if ((err) || !_epollfd) +#else if ((err) || (_epollfd < 0)) +#endif { SocketImpl::error(); } @@ -170,18 +175,23 @@ public: // calls would round-robin through the remaining ready sockets, but it's better to give // the call enough room once we start hitting the boundary if (rc >= _events.size()) _events.resize(_events.size()*2); - if (rc < 0 && SocketImpl::lastError() == POCO_EINTR) + else if (rc < 0) { - Poco::Timestamp end; - Poco::Timespan waited = end - start; - if (waited < remainingTime) - remainingTime -= waited; - else - remainingTime = 0; + // if interrupted and there's still time left, keep waiting + if (SocketImpl::lastError() == POCO_EINTR) + { + Poco::Timestamp end; + Poco::Timespan waited = end - start; + if (waited < remainingTime) + { + remainingTime -= waited; + continue; + } + } + else SocketImpl::error(); } } - while (rc < 0 && SocketImpl::lastError() == POCO_EINTR); - if (rc < 0) SocketImpl::error(); + while (false); for (int i = 0; i < rc; i++) { @@ -198,8 +208,17 @@ public: result[it->second.first] |= PollSet::POLL_ERROR; } } + else if (_events[i].events & EPOLLIN) // eventfd signaled + { + uint64_t val; +#ifdef WEPOLL_H_ + if (_pSocket && _pSocket->available()) + _pSocket->impl()->receiveBytes(&val, sizeof(val)); +#else + read(_eventfd, &val, sizeof(val)); +#endif + } } - return result; } @@ -277,6 +296,7 @@ private: if (rmFD == 0) { _pSocket = new ServerSocket(SocketAddress("127.0.0.1", 0)); + _pSocket->setBlocking(false); port = _pSocket->address().port(); return static_cast(_pSocket->impl()->sockfd()); } @@ -294,7 +314,7 @@ private: mutable Mutex _mutex; SocketMap _socketMap; std::vector _events; - int _port = 0; + int _port; std::atomic _eventfd; #ifdef WEPOLL_H_ std::atomic _epollfd; diff --git a/Net/testsuite/TestSuite_vs170.vcxproj b/Net/testsuite/TestSuite_vs170.vcxproj index 0d63842aa..c8cdab43d 100644 --- a/Net/testsuite/TestSuite_vs170.vcxproj +++ b/Net/testsuite/TestSuite_vs170.vcxproj @@ -59,62 +59,62 @@ Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte Application - v142 + v143 MultiByte diff --git a/Net/testsuite/src/PollSetTest.cpp b/Net/testsuite/src/PollSetTest.cpp index 76f724081..0f125060f 100644 --- a/Net/testsuite/src/PollSetTest.cpp +++ b/Net/testsuite/src/PollSetTest.cpp @@ -184,9 +184,14 @@ void PollSetTest::testTimeout() sw.stop(); assertTrue(ps.poll(timeout).size() == 1); - // just here to prevent server exception on connection reset char buffer[5]; ss.receiveBytes(buffer, sizeof(buffer)); + + sw.restart(); + sm = ps.poll(timeout); + sw.stop(); + assertTrue(sm.empty()); + assertTrue(sw.elapsed() >= 900000); } diff --git a/README b/README index 0b73625d4..68e81a3bb 100644 --- a/README +++ b/README @@ -167,17 +167,36 @@ If the version is out of date, please create an issue or pull request(https://gi on the vcpkg repository. +BUILDING - USING CONAN +====================== + +You can download and install poco using the Conan(https://github.com/conan-io/conan) +package manager. It needed to be installed first(https://conan.io/downloads.html): + +You can install Poco libraries from Conan Center(https://conan.io/center.html): + +$ conan install -r conancenter poco/1.12.0@ + +Or, you can download Poco recipe and build locally: + +$ conan install -r conancenter poco/1.12.0@ --build=poco + +The Poco recipe and packages in Conan Center are kept up to date by Conan team members and community contributors. +If the version is out of date, or you detect any wrong behavior, please create an issue or pull request(https://github.com/conan-io/conan-center-index) +on the Conan Center Index repository. + + BUILDING ON WINDOWS =================== Microsoft Visual Studio 2015 or newer is required to build the POCO C++ Libraries on -Windows platforms. Solution and project files for all versions from 2015 to 2019 are included. +Windows platforms. Solution and project files for all versions from 2015 to 2022 are included. 64-bit (x64) builds are supported as well. You can either build from within Visual Studio (Build->Batch Build->Select All;Rebuild) or from the command line. To build from the command line, start the Visual Studio Command Prompt and cd to the directory where you have extracted the POCO C++ Libraries sources. Then, simply start the buildwin.cmd script -and pass as argument the version of visual studio (140, 150, 160, etc.). You can customize +and pass as argument the version of visual studio (140, 150, 160, 170, etc.). You can customize what is being built by buildwin.cmd by passing appropriate command line arguments to it. Call buildwin.cmd without arguments to see what is available. diff --git a/README.md b/README.md index 7fd4c331e..951ecdbce 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,23 @@ The poco port in vcpkg is kept up to date by Microsoft team members and communit If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. +#### Building and Installing - Using Conan + +You can download and install poco using the Conan(https://github.com/conan-io/conan) +package manager. It needed to be installed first(https://conan.io/downloads.html): + +You can install Poco libraries from Conan Center(https://conan.io/center.html): + + $ conan install -r conancenter poco/1.12.0@ + +Or, you can download Poco recipe and build locally: + + $ conan install -r conancenter poco/1.12.0@ --build=poco + +The Poco recipe and packages in Conan Center are kept up to date by Conan team members and community contributors. +If the version is out of date, or you detect any wrong behavior, please create an issue or pull request(https://github.com/conan-io/conan-center-index) +on the Conan Center Index repository. + ### Building Without CMake diff --git a/VERSION b/VERSION index f8f4f03b3..6b89d58f8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.12.1 +1.12.2 diff --git a/doc/99100-ReleaseNotes.page b/doc/99100-ReleaseNotes.page index 2f630cf1a..f7bbcebdf 100644 --- a/doc/99100-ReleaseNotes.page +++ b/doc/99100-ReleaseNotes.page @@ -2,6 +2,31 @@ POCO C++ Libraries Release Notes AAAIntroduction + +!!!Release 1.12.2 + +!!Summary of Changes + + - GH #3460 fix(Platform): LoongArch support + - GH #3688 Linking Crypto-testrunner fails + - GH #3693 VS2022 compilation issues + - GH #3698 SIGABRT in OSSL_PROVIDER_unload with static OpenSSL3 + - GH #3699 POSIX Event state need not be atomic + - GH #3700 Release script must include build_vs170.cmd + - GH #3708 wakeup fd is never read + - GH #3711 lowercase winsock2 and iphlpapi to allow cross compile + - GH #3716 Compiling with clang_cl_x64_x64 on Visual Studio 2022 failed + - GH #3717 Only support extracting JSON fields when the SDK supports it + - GH #3719 PocoNet Project File does not support Visual Studio 2022 + - GH #3720 Update max MSVC version information + - GH #3721 fails to build with Visual Studio projects + - GH #3722 Added missing Crypto Header to ProGen source + - GH #3724 Crypto: Progen again to add new files and bring back ARM64 configuration + - GH #3727 Add how to install using Conan section on README + - GH #3733 Poco::format and C++20 + - GH #3734 g++ C++20 warnings + + !!!Release 1.12.1 !!Summary of Changes diff --git a/doc/99150-WindowsPlatformNotes.page b/doc/99150-WindowsPlatformNotes.page index 449153208..78b99cb50 100644 --- a/doc/99150-WindowsPlatformNotes.page +++ b/doc/99150-WindowsPlatformNotes.page @@ -45,3 +45,16 @@ The following naming conventions are used: are placed in the <*lib64*> directory. DLLs are placed in <*bin*> (32-bit) or <*bin64*> (64-bit). 64-bit DLLs are named PocoLIB64.dll for release and PocoLIB64d.dll for debug, respectively. + + +!!MSVC Compiler Notes + +!!!C++ standard version not properly defined + +In order to work around that, `/Zc:__cplusplus` compiler flag is necesary. + +See the following issues for details and explanations: + + * https://github.com/pocoproject/poco/issues/3665 + * https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ + diff --git a/libversion b/libversion index 7fe4e495f..cd5b02527 100644 --- a/libversion +++ b/libversion @@ -1 +1 @@ -91 +92 diff --git a/release/script/mkrelease b/release/script/mkrelease index 9d6ebaf39..a9f46a190 100755 --- a/release/script/mkrelease +++ b/release/script/mkrelease @@ -423,6 +423,15 @@ buildwin 160 build shared both Win32 samples ENDOFSCRIPT +# +# Create Visual Studio 17 build script +# +cat >${target}/build_vs170.cmd <<'ENDOFSCRIPT' +@echo off +buildwin 170 build shared both Win32 samples +ENDOFSCRIPT + + # # Fix line endings # @@ -430,6 +439,7 @@ if [ "$lineEndConv" != "" ] ; then $lineEndConv ${target}/build_vs140.cmd $lineEndConv ${target}/build_vs150.cmd $lineEndConv ${target}/build_vs160.cmd + $lineEndConv ${target}/build_vs170.cmd $lineEndConv ${target}/Makefile $lineEndConv ${target}/components fi