Skip to content

Mark vtnerd 2025 Q4 Part 2 Completed

Lee Clagett requested to merge vtnerd/ccs-proposals:patch-3 into master

The bulk of the time was spent on LWS /push which has been renamed to /feed (to avoid confusion with "web push" which may be implemented separately). This new feature provides a HTTP websocket call (/feed) such that the entire tx history is sent on initialization, and then only block/mempool changes are "pushed" server side so that the client doesn't have to "poll" for updates. This will provide a better UX for lwsf based wallets as they get near instant updates if the LWS owner configured ZMQ PUB/SUB correctly. The feature comes with some initial tests that look promising, but the PR may not be merged until client side (lwsf) verifies the new protocol works as desired. This new tech can select JSON or MSGPACK at connection time, the latter being far more size efficient and faster.

After that, a lot of work was spent transitioning lwsf from synchronous epee HTTP client to asynchronous boost::beast HTTP client. This was a carry-over from last month where additional bug fixes and testing occurred this month. The result was merged, but is not in use by upstream monero_c/skylight (not sure about Edge) - only lwcli is using it which has few users so far. The transition was made primarily for the new /feed feature of the LWS backend. Beast has support for websockets (epee does not), and supports asynchronous operations. The latter (asynchronous) is more complex but far better for efficiency; synchronous mode is simpler but forces you to busy poll a status flag to check for shutdown conditions. By switching everything to websocket event driven, you get instant updates and low batter usage. Some API calls are still busy loops (because of ASIO design it's difficult to remove), however, a carefully designed wallet can limit the calls to these busy loop functions.

I also spent time fixing the macOS monero-c build. The patch was small, but it took a lot of time debugging the build issue.

Lastly, I spent time removing some deprecated feature of ASIO in the Monero codebase. This has already been reviewed and merged.

Merge request reports

Loading