block_queue:
- print(): added with two debug call sites in the sync-speedup rewrite
(5be43fcdb, 2017-07-02); 08abb670e (2017-08-12) removed one call and
Pruning (b750fb27b, 2018-04-29) removed the last; dead since.
- get_num_filled_spans_prefix(): added in 5be43fcdb (2017-07-02)
without any caller; dead on arrival.
- get_last_known_hash(): added in 5be43fcdb with one caller in the
protocol handler; 08abb670e (2017-08-12) removed that caller while
reworking reorg handling; dead since.
- has_spans(): added in 7b7476075 (2017-08-16, kick idle synchronizing
peers) without any caller; dead on arrival.
- get_download_rate(): added by Pruning (b750fb27b, 2018-04-29)
without any caller; dead on arrival.
- has_unpruned_height(): declaration added by Pruning (b750fb27b); a
definition never existed, so it was never callable.
cryptonote_protocol_handler:
- get_synchronizing_connections_count(): from the original 2014 import
(296ae46ed, 2014-03-03); its only reference was already commented
out in the import, and 8efa1313f (2014-03-20) deleted that comment.
Never had a live caller in the repo's history.
- PASSIVE_PEER_KICK_TIME: added in 1ff638e92 (2017-10-19) with one use
in the idle-peer kick threshold; Pruning (b750fb27b) removed the
use, orphaning the macro.
- LOCALHOST_INT: added in ae2a50659 (2015-02-20) for numeric localhost
comparisons, second use added in c511abf00; 072102cfd (2017-05-27,
abstracted network addresses) removed both uses.
Remove the mining pools donation line pointing to a Bitcointalk post.
Update the Monero Research Lab link to www.getmonero.org.
Normalize paragraph wrapping to one line per paragraph throughout and
remove a stray double blank line before the Research section.
Fix outdated information:
- Debian/Ubuntu packages renamed: libunwind-dev, libreadline-dev
- Arch package is python, not python3
- Fedora libusbx-devel is a legacy alias; use libusb1-devel
- Raspberry Pi: usb_max_current_enable=1 in /boot/firmware/config.txt
replaces the removed max_usb_current option and pre-Bookworm path
- Recommend git submodule update --init after switching branches:
master and release branches ship different submodule sets
- Clarify per-thread core and RAM sizing for parallel builds
- Lowercase TOC anchors to match generated heading IDs
- Demote Known Issues to a section heading like other sections and
shift its subsections accordingly
- Drop orphaned asterisk footnote under the upgrade table
- Add missing markdown line break after the donation base address label
Each symbol below has no references anywhere in the tree (src/, contrib/,
tests/), and none on the in-flight FCMP++ (fcmp++-stage-new) or CARROT
(carrot_impl) integration branches; the full build still links cleanly.
Per-symbol history is given so the "why is this unused" is auditable (hashes
are ancestors of HEAD).
command_line:
- parse_command_line template: boost wrapper used by the connectivity tool and
wallet from the 2014 import; the last caller was removed in b8a08f199 (2017,
"wallet: fix --log-file not working"). Not boost's own
boost::program_options::parse_command_line, a different function still in use.
download:
- download_finished / download_error: dead on arrival - added 63f0e074e (2017,
"download: async API") but never wired to any caller.
perf_timer:
- set_performance_timer_log_level: dead on arrival - added 74dfdb0b3 (2016),
never called. It was the only writer of performance_timer_log_level, which is
therefore never reassigned and stays at its default (el::Level::Info).
Note: the unused PERF_TIMER_L / PERF_TIMER_UNIT_L macros are deliberately left
in place - the FCMP++ wallet-scanning work (fcmp++-stage-new, wallet2.cpp) uses
PERF_TIMER_L, so removing them would break that branch on rebase.
The MDB_val_copy<cryptonote::blobdata> and MDB_val_copy<const char*>
specializations have no references anywhere in the tree (src/, contrib/,
tests/); the full build still links cleanly.
They were real helpers that copied block/tx blobs and the "version" key into
LMDB from 2015 (3fcb8daf6 / f7e99047e). All instantiations were removed in
99fbe1008 (2018, "db_lmdb: save some string copies for readonly db keys/
values"), which writes blobs directly and points readonly MDB_vals at string
literals (zero-copy). Every remaining MDB_val_copy<> call site uses the
uint64_t/uint32_t/uint8_t primary template; these two specializations have sat
unused since.
Each symbol below has no references anywhere in the tree (src/, contrib/,
tests/); the full build still links cleanly. Per-symbol history is given so the
"why is this unused" is auditable (hashes are ancestors of HEAD).
net/connection_basic (all four lost their last caller in the 2022 connection
rewrite, 3be1dbd09 "connection: fix implementation"):
- to_string(t_connection_type): unused free function. Added 9bfa593ee (2015)
to print a connection's type in a debug log; 3be1dbd09 (2022) switched that
log line to std::to_string on the enum, orphaning this overload.
- do_send_handler_write / do_send_handler_write_from_queue: trace-only stubs
added eabb51960 (2015) on the TCP send path; their calls in do_send_chunk /
the write-completion handler were deleted by 3be1dbd09 (2022). The real send
path is connection<T>::start_write().
- sleep_before_packet: outbound rate-limit sleep added eabb51960 (2015);
callers were thinned over time (cf5f62361, 2017) and the last removed by
3be1dbd09 (2022). Rate-limiting now lives in connection<T>::start_write()
via the global out-throttle.
net/levin_base:
- struct bucket_head: legacy levin packet header from the 2014 epee import,
superseded by bucket_head2 (the wire header, `using header = bucket_head2`).
Its last use went away with the old levin_protocol_handler in 0c545f614
(2024, "epee/test: remove levin_protocol_handler and core_proxy tests").
- LEVIN_PROTOCOL_VER_0: dead on arrival - present since the 2014 import, never
referenced (the code uses LEVIN_PROTOCOL_VER_1).
net/net_utils_base (connection-context logging macros):
- LOG_PRINT_CC_L4: levin trace macro (2014 import); all call sites removed in
5833d66f6 (2017, "Change logging to easylogging++").
- LOG_PRINT_CCONTEXT_L3: had a single "REMOTE PEERLIST" call site, removed in
the same 5833d66f6 (2017).
- LOG_PRINT_CC_L3: only ever referenced inside LOG_PRINT_CCONTEXT_L3's body,
never invoked directly - transitively dead once the above was removed.
- LOG_CC: dead on arrival - added in 5833d66f6 (2017) but never invoked.
(The plain LOG_PRINT_L3 macro that LOG_PRINT_CC_L3/CCONTEXT_L3 wrap is still
used elsewhere and is left untouched; only these unused CC wrappers go.)
net/network_throttle:
- typedef network_MB: added eabb51960 (2015); its only consumers
(set_target_kill / m_target_MB) were stripped the same day in 5ce4256e3
(2015), leaving an unused typedef.
profile_tools:
- START_WAY_POINTS / WAY_POINT / WAY_POINT2: dead on arrival - upstream-epee
profiling macros present since the 2014 import, never once invoked (they only
ever appear as definitions in profile_tools.h across all history).
- TIME_MEASURE_PAUSE / TIME_MEASURE_RESTART and their _NS_ variants: dead on
arrival - added bda8c5983 (2017, "epee: add nanosecond timer and pause/restart
profiling macros") but never wired to any call site. Of this family only
TIME_MEASURE_START / TIME_MEASURE_FINISH are actually used.
storages:
- typedef binarybuffer (portable_storage_base): used by the binary store/load
API since the 2014 import; its last consumer (store_to_binary) was removed in
7414e2bac (2020, "Change epee binary output from std::stringstream to
byte_stream").
- the templated min_bytes() member declaration (portable_storage_from_bin):
declared but never defined or called. Added 7f407c027 (2020-12-26,
"portable_storage: add some sanity checks on data size") alongside the
ps_min_bytes<> trait struct, but the size checks were implemented via that
trait (ps_min_bytes<>::strict), so this member was never defined or wired up
- dead on arrival. The ps_min_bytes<> trait remains in use and is left intact.
Few nits changes and notably:
- Bump depends macOS toolchain clang-18/lld-18 -> clang-19/lld-19
and the llvm-18 PATH -> llvm-19 to match
.github/workflows/depends.yml; FreeBSD depends clang-8 -> clang
- Remove dead content: Gentoo install steps, the whole Coverage
section, and the Translations section
- Update blockchain size figures (full ~130 -> ~280 GB, pruned
~45 -> ~95 GB)
- Add Cake Wallet and Cypher Stack to the sponsors list to match
the getmonero.org sponsorships page, reorder to match it, and
size every logo by a fixed height so they render at a consistent
size
parse_unsigned_tx_from_str() and parse_tx_from_str() strip the magic,
then read the version byte and call s.substr(1) without checking a
version byte follows. A blob equal to just the magic leaves an empty
remainder, so s.substr(1) throws std::out_of_range instead of the
function returning false. Require magic + a version byte first.