probe-rs 0.23.0

A collection of on chip debugging tools to communicate with microchips.
Documentation
[package]
name = "probe-rs"
version.workspace = true
authors = [
    "Noah Hüsser <yatekii@yatekii.ch>",
    "Dominik Boehi <dominik.boehi@gmail.ch>",
    "Jack Noppe <noppej@hotmail.com>",
]
edition.workspace = true
description = "A collection of on chip debugging tools to communicate with microchips."
documentation.workspace = true
homepage.workspace = true
repository.workspace = true
readme.workspace = true
categories = ["embedded", "hardware-support", "development-tools::debugging"]
keywords = ["embedded"]
license.workspace = true

[[bin]]
name = "probe-rs"
required-features = ["cli"]

[[bin]]
name = "cargo-flash"
required-features = ["cli"]

[[bin]]
name = "cargo-embed"
required-features = ["cli"]

[features]
default = ["builtin-targets", "rtt"]
gdb-server = ["dep:gdbstub", "dep:itertools"]
rtt = ["dep:kmp"]

cli = [
    "gdb-server",

    "dep:byte-unit",
    "dep:capstone",
    "dep:cargo_metadata",
    "dep:clap",
    "dep:colored",
    "dep:defmt-decoder",
    "dep:directories",
    "dep:goblin",
    "dep:indicatif",
    "dep:is-terminal",
    "dep:itm",
    "dep:rand",
    "dep:rustyline",
    "dep:sanitize-filename",
    "dep:termtree",
    "dep:time",
    "dep:tracing-appender",
    "dep:tracing-subscriber",
    "dep:git-version",
    "dep:serde_json",
    "dep:schemafy",
    "dep:svd-parser",
    "dep:figment",
    "dep:crossterm",
    "dep:ratatui",
    "dep:bytesize",
    "dep:textwrap",
    "dep:addr2line",
]

# Enable all built in targets.
builtin-targets = []

# Enable helpers for testing
test = []

[dependencies]
anyhow = { workspace = true }
base64 = "0.21"
bincode = "1.3"
bitfield = "0.14"
bitvec = "1"
enum-primitive-derive = "0.3"
gimli = { version = "0.28", default-features = false, features = [
    "endian-reader",
    "read",
    "std",
] }
hidapi = { version = "2", default-features = false, features = [
    "linux-native",
] }
ihex = "3.0"
jep106 = "0.2"
kmp = { version = "0.1", optional = true }
once_cell = "1"
miniz_oxide = "0.7"
num-traits = "0.2"
object = { version = "0.32", default-features = false, features = [
    "elf",
    "read_core",
    "std",
] }
paste = "1"
nusb = { version = "0.1.6" }
futures-lite = "2"
async-io = "2"
scroll = "0.12"
serde = { version = "1", features = ["derive"] }
serde_yaml = "0.9"
static_assertions = "1"
svg = "0.15"
thiserror = { workspace = true }
tracing = { version = "0.1", features = ["log"] }
uf2-decode = "0.2"
rmp-serde = "1"
typed-path = "0.7"
bitflags = "2"
byteorder = "1"
espflash = { version = "2", default-features = false }
esp-idf-part = "0.4"
# optional
hexdump = { version = "0.1", optional = true }
# path
probe-rs-target = { workspace = true }

# gdb server
gdbstub = { version = "0.7", optional = true }
itertools = { version = "0.12", optional = true }

# CLI-only
addr2line = { version = "0.21", optional = true }
byte-unit = { version = "5", optional = true }
bytesize = { version = "1", optional = true }
capstone = { version = "0.11", optional = true }
cargo_metadata = { version = "0.18", optional = true }
clap = { version = "4", features = ["derive", "env"], optional = true }
colored = { version = "2", optional = true }
crossterm = { version = "<= 0.27", optional = true }
defmt-decoder = { version = "=0.3.10", features = ["unstable"], optional = true } # pinned because "unstable" has potential for breaking changes
directories = { version = "5", optional = true }
dunce = { version = "1" }
figment = { version = "0.10", features = [
    "toml",
    "json",
    "yaml",
    "env",
], optional = true }
goblin = { version = "0.8", optional = true }
indicatif = { version = "0.17", optional = true }
insta = { version = "1", features = ["yaml", "filters"] }
is-terminal = { version = "0.4", optional = true }
itm = { version = "0.9.0-rc.1", default-features = false, optional = true }
parse_int = "0.6"
rand = { version = "0.8", optional = true }
rustyline = { version = "13", optional = true }
sanitize-filename = { version = "0.5", optional = true }
schemafy = { version = "0.6", optional = true }
serde_json = { version = "1", optional = true }
signal-hook = "0.3"
svd-parser = { version = "0.14", features = ["expand"], optional = true }
termtree = { version = "0.4", optional = true }
textwrap = { version = "0.16", optional = true }
time = { version = "0.3", default-features = false, features = [
    "alloc",
    "formatting",
    "large-dates",
    "macros",
    "local-offset",
], optional = true }
tracing-subscriber = { version = "0.3", features = [
    "env-filter",
    "json",
], optional = true }
tracing-appender = { version = "0.2", optional = true }
ratatui = { version = "0.26.0", default-features = false, features = [
    "crossterm",
], optional = true }

[build-dependencies]
bincode = "1"
probe-rs-target = { workspace = true }
serde_yaml = "0.9"

# CLI-only
git-version = { version = "0.3", optional = true }

[dev-dependencies]
pretty_env_logger = "0.5"
rand = "0.8"
serde_json = "1"
serde = "1"
clap = { version = "4", features = ["derive"] }
itm = { version = "0.9.0-rc.1", default-features = false }
pretty_assertions = "1"
test-case = "3"
termtree = "0.4"

[[package.metadata.release.pre-release-replacements]]
file = "../CHANGELOG.md"
search = "## \\[Unreleased\\]"
replace = "## [{{version}}]\n\nReleased {{date}}"
[[package.metadata.release.pre-release-replacements]]
file = "../CHANGELOG.md"
search = "\\[unreleased\\]: https://github.com/probe-rs/probe-rs/compare/v([a-z0-9.-]+)\\.\\.\\.master"
replace = "[unreleased]: https://github.com/probe-rs/probe-rs/compare/v{{version}}...master\n[{{version}}]: https://github.com/probe-rs/probe-rs/compare/v$1...v{{version}}"

# Config for 'cargo dist'
[package.metadata.dist]
features = ["cli"]