Merge branch 'fix/f32-literal-fallback'
CI / Build (push) Successful in 24s

Suffix the f32 literals rustc is phasing out, and deny future_incompatible so the
next deferred hard error fails the build immediately.
This commit is contained in:
2026-09-03 08:25:36 +09:00
5 changed files with 24 additions and 16 deletions
+8
View File
@@ -17,6 +17,14 @@ members = ["xtask"]
# `cdylib` is the plugin binary; `lib` (rlib) lets `cargo test` link the unit tests.
crate-type = ["cdylib", "lib"]
# Future-incompatibility warnings are deferred hard errors: rustc is telling you
# this code stops compiling on some later release. Denying the group turns that
# into a build failure the day it appears, rather than 16 of them accumulating
# unnoticed until a toolchain bump breaks the build on a day you did not choose.
# Style and clippy lints are deliberately untouched - they stay warnings.
[lints.rust]
future_incompatible = { level = "deny", priority = -1 }
[dependencies]
# Pinned to the exact commit of the local ./nih-plug reference clone so the build
# is reproducible and matches the examples we read from. Bump the `rev` together
+1 -1
View File
@@ -131,7 +131,7 @@ fn handle(
}
let col = if resp.dragged() || resp.hovered() { palette::TEXT_HOVER } else { color };
p.line_segment([pos2(x, top), pos2(x, bottom)], Stroke::new(2.0, col));
p.line_segment([pos2(x, top), pos2(x, bottom)], Stroke::new(2.0_f32, col));
p.text(pos2(x, bottom - 1.0), Align2::CENTER_BOTTOM, fmt_hz(hz), FontId::proportional(10.0), palette::TEXT_BRIGHT);
}
+5 -5
View File
@@ -52,14 +52,14 @@ pub(super) fn draw(ui: &mut egui::Ui, params: &Bari206Params, selected: usize, m
let g6 = palette::GRID_FAINT;
let x6 = x_for(-6.0);
let y6 = y_for(-6.0);
p.line_segment([pos2(x6, top), pos2(x6, bottom)], Stroke::new(1.0, g6));
p.line_segment([pos2(left, y6), pos2(right, y6)], Stroke::new(1.0, g6));
p.line_segment([pos2(x6, top), pos2(x6, bottom)], Stroke::new(1.0_f32, g6));
p.line_segment([pos2(left, y6), pos2(right, y6)], Stroke::new(1.0_f32, g6));
// Unity reference (out = in), bottom-left to top-right.
p.line_segment([pos2(left, bottom), pos2(right, top)], Stroke::new(1.0, palette::GRID));
p.line_segment([pos2(left, bottom), pos2(right, top)], Stroke::new(1.0_f32, palette::GRID));
// Threshold marker on the input axis — shifted left by pre-gain (the comp sees in + pre).
let tx = x_for((threshold - pre).clamp(FLOOR_DB, 0.0));
p.line_segment([pos2(tx, top), pos2(tx, bottom)], Stroke::new(1.0, palette::THRESHOLD_LINE));
p.line_segment([pos2(tx, top), pos2(tx, bottom)], Stroke::new(1.0_f32, palette::THRESHOLD_LINE));
// Full wet transfer: drive into the comp, then makeup. (Mix not folded in.)
let n = 96;
@@ -93,7 +93,7 @@ pub(super) fn draw(ui: &mut egui::Ui, params: &Bari206Params, selected: usize, m
));
}
p.add(egui::Shape::line(pts, Stroke::new(1.6, palette::CURVE)));
p.add(egui::Shape::line(pts, Stroke::new(1.6_f32, palette::CURVE)));
// Operating-point dot, on the curve at the current input.
let driven = ext_in + pre;
+8 -8
View File
@@ -243,23 +243,23 @@ pub fn apply_visuals(ctx: &nih_plug_egui::egui::Context) {
let w = &mut v.widgets;
w.noninteractive.bg_fill = SURFACE_RAISED;
w.noninteractive.weak_bg_fill = SURFACE_RAISED;
w.noninteractive.bg_stroke = Stroke::new(1.0, GRID_FAINT);
w.noninteractive.fg_stroke = Stroke::new(1.0, TEXT);
w.noninteractive.bg_stroke = Stroke::new(1.0_f32, GRID_FAINT);
w.noninteractive.fg_stroke = Stroke::new(1.0_f32, TEXT);
w.inactive.bg_fill = TRACK;
w.inactive.weak_bg_fill = TRACK;
w.inactive.bg_stroke = Stroke::new(1.0, GRID);
w.inactive.fg_stroke = Stroke::new(1.0, TEXT_BRIGHT);
w.inactive.bg_stroke = Stroke::new(1.0_f32, GRID);
w.inactive.fg_stroke = Stroke::new(1.0_f32, TEXT_BRIGHT);
w.hovered.bg_fill = accent.edge;
w.hovered.weak_bg_fill = accent.strip;
w.hovered.bg_stroke = Stroke::new(1.0, accent.edge);
w.hovered.fg_stroke = Stroke::new(1.0, TEXT_HOVER);
w.hovered.bg_stroke = Stroke::new(1.0_f32, accent.edge);
w.hovered.fg_stroke = Stroke::new(1.0_f32, TEXT_HOVER);
w.active.bg_fill = accent.handle;
w.active.weak_bg_fill = accent.edge;
w.active.bg_stroke = Stroke::new(1.0, accent.handle);
w.active.fg_stroke = Stroke::new(1.0, TEXT_HOVER);
w.active.bg_stroke = Stroke::new(1.0_f32, accent.handle);
w.active.fg_stroke = Stroke::new(1.0_f32, TEXT_HOVER);
ctx.set_visuals(v);
}
+2 -2
View File
@@ -170,7 +170,7 @@ pub(super) fn draw(ui: &mut egui::Ui, meters: &Meters, state: &mut PlotState) {
// Gridlines (dB).
for &g in &[0.0f32, -12.0, -24.0, -48.0] {
let y = y_for_db(g);
p.line_segment([pos2(left, y), pos2(right, y)], Stroke::new(1.0, palette::GRID_FAINT));
p.line_segment([pos2(left, y), pos2(right, y)], Stroke::new(1.0_f32, palette::GRID_FAINT));
p.text(
pos2(left + 2.0, y),
Align2::LEFT_BOTTOM,
@@ -204,7 +204,7 @@ pub(super) fn draw(ui: &mut egui::Ui, meters: &Meters, state: &mut PlotState) {
));
}
}
p.add(egui::Shape::line(pts, Stroke::new(1.5, color)));
p.add(egui::Shape::line(pts, Stroke::new(1.5_f32, color)));
};
draw_series(&state.history.in_db[c], &|db| db, COLOR_IN, true);
draw_series(&state.history.out_db[c], &|db| db, COLOR_OUT, true);