benchkit 0.17.0

Lightweight benchmarking toolkit focused on practical performance analysis and report generation. Non-restrictive alternative to criterion, designed for easy integration and markdown report generation.
Documentation
[package]
name = "benchkit"
version = "0.17.0"
edition = "2021"
authors = [
  "Kostiantyn Wandalen <wandalen@obox.systems>",
]
license = "MIT"
readme = "readme.md"
documentation = "https://docs.rs/benchkit"
repository = "https://github.com/Wandalen/wTools/tree/master/module/core/benchkit"
homepage = "https://github.com/Wandalen/wTools/tree/master/module/core/benchkit"
description = """
Lightweight benchmarking toolkit focused on practical performance analysis and report generation.
Non-restrictive alternative to criterion, designed for easy integration and markdown report generation.
"""
categories = [ "development-tools", "development-tools::profiling" ]
keywords = [ "benchmark", "performance", "toolkit", "markdown", "reports" ]

[package.metadata.docs.rs]
features = [ "full" ]
all-features = false

# = features

[features]
default = [
  "enabled",

  "integration",
  "markdown_reports",
  "data_generators",
  "criterion_compat",
]

full = [
  "enabled",

  "integration",
  "markdown_reports",
  "data_generators",
  "criterion_compat",
  "html_reports",
  "json_reports",
  "statistical_analysis",
  "comparative_analysis",
  "optimization_hints",
  "diff_analysis",
  "visualization",
]

# Core functionality
enabled = []

# Testing features
integration = []

# Report generation features
markdown_reports = [ "enabled", "dep:pulldown-cmark", "dep:chrono" ]
html_reports = [ "markdown_reports", "dep:tera" ]
json_reports = [ "enabled", "dep:serde_json", "dep:chrono" ]

# Analysis features
statistical_analysis = [ "enabled", "dep:statistical" ]
comparative_analysis = [ "enabled" ]
optimization_hints = [ "statistical_analysis" ]

# Utility features
data_generators = [ "enabled", "dep:rand" ]
criterion_compat = [ "enabled", "dep:criterion" ]  # Compatibility layer
diff_analysis = [ "enabled" ]  # Git-style diff functionality for benchmark results
visualization = [ "enabled", "dep:plotters" ]  # Chart generation and visualization

# Environment features
no_std = []
use_alloc = [ "no_std" ]

# = lints

[lints]
workspace = true

[dependencies]
# Core dependencies
error_tools = { workspace = true, features = [ "enabled" ] }

# Feature-gated dependencies - using workspace where available
serde_json = { workspace = true, optional = true }
rand = { workspace = true, optional = true }
chrono = { workspace = true, features = [ "serde" ], optional = true }
criterion = { workspace = true, features = [ "html_reports" ], optional = true }

# Feature-gated dependencies - not in workspace, use direct versions
pulldown-cmark = { version = "0.13", optional = true }
tera = { version = "1.20", optional = true }
statistical = { version = "1.0", optional = true }
plotters = { version = "0.3.7", optional = true, default-features = false, features = ["svg_backend", "bitmap_backend"] }

[dev-dependencies]
tempfile = { workspace = true }
uuid = { workspace = true, features = [ "v4" ] }

# Examples will be added as implementation progresses