From 34c2a4b38022668fecbae19b3ea480269549ecbb Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Mon, 2 Nov 2020 13:36:34 -0700 Subject: [PATCH 1/8] Postpone clang and libc++ dependency updates until after the 4.1.0 release. --- qa/zcash/postponed-updates.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/qa/zcash/postponed-updates.txt b/qa/zcash/postponed-updates.txt index ab03c7ddba6..3c3d3c77b80 100644 --- a/qa/zcash/postponed-updates.txt +++ b/qa/zcash/postponed-updates.txt @@ -8,15 +8,15 @@ # This will be Clang 9 intially, which we are postponing until after the # initial Clang PR is merged. # libc++ is pinned to the same version as Clang. -native_clang 8.0.1 2020-11-01 -native_clang 9.0.0 2020-11-01 -native_clang 9.0.1 2020-11-01 +native_clang 8.0.1 2020-12-01 +native_clang 9.0.0 2020-12-01 +native_clang 9.0.1 2020-12-01 native_clang 10.0.0 2021-01-20 native_clang 10.0.1 2021-01-20 native_clang 11.0.0 2021-01-20 -libcxx 8.0.1 2020-11-01 -libcxx 9.0.0 2020-11-01 -libcxx 9.0.1 2020-11-01 +libcxx 8.0.1 2020-12-01 +libcxx 9.0.0 2020-12-01 +libcxx 9.0.1 2020-12-01 libcxx 10.0.0 2021-01-20 libcxx 10.0.1 2021-01-20 libcxx 11.0.0 2021-01-20 From 75a8a6c25fcf04031aead31b28da357aa7857047 Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Mon, 2 Nov 2020 13:38:03 -0700 Subject: [PATCH 2/8] make-release.py: Versioning changes for 4.1.0. --- README.md | 2 +- configure.ac | 2 +- contrib/gitian-descriptors/gitian-linux.yml | 2 +- src/clientversion.h | 2 +- src/deprecation.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 059dde48d4b..70fc0cffe1b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Zcash 4.1.0-rc1 +Zcash 4.1.0 =========== diff --git a/configure.ac b/configure.ac index 5a10962468a..f2aacbd025c 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 4) define(_CLIENT_VERSION_MINOR, 1) define(_CLIENT_VERSION_REVISION, 0) -define(_CLIENT_VERSION_BUILD, 25) +define(_CLIENT_VERSION_BUILD, 50) define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) define(_CLIENT_VERSION_IS_RELEASE, true) diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml index b7f91f5eb58..e46ffbc1cc1 100644 --- a/contrib/gitian-descriptors/gitian-linux.yml +++ b/contrib/gitian-descriptors/gitian-linux.yml @@ -1,5 +1,5 @@ --- -name: "zcash-4.1.0-rc1" +name: "zcash-4.1.0" enable_cache: true distro: "debian" suites: diff --git a/src/clientversion.h b/src/clientversion.h index 59b4a96cd14..3fa554c86b5 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -18,7 +18,7 @@ #define CLIENT_VERSION_MAJOR 4 #define CLIENT_VERSION_MINOR 1 #define CLIENT_VERSION_REVISION 0 -#define CLIENT_VERSION_BUILD 25 +#define CLIENT_VERSION_BUILD 50 //! Set to true for release, false for prerelease or test build #define CLIENT_VERSION_IS_RELEASE true diff --git a/src/deprecation.h b/src/deprecation.h index 78c41669854..36330c6fea7 100644 --- a/src/deprecation.h +++ b/src/deprecation.h @@ -10,7 +10,7 @@ // Per https://zips.z.cash/zip-0200 // Shut down nodes running this version of code, 16 weeks' worth of blocks after the estimated // release block height. A warning is shown during the 14 days' worth of blocks prior to shut down. -static const int APPROX_RELEASE_HEIGHT = 1022000; +static const int APPROX_RELEASE_HEIGHT = 1028431; static const int RELEASE_TO_DEPRECATION_WEEKS = 16; static const int EXPECTED_BLOCKS_PER_HOUR = 3600 / Consensus::POST_BLOSSOM_POW_TARGET_SPACING; static_assert(EXPECTED_BLOCKS_PER_HOUR == 48, "The value of Consensus::POST_BLOSSOM_POW_TARGET_SPACING was chosen such that this assertion holds."); From 453dacccf8bf6da98b13166c37ead3f79da823cb Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Mon, 2 Nov 2020 13:40:54 -0700 Subject: [PATCH 3/8] make-release.py: Updated manpages for 4.1.0. --- doc/man/zcash-cli.1 | 8 ++++---- doc/man/zcash-tx.1 | 8 ++++---- doc/man/zcashd.1 | 10 +++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1 index e90f17e43c3..0b0c67e753a 100644 --- a/doc/man/zcash-cli.1 +++ b/doc/man/zcash-cli.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. -.TH ZCASH-CLI "1" "October 2020" "zcash-cli v4.1.0-rc1" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.16. +.TH ZCASH-CLI "1" "November 2020" "zcash-cli v4.1.0" "User Commands" .SH NAME -zcash-cli \- manual page for zcash-cli v4.1.0-rc1 +zcash-cli \- manual page for zcash-cli v4.1.0 .SH DESCRIPTION -Zcash RPC client version v4.1.0\-rc1 +Zcash RPC client version v4.1.0 .PP In order to ensure you are adequately protecting your privacy when using Zcash, please see . diff --git a/doc/man/zcash-tx.1 b/doc/man/zcash-tx.1 index e4ebca6c901..2ef774d9338 100644 --- a/doc/man/zcash-tx.1 +++ b/doc/man/zcash-tx.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. -.TH ZCASH-TX "1" "October 2020" "zcash-tx v4.1.0-rc1" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.16. +.TH ZCASH-TX "1" "November 2020" "zcash-tx v4.1.0" "User Commands" .SH NAME -zcash-tx \- manual page for zcash-tx v4.1.0-rc1 +zcash-tx \- manual page for zcash-tx v4.1.0 .SH DESCRIPTION -Zcash zcash\-tx utility version v4.1.0\-rc1 +Zcash zcash\-tx utility version v4.1.0 .SS "Usage:" .TP zcash\-tx [options] [commands] diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1 index 25592da945a..5516ca17570 100644 --- a/doc/man/zcashd.1 +++ b/doc/man/zcashd.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. -.TH ZCASHD "1" "October 2020" "zcashd v4.1.0-rc1" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.16. +.TH ZCASHD "1" "November 2020" "zcashd v4.1.0" "User Commands" .SH NAME -zcashd \- manual page for zcashd v4.1.0-rc1 +zcashd \- manual page for zcashd v4.1.0 .SH DESCRIPTION -Zcash Daemon version v4.1.0\-rc1 +Zcash Daemon version v4.1.0 .PP In order to ensure you are adequately protecting your privacy when using Zcash, please see . @@ -84,7 +84,7 @@ Keep at most unconnectable transactions in memory (default: 100) .HP \fB\-par=\fR .IP -Set the number of script verification threads (\fB\-2\fR to 16, 0 = auto, <0 = +Set the number of script verification threads (\fB\-16\fR to 16, 0 = auto, <0 = leave that many cores free, default: 0) .HP \fB\-pid=\fR From fe681d2cc634df6634c8732bacf947376f7cb1bd Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Mon, 2 Nov 2020 13:40:54 -0700 Subject: [PATCH 4/8] make-release.py: Updated release notes and changelog for 4.1.0. --- contrib/debian/changelog | 6 + doc/authors.md | 65 ++-- doc/release-notes.md | 18 -- doc/release-notes/release-notes-4.1.0.md | 358 +++++++++++++++++++++++ 4 files changed, 402 insertions(+), 45 deletions(-) create mode 100644 doc/release-notes/release-notes-4.1.0.md diff --git a/contrib/debian/changelog b/contrib/debian/changelog index b3a9fe00c58..17ecc7a4665 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +zcash (4.1.0) stable; urgency=medium + + * 4.1.0 release. + + -- Electric Coin Company Mon, 02 Nov 2020 13:40:54 -0700 + zcash (4.1.0~rc1) stable; urgency=medium * 4.1.0-rc1 release. diff --git a/doc/authors.md b/doc/authors.md index 5683071d4e6..d48c6b6b5c0 100644 --- a/doc/authors.md +++ b/doc/authors.md @@ -1,56 +1,59 @@ Zcash Contributors ================== -Jack Grigg (1050) +Jack Grigg (1059) Simon Liu (460) -Sean Bowe (361) +Sean Bowe (367) +Daira Hopwood (244) Eirik Ogilvie-Wigley (216) -Daira Hopwood (214) -Taylor Hornby (109) -Alfredo Garcia (102) +Wladimir J. van der Laan (118) +Taylor Hornby (112) +Alfredo Garcia (111) Marshall Gaucher (100) -Wladimir J. van der Laan (99) Jay Graber (89) -Jonas Schnelli (71) -Kris Nuttycombe (69) -Pieter Wuille (67) +Kris Nuttycombe (83) +Jonas Schnelli (73) +Pieter Wuille (69) +Cory Fields (63) Nathan Wilcox (56) -Cory Fields (55) -Larry Ruane (52) -Ying Tong Lai (43) +Larry Ruane (56) +Ying Tong Lai (54) Kevin Gallagher (38) -Marco Falke (31) +Marco Falke (34) +Dimitris Apostolou (28) Matt Corallo (25) -Dimitris Apostolou (23) +fanquake (24) +Luke Dashjr (18) Jonathan "Duke" Leto (18) -fanquake (16) -Luke Dashjr (16) -syd (15) +syd (16) +practicalswift (16) avnish (14) Per Grön (14) Jorge Timón (14) +Carl Dong (13) Gregory Maxwell (12) +Benjamin Winston (12) Ariel Gabizon (12) Paige Peterson (11) -Benjamin Winston (11) -Carl Dong (10) -practicalswift (9) nomnombtc (9) +Pavel Janík (9) kozyilmaz (8) Peter Todd (8) Charlie O'Keefe (8) -Pavel Janík (7) +Ben Wilson (8) Jeff Garzik (7) +ying tong (6) Marius Kjærstad (6) Karl-Johan Alm (6) David Mercer (6) Daniel Cousens (6) -ying tong (5) ca333 (5) Suhas Daftuar (5) Philip Kaufmann (5) Patrick Strateman (5) +Kaz Wesley (5) Johnathan Corgan (5) +Jeremy Rubin (5) George Tankersley (5) Gavin Andresen (5) Gareth Davies (5) @@ -60,14 +63,14 @@ gladcow (4) Zancas Wilcox (4) WO (4) João Barbosa (4) -Jeremy Rubin (4) James O'Beirne (4) Daniel Kraft (4) -Ben Wilson (4) +mruddy (3) lpescher (3) elbandi (3) Patick Strateman (3) NikVolf (3) +Nate Wilcox (3) MeshCollider (3) Jim Posen (3) Jason Davies (3) @@ -75,22 +78,24 @@ Danny Willems (3) Alfie John (3) rofl0r (2) noname45688@gmail.com (2) -mruddy (2) kpcyrd (2) face (2) aniemerg (2) UdjinM6 (2) Tim Ruffing (2) +Thomas Snider (2) Solar Designer (2) Scott (2) Robert C. Seacord (2) Pejvan (2) Pavol Rusnak (2) Pavel Vasin (2) +Mustafa (2) Matthew King (2) Mary Moore-Simmons (2) -Kaz Wesley (2) +Martin Ankerl (2) Joe Turgeon (2) +Jeffrey Czyz (2) Jack Gavigan (2) ITH4Coinomia (2) Evan Klitzke (2) @@ -125,10 +130,10 @@ avnish98 (1) Za Wilcox (1) Yuri Zhykin (1) William M Peaster (1) +Vasil Dimov (1) Ulrich Kempken (1) Tom Ritter (1) Tom Harding (1) -Thomas Snider (1) Stephen (1) S. Matthew English (1) Ross Nicoll (1) @@ -143,6 +148,7 @@ Paul Georgiou (1) Paragon Initiative Enterprises, LLC (1) NicolasDorier (1) Nicolas DORIER (1) +Nick (1) Nathaniel Mahieu (1) Murilo Santana (1) Miles Manley (1) @@ -157,17 +163,20 @@ Lauda (1) Lars-Magnus Skog (1) Kevin Pan (1) Jonas Nick (1) +John Newbery (1) Jeffrey Walton (1) Jainan-Tandel (1) Ian T (1) Ian Munoz (1) Ian Kelling (1) +Hennadii Stepanov (1) Gregory Sanders (1) Gaurav Rana (1) Forrest Voight (1) Florian Schmaus (1) Ethan Heilman (1) Eran Tromer (1) +Dimitris Tsapakidis (1) Denis Lukianov (1) David Llop (1) Chun Kuan Lee (1) @@ -186,6 +195,8 @@ Andrew Chow (1) Allan Niemerg (1) Alex van der Peet (1) Alex (1) +Ahmad Kazi (1) +Aditya Kulkarni (1) Adam Weiss (1) Adam Langley (1) Adam Brown (1) diff --git a/doc/release-notes.md b/doc/release-notes.md index dbbc767962a..a29094b5174 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -4,21 +4,3 @@ release-notes at release time) Notable changes =============== -Migration to Clang and static libc++ ------------------------------------- - -`zcashd` now builds its C++ (and C) dependencies entirely with a pinned version -of Clang, and statically links libc++ instead of dynamically linking libstdc++. -This migration enables us to reliably use newer C++ features while supporting -older LTS platforms, be more confident in the compiler's optimisations, and -leverage security features such as sanitisers and efficient fuzzing. - -Additionally, because both Clang and rustc use LLVM as their backend, we can -optimise across the FFI boundary between them. This reduces the cost of moving -between C++ and Rust, making it easier to build more functionality in Rust -(though not making it costless, as we still need to work within the constraints -of the C ABI). - -The system compiler is still used to compile a few native dependencies (used by -the build machine to then compile `zcashd` for the target machine). These will -likely also be migrated to use the pinned Clang in a future release. diff --git a/doc/release-notes/release-notes-4.1.0.md b/doc/release-notes/release-notes-4.1.0.md new file mode 100644 index 00000000000..5d8f7c5f259 --- /dev/null +++ b/doc/release-notes/release-notes-4.1.0.md @@ -0,0 +1,358 @@ +Notable changes +=============== + +Migration to Clang and static libc++ +------------------------------------ + +`zcashd` now builds its C++ (and C) dependencies entirely with a pinned version +of Clang, and statically links libc++ instead of dynamically linking libstdc++. +This migration enables us to reliably use newer C++ features while supporting +older LTS platforms, be more confident in the compiler's optimisations, and +leverage security features such as sanitisers and efficient fuzzing. + +Additionally, because both Clang and rustc use LLVM as their backend, we can +optimise across the FFI boundary between them. This reduces the cost of moving +between C++ and Rust, making it easier to build more functionality in Rust +(though not making it costless, as we still need to work within the constraints +of the C ABI). + +The system compiler is still used to compile a few native dependencies (used by +the build machine to then compile `zcashd` for the target machine). These will +likely also be migrated to use the pinned Clang in a future release. + +Changelog +========= + +Aditya Kulkarni (1): + Add a config option to skip transaction verification in IBD mode + +Ahmad Kazi (1): + [Trivial] Add BITCOIN_FS_H endif footer in fs.h + +Alfredo Garcia (9): + add timestamp to warnings + change order of returned pair, fix compatibility issue + revert result key change, fix calls to getime + add shielded balance to getwalletinfo + Add null check to feof. + allow wallet file to be outside datadir + Apply suggestions from code review + simplify TestBlockValidity + update function comment + +Ben Wilson (4): + Added libtinfo5 to ci builder containers + Added Arch and Centos to script, added libtinfo5 for arch + Fixed Centos and Arch python requirements + Build python for debian9 and ubuntu16.04 + +Carl Dong (3): + depends: Build secondary deps statically. + depends: Purge libtool archives + scripted-diff: Run scripted-diff in subshell + +Cory Fields (8): + leveldb: integrate leveldb into our buildsystem + build: No need to check for leveldb atomics + build: out-of-tree fixups + leveldb: enable runtime-detected crc32 instructions + build: verify that the assembler can handle crc32 functions + httpserver: use a future rather than relying on boost's try_join_for + httpserver: replace boost threads with std + devtools: add script to verify scriptable changes + +Daira Hopwood (30): + CBufferedFile: assert that Fill() is only called when nReadPos == nSrcPos, and simplify based on that assumption. + CBufferedFile: use eof() method rather than feof(src) in error message. + Make some conversions explicit to reduce sanitizer warnings. + Rename z_*_balance fields of getwalletinfo output to shielded_*_balance + Fix grammar in error messages. + Ensure that the absolute path used in the test definitely does not exist. + Line-wrap addition to README.md + Minor additional OpenSSL scouring. + Avoid undefined behaviour in scriptnum tests. + Add assertions for CScriptNum[10] +/- int64_t to avoid the possibility of UB. + It's unnecessary to pass int64_t by const reference. + Cosmetics in CScriptNum code and tests. + Add logging when we receive an invalid note plaintext (using the "receiveunsafe" log category). + Fix a new warning about use of boost::bind placeholders after updating Boost. closes #4774 + Beef up the CoC to address use of dog-whistles. + Fix warnings surfaced by compiling with clang++. + Use the current time as the timestamp if we override a misc warning. + qa/zcash/full_test_suite.py: changes needed for macOS. fixes #4785 + qa/zcash/full_test_suite.py: print immediately if a test fails. + log(x)/log(2.0) can be written as log2(x). + Fix integer types in DisplayDuration. + Rename `time` to `duration` in `DisplayDuration`. + Update contrib/devtools/symbol-check.py + contrib/devtools/symbol-check.py: add info about Fedora-based distributions. + Comment and error message cleanups for transaction checks. + Add new copyright entries for build-aux/m4/ax_cxx_compile_stdcxx.m4 + Fix death gtests on macOS by switching to the threadsafe style. + Fix an error reporting bug in "Checksum missing or mismatched ..." + Rename the FS_ZIP214_ECC funding stream to FS_ZIP214_BP. See also https://github.com/zcash/zips/pull/412 . + Gitian builds: Remove manual CFLAGS and CXXFLAGS from descriptor. + +Dimitris Apostolou (5): + Remove reference to cargo-checksum.sh + Fix typos + Fix zeromq warning + Remove deprecated init.md + Remove Bitcoin release notes + +Dimitris Tsapakidis (1): + Fixed multiple typos + +Hennadii Stepanov (1): + Enable ShellCheck rules + +Jack Grigg (79): + Assorted small changes to the locked pool manager + wallet: Add ANY_TADDR special string to z_sendmany + Allow multiple nuparams options in config file + depends: Switch to `cargo vendor` for Rust dependencies + QA: Comment out Rust crate checks in updatecheck.py + depends: Ensure that SOURCES_PATH exists before vendoring crates + wallet: Ignore coinbase UTXOs with z_sendmany ANY_TADDR + rpc: Fix comma spacing in example z_sendmany commands + Squashed 'src/leveldb/' changes from 20ca81f08..a31c8aa40 + Squashed 'src/leveldb/' changes from a31c8aa40..196962ff0 + Squashed 'src/leveldb/' changes from 196962ff0..c521b3ac6 + Squashed 'src/leveldb/' changes from c521b3ac6..64052c76c + Squashed 'src/leveldb/' changes from 64052c76c..524b7e36a + Squashed 'src/leveldb/' changes from 524b7e36a..f545dfabf + depends: Remove cargo-checksum.sh + Replace libsodium's crypto_generichash_blake2b with blake2b_simd + blake2b: Allow consuming partial BLAKE2b output + tracing: Correctly override tracing::Span move constructors + build: Remove Rust staticlib naming workaround + depends: Update to latest config.guess & config.sub + build: out-of-tree fixups + leveldb: Assert that ssize_t is the same size as size_t on Windows + LockedPool: Fix LockedPool::free(nullptr) to be a no-op + LockedPool: Make Arena::free and LockedPool::free noexcept + allocators: Apply Allocator named requirements to secure_allocator::deallocate + depends: Update map of GCC canonical hosts to Rust targets + QA: Switch to x86_64-pc-linux-gnu for hard-coded Linux HOST + build: Switch to x86_64-pc-linux-gnu for codecov filtering + gitian: Switch from x86_64-unknown-linux-gnu to x86_64-linux-gnu + util: Remove OpenSSL multithreading infrastructure + Remove remaining OpenSSL references + QA: Remove OpenSSL from updatecheck.py + build: Remove a stray -lcrypto + Squashed 'src/secp256k1/' changes from 6ad5cdb42..8ab24e8da + build: Use the endomorphism optimization for secp256k1 + depends: libevent 2.1.12 + depends: ccache 3.7.11 + depends: googletest 1.8.1 + depends: utfcpp 3.1.2 + depends: Use correct HOST for download-linux target + QA: Fix backporting bugs in httpbasics.py + depends: Boost 1.74.0 + depends: ccache 3.7.12 + cargo update + depends: ZeroMQ 4.3.3 + FFI: Merge librustzcash_init_zksnark_params variants into one function + depends: Postpone current and scheduled Rust releases until 2021 + MOVEONLY: Move logging code from util.{h,cpp} to new files + depends: Add Clang 8.0.0 + depends: Use vendored Clang for native compilation + depends: Use vendored Clang for macOS cross-compilation + depends: Vendor LLD and use it for linking + depends: Add libc++ as a dependency + depends: Don't replace default CXXFLAGS in C++ dependencies + depends: Add multilib paths for Linux cross-compile + build: Statically link libc++ + build: Add missing LIBUNIVALUE to Makefile.bench.include LDADD + depends: Fix "unused variables" warning when compiling zeromq for Windows + depends: Rename Boost libraries to follow MinGW/GCC convention + depends: Fix boost::iostreams usage on Windows with libc++ + build: Compile secp256k1 with C99 + build: Add -lpthread to univalue test LDFLAGS + qa: Disable FORTIFY_SOURCE checks + QA: Add native_clang and libcxx to updatecheck.py + test: Fix various pyflakes warnings + doc: Add Clang and libc++ migration to release notes + build: Update AX_CXX_COMPILE_STDCXX macro + build: Require and build with C++ 17 + depends: Build C++ dependencies with C++ 17 + Switch from std::random_shuffle to std::shuffle + Squashed 'src/secp256k1/' changes from 8ab24e8da..c6b6b8f1b + build: Update secp256k1 configure flags + Improve reject reasons for unmet shielded requirements + Add logging to CCoinsViewCache::HaveShieldedRequirements + utils: Remove unnecessary GetTempPath() + Add txid to "shielded requirements not met" messages + test/lint: Check for working changes before checking scripted diffs + tests: Update chained_joinsplits test for HaveShieldedRequirements API change + scripted-diff: Remove BOOST_STATIC_ASSERT + +Jeffrey Czyz (2): + Fix compilation errors in support/lockedpool.cpp + Fix segfault in allocator_tests/arena_tests + +Jeremy Rubin (1): + Fix subscript[0] potential bugs in key.cpp + +John Newbery (1): + [docs] document scripted-diff + +Jonas Schnelli (2): + NotifyBlockTip signal: switch from hash (uint256) to CBlockIndex* + Move uiInterface.NotifyBlockTip signal above the core/wallet signal + +Kaz Wesley (3): + LockedPool: test handling of invalid allocations + LockedPool: fix explosion for illegal-sized alloc + LockedPool: avoid quadratic-time allocation + +Kris Nuttycombe (14): + Prevent creation of shielded transactions in initial block download. + Revert the move of the `getBalanceZaddr` block for ease of review. + Fix forward declaration. + Remove redundant CheckBlock calls. + Reduce diff complexity. + Apply style suggestions from code review + -ibdskiptxverification must imply -checkpoints + Apply suggestions from code review + Ensure conflicting flags are reported as an error. + Reject incompatible flags in "Step 2" + Rename IBDSkipTxVerification back to ShouldCheckTransaction + Fix command-line help for -ibdskiptxverification + Fix invocation of updatecheck.py in make-release.py + Replace invalid characters in log message decoding. + +Larry Ruane (4): + Flush witness data when consistent (part 2) + performance: auto params = CChainParams::GetConsensus() + allow getaddressutxos if -lightwalletd + add z_gettreestate rpc + +Luke Dashjr (2): + lockedpool: When possible, use madvise to avoid including sensitive information in core dumps + Add MIT license to Makefiles + +Marco Falke (3): + Limit scope of all global std::once_flag + Add extra LevelDB source to Makefile + test: Move linters to test/lint, add readme + +Martin Ankerl (2): + Use best-fit strategy in Arena, now O(log(n)) instead O(n) + fix nits: variable naming, typos + +Mustafa (2): + Add a source file for unit test utils. + Move GetTempPath() to testutil. + +Nate Wilcox (3): + Link the README.md to the specific readthedocs.io page for building on Debian/Ubuntu. + Convert a sed command to a static patch file. + depends: fix a logging bug for multi-archive packages. + +Nick (1): + [RPC] Add transaction size to JSON output + +Pavel Janík (2): + Do not shadow variable, use deprecated MAP_ANON if MAP_ANONYMOUS is not defined. + Do not include env_win.cc on non-Windows systems + +Pieter Wuille (2): + Remove some unused functions and methods + Fail on commit with VERIFY SCRIPT but no scripted-diff + +Sean Bowe (6): + Update Rust to 1.44.1. + cargo update + Update to latest zcash_* and zkcrypto crates. + Postpone clang and libc++ dependency updates until after the 4.1.0 release. + make-release.py: Versioning changes for 4.1.0. + make-release.py: Updated manpages for 4.1.0. + +Taylor Hornby (3): + Fix buffer overflows in P2PKH tests + Add a missing % to a string interpolation in rpc test framework + Fix undefined behavior in the test_bitcoin tests + +Thomas Snider (1): + [trivial] Switched constants to sizeof() + +Vasil Dimov (1): + lockedpool: avoid sensitive data in core files (FreeBSD) + +Wladimir J. van der Laan (19): + wallet: Change CCrypter to use vectors with secure allocator + wallet: Get rid of LockObject and UnlockObject calls in key.h + support: Add LockedPool + rpc: Add `getmemoryinfo` call + bench: Add benchmark for lockedpool allocation/deallocation + http: Restrict maximum size of request line + headers + Replace scriptnum_test's normative ScriptNum implementation + build: remove libcrypto as internal dependency in libbitcoinconsensus.pc + http: Do a pending c++11 simplification + http: Add log message when work queue is full + http: Change boost::scoped_ptr to std::unique_ptr in HTTPRequest + http: use std::move to move HTTPRequest into HTTPWorkItem + Add fs.cpp/h + Replace includes of boost/filesystem.h with fs.h + Replace uses of boost::filesystem with fs + Use fsbridge for fopen and freopen + torcontrol: Use fs::path instead of std::string for private key path + Remove `namespace fs=fs` + test: Mention commit id in scripted diff error + +fanquake (8): + build: remove SSL lib detection + build: remove OpenSSL detection and libs + depends: remove OpenSSL package + doc: remove OpenSSL from build instructions and licensing info + depends: Disable unused ZeroMQ features + depends: zeromq: disable draft classes and methods + build: only pass --disable-dependency-tracking to packages that understand it + build: pass --enable-option-checking to applicable packages + +mruddy (1): + [depends, zmq, doc] avoid deprecated zeromq api functions + +practicalswift (7): + Fix out-of-bounds write in case of failing mmap(...) in PosixLockedPageAllocator::AllocateLocked + Improve readability by removing redundant casts to same type (on all platforms) + tests: Remove OldSetKeyFromPassphrase/OldEncrypt/OldDecrypt + Remove unused Boost includes + Add "export LC_ALL=C" to all shell scripts + Add error handling: exit if cd fails + Use bash instead of POSIX sh. POSIX sh does not support arrays. + +Jack Grigg (9): + Update license headers + leveldb: Fix typo + LockedPool: Switch to HTTPS URLs in licenses and comments + test: Fix LFSR period in comments + httpserver: Code style cleanups + depends: Update packages documentation for Zcash + depends: Add untested note to FreeBSD host + Update example scripted-diff comit in doc/developer-notes.md + Use HTTPS in script license headers + +syd (1): + Add assert_raises_message to the python test framework. + +Ying Tong Lai (11): + Add funding stream addresses to getblocksubsidy RPC output + Fix CScript encoding + Handle shielded address case + Minor cleanups + Only return address instead of CScript + Remove void declaration of ScriptPubKeyToJSON() + Postpone native_ccache 4.0 + make-release.py: Versioning changes for 4.1.0-rc1. + make-release.py: Updated manpages for 4.1.0-rc1. + make-release.py: Updated release notes and changelog for 4.1.0-rc1. + Update release-notes-4.1.0-rc1.md + +ying tong (1): + Apply suggestions from code review + +Benjamin Winston (1): + Postponed dependency updates, refer to core team sync meeting. + From f8c9a1f2d6594579263b203e12b1dd385875a6bb Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Tue, 3 Nov 2020 09:51:08 +0000 Subject: [PATCH 5/8] Update doc/release-notes/release-notes-4.1.0.md Co-authored-by: ying tong --- doc/release-notes/release-notes-4.1.0.md | 36 +++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/doc/release-notes/release-notes-4.1.0.md b/doc/release-notes/release-notes-4.1.0.md index 5d8f7c5f259..ab2b065f3b9 100644 --- a/doc/release-notes/release-notes-4.1.0.md +++ b/doc/release-notes/release-notes-4.1.0.md @@ -20,6 +20,41 @@ The system compiler is still used to compile a few native dependencies (used by the build machine to then compile `zcashd` for the target machine). These will likely also be migrated to use the pinned Clang in a future release. + +Fast sync for initial block download +------------------------------------ + +The `-ibdskiptxverification` flag allows faster synchronization during initial +block sync, by skipping transaction verification and instead verifying only PoW. +Note that this mode requires checkpoints to be enabled, to make sure that each +block under inspection is an ancestor of the latest checkpoint. + +Convenient testing for invalid note plaintexts +---------------------------------------------- + +After the mainnet activation of Canopy (block 1046400), correct wallet software +will no longer produce v1 note plaintexts (with a lead byte of `0x01`). However, +v1 note plaintexts will continue to be accepted for a grace period of 32256 +blocks (about 4 weeks), as specified in [ZIP 212](https://zips.z.cash/zip-0212). +The new `receiveunsafe` log category complains if an invalid note plaintext is +received. + +Additional lightwalletd and light client RPCs +--------------------------------------------- + +- lightwalletd is now able to retrieve all UTXOs related to a t-address through +the `getaddressutxos` RPC. (Previously, this was only available to the Insight +Explorer.) +- The new `z_gettreestate` RPC returns the Sprout and Sapling treestate at a +given block height or block hash. This makes it easier for light clients to +generate checkpoints. + +Update/removal of several cryptographic dependencies +---------------------------------------------------- + +This release updates secp256k1 to enable the GLV endomorphism optimisation by +default, after the recent expiry of the GLV patents. It also removes OpenSSL, +and replaces libsodium BLAKE2b usage with the [blake2b_simd Rust crate](https://github.com/oconnor663/blake2_simd). Changelog ========= @@ -355,4 +390,3 @@ ying tong (1): Benjamin Winston (1): Postponed dependency updates, refer to core team sync meeting. - From 4f331d0f7fc4dcba713e217c2e15dd2166499f69 Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Tue, 3 Nov 2020 09:52:59 +0000 Subject: [PATCH 6/8] Update doc/release-notes/release-notes-4.1.0.md Co-authored-by: ying tong --- doc/release-notes/release-notes-4.1.0.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/doc/release-notes/release-notes-4.1.0.md b/doc/release-notes/release-notes-4.1.0.md index ab2b065f3b9..d5d26eb9d28 100644 --- a/doc/release-notes/release-notes-4.1.0.md +++ b/doc/release-notes/release-notes-4.1.0.md @@ -8,13 +8,8 @@ Migration to Clang and static libc++ of Clang, and statically links libc++ instead of dynamically linking libstdc++. This migration enables us to reliably use newer C++ features while supporting older LTS platforms, be more confident in the compiler's optimisations, and -leverage security features such as sanitisers and efficient fuzzing. - -Additionally, because both Clang and rustc use LLVM as their backend, we can -optimise across the FFI boundary between them. This reduces the cost of moving -between C++ and Rust, making it easier to build more functionality in Rust -(though not making it costless, as we still need to work within the constraints -of the C ABI). +leverage security features such as sanitisers and efficient fuzzing. In future, +this will also allow optimizing across the boundary between Rust and C++. The system compiler is still used to compile a few native dependencies (used by the build machine to then compile `zcashd` for the target machine). These will From 90493623a0a749cb5d2afefe78521c5d3980e0bd Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Tue, 3 Nov 2020 09:55:02 +0000 Subject: [PATCH 7/8] Fix a comment about postponement of Clang upgrade --- qa/zcash/postponed-updates.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/qa/zcash/postponed-updates.txt b/qa/zcash/postponed-updates.txt index 3c3d3c77b80..0f31f20fad3 100644 --- a/qa/zcash/postponed-updates.txt +++ b/qa/zcash/postponed-updates.txt @@ -5,8 +5,7 @@ # # Clang is pinned to a version that matches the Rust version. -# This will be Clang 9 intially, which we are postponing until after the -# initial Clang PR is merged. +# This would be Clang 9, but for 4.1.0 we are using Clang 8 and postponing the upgrade. # libc++ is pinned to the same version as Clang. native_clang 8.0.1 2020-12-01 native_clang 9.0.0 2020-12-01 From 08fd678be2cbf3f5bfc5098d4f3abf2d01a9589d Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Tue, 3 Nov 2020 09:56:22 +0000 Subject: [PATCH 8/8] Update approximate release height Co-authored-by: ying tong --- src/deprecation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deprecation.h b/src/deprecation.h index 36330c6fea7..deb6128b653 100644 --- a/src/deprecation.h +++ b/src/deprecation.h @@ -10,7 +10,7 @@ // Per https://zips.z.cash/zip-0200 // Shut down nodes running this version of code, 16 weeks' worth of blocks after the estimated // release block height. A warning is shown during the 14 days' worth of blocks prior to shut down. -static const int APPROX_RELEASE_HEIGHT = 1028431; +static const int APPROX_RELEASE_HEIGHT = 1030050; static const int RELEASE_TO_DEPRECATION_WEEKS = 16; static const int EXPECTED_BLOCKS_PER_HOUR = 3600 / Consensus::POST_BLOSSOM_POW_TARGET_SPACING; static_assert(EXPECTED_BLOCKS_PER_HOUR == 48, "The value of Consensus::POST_BLOSSOM_POW_TARGET_SPACING was chosen such that this assertion holds.");