Skip to content

Commit c60dd70

Browse files
committed
release: prepare v0.17.0
1 parent 28b0557 commit c60dd70

File tree

6 files changed

+31
-23
lines changed

6 files changed

+31
-23
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "all-smi"
3-
version = "0.16.0"
3+
version = "0.17.0"
44
description = "Command-line utility for monitoring GPU hardware. It provides a real-time view of GPU utilization, memory usage, temperature, power consumption, and other metrics."
55
authors = ["Jeongkyu Shin <inureyes@gmail.com>"]
66
license = "Apache-2.0"

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,7 @@ See the [LICENSE](./LICENSE) file for details.
527527
## Changelog
528528

529529
### Recent Updates
530+
- **v0.17.0 (2026/01/13):** Add GPU process filter toggle ('f' key) and improve process list sort stability
530531
- **v0.16.0 (2026/01/04):** Add proper library API for external Rust projects with high-level AllSmi client, unified error handling, and comprehensive documentation
531532
- **v0.15.2 (2026/01/02):** Fix Rebellions NPU detection compatibility with rbln SDK 2.0.x
532533
- **v0.15.1 (2025/12/31):** Fix memory leak in IOReportIterator on Apple Silicon by properly releasing CFDictionaryRef

debian/changelog

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
all-smi (0.17.0-0) jammy; urgency=medium
2+
3+
* Add GPU process filter toggle ('f' key) to show only processes with GPU memory
4+
* Improve process list sort stability using PID as secondary sort key
5+
* Update status bar to indicate filter status when active
6+
* Add get_storage_info() method to public library API
7+
* Add StorageReader trait and LocalStorageReader implementation
8+
* Export StorageInfo and StorageReader in prelude
9+
10+
-- Jeongkyu Shin <inureyes@gmail.com> Mon, 13 Jan 2026 00:00:00 +0000
11+
112
all-smi (0.16.0-0) jammy; urgency=medium
213

314
* Add high-level AllSmi client struct with ergonomic API

docs/man/all-smi.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.TH ALL-SMI 1 "January 2026" "all-smi 0.16.0" "User Commands"
1+
.TH ALL-SMI 1 "January 2026" "all-smi 0.17.0" "User Commands"
22
.SH NAME
33
all-smi \- Command-line utility for monitoring GPU hardware
44
.SH SYNOPSIS

examples/library_usage.rs

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ fn main() -> Result<()> {
3939
println!("Found {} GPU(s)/NPU(s):\n", gpus.len());
4040

4141
for (i, gpu) in gpus.iter().enumerate() {
42-
println!(" [{}] {}", i, gpu.name);
42+
println!(" [{i}] {}", gpu.name);
4343
println!(" Type: {}", gpu.device_type);
4444
println!(" Utilization: {:.1}%", gpu.utilization);
4545
println!(
@@ -57,7 +57,7 @@ fn main() -> Result<()> {
5757
println!(" Frequency: {} MHz", gpu.frequency);
5858

5959
if let Some(cores) = gpu.gpu_core_count {
60-
println!(" GPU Cores: {}", cores);
60+
println!(" GPU Cores: {cores}");
6161
}
6262

6363
println!();
@@ -114,11 +114,11 @@ fn main() -> Result<()> {
114114
);
115115

116116
if let Some(temp) = cpu.temperature {
117-
println!(" Temperature: {}C", temp);
117+
println!(" Temperature: {temp}C");
118118
}
119119

120120
if let Some(power) = cpu.power_consumption {
121-
println!(" Power: {:.1}W", power);
121+
println!(" Power: {power:.1}W");
122122
}
123123

124124
// Apple Silicon specific info
@@ -135,10 +135,10 @@ fn main() -> Result<()> {
135135
println!(" GPU cores: {}", apple_info.gpu_core_count);
136136

137137
if let Some(p_freq) = apple_info.p_cluster_frequency_mhz {
138-
println!(" P-cluster frequency: {} MHz", p_freq);
138+
println!(" P-cluster frequency: {p_freq} MHz");
139139
}
140140
if let Some(e_freq) = apple_info.e_cluster_frequency_mhz {
141-
println!(" E-cluster frequency: {} MHz", e_freq);
141+
println!(" E-cluster frequency: {e_freq} MHz");
142142
}
143143
}
144144
}
@@ -159,24 +159,21 @@ fn main() -> Result<()> {
159159
let used_gb = mem.used_bytes as f64 / 1024.0 / 1024.0 / 1024.0;
160160
let available_gb = mem.available_bytes as f64 / 1024.0 / 1024.0 / 1024.0;
161161

162-
println!(" Total: {:.1} GB", total_gb);
163-
println!(" Used: {:.1} GB ({:.1}%)", used_gb, mem.utilization);
164-
println!(" Available: {:.1} GB", available_gb);
162+
println!(" Total: {total_gb:.1} GB");
163+
println!(" Used: {used_gb:.1} GB ({:.1}%)", mem.utilization);
164+
println!(" Available: {available_gb:.1} GB");
165165

166166
if mem.swap_total_bytes > 0 {
167167
let swap_total_gb = mem.swap_total_bytes as f64 / 1024.0 / 1024.0 / 1024.0;
168168
let swap_used_gb = mem.swap_used_bytes as f64 / 1024.0 / 1024.0 / 1024.0;
169-
println!(" Swap: {:.1} GB / {:.1} GB", swap_used_gb, swap_total_gb);
169+
println!(" Swap: {swap_used_gb:.1} GB / {swap_total_gb:.1} GB");
170170
}
171171

172172
// Linux-specific metrics
173173
if mem.buffers_bytes > 0 || mem.cached_bytes > 0 {
174174
let buffers_mb = mem.buffers_bytes as f64 / 1024.0 / 1024.0;
175175
let cached_mb = mem.cached_bytes as f64 / 1024.0 / 1024.0;
176-
println!(
177-
" Buffers: {:.1} MB, Cached: {:.1} MB",
178-
buffers_mb, cached_mb
179-
);
176+
println!(" Buffers: {buffers_mb:.1} MB, Cached: {cached_mb:.1} MB");
180177
}
181178
}
182179
}
@@ -188,19 +185,19 @@ fn main() -> Result<()> {
188185
println!("--- Chassis Information ---");
189186
if let Some(chassis) = smi.get_chassis_info() {
190187
if let Some(power) = chassis.total_power_watts {
191-
println!(" Total System Power: {:.1}W", power);
188+
println!(" Total System Power: {power:.1}W");
192189
}
193190

194191
if let Some(ref pressure) = chassis.thermal_pressure {
195-
println!(" Thermal Pressure: {}", pressure);
192+
println!(" Thermal Pressure: {pressure}");
196193
}
197194

198195
if let Some(inlet) = chassis.inlet_temperature {
199-
println!(" Inlet Temperature: {:.1}C", inlet);
196+
println!(" Inlet Temperature: {inlet:.1}C");
200197
}
201198

202199
if let Some(outlet) = chassis.outlet_temperature {
203-
println!(" Outlet Temperature: {:.1}C", outlet);
200+
println!(" Outlet Temperature: {outlet:.1}C");
204201
}
205202

206203
if !chassis.fan_speeds.is_empty() {
@@ -249,8 +246,7 @@ fn main() -> Result<()> {
249246

250247
println!(" [{}] {}", s.index, s.mount_point);
251248
println!(
252-
" Total: {:.1} GB, Used: {:.1} GB, Available: {:.1} GB ({:.1}% used)",
253-
total_gb, used_gb, available_gb, usage_percent
249+
" Total: {total_gb:.1} GB, Used: {used_gb:.1} GB, Available: {available_gb:.1} GB ({usage_percent:.1}% used)"
254250
);
255251
}
256252
}

0 commit comments

Comments
 (0)