- Add engine-gpu-cuda crate with basic CUDA kernel (qpow G1) - Implement
CUDA build.rs compiling .cu to PTX when "cuda" feature enabled -
Integrate GPU engine into miner-service with runtime CUDA availability
check - Add fallback to CPU engine in gpu-cuda until full GPU kernel
support is ready - Enable optional "cuda" feature in miner-cli and
miner-service crates
Implement CIOS multiplication using MULX, ADCX, and ADOX instructions
for x86_64 with BMI2 and ADX features detected at runtime. Fall back to
other implementations when features are unavailable.
- introduce new `engine-montgomery` crate implementing a 512-bit
fixed-width montgomery multiplication backend for qpow mining. - mirror
`cpu-fast` engine behavior and metrics for direct comparison. - add
runtime backend selection with portable and x86_64 bmi2/adx kernels. -
expose `--engine cpu-montgomery` cli option in miner-cli. - integrate
engine and metrics support in miner-service with feature gating. - add
engine backend info metric for observability and a/b testing.
- Verify Baseline and Fast CPU engines produce matching results - Test
Exhausted and Cancelled engine states with precise hash counts - Cover
miner-service request validation error branches - Test miner-service
HTTP endpoints for expected status codes - Confirm chunked mining sends
progress and completion messages
- Detect effective CPUs with cpuset awareness (cgroup v2/v1 fallback) -
Log detected cpuset mask or fallback info at startup (debug) - Expose
miner_effective_cpus Prometheus gauge (metrics feature) - Add
production-ready systemd unit and example CPU affinity overrides -
Include documentation for installation, overrides, and validation
- Switch toolchain to stable with clippy and rustfmt components - Clean
up Clippy warnings with inline format args and hygiene fixes - Add GPU
engine placeholders (gpu-cuda, gpu-opencl) in CLI and service - Return
clear runtime error and exit for unimplemented GPU engines - Format all
TOML files with Taplo and ensure taplo fmt --check passes - Improve
mining nonce partitioning for safe range splits - Update tests to pass
cleanly on stable without warnings
- Introduce ChainManipulatorEngine using fast incremental hashing path -
Throttle mining speed per solved block using sleeps after nonce batches
- Add CLI/env options to control base delay, batch size, throttle cap,
and resume state - Wire engine selection and parameters through
miner-service and miner-cli - Add debug logs for throttle state at job
start and on block found - Add new Grafana panel showing robust
difficulty median per chain for visibility
Improve mining metrics with chunked progress updates and dashboards
- Emit periodic per-thread progress updates by chunking search ranges,
enabling fresher and more accurate job/global hash rates. - Smooth
per-thread hash rates with EMA; derive per-job and global rates from
thread aggregates. - Remove job/thread rate series on
completion/cancellation to avoid scrape-timing zero artifacts. - Add
service-level metrics: `miner_active_jobs` gauge and
`miner_mine_requests_total` counter with result labels. - Introduce
CLI/env knob `--progress-chunk-ms` to control progress update frequency
(default 2000ms). - Update Grafana dashboards for trend-friendly
queries, cleaned labels, 24h/1h peak views, and job-level filtering. -
Add detailed documentation summarizing metrics improvements, usage, and
operational guidance.
Convert repository into Cargo workspace with modular crates
- Split code into workspace members: miner-cli, miner-service, pow-core,
engine-cpu, engine-gpu-cuda, engine-gpu-opencl, metrics - Moved QPoW
math logic into local pow-core crate with compatibility API and
incremental helpers - Defined MinerEngine trait and baseline CPU engine
in engine-cpu crate - Rewrote service layer in miner-service: job
management, HTTP API, engine orchestration - Added CLI binary crate
miner-cli with flags: --port, --num-cores, --metrics-port, --engine -
Implemented runtime toggle for Prometheus metrics exporter enabled only
when --metrics-port provided - Deprecated root src/lib.rs and
src/main.rs with notices pointing to new CLI/workspace entrypoints