1. 25 Feb, 2021 3 commits
  2. 24 Feb, 2021 2 commits
  3. 23 Feb, 2021 4 commits
  4. 19 Feb, 2021 2 commits
  5. 18 Feb, 2021 1 commit
  6. 17 Feb, 2021 1 commit
  7. 16 Feb, 2021 3 commits
    • BigBlockIfTrue's avatar
      Create ninja target for building HTML documentation with mkdocs · 78d7dd9f
      BigBlockIfTrue authored
      Long-term purpose of this MR is to allow shipping offline HTML
      documentation along with our releases, so you can always locally access
      HTML docs for your specific installed version (online documentation is
      only for latest version). This is a lot more user-friendly than manually
      browsing an unorganised bunch of Markdown files.
      
      Simplified logic of which files to include for `mkdocs`: everything in
      the `docs` folder plus any `.md` files outside it. This dramatically
      reduces the run-time of `mkdocs` and the size of the generated
      documentation folder. It also broke links to source code files. These
      links can be removed in a follow-up MR.
      
      Additionally:
      
      * Changed site directory from `site` (default) to `doc-html`.
      * Renamed `files-for-mkdocs` directory to `doc-html-src`.
      * Moved `mkdocs.yml` into `doc` folder.
      
      This also makes the following changes for locally building
      documentation, but these changes are reversed when building online
      documentation in Gitlab CI:
      
      * `doc/release-notes.md` is now included, as "current release notes" (at
      a version tag, this file contains the actual release notes for that
      release; in between version tags, the file contains changes to master
      since last release).
      * Directory URLs are turned off (do not work locally).
      * Search plug-in is turned off (does not work locally).
      
      Implementation of the ninja target is loosely inspired by `ninja
      translate`.
      
      Test plan: `ninja doc-html` and browse locally from
      `doc-html/index.html`, and also check
      https://bigblockiftrue.gitlab.io/bitcoin-cash-node/
      78d7dd9f
    • freetrader's avatar
      Merge branch 'uint256_nits_constexpr_noexcept' into 'master' · 41510f14
      freetrader authored
      uint256: Modernize code to use `noexcept` and `constexpr` where possible
      
      See merge request !1059
      41510f14
    • freetrader's avatar
      Merge branch 'feature/deterministic-locktime' into 'master' · ecd8267a
      freetrader authored
      Wallet: Remove random component of locktime
      
      See merge request !1063
      ecd8267a
  8. 15 Feb, 2021 2 commits
  9. 14 Feb, 2021 4 commits
  10. 13 Feb, 2021 4 commits
    • BigBlockIfTrue's avatar
      GUI: Move debug log file button to General · 2f034a62
      BigBlockIfTrue authored
      It is logically related to the data directory, not to the memory pool.
      
      Also this MR allows the entire window to be downsized in a more compact
      way.
      
      Test plan: try Node Window
      2f034a62
    • Calin Culianu's avatar
      Merge branch 'backport/abc/d8148' into 'master' · 577f5a67
      Calin Culianu authored
      GUI: Further Window menu improvements
      
      See merge request !1052
      577f5a67
    • Calin Culianu's avatar
      Merge branch 'backport/abc/d8836-d8837' into 'master' · 3f9c971b
      Calin Culianu authored
      Implement O(1) OP_IF/NOTIF/ELSE/ENDIF logic
      
      See merge request !1062
      3f9c971b
    • Calin Culianu's avatar
      uint256: Modernize code to use `noexcept` and `constexpr` where possible · 4ca1f919
      Calin Culianu authored
      Summary
      ---
      
      This is an optional refactoring/code quality MR. This MR modernizes the
      code behind the core `base_blob` type used to make the `uint160`, `uint256`,
      and derived types to use `constexpr` and `noexcept` where possible. This
      improves the compiler's ability to optimize and do static analysis.  The
      reason we are doing this now is because C++17 made more things
      `constexpr`-able, so we should leverage that.
      
      Summary of changes:
      
      - Use `constexpr` / `noexcept` for various methods of `base_blob`
      - Changed `SetNull` to just assign `*this` to a default constructed
        value. Our default c'tor is `constexpr` and in most cases that
        produces only 4 machine instructions without a loop to zero it out
        (assigns 4 zero'd qwords to the array). I checked on godbolt.org and the code
        generated here with `-O2` is very compact. The old way of using `memset`
        would generate equally compact code, but it is less idiomatic and modern
        to rely on C `memset`, and it made the function not `constexpr`.
      - Changed `IsNull`  loop around a bit and made it `constexpr` &
        `noexcept`.
      - Added some static checks in uint256.cpp using the above `constexpr`
        functions.
      - Ensured that `WIDTH` is always sufficiently large but no larger by adding a
        `static_assert`.
      - Simplified the code for `Compare` and also made it `constexpr`.
      - Made various other methods `constexpr` and/or `noexcept`, including dependant
        functions in `strencodings.h` which were made `noexcept` where possible and
        even `constexpr` where possible.  The more `constexpr` we have, the more the
        compiler can analyze and optimize, leading to more efficient code.
      - Made the `SetHex` function `noexcept` and also made it not clear the
        contents before executing -- instead now it clears whatever bytes it didn't
        write to and that are left over (if any) at the end. Most of the time in our
        app the unconditional clear was superfluous since we are parsing 32-bytes of
        hex -- so doing it unconditionally at the beginning was just a redundant memory
        write.
      - Updated the dependant types `CScriptID`, `BlockHash`, and `CKeyID` to
        be `constexpr`/`noexcept` where applicable. Again, this helps with
        static analysis and code generation.
      - Updated the `uint256_tests.cpp` tests to test more corner cases
        methods and subtleties than were being tested before (this was to test
        all the code I touched, basically).
      
      No semantic of behavioral changes are introduced by this MR. All
      externally observable behavior is identical. This is a pure code
      quality/refactor change.
      
      Test Plan
      ---
      
      - review
      - Do the following with both `-DCMAKE_BUILD_TYPE=Release` and
        `-DCMAKE_BUILD_TYPE-Debug`:
        - `ninja all bench_bitcoin check-all` to build everything and test
      - Extra credit: Build with the autoconf based build system and ensure
        everything is kosher.
      4ca1f919
  11. 12 Feb, 2021 4 commits
  12. 04 Feb, 2021 7 commits
  13. 03 Feb, 2021 3 commits