Development Guide
This section is for contributors who want to modify or extend rclib.
Project Goals
- Performance: Core logic in C++17 using Eigen.
- Scalability: Efficient handling of large sparse reservoirs.
- Modularity: Clear separation between Reservoirs and Readouts.
Setup
- Install
uv: We useuvfor dependency management. - Clone recursively:
git clone --recursive ... - Sync environment:
uv sync
Workflow
Code Quality
We use pre-commit to enforce standards.
Tools used:
ruff(Python linting/formatting)basedpyright(Static type checking)clang-format(C++ formatting)
Running Tests
C++ Unit Tests:
Python Integration Tests:
# Ensure library is built
cmake -S . -B build
cmake --build build --config Release -j $(nproc) --target _rclib
# Run pytest
uv run pytest
Documentation
- Release Process: How to publish a new version.
- Testing Roadmap: Plans for future test coverage.
- Ridge Solver Optimization Report: Detailed report on Ridge Regression performance improvements.
- RLS Optimization Report: Detailed report on RLS performance improvements.
- Reservoir Performance Optimization Report: Detailed report on reservoir execution performance.