Skip to content
neonjavaPublic

About

Rust-native JVM performance regression analysis

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

JVMDelta

JVMDelta is a Rust project for comparing JVM performance measurements before and after a software change. GC logs and JFR recordings can contain evidence that is tedious to inspect by hand. JVMDelta aims to make those measurements accessible locally and in CI without needing a JVM for analysis.

Current status

The current CLI inspects a narrow subset of G1 Unified GC pause summaries. It counts supported young, full, remark, and cleanup pauses, unrelated entries, and unknown pause categories. It also reports exact total, minimum, maximum, and nanosecond-rounded-down mean pause durations per category and overall. The core library exposes parsed events with exact units and source-line provenance. Invalid supported summaries fail with a line-numbered error. See supported syntax and limitations.

Comparison, regression detection, JFR parsing, JSON/HTML reports, and a GitHub Action are planned, not implemented.

Architecture

  • crates/jvmdelta-core: bounded streaming GC parser and constant-size pause statistics; small domain modules reserve comparison, regression, and report concepts.
  • crates/jvmdelta-cli: Clap executable, file access, counts, and exit status.
  • tests/fixtures: synthetic edge cases and selected real Temurin 17/21 and OpenJDK 25 G1 output.
  • docs: architecture, format support, development, and roadmap.

Build and use

Requires stable Rust 1.85 or newer. Java is not required to build, test, or inspect a log.

cargo build --workspace
cargo run -p jvmdelta-cli -- --help
cargo run -p jvmdelta-cli -- --version
cargo run -p jvmdelta-cli -- gc inspect tests/fixtures/jdk25-g1-real.log
cargo run -p jvmdelta-cli -- gc inspect tests/fixtures/jdk17-g1-real.log

The installed executable is named jvmdelta. gc inspect uses strict parsing: unreadable files and malformed supported summaries exit nonzero with an error on stderr.

Development and contributing

cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo build --workspace --release

Focused issues and pull requests are welcome. Discuss new GC variants or comparison semantics before extending support. Add representative, redistributable fixtures and tests, keep errors explicit, and document limitations. Contributions are licensed under Apache-2.0.

About

Rust-native JVM performance regression analysis

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages