Releases: XRPLF/clio
Clio development build (nightly-20260302)
Release notes
Note: Please remember that this is a development release and it is not recommended for production use.
Changelog (including previous releases): https://github.com/XRPLF/clio/commits/nightly-20260302
2.7.0
Release notes
Version 2.7.0 of Clio, an XRP Ledger API server optimized for HTTP and WebSocket API calls, is now available.
This release adds new features and bug fixes.
What's changed
🚀 Features
- Support account_mptoken_issuances and account_mptokens (#2680) by @yinyiqian1
- Async framework
submiton strand/ctx (#2751) by @godexsoft - New ETL by default (#2752) by @godexsoft
- Ledger publisher use async framework (#2756) by @godexsoft
- WorkQueue priorities (#2721) by @godexsoft
- Read and write LedgerCache to file (#2761) by @kuznetsss
- Graceful shutdown with old web server (#2786) by @kuznetsss
- Handle prometheus requests in WorkQueue (#2790) by @mathbunnyru
- Add observable value util (#2831) by @godexsoft
- Add DynamicMPT in account_mptoken_issuances (#2820) by @yinyiqian1
- Option to save cache asyncronously (#2883) by @kuznetsss
- Basic support for channels (#2859) by @godexsoft
- Add build information to
clio_server --version(#2893) by @mathbunnyru
🐛 Bug Fixes
- Flaky DeadlineIsHandledCorrectly (#2716) by @godexsoft
- Empty signer list (#2746) by @PeterChen13579
- Match ledger_entry error codes with rippled (#2549) by @emreariyurek
- Print cache saving error (#2794) by @kuznetsss
- WorkQueue contention (#2866) by @godexsoft
- No output from failed asserts in tests (#2905) by @kuznetsss
- Workaround an edge case exception in
AmendmentCenter(#2897) by @godexsoft - Faster implementation of work queue (#2887) by @godexsoft
🚜 Refactor
- Duplicate ledger_index pattern for RPC handlers (#2755) by @emreariyurek
- Make getLedgerIndex return std::expected instead of throwing (#2788) by @emreariyurek
- Add writing command to etl::SystemState (#2842) by @kuznetsss
📚 Documentation
- Remove logging.md from readme (#2710) by @emreariyurek
- Fix graceful_period description (#2791) by @kuznetsss
🎨 Styling
- Fix pre-commit style issues (#2743) by @mathbunnyru
- Fix comment in pre-commit-autoupdate.yml (#2750) by @mathbunnyru
- Fix hadolint issues (#2777) by @mathbunnyru
- Add black pre-commit hook (#2811) by @mathbunnyru
- Update pre-commit hooks (#2825) by @github-actions[bot]
- Use shfmt for shell scripts (#2841) by @mathbunnyru
- Update pre-commit hooks (#2875) by @github-actions[bot]
- Fix clang-tidy error (#2901) by @kuznetsss
🧪 Testing
- Fix flaky test (#2729) by @kuznetsss
⚙️ Miscellaneous Tasks
- Pin all GitHub actions (#2712) by @mathbunnyru
- Use intermediate environment variables for improved security (#2713) by @mathbunnyru
- Save full logs for failed sanitized tests (#2715) by @mathbunnyru
- Enable clang asan builds (#2717) by @mathbunnyru
- [DEPENDABOT] bump actions/upload-artifact from 4.6.2 to 5.0.0 (#2722) by @dependabot[bot]
- [DEPENDABOT] bump actions/upload-artifact from 4.6.2 to 5.0.0 in /.github/actions/code-coverage (#2725) by @dependabot[bot]
- [DEPENDABOT] bump actions/download-artifact from 5.0.0 to 6.0.0 (#2723) by @dependabot[bot]
- Better pre-commit failure message (#2720) by @mathbunnyru
- Use XRPLF/get-nproc (#2727) by @mathbunnyru
- [DEPENDABOT] bump actions/checkout from 4.3.0 to 5.0.0 (#2724) by @dependabot[bot]
- Release nightly with date (#2731) by @mathbunnyru
- Fix nightly commits link (#2738) by @mathbunnyru
- Use new prepare-runner (#2742) by @mathbunnyru
- Update tooling in Docker images (#2737) by @mathbunnyru
- Install pre-commit in the main CI image as well (#2744) by @mathbunnyru
- Update docker images (#2745) by @mathbunnyru
- Add date to nightly release title (#2748) by @mathbunnyru
- Update prepare-runner to fix ccache on macOS (#2749) by @mathbunnyru
- Remove backticks from release date (#2754) by @mathbunnyru
- Specify apple-clang 17.0 in conan profile (#2757) by @mathbunnyru
- Fix pre commit hook failing on empty file (#2766) by @kuznetsss
- [DEPENDABOT] bump docker/setup-qemu-action from 3.6.0 to 3.7.0 in /.github/actions/build-docker-image (#2763) by @dependabot[bot]
- [DEPENDABOT] bump docker/metadata-action from 5.8.0 to 5.9.0 in /.github/actions/build-docker-image (#2762) by @dependabot[bot]
- Change default
max_queue_sizeto 1000 (#2771) by @godexsoft - Specify bash as default shell in workflows (#2772) by @mathbunnyru
- Force ucontext in ASAN builds (#2775) by @godexsoft
- Start using xrpl/3.0.0-rc1 (#2776) by @mathbunnyru
- Use ucontext with ASAN (#2774) by @godexsoft
- Remove redundant silencing of ASAN errors in CI (#2779) by @godexsoft
- Use env vars instead of input (#2781) by @mathbunnyru
- Improve cache implementation (#2780) by @mathbunnyru
- Update nudb recipe to remove linker warnings (#2787) by @mathbunnyru
- Use env vars instead of input in cache-key (#2789) by @mathbunnyru
- Add defines for asan/tsan to conan profile (#2784) by @godexsoft
- Enable TSAN in CI (#2785) by @godexsoft
- Don't download ccache on develop branch (#2792) by @mathbunnyru
- Always upload cache on develop (#2793) by @mathbunnyru
- [DEPENDABOT] Bump peter-evans/create-pull-request from 7.0.8 to 7.0.9 (#2805) by @dependabot[bot]
- [DEPENDABOT] Bump actions/checkout from 5.0.0 to 6.0.0 (#2806) by @dependabot[bot]
- Update spdlog and fmt libraries (#2804) by @mathbunnyru
- Run clang-tidy 3 times to make sure we don't have to fix again (#2803) by @mathbunnyru
- Repeat-based tests TSAN fixes (#2810) by @godexsoft
- WebServerAdminTestsSuit TSAN issues (#2809) by @godexsoft
- Use boost::asio::ssl::stream instead of boost::beast::ssl_stream (#2814) by @mathbunnyru
- Install latest Ninja in images (#2813) by @mathbunnyru
- Update images to use latest Ninja (#2817) by @mathbunnyru
- Update lockfile (#2818) by @mathbunnyru
- Add mathbunnyru to maintainers (#2823) by @godexsoft
- TSAN fix async-signal-unsafe (#2824) by @godexsoft
- [DEPENDABOT] Bump docker/metadata-action from 5.9.0 to 5.10.0 in /.github/actions/build-docker-image (#2826) by @dependabot[bot]
- [DEPENDABOT] Bump actions/checkout from 6.0.0 to 6.0.1 (#2837) by @dependabot[bot]
- [DEPENDABOT] Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (#2836) by @dependabot[bot]
- [DEPENDABOT] Bump ytanikin/pr-conventional-commits from 1.4.2 to 1.5.1 (#2835) by @dependabot[bot]
- Less delay in ETL taskman (#2802) by @godexsoft
- Add systemd file to the debian package (#2844) by @mathbunnyru
- Switch to xrpl/3.0.0 (#2843) by @mathbunnyru
- Put debian package to release (#2850) by @mathbunnyru
- Add a script to regenerate conan lockfile (#2849) by @mathbunnyru
- [DEPENDABOT] Bump tj-actions/changed-files from 46.0.5 to 47.0.1 (#2853) by @dependabot[bot]
- [DEPENDABOT] Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 (#2854) by @dependabot[bot]
- [DEPENDABOT] Bump actions/download-artifact from 6.0.0 to 7.0.0 (#2855) by @dependabot[bot]
- [DEPENDABOT] Bump actions/upload-artifact from 5.0.0 to 6.0.0 (#2856) by @dependabot[bot]
- [DEPENDABOT] Bump codecov/codecov-action from 5.5.1 to 5.5.2 (#2857) by @dependabot[bot]
- [DEPENDABOT] Bump actions/upload-artifact from 5.0.0 to 6.0.0 in /.github/actions/code-coverage (#2858) by @dependabot[bot]
- Update shared actions (#2852) by @mathbunnyru
- Remove unnecessary creation of build directory (#2867) by @bthomee
- [DEPENDABOT] Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 in /.github/actions/build-docker-image (#2872) by @dependabot[bot]
- [DEPENDABOT] Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (#2870) by @dependabot[bot]
- [DEPENDABOT] Bump actions/cache from 4.3.0 to 5.0.1 (#2871) by @dependabot[bot]
- Use updated prepare-runner in actions and worfklows (#2889) by @bthomee
- Fix branch name and commit SHA for GitHub PRs (#2888) by @mathbunnyru
- Show ccache stats with
-vv(#2902) by @mathbunnyru - Pass version explicitly and don't rely on tags (#2904) by @mathbunnyru
- Update gtest and spdlog (#2908) by @mathbunnyru
- Update tooling in Docker images (#2907) by @mathbunnyru
- Use images/actions with new tools / conan / cmake (#2909) by @mathbunnyru
- Use actual build date instead of date of last commit for
BUILD_DATE(#2911) by @mathbunnyru - Use env for BUILD_TYPE in reusable-build.yml (#2913) by @mathbunnyru
- Change build date format (#2914) by @mathbunnyru
- Restart colima on macOS (#2923)
◀️ Revert
- "refactor: Add writing command to etl::SystemState" (#2860) by @mathbunnyru
2.7.0-rc3
Release notes
Note: Please remember that this is a release candidate and it is not recommended for production use.
2.7.0-rc2
Release notes
Note: Please remember that this is a release candidate and it is not recommended for production use.
2.7.0-rc1
Release notes
Note: Please remember that this is a release candidate and it is not recommended for production use.
2.7.0-b2
Release notes
Note: Please remember that this is a release candidate and it is not recommended for production use.
2.7.0-b1
Release notes
Note: Please remember that this is a release candidate and it is not recommended for production use.
2.6.0
Release notes
Clio, an XRP Ledger API server optimized for HTTP and WebSocket API calls, is under active development.
This release adds new features and bug fixes.
Proxy Support
Clio now supports extracting the client's original IP address from the Forwarded HTTP header. This behavior is enabled only if the request meets one of the following conditions:
- The request originates from an IP address defined in the
server.proxy.ipsconfiguration list. - The request includes an
X-Proxy-Tokenheader, and its value matches a token specified in theserver.proxy.tokensconfiguration list.
Logger changes
In this release, there are significant changes to the logging system and log configuration.
Clio has been migrated from Boost.Log to spdlog, which offers better performance and maintainability. Additionally, the configuration schema has been restructured to group all logging-related settings under a single log object.
Some additional resources:
Configuration Migration Required:
log_format→log.format, also changed fromBoost.Logformat tospdlogformat patterns, please see the documentationlog.is_asyncwas added; controls whether logging is asynchronous (default:true)log_directory_max_sizewas removed; replaced bylog.directory_max_fileslog_rotation_hour_intervalwas removed; time-based rotation is no longer supportedlog_level→log.levellog_to_console→log.enable_consolelog_directory→log.directorylog_rotation_size→log.rotation_sizelog_directory_max_files→log.directory_max_fileslog_tag_style→log.tag_stylelog_channels→log.channelslog_channels.[].log_level→log.channels.[].level
Config validation
Now, Clio will fail to start, if a field is present in configuration file, while Clio's config schema doesn't support it.
Whats's changed
🚀 Features
- Use mold linker on Linux (#2304) by @mathbunnyru
- Use spdlog logger (#2372) by @mathbunnyru
- Validate unexpected config values (#2457) by @mathbunnyru
- Generate Debian packages with CPack (#2282) by @legleux
- Do not print critical errors in stdout (#2468) by @mathbunnyru
- Proxy support (#2490) by @kuznetsss
- Add network id to ledger feed (#2505) by @kuznetsss
- Cache state endpoint (#2642) by @godexsoft
- Support Keyspace (#2454) by @PeterChen13579
- Support new types in ledger_entry (#2654) by @emreariyurek
🐛 Bug Fixes
- Do not link to several boost::stacktrace implementations because… (#2329) by @mathbunnyru
- Fix default bool value print in config definition (#2397) by @mathbunnyru
- Remove tight loop in ETLng (#2398) by @godexsoft
- ETLng more cpu usage fixes (#2399) by @godexsoft
- MPT test object producing ASAN error (#2406) by @godexsoft
- Remove 'count' from logger level (#2408) by @PeterChen13579
- Do not log shutdown message in LogService (#2424) by @mathbunnyru
- Fix GCC 15 discovered bugs (#2425) by @mathbunnyru
- Fix default severity in Logger (#2449) by @mathbunnyru
- Add trustline locking flag to account_info (#2338) by @PeterChen13579
- Print error and help on unknown arg (#2460) by @mathbunnyru
- Shutdown LogService after exceptions are printed (#2464) by @mathbunnyru
- Fix package issues (#2469) by @mathbunnyru
- ASAN issues in CommunicationService (#2480) by @godexsoft
- ASAN issues from runSpawnWithTimeout (#2482) by @godexsoft
- Add nft_id and offer_id to txn stream (#2335) by @PeterChen13579
- Change error style in Config (#2314) by @emreariyurek
- Support canonical names for type in account_objects (#2437) by @emreariyurek
- Fix data race in ClusterCommunication (#2522) by @kuznetsss
- Add MPT to txn JSON (#2392) by @PeterChen13579
- Remove global static loggers (#2557) by @mathbunnyru
- Remove MPTIssuanceID from tx (#2569) by @PeterChen13579
- ETLng task manager stops queue on run (#2585) by @godexsoft
- Keep spdlog loggers valid between tests (#2614) by @mathbunnyru
- Workaround large number validation and parsing (#2608) by @godexsoft
- Mpt_issuance_id not in tx for MPTIssuanceCreate (#2630) by @PeterChen13579
- Print out error details of web context (#2351) by @emreariyurek
- ASAN issue with AmendmentBlockHandler test (#2674) by @godexsoft
- Add gRPC Timeout and keepalive to handle stuck connections (#2676) by @rrmanukyan
- Drop dynamic loggers to fix memory leak (#2686) by @mathbunnyru
- Address AmendmentBlockHandler flakiness in old ETL tests (#2694) by @godexsoft
- Add mpt_issuance_id to meta of MPTIssuanceCreate (#2701) by @PeterChen13579
🚜 Refactor
- Refactor Logger.hpp and LoggerFixtures.hpp (#2356) by @mathbunnyru
- Refactor Logger::init() into multiple functions (#2357) by @mathbunnyru
- Put log options in log section in config (#2440) by @mathbunnyru
- Add kCONFIG_DESCRIPTION_HEADER (#2463) by @mathbunnyru
- Output struct (#2456) by @PeterChen13579
- Use expected<void, error> instead of optional (#2565) by @emreariyurek
- Keyspace comments (#2684) by @PeterChen13579
📚 Documentation
- Fix some doxygen issues (#2370) by @mathbunnyru
- Set
ws_portto 6006 in example config (#2377) by @godexsoft - Delete logging.md (#2450) by @mathbunnyru
- Update information about minimum compilers (#2448) by @mathbunnyru
- Add log format description (#2461) by @mathbunnyru
- Fix some doxygen issues in LedgerFeed (#2556) by @emreariyurek
- Update conan lockfile docs to work on all machines the same way (#2607) by @mathbunnyru
- Update doxygen-awesome-css to 2.4.0 (#2647) by @mathbunnyru
- Build docs using doxygen 1.14.0 (#2681) by @mathbunnyru
- All files are .hpp (#2683) by @mathbunnyru
- Update doxygen-awesome-css to 2.4.1 (#2690) by @mathbunnyru
⚡ Performance
- Add benchmark for Logger (#2407) by @mathbunnyru
- Optimize bench logger code for more realistic scenario (#2412) by @mathbunnyru
- Pass const reference Input into handlers (#2409) by @emreariyurek
🎨 Styling
- Update pre-commit hooks (#2384) by @github-actions[bot]
- Mark spdlog fwd declararations as NOLINT(readability-identifie… (#2423) by @mathbunnyru
- Fix JSON colon style in C++ code (#2484) by @mathbunnyru
- Fix JSON indent style in C++ code (#2485) by @mathbunnyru
- Update pre-commit hooks (#2491) by @github-actions[bot]
- Update pre-commit hooks (#2658) by @mathbunnyru
- Rename workflows to use dash and show reusable (#2667) by @mathbunnyru
- Rename actions to use dash (#2669) by @mathbunnyru
🧪 Testing
- Fix prometheus tests (#2312) by @kuznetsss
- Write more data to fill socket buffer (#2433) by @mathbunnyru
- Move prettyPath to its own file and test it (#2486) by @mathbunnyru
- Run LoggerFixture::init in integration tests (#2636) by @mathbunnyru
- Enable address sanitizer testing (#2628) by @mathbunnyru
⚙️ Miscellaneous Tasks
- Pin docker image to commit hash (#2354) by @mathbunnyru
- Update boost usages to match 1.88 (#2355) by @godexsoft
- Improve RC release notes (#2361) by @mathbunnyru
- Do not add sha256 checksums to release notes (#2362) by @mathbunnyru
- Use artifactory DNS name (#2363) by @mathbunnyru
- Use image with artifactory DNS name (#2364) by @mathbunnyru
- Verify version of the binary on release (#2365) by @mathbunnyru
- Provide fetch-tags and ref when using actions/checkout (#2366) by @mathbunnyru
- [DEPENDABOT] Bump ytanikin/pr-conventional-commits from 1.4.1 to 1.4.2 (#2368) by @dependabot[bot]
- Pass expected_version to build_impl.yml (#2367) by @mathbunnyru
- Do not generate source files and use target_compile_definition… (#2369) by @mathbunnyru
- Add option to force conan upload (#2376) by @mathbunnyru
- Move config definition to cpp file (#2371) by @mathbunnyru
- Specify conan profile in check_libxrpl (#2381) by @mathbunnyru
- Call prepare_runner right after checkout (#2383) by @mathbunnyru
- [DEPENDABOT] Bump docker/metadata-action from 5.7.0 to 5.8.0 in /.github/actions/build_docker_image (#2385) by @dependabot[bot]
- Hash-pin docker/login-action (#2386) by @mathbunnyru
- Enable CMake 4 support (#2387) by @mathbunnyru
- Use an image with CMake 4 in CI (#2388) by @mathbunnyru
- Bump libuv recipe version (#2389) by @mathbunnyru
- Update conan recipe revisions (#2390) by @mathbunnyru
- Fix concurrency settings to allow parallel workflows on develop branch (#2391) by @Copilot
- Rewrite clio Dockerfile so it's more clear (#2395) by @mathbunnyru
- Make clio_server executable (#2394) by @mathbunnyru
- Build benchmark code in CI (#2404) by @mathbunnyru
- Update trufflehog max depth (#2405) by @godexsoft
- [DEPENDABOT] Bump docker/login-action from 3.4.0 to 3.5.0 (#2416) by @dependabot[bot]
- [DEPENDABOT] Bump docker/login-action from 3.4.0 to 3.5.0 in /.github/actions/build_docker_image (#2415) by @dependabot[bot]
- [DEPENDABOT] Bump actions/download-artifact from 4 to 5 (#2414) by @dependabot[bot]
- Remove trufflehog (#2427) by @godexsoft
- Build GCC 15.2 (#2426) by @mathbunnyru
- Use GCC 15.2 (#2428) by @mathbunnyru
- Add GDB to docker image (#2429) by @mathbunnyru
- Use image with GDB (#2430) by @mathbunnyru
- Make CI work well in forks (#2434) by @mathbunnyru
- Start using apple-clang 17 in CI (#2432) by @mathbunnyru
- Fix docker CI in forks (#2435) by @mathbunnyru
- Add dependencies for Debian packages (#2436) by @legleux
- Fix nightly docker image in forks (#2438) by @mathbunnyru
- Use main repo release tag in forks (#2439) by @mathbunnyru
- [DEPENDABOT] bump actions/checkout from 4 to 5 (#2443) by...
2.6.0-rc5
Release notes
Note: Please remember that this is a release candidate and it is not recommended for production use.
2.6.0-rc4
Release notes
Note: Please remember that this is a release candidate and it is not recommended for production use.