* refactor: mark cache_size_mib as deprecated in RPC
* refactor: make RPC session_set cache_size_mib a no-op
* refactor: tr_ioRead(), tr_ioWrite() now take a std::span
* refactor: add BufferReader::to_buf(std::span<uint8_t>)
* refactor: migrate some methods to to_buf(std::span<uint8_t>)
* refactor: remove the write memory cache
* chore: simplify recalculate_hash()
* refactor: simplify span use in tr_peerMsgsImpl::read_piece_data()
* refactor: move `tr_variant::value_if<int64_t>()` to header and constexpr
* refactor: move `tr_variant::value_if<bool>()` to header and constexpr
* refactor: move `tr_variant::value_if<std::string_view>()` to header and constexpr
* refactor: remove tr_torrentsQueueMoveTop() from public API
refactor: remove tr_torrentsQueueMoveUp() from public API
refactor: remove tr_torrentsQueueMoveDown() from public API
refactor: remove tr_torrentsQueueMoveBottom() from public API
* refactor: remove unused tr_torrentGetQueuePosition()
* refactor: use the same salter everywhere
* fix: re-create candidate when got bad block if needed
* refactor: housekeeping
* fix: emit bad piece signal after all bookkeeping
* refactor: add a Torrent.id property
* feat: add Controller.torrentForId
* refactor: make tr_session_idle_limit_hit_func a std::function
* refactor: make tr_session_metadata_func a std::function
* refactor: make tr_session_ratio_limit_hit_func a std::function
* refactor: make tr_torrent_completeness_func a std::function
* refactor: make tr_altSpeedFunc a std::function
* refactor: make tr_sessionSetQueueStartCallback callback a std::function
* refactor: make tr_rpc_callback_status callback a std::function
* refactor: remove user_data arg from tr_torrent_rename_done_func
* refactor: harden `tr_torrentFindFromId()` by making it safe to pass in a nullptr session
* ci: run `clang-tidy-libtransmission` for app/test-only changes
* fix: fix another new clang-tidy regression
---------
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* ci: move crypto tests into their own matrix
they do not need to run on both bsd 14 and bsd 15
* ci: remove matrix for the DISABLE_UTP test
the "enabled" half of the matrix is redundant with other CI runs
* ci: cancel prior CI jobs when new commit(s) are pushed
* ci: futureproof fedora matrix by using aliases fedora-latest, fedora-rawhide
* ci: remove the -from-tarball job suffixes
* ci: fold the debian-11 job into the debian job matrix
* fixup! ci: fold the debian-11 job into the debian job matrix
fix: sh->bash mismatch
* ci: always use the default version of freebsd, openbsd
* ci: always use the default version of netbsd
* ci: always use the default version of dragonflybsd
* ci: remove unused fail-fast setting