Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 56 additions & 42 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion primer3-sys/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ system = []

[build-dependencies]
cc = "1"
bindgen = "0.71"
bindgen = "0.72"

[lints]
workspace = true
4 changes: 2 additions & 2 deletions primer3/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ default = []
serde = ["dep:serde"]

[dependencies]
libc = "0.2.183"
libc = "0.2.184"
primer3-sys.workspace = true
serde = { version = "1", features = ["derive"], optional = true }
tempfile = "3"
thiserror = "2"

[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
criterion = { version = "0.8", features = ["html_reports"] }
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify criterion 0.8 compatibility with benchmarks

# Check if html_reports feature exists in criterion 0.8
echo "=== Checking criterion 0.8 features ==="
cargo metadata --format-version 1 | \
  jq -r '.packages[] | select(.name == "criterion") | .features | keys[]' | \
  grep -E 'html_reports|plotting' || echo "Features not found - may need web search"

# Attempt to build the benchmarks
echo -e "\n=== Building benchmarks with criterion 0.8 ==="
cd primer3 && cargo bench --no-run 2>&1 | tee bench_build.log

# Check for build errors or warnings
if [ ${PIPESTATUS[0]} -ne 0 ]; then
  echo "Benchmark build failed"
  exit 1
fi

grep -i "warning\|error" bench_build.log | grep -v "^Binary" || echo "Build successful"

Repository: fg-labs/primer3-rs

Length of output: 874


🌐 Web query:

Does criterion 0.8 support the html_reports feature?

💡 Result:

Yes, Criterion 0.8 supports the html_reports feature. It is listed as an available feature flag in the official documentation for version 0.8.2, which can be enabled in Cargo.toml like criterion = { version = "0.8", features = ["html_reports"] }. The feature has been present since at least version 0.3 and continues to be supported in the 0.8 series, including in the "stable" feature set.

Citations:


🏁 Script executed:

#!/bin/bash
# Check for MSRV settings in the project
echo "=== Checking project MSRV settings ==="
if grep -r "rust-version" primer3/Cargo.toml; then
  echo "MSRV found in Cargo.toml"
else
  echo "No explicit MSRV in Cargo.toml"
fi

# Check benchmark code for any obvious API compatibility issues
echo -e "\n=== Inspecting benchmark code ==="
find . -name "benches" -type d -exec ls -la {} \;
find . -path "*/benches/*.rs" -type f | head -5

Repository: fg-labs/primer3-rs

Length of output: 396


🌐 Web query:

What is the minimum Rust version (MSRV) required for criterion 0.8?

💡 Result:

The minimum Rust version (MSRV) required for criterion 0.8 is Rust 1.86.

Citations:


🌐 Web query:

What breaking changes were introduced in criterion 0.8 from 0.5?

💡 Result:

The primary breaking change introduced in criterion 0.8 (specifically 0.8.0) from 0.5 is the removal of async-std support. Other changes between versions include MSRV bumps (Minimum Supported Rust Version) from 1.64 in 0.5 to 1.86 in 0.8, dependency updates (e.g., clap to v4 in 0.5, real_blackbox feature changes in 0.6), and the real_blackbox feature becoming no-op in 0.6 with recommendation to use std::hint::black_box. No other explicit breaking changes are listed in the changelogs for 0.6.0, 0.7.0, or 0.8.0 beyond these.

Citations:


🏁 Script executed:

#!/bin/bash
# Find and read workspace Cargo.toml
echo "=== Looking for workspace Cargo.toml ==="
find . -maxdepth 2 -name "Cargo.toml" -type f | head -10

echo -e "\n=== Reading workspace Cargo.toml ==="
cat Cargo.toml 2>/dev/null | grep -A 5 "rust-version\|workspace"

echo -e "\n=== Reading benchmark code ==="
cat -n ./primer3/benches/benchmarks.rs

Repository: fg-labs/primer3-rs

Length of output: 3654


Update the workspace MSRV from 1.85.0 to 1.86.0 to match criterion 0.8's requirement.

The project's workspace MSRV is set to 1.85.0, but criterion 0.8 requires a minimum of Rust 1.86. This creates an incompatibility—users on Rust 1.85.0 cannot build the project after this update. Bump the workspace rust-version in the root Cargo.toml to 1.86.0.

The html_reports feature is available in criterion 0.8 and the benchmark code uses compatible APIs.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@primer3/Cargo.toml` at line 27, Update the workspace MSRV in the root
Cargo.toml from "1.85.0" to "1.86.0" so it meets criterion 0.8's minimum Rust
requirement; locate the workspace-level rust-version field in the root
Cargo.toml and change its value to "1.86.0" to resolve the incompatibility
introduced by adding criterion = { version = "0.8", features = ["html_reports"]
} in primer3/Cargo.toml.

serde_json = "1"

[[bench]]
Expand Down
Loading