Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

util: Update scheduler and remove Boost chrono #2330

Merged

Conversation

jamescowens
Copy link
Member

@jamescowens jamescowens commented Sep 12, 2021

@barton2526 was on the right track with #2328, but to make the scheduler_tests unit test work, several things had to be ported. Logically this was time to update time.h/cpp and scheduler.h/cpp from current upstream Bitcoin and also make appropriate modifications to other code for the changes.

This PR also removes the boost chrono dependency. See #2124. Note that the std::sleep_for is not interruptible, so I have reimplemented MilliSleep using the std::mutex (non-recursive) std::condition_variable pattern. This is a simple and convenient way to reimplement interruptible sleep without reintroducing the boost chrono dependency. Note that to reduce the usage of MilliSleep in our code, I have changed all MilliSleeps that were sleeping for 1 sec or less to the UninterruptableSleep call, as that is a reasonable point to need interruption.

Also note that the scheduler_tests currently use the older random number generator in Gridcoin's code, because we have not yet ported Bitcoin's random.h.

@barton2526
Copy link
Member

Does this remove the boost::chrono dependency?

@jamescowens
Copy link
Member Author

It very well might. Let me check the codebase.

@jamescowens
Copy link
Member Author

We are still using boost::posix_time and boost::gregorian. I have to check which boost module those are in.

@jamescowens
Copy link
Member Author

Looks like it does!

@barton2526
Copy link
Member

Looks like it does!

bitcoin/bitcoin#18264

Copy link
Member

@barton2526 barton2526 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK.

Always great to see dependencies removed 😃

@div72
Copy link
Member

div72 commented Sep 12, 2021

Note that this also changes the MilliSleep function to use the sleep_for from the std library.

MilliSleep is redundant now since UninterruptableSleep exists.

A thing to note is that boost's sleep is interruptable, while std's sleep is not. Some routines related to shutdown might need to be modified. I'll do a careful review later.

@barton2526
Copy link
Member

MilliSleep is redundant now since UninterruptableSleep exists.

A thing to note is that boost's sleep is interruptable, while std's sleep is not. Some routines related to shutdown might need to be modified. I'll do a careful review later.

bitcoin/bitcoin#16117

@jamescowens
Copy link
Member Author

Looks like we are going to need to keep interruptible sleep. The scraper for example users a 300 sec sleep. Maybe I will change MilliSleep into InterruptibleSleep.

@jamescowens
Copy link
Member Author

Ok. See my changed PR comments above. I have re-implemented MilliSleep as an interruptible sleep using the std::mutex/std::condition_variable pattern. This seems to work well.

src/main.cpp Outdated Show resolved Hide resolved
@jamescowens jamescowens changed the title util: Update scheduler util: Update scheduler and remove Boost chrono Sep 13, 2021
Copy link
Member

@div72 div72 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

docs/build-openbsd.md and gridcoinresearch.pro still has references to boost chrono.

ScraperSubscriber still seems to hang the shutdown.

configure.ac Outdated Show resolved Hide resolved
src/scheduler.cpp Show resolved Hide resolved
src/scheduler.h Show resolved Hide resolved
src/test/scheduler_tests.cpp Show resolved Hide resolved
src/util/time.cpp Outdated Show resolved Hide resolved
@jamescowens
Copy link
Member Author

@div72 ScraperSubscriber still seems to hang the shutdown.....

That is not happening to me, and I am running several non-scraper nodes. Let me put the bool in and a conditional break on the bool and see what happens. What platform were you on where you are experiencing that?

@div72
Copy link
Member

div72 commented Sep 13, 2021

@jamescowens Linux 5.13.13-arch1-1.
bt from gdb:

#0  0x00007f6926d0d8ca in __futex_abstimed_wait_common64 () from /usr/lib/libpthread.so.0
#1  0x00007f6926d07842 in pthread_cond_clockwait () from /usr/lib/libpthread.so.0
#2  0x0000563dba5a29f9 in std::__condvar::wait_until (__abs_time=..., __clock=1, __m=..., 
    this=0x563dbab6b0c0 <sleep_interrupt>) at /usr/include/c++/11.1.0/bits/std_mutex.h:169
#3  std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (
    __lock=<synthetic pointer>..., __lock=<synthetic pointer>..., __atime=..., this=0x563dbab6b0c0 <sleep_interrupt>)
    at /usr/include/c++/11.1.0/condition_variable:201
#4  std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (__atime=..., 
    __lock=<synthetic pointer>..., this=0x563dbab6b0c0 <sleep_interrupt>)
    at /usr/include/c++/11.1.0/condition_variable:111
#5  std::condition_variable::wait_for<long, std::ratio<1l, 1000l> > (__rtime=..., __rtime=..., 
    __lock=<synthetic pointer>..., this=0x563dbab6b0c0 <sleep_interrupt>)
    at /usr/include/c++/11.1.0/condition_variable:163
#6  MilliSleep (n=n@entry=8000) at util/time.cpp:37
#7  0x0000563dba3e9080 in ScraperSubscriber () at gridcoin/scraper/scraper.cpp:1282
#8  0x0000563dba38a452 in (anonymous namespace)::ThreadScraperSubscriber (parg=<optimized out>)
    at gridcoin/gridcoin.cpp:259
#9  0x00007f6926d23c07 in ?? () from /usr/lib/libboost_thread.so.1.76.0
#10 0x00007f6926d01259 in start_thread () from /usr/lib/libpthread.so.0
#11 0x00007f6924d4d5e3 in clone () from /usr/lib/libc.so.6```

@jamescowens
Copy link
Member Author

Ha. I forgot you are an Arch Linux user. Hard core! :)

@jamescowens jamescowens force-pushed the update_scheduler branch 3 times, most recently from cabfe4e to 6e3fb07 Compare September 13, 2021 21:57
@jamescowens jamescowens requested a review from div72 September 13, 2021 22:00
@jamescowens
Copy link
Member Author

@div72. Try it again....

@jamescowens
Copy link
Member Author

I will get rid of the remaining references to boost chrono in one more commit later on tonight.

@jamescowens
Copy link
Member Author

Alright. This should be ready.

doc/build-openbsd.md Outdated Show resolved Hide resolved
Copy link
Member

@div72 div72 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 99f9e11. Shutdowns gracefully now. I'll take the https stuff to upstream.

Reimplement MilliSleep as a nodiscard wrapper around CThreadInterrupt
g_thread_interrupt.sleep_for()
@jamescowens
Copy link
Member Author

Rebased to 9fa6a14 to fold in typo fix for build-openbsd.md

@jamescowens jamescowens merged commit 1363e98 into gridcoin-community:development Sep 14, 2021
@jamescowens jamescowens deleted the update_scheduler branch September 15, 2021 00:49
jamescowens added a commit to jamescowens/Gridcoin-Research that referenced this pull request Feb 27, 2022
…ening flags, don't enable it for Windows gridcoin-community#2284 (@barton2526)

 - build: add upstream compiler warnings gridcoin-community#2288 (@jamescowens)
 - rpc: Create getblockbymintime gridcoin-community#2290 (@RoboticMind)
 - cd: generate release binaries using GitHub actions gridcoin-community#2249 (@div72)
 - util: port upstream span changes gridcoin-community#2323 (@div72)
 - rpc: add additional ban time fields to listbanned gridcoin-community#2334 (@barton2526)
 - test: Add sanity_tests from upstream gridcoin-community#2343 (@barton2526)
 - util, test: Don't allow Base58 decoding of non-Base58 strings. Add Base58 tests. Add whitespace tests. gridcoin-community#2345 (@barton2526)
 - test: Add tests for monetary value formatting and parsing.  Clean up includes in rpc_tests gridcoin-community#2348 (@barton2526)
 - rpc: Implement -rpcwait and -rpcwaittimeout gridcoin-community#2349 (@jamescowens)
 - test: Add crypto_tests (@upstream gridcoin-community#2372 from barton2526)
 - test: Add test for GCC bug 90348 gridcoin-community#2380 (@barton2526)
 - build: add python3.10, 3.11 alias to AC_PATH_PROGS call in configure gridcoin-community#2386 (@barton2526)
 - wallet, contract: Implement contract change option gridcoin-community#2388 (@jamescowens)
 - gui: Implement privacy mode gridcoin-community#2399 (@jamescowens)
 - util: Implement -reindex option, improve -loadblock option gridcoin-community#2394 (@jamescowens)
 - gui: Implement Alt-7 for unlock and lock of wallet gridcoin-community#2406 (@jamescowens)
 - gui, voting: Add a one minute timer to check for current poll expiring and update gui gridcoin-community#2416 (@jamescowens)
 - gui: Implement a warning about split CPID/email mismatch condition gridcoin-community#2414 (@jamescowens)
 - util: clean obsolete config keys gridcoin-community#2424 (@div72)
 - net: Implement an upper limit of 950 for max network connections gridcoin-community#2426 (@jamescowens)

 - build: libevent 2.1.12-stable gridcoin-community#2226 (@barton2526)
 - build: Bump minimum QT support to 5.9.5, Remove obsolete checks gridcoin-community#2251 (@barton2526)
 - doc: Update to https where possible gridcoin-community#2230 (@barton2526)
 - refactor: Replace fprintf with tfm::format gridcoin-community#2262 (@barton2526)
 - qt: Replace deprecated QSignalMapper by lambda expressions gridcoin-community#2261 (@barton2526)
 - refactor: Use functions guaranteed to be locale independent (ToLower, IsDigit, IsSpace) gridcoin-community#2265 (@barton2526)
 - refactor: Replace std::to_string with locale-independent alternative gridcoin-community#2266 (@barton2526)
 - refactor: small python cleanup gridcoin-community#2267 (@barton2526)
 - refactor: Replace local dependent string functions with non-locale versions in strencodings.h/cpp gridcoin-community#2270 (@amescowens)
 - ci: Update KNOWN_VIOLATIONS list for the linter for functions we don't care are locale-dependent gridcoin-community#2271 (@barton2526)
 - refactor: move block storage functions to src/node/blockstorage gridcoin-community#2273 (@div72)
 - refactor: Replace deprecated Qt::SystemLocale{Short,Long}Date, Fix 'QDateTime is deprecated' warnings gridcoin-community#2275 (@barton2526)
 - rpc: optimize getblockbynumber gridcoin-community#2289 (@barton2526)
 - gui: Update connect statements to conform to Qt 5 standard gridcoin-community#2281 (@jamescowens)
 - depends: Bump ccache and curl gridcoin-community#2297 (@barton2526)
 - ci: only print depends/apt output if the step fails gridcoin-community#2287 (@div72)
 - depends: Update to openSSL 1.1.1l gridcoin-community#2302 (@barton2526)
 - rpc: Don't use floating point in getreceivedbyaddress gridcoin-community#2310 (@barton2526)
 - LibreSSL doesn't define OPENSSL_VERSION, use LIBRESSL_VERSION_TEXT instead gridcoin-community#2306 (@barton2526)
 - build: update m4 gridcoin-community#2317 (@div72)
 - qt: Replace deprecated Qt functions gridcoin-community#2316 (@barton2526)
 - build: set minimum required Boost to 1.60 gridcoin-community#2318 (@barton2526)
 - util: Don't use gmtime() or localtime() gridcoin-community#2319 (@barton2526)
 - build: Update univalue subtree gridcoin-community#2335 (@barton2526)
 - refactor: use include guards instead of #pragma once gridcoin-community#2336 (@div72)
 - refactor: Scraper thread safety and code cleanup gridcoin-community#2315 (@jamescowens)
 - qt: Follow Qt docs when implementing rowCount and columnCount gridcoin-community#2333 (@barton2526)
 - qt: Notificator class refactoring.  Notificator always takes 3 args.  Remove Growl support. gridcoin-community#2352 (@barton2526)
 - build: pin OpenSSL version for MacOS gridcoin-community#2354 (@div72)
 - build, util: Update leveldb to 1.22 (@upstream Bitcoin gridcoin-community#2353 from jamescowens)
 - test: Update transaction_tests and associated JSON files from upstream gridcoin-community#2356 (@barton2526)
 - test: Update script_p2sh_tests from upstream gridcoin-community#2357 (@barton2526)
 - refactor: port upstream ui_interface changes gridcoin-community#2355 (@div72)
 - contract: parse strings for claim and message types gridcoin-community#2359 (@div72)
 - test: Update sigopcount_tests and transaction_tests from upstream gridcoin-community#2361 (@barton2526)
 - test, refactor: Update script_tests from upstream gridcoin-community#2360 (@barton2526)
 - test: Update util_tests from upstream gridcoin-community#2363 (@barton2526)
 - test: Update script test JSON files from upstream gridcoin-community#2364 @barton2526)
 - refactor: split clientversion from version gridcoin-community#2367 (@div72)
 - random: port upstream random changes gridcoin-community#2368 (@div72)
 - refactor: convert C-style (void) parameter lists to C++ style () gridcoin-community#2373 (@barton2526)
 - build: Disable -fcf-protection for mingw win32 gridcoin-community#2377 (@jamescowens)
 - gui: Add text output and dialog boxes for -help and -version in GUI client gridcoin-community#2378 (@jamescowens)
 - test, refactor: Use FastRandomContext for all tests. Add a header for test_gridcoin gridcoin-community#2381 (@barton2526)
 - depends: avoid system harfbuzz and bz2 gridcoin-community#2382 (@barton2526)
 - doc: Update Windows build instructions gridcoin-community#2383 (@barton2526)
 - refactor: replace QDateTime::fromTime_t with QDateTime::fromSecsSinceEpoch gridcoin-community#2387 (@barton2526)
 - util: Port of Bitcoin upstream base58.h/cpp at a85442f62bf157b07849accd495c55c73535dc73 gridcoin-community#2384 (@jamescowens)
 - test: update base58_encode_decode.json from upstream gridcoin-community#2391 (@barton2526)
 - depends: Port libdmg-hfsplus changes from upstream gridcoin-community#2389 (@barton2526)
 - doc: Port newer build documentation from Bitcoin gridcoin-community#2162 (@nathanielcwm)
 - rpc: Change getmininginfo to getstakinginfo gridcoin-community#2393 (@jamescowens)
 - researcher: Prefer CPID with active beacon for primary CPID gridcoin-community#2404 (@scribblemaniac)
 - contract: separate legacy type parsing gridcoin-community#2396 (@div72)
 - refactor: Pass values by reference gridcoin-community#2408 (@Pythonix)
 - net: only adjust time with data from outbound nodes gridcoin-community#2411 (@div72)
 - rpc: Change call to FormatISO8601DateTime to FormatISO8601DateTimeDashSep in scanforunspent gridcoin-community#2413 (@jamescowens)
 - build: Adjust depends packages to successfully compile on OpenSUSE gridcoin-community#2260 (@jamescowens)
 - gui: Enable masking of cpid in privacy mode gridcoin-community#2420 (@jamescowens)
 - doc: Update license year range to 2022 gridcoin-community#2421 (@barton2526)
 - contrib: install_db4: use local config.guess/sub gridcoin-community#2436 (@div72)
 - gui: update translations gridcoin-community#2442 (@div72, @3man001)

 - qt: Remove stray QT4 references gridcoin-community#2220 (@barton2526)
 - util: Remove old boost hacks/workarounds gridcoin-community#2231 (@barton2526)
 - refactor: Remove sprintf and printf gridcoin-community#2269 (@jamescowens)
 - depends: Remove boost::program_options dependency gridcoin-community#2277 (@barton2526)
 - refactor: Drop noop gcc version checks gridcoin-community#2278 (@barton2526)
 - util: Remove unused itostr gridcoin-community#2280 (@barton2526)
 - util: Remove deprecated random number generator functions gridcoin-community#2236 (@jamescowens)
 - depends: cleanup package configure flags gridcoin-community#2279 (@barton2526)
 - rpc: remove 'label' filter for rpc command help gridcoin-community#2282 (@barton2526)
 - wallet: remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx gridcoin-community#2283 (@barton2526)
 - refactor: Optimize and Cleanup CScript::FindAndDelete gridcoin-community#2294 (@barton2526)
 - wallet: Remove unused AskPassphraseDialog::Decrypt gridcoin-community#2299 (@barton2526)
 - refactor, qt: Drop redundant setEditTriggers(NoEditTriggers) calls, Fix typo in QtInputSupport check gridcoin-community#2308 (@barton2526)
 - release: Remove gitian gridcoin-community#2293 (@jamescowens)
 - util: Update scheduler and remove Boost chrono gridcoin-community#2330 (@jamescowens)
 - qt: remove gridcoinresearch.pro gridcoin-community#2332 (@div72)
 - test: Remove unused function dumpKeyInfo gridcoin-community#2347 (@barton2526)
 - build: remove glibc back compat gridcoin-community#2351 (@barton2526)
 - net: remove SOCKS4 support (@core and GUI gridcoin-community#2385 from barton2526)
 - net: remove obsolete "reply" command gridcoin-community#2366 (@div72)
 - net: Remove I2P support from netbase & Correct HE IPv6 Tunnel Broker gridcoin-community#2409 (@Pythonix)
 - qt: Remove locked coins loop gridcoin-community#2410 (@Pythonix)

 - wallet: Close DB on error, use memory_cleanse gridcoin-community#2221 (@barton2526)
 - build: Clean remnants of QTBUG-34748 fix gridcoin-community#2224 (@barton2526)
 - build: use -isysroot over --sysroot on macOS gridcoin-community#2225 (@barton2526)
 - trivial, rpc: Fix and cleanup listreceivedbyX documentation, General Typos gridcoin-community#2227 (@barton2526)
 - trivial: Unbreak build with Boost 1.72.0 gridcoin-community#2228 (@barton2526)
 - doc: Large collection of typos, grammar fixes, and proper capitalization gridcoin-community#2247 (@barton2526)
 - lint: Fix linter warning, fix typo gridcoin-community#2276 (@barton2526)
 - qt: Do not translate file extensions gridcoin-community#2295 (@barton2526)
 - refactor: Drop redundant QString calls gridcoin-community#2296 (@barton2526)
 - rpc: Print OpenSSL version fix gridcoin-community#2298 (@barton2526)
 - gui: Add back in accidentally deleted condition for UnlockStaking and Unlock cases in AskPassphraseDialog::textChanged() gridcoin-community#2305 (@jamescowens)
 - rpc: ParseHash: Fail when length is not 64 gridcoin-community#2313 (@barton2526)
 - Fix locking on WSL using flock instead of fcntl gridcoin-community#2314 (@barton2526)
 - rpc: Fix breakage in protocol.cpp caused by change atoi to ParseInt gridcoin-community#2307 (@jamescowens)
 - net: Small upstream FIXME gridcoin-community#2320 (@barton2526)
 - refactor: Fix advanced compiler warnings gridcoin-community#2292 (@jamescowens)
 - poll: Fix the possible infinite loop warning on GetChoices() in result.cpp gridcoin-community#2322 (@jamescowens)
 - qt: fix broken research wizard signal gridcoin-community#2324 (@div72)
 - refactor: Fix three minor code scanner findings gridcoin-community#2327 (@barton2526)
 - Fix build with Boost 1.77.0 gridcoin-community#2329 (@barton2526)
 - build: Misc upstream depends fixes gridcoin-community#2331 (@barton2526)
 - wallet: Fix improper indent in encryptWallet gridcoin-community#2339 (@jamescowens)
 - wallet: Bugfix - Fundrawtransaction: don't terminate when keypool is empty gridcoin-community#2337 (@barton2526)
 - depends: Fix build for Apple Silicon gridcoin-community#2342 (@div72)
 - build: fix -fstack-clash-protection spam for Clang gridcoin-community#2340 (@div72)
 - util, test: Don't allow Base32/64-decoding or ParseMoney(…) on strings with embedded NUL characters. Add tests.  Add negative test case. gridcoin-community#2344 (@barton2526)
 - test: Repair transaction_tests.cpp (baseline) gridcoin-community#2350 (@jamescowens)
 - scraper: Fix scraper deadlock and make activebeforesb dynamic (not require restart) gridcoin-community#2358 (@jamescowens)
 - scraper: Move lock on cs_mapParts in RecvManifest gridcoin-community#2370 (@jamescowens)
 - build: Make changes to use Gridcoin x.y.z.w client versions gridcoin-community#2371 (@jamescowens)
 - refactor, build: Upstream fixes for the /crypto files. Implement Keccak and SHA3 gridcoin-community#2365 (@barton2526)
 - util: fix FormatVersion gridcoin-community#2376 (@div72)
 - net: initialize nMessageSize to uint32_t max gridcoin-community#2390 (@barton2526)
 - contract: fix double usage of contract change addresses gridcoin-community#2395 (@div72)
 - build: patch qt to explicitly define previously implicit header include gridcoin-community#2397 (@div72)
 - Fix breakage introduced by use of FormatISO8601DateTime gridcoin-community#2398 (@jamescowens)
 - gui: Fix bug in recent transaction list gridcoin-community#2403 (@jamescowens)
 - build: Drop macports support gridcoin-community#2401 (@barton2526)
 - util: Check if specified config file cannot be opened gridcoin-community#2400 (@barton2526)
 - net: Fix masking of irrelevant bits in address groups gridcoin-community#2412 (@Pythonix)
 - rpc: accept int block number for getblocksbatch gridcoin-community#2415 (@scribblemaniac)
 - staking, gui: Fixes a missing miner search interval update for no coins corner case gridcoin-community#2430 (@jamescowens)
 - gui: Add uiInterface.BeaconChanged() call after ActivatePending gridcoin-community#2438 (@jamescowens)
jamescowens added a commit to jamescowens/Gridcoin-Research that referenced this pull request Feb 27, 2022
Added
 - build: add stack-clash and control-flow protection options to hardening flags, don't enable it for Windows gridcoin-community#2284 (@barton2526)
 - build: add upstream compiler warnings gridcoin-community#2288 (@jamescowens)
 - rpc: Create getblockbymintime gridcoin-community#2290 (@RoboticMind)
 - cd: generate release binaries using GitHub actions gridcoin-community#2249 (@div72)
 - util: port upstream span changes gridcoin-community#2323 (@div72)
 - rpc: add additional ban time fields to listbanned gridcoin-community#2334 (@barton2526)
 - test: Add sanity_tests from upstream gridcoin-community#2343 (@barton2526)
 - util, test: Don't allow Base58 decoding of non-Base58 strings. Add Base58 tests. Add whitespace tests. gridcoin-community#2345 (@barton2526)
 - test: Add tests for monetary value formatting and parsing.  Clean up includes in rpc_tests gridcoin-community#2348 (@barton2526)
 - rpc: Implement -rpcwait and -rpcwaittimeout gridcoin-community#2349 (@jamescowens)
 - test: Add crypto_tests (@upstream gridcoin-community#2372 from barton2526)
 - test: Add test for GCC bug 90348 gridcoin-community#2380 (@barton2526)
 - build: add python3.10, 3.11 alias to AC_PATH_PROGS call in configure gridcoin-community#2386 (@barton2526)
 - wallet, contract: Implement contract change option gridcoin-community#2388 (@jamescowens)
 - gui: Implement privacy mode gridcoin-community#2399 (@jamescowens)
 - util: Implement -reindex option, improve -loadblock option gridcoin-community#2394 (@jamescowens)
 - gui: Implement Alt-7 for unlock and lock of wallet gridcoin-community#2406 (@jamescowens)
 - gui, voting: Add a one minute timer to check for current poll expiring and update gui gridcoin-community#2416 (@jamescowens)
 - gui: Implement a warning about split CPID/email mismatch condition gridcoin-community#2414 (@jamescowens)
 - util: clean obsolete config keys gridcoin-community#2424 (@div72)
 - net: Implement an upper limit of 950 for max network connections gridcoin-community#2426 (@jamescowens)

Changed
 - build: libevent 2.1.12-stable gridcoin-community#2226 (@barton2526)
 - build: Bump minimum QT support to 5.9.5, Remove obsolete checks gridcoin-community#2251 (@barton2526)
 - doc: Update to https where possible gridcoin-community#2230 (@barton2526)
 - refactor: Replace fprintf with tfm::format gridcoin-community#2262 (@barton2526)
 - qt: Replace deprecated QSignalMapper by lambda expressions gridcoin-community#2261 (@barton2526)
 - refactor: Use functions guaranteed to be locale independent (ToLower, IsDigit, IsSpace) gridcoin-community#2265 (@barton2526)
 - refactor: Replace std::to_string with locale-independent alternative gridcoin-community#2266 (@barton2526)
 - refactor: small python cleanup gridcoin-community#2267 (@barton2526)
 - refactor: Replace local dependent string functions with non-locale versions in strencodings.h/cpp gridcoin-community#2270 (@amescowens)
 - ci: Update KNOWN_VIOLATIONS list for the linter for functions we don't care are locale-dependent gridcoin-community#2271 (@barton2526)
 - refactor: move block storage functions to src/node/blockstorage gridcoin-community#2273 (@div72)
 - refactor: Replace deprecated Qt::SystemLocale{Short,Long}Date, Fix 'QDateTime is deprecated' warnings gridcoin-community#2275 (@barton2526)
 - rpc: optimize getblockbynumber gridcoin-community#2289 (@barton2526)
 - gui: Update connect statements to conform to Qt 5 standard gridcoin-community#2281 (@jamescowens)
 - depends: Bump ccache and curl gridcoin-community#2297 (@barton2526)
 - ci: only print depends/apt output if the step fails gridcoin-community#2287 (@div72)
 - depends: Update to openSSL 1.1.1l gridcoin-community#2302 (@barton2526)
 - rpc: Don't use floating point in getreceivedbyaddress gridcoin-community#2310 (@barton2526)
 - LibreSSL doesn't define OPENSSL_VERSION, use LIBRESSL_VERSION_TEXT instead gridcoin-community#2306 (@barton2526)
 - build: update m4 gridcoin-community#2317 (@div72)
 - qt: Replace deprecated Qt functions gridcoin-community#2316 (@barton2526)
 - build: set minimum required Boost to 1.60 gridcoin-community#2318 (@barton2526)
 - util: Don't use gmtime() or localtime() gridcoin-community#2319 (@barton2526)
 - build: Update univalue subtree gridcoin-community#2335 (@barton2526)
 - refactor: use include guards instead of #pragma once gridcoin-community#2336 (@div72)
 - refactor: Scraper thread safety and code cleanup gridcoin-community#2315 (@jamescowens)
 - qt: Follow Qt docs when implementing rowCount and columnCount gridcoin-community#2333 (@barton2526)
 - qt: Notificator class refactoring.  Notificator always takes 3 args.  Remove Growl support. gridcoin-community#2352 (@barton2526)
 - build: pin OpenSSL version for MacOS gridcoin-community#2354 (@div72)
 - build, util: Update leveldb to 1.22 (@upstream Bitcoin gridcoin-community#2353 from jamescowens)
 - test: Update transaction_tests and associated JSON files from upstream gridcoin-community#2356 (@barton2526)
 - test: Update script_p2sh_tests from upstream gridcoin-community#2357 (@barton2526)
 - refactor: port upstream ui_interface changes gridcoin-community#2355 (@div72)
 - contract: parse strings for claim and message types gridcoin-community#2359 (@div72)
 - test: Update sigopcount_tests and transaction_tests from upstream gridcoin-community#2361 (@barton2526)
 - test, refactor: Update script_tests from upstream gridcoin-community#2360 (@barton2526)
 - test: Update util_tests from upstream gridcoin-community#2363 (@barton2526)
 - test: Update script test JSON files from upstream gridcoin-community#2364 @barton2526)
 - refactor: split clientversion from version gridcoin-community#2367 (@div72)
 - random: port upstream random changes gridcoin-community#2368 (@div72)
 - refactor: convert C-style (void) parameter lists to C++ style () gridcoin-community#2373 (@barton2526)
 - build: Disable -fcf-protection for mingw win32 gridcoin-community#2377 (@jamescowens)
 - gui: Add text output and dialog boxes for -help and -version in GUI client gridcoin-community#2378 (@jamescowens)
 - test, refactor: Use FastRandomContext for all tests. Add a header for test_gridcoin gridcoin-community#2381 (@barton2526)
 - depends: avoid system harfbuzz and bz2 gridcoin-community#2382 (@barton2526)
 - doc: Update Windows build instructions gridcoin-community#2383 (@barton2526)
 - refactor: replace QDateTime::fromTime_t with QDateTime::fromSecsSinceEpoch gridcoin-community#2387 (@barton2526)
 - util: Port of Bitcoin upstream base58.h/cpp at a85442f62bf157b07849accd495c55c73535dc73 gridcoin-community#2384 (@jamescowens)
 - test: update base58_encode_decode.json from upstream gridcoin-community#2391 (@barton2526)
 - depends: Port libdmg-hfsplus changes from upstream gridcoin-community#2389 (@barton2526)
 - doc: Port newer build documentation from Bitcoin gridcoin-community#2162 (@nathanielcwm)
 - rpc: Change getmininginfo to getstakinginfo gridcoin-community#2393 (@jamescowens)
 - researcher: Prefer CPID with active beacon for primary CPID gridcoin-community#2404 (@scribblemaniac)
 - contract: separate legacy type parsing gridcoin-community#2396 (@div72)
 - refactor: Pass values by reference gridcoin-community#2408 (@Pythonix)
 - net: only adjust time with data from outbound nodes gridcoin-community#2411 (@div72)
 - rpc: Change call to FormatISO8601DateTime to FormatISO8601DateTimeDashSep in scanforunspent gridcoin-community#2413 (@jamescowens)
 - build: Adjust depends packages to successfully compile on OpenSUSE gridcoin-community#2260 (@jamescowens)
 - gui: Enable masking of cpid in privacy mode gridcoin-community#2420 (@jamescowens)
 - doc: Update license year range to 2022 gridcoin-community#2421 (@barton2526)
 - contrib: install_db4: use local config.guess/sub gridcoin-community#2436 (@div72)
 - gui: update translations gridcoin-community#2442 (@div72, @3man001)

Removed
 - qt: Remove stray QT4 references gridcoin-community#2220 (@barton2526)
 - util: Remove old boost hacks/workarounds gridcoin-community#2231 (@barton2526)
 - refactor: Remove sprintf and printf gridcoin-community#2269 (@jamescowens)
 - depends: Remove boost::program_options dependency gridcoin-community#2277 (@barton2526)
 - refactor: Drop noop gcc version checks gridcoin-community#2278 (@barton2526)
 - util: Remove unused itostr gridcoin-community#2280 (@barton2526)
 - util: Remove deprecated random number generator functions gridcoin-community#2236 (@jamescowens)
 - depends: cleanup package configure flags gridcoin-community#2279 (@barton2526)
 - rpc: remove 'label' filter for rpc command help gridcoin-community#2282 (@barton2526)
 - wallet: remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx gridcoin-community#2283 (@barton2526)
 - refactor: Optimize and Cleanup CScript::FindAndDelete gridcoin-community#2294 (@barton2526)
 - wallet: Remove unused AskPassphraseDialog::Decrypt gridcoin-community#2299 (@barton2526)
 - refactor, qt: Drop redundant setEditTriggers(NoEditTriggers) calls, Fix typo in QtInputSupport check gridcoin-community#2308 (@barton2526)
 - release: Remove gitian gridcoin-community#2293 (@jamescowens)
 - util: Update scheduler and remove Boost chrono gridcoin-community#2330 (@jamescowens)
 - qt: remove gridcoinresearch.pro gridcoin-community#2332 (@div72)
 - test: Remove unused function dumpKeyInfo gridcoin-community#2347 (@barton2526)
 - build: remove glibc back compat gridcoin-community#2351 (@barton2526)
 - net: remove SOCKS4 support (@core and GUI gridcoin-community#2385 from barton2526)
 - net: remove obsolete "reply" command gridcoin-community#2366 (@div72)
 - net: Remove I2P support from netbase & Correct HE IPv6 Tunnel Broker gridcoin-community#2409 (@Pythonix)
 - qt: Remove locked coins loop gridcoin-community#2410 (@Pythonix)

Fixed
 - wallet: Close DB on error, use memory_cleanse gridcoin-community#2221 (@barton2526)
 - build: Clean remnants of QTBUG-34748 fix gridcoin-community#2224 (@barton2526)
 - build: use -isysroot over --sysroot on macOS gridcoin-community#2225 (@barton2526)
 - trivial, rpc: Fix and cleanup listreceivedbyX documentation, General Typos gridcoin-community#2227 (@barton2526)
 - trivial: Unbreak build with Boost 1.72.0 gridcoin-community#2228 (@barton2526)
 - doc: Large collection of typos, grammar fixes, and proper capitalization gridcoin-community#2247 (@barton2526)
 - lint: Fix linter warning, fix typo gridcoin-community#2276 (@barton2526)
 - qt: Do not translate file extensions gridcoin-community#2295 (@barton2526)
 - refactor: Drop redundant QString calls gridcoin-community#2296 (@barton2526)
 - rpc: Print OpenSSL version fix gridcoin-community#2298 (@barton2526)
 - gui: Add back in accidentally deleted condition for UnlockStaking and Unlock cases in AskPassphraseDialog::textChanged() gridcoin-community#2305 (@jamescowens)
 - rpc: ParseHash: Fail when length is not 64 gridcoin-community#2313 (@barton2526)
 - Fix locking on WSL using flock instead of fcntl gridcoin-community#2314 (@barton2526)
 - rpc: Fix breakage in protocol.cpp caused by change atoi to ParseInt gridcoin-community#2307 (@jamescowens)
 - net: Small upstream FIXME gridcoin-community#2320 (@barton2526)
 - refactor: Fix advanced compiler warnings gridcoin-community#2292 (@jamescowens)
 - poll: Fix the possible infinite loop warning on GetChoices() in result.cpp gridcoin-community#2322 (@jamescowens)
 - qt: fix broken research wizard signal gridcoin-community#2324 (@div72)
 - refactor: Fix three minor code scanner findings gridcoin-community#2327 (@barton2526)
 - Fix build with Boost 1.77.0 gridcoin-community#2329 (@barton2526)
 - build: Misc upstream depends fixes gridcoin-community#2331 (@barton2526)
 - wallet: Fix improper indent in encryptWallet gridcoin-community#2339 (@jamescowens)
 - wallet: Bugfix - Fundrawtransaction: don't terminate when keypool is empty gridcoin-community#2337 (@barton2526)
 - depends: Fix build for Apple Silicon gridcoin-community#2342 (@div72)
 - build: fix -fstack-clash-protection spam for Clang gridcoin-community#2340 (@div72)
 - util, test: Don't allow Base32/64-decoding or ParseMoney(…) on strings with embedded NUL characters. Add tests.  Add negative test case. gridcoin-community#2344 (@barton2526)
 - test: Repair transaction_tests.cpp (baseline) gridcoin-community#2350 (@jamescowens)
 - scraper: Fix scraper deadlock and make activebeforesb dynamic (not require restart) gridcoin-community#2358 (@jamescowens)
 - scraper: Move lock on cs_mapParts in RecvManifest gridcoin-community#2370 (@jamescowens)
 - build: Make changes to use Gridcoin x.y.z.w client versions gridcoin-community#2371 (@jamescowens)
 - refactor, build: Upstream fixes for the /crypto files. Implement Keccak and SHA3 gridcoin-community#2365 (@barton2526)
 - util: fix FormatVersion gridcoin-community#2376 (@div72)
 - net: initialize nMessageSize to uint32_t max gridcoin-community#2390 (@barton2526)
 - contract: fix double usage of contract change addresses gridcoin-community#2395 (@div72)
 - build: patch qt to explicitly define previously implicit header include gridcoin-community#2397 (@div72)
 - Fix breakage introduced by use of FormatISO8601DateTime gridcoin-community#2398 (@jamescowens)
 - gui: Fix bug in recent transaction list gridcoin-community#2403 (@jamescowens)
 - build: Drop macports support gridcoin-community#2401 (@barton2526)
 - util: Check if specified config file cannot be opened gridcoin-community#2400 (@barton2526)
 - net: Fix masking of irrelevant bits in address groups gridcoin-community#2412 (@Pythonix)
 - rpc: accept int block number for getblocksbatch gridcoin-community#2415 (@scribblemaniac)
 - staking, gui: Fixes a missing miner search interval update for no coins corner case gridcoin-community#2430 (@jamescowens)
 - gui: Add uiInterface.BeaconChanged() call after ActivatePending gridcoin-community#2438 (@jamescowens)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants