[INFO] fetching crate ugrad 0.1.0...
[INFO] testing ugrad-0.1.0 against beta-2025-09-21 for beta-1.91-3
[INFO] extracting crate ugrad 0.1.0 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate ugrad 0.1.0
[INFO] finished tweaking crates.io crate ugrad 0.1.0
[INFO] tweaked toml for crates.io crate ugrad 0.1.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate ugrad 0.1.0 on toolchain beta-2025-09-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ugrad 0.1.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 17a1f0e969f822a851ae25846f2480ac5affb51d3a915c7e54e92c7205aa571f
[INFO] running `Command { std: "docker" "start" "-a" "17a1f0e969f822a851ae25846f2480ac5affb51d3a915c7e54e92c7205aa571f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "17a1f0e969f822a851ae25846f2480ac5affb51d3a915c7e54e92c7205aa571f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "17a1f0e969f822a851ae25846f2480ac5affb51d3a915c7e54e92c7205aa571f", kill_on_drop: false }`
[INFO] [stdout] 17a1f0e969f822a851ae25846f2480ac5affb51d3a915c7e54e92c7205aa571f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 53ce9d6d1c9eec15ea38fd661af60560e487b4cf036fdac11d7ef4445da7d184
[INFO] running `Command { std: "docker" "start" "-a" "53ce9d6d1c9eec15ea38fd661af60560e487b4cf036fdac11d7ef4445da7d184", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.139
[INFO] [stderr]    Compiling proc-macro2 v1.0.51
[INFO] [stderr]    Compiling quote v1.0.23
[INFO] [stderr]    Compiling unicode-ident v1.0.6
[INFO] [stderr]    Compiling syn v1.0.107
[INFO] [stderr]    Compiling libm v0.2.6
[INFO] [stderr]    Compiling serde_derive v1.0.152
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]    Compiling serde v1.0.152
[INFO] [stderr]    Compiling once_cell v1.17.1
[INFO] [stderr]    Compiling indexmap v1.9.2
[INFO] [stderr]    Compiling lock_api v0.4.9
[INFO] [stderr]    Compiling parking_lot_core v0.9.7
[INFO] [stderr]    Compiling ahash v0.7.6
[INFO] [stderr]    Compiling log v0.4.17
[INFO] [stderr]    Compiling thiserror v1.0.38
[INFO] [stderr]    Compiling smallvec v1.10.0
[INFO] [stderr]    Compiling termcolor v1.2.0
[INFO] [stderr]    Compiling libloading v0.7.4
[INFO] [stderr]    Compiling bit-vec v0.6.3
[INFO] [stderr]    Compiling io-lifetimes v1.0.5
[INFO] [stderr]    Compiling ash v0.37.2+1.3.238
[INFO] [stderr]    Compiling memchr v2.5.0
[INFO] [stderr]    Compiling unicode-width v0.1.10
[INFO] [stderr]    Compiling khronos-egl v4.1.0
[INFO] [stderr]    Compiling gpu-descriptor-types v0.1.1
[INFO] [stderr]    Compiling gpu-alloc-types v0.2.0
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling hexf-parse v0.2.1
[INFO] [stderr]    Compiling bit-set v0.5.3
[INFO] [stderr]    Compiling unicode-xid v0.2.4
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling codespan-reporting v0.11.1
[INFO] [stderr]    Compiling rustix v0.36.8
[INFO] [stderr]    Compiling cty v0.2.2
[INFO] [stderr]    Compiling raw-window-handle v0.5.0
[INFO] [stderr]    Compiling gpu-alloc v0.5.3
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling base64 v0.13.1
[INFO] [stderr]    Compiling glow v0.12.0
[INFO] [stderr]    Compiling futures-core v0.3.26
[INFO] [stderr]    Compiling profiling v1.0.7
[INFO] [stderr]    Compiling linux-raw-sys v0.1.4
[INFO] [stderr]    Compiling renderdoc-sys v0.7.1
[INFO] [stderr]    Compiling matrixmultiply v0.3.2
[INFO] [stderr]    Compiling fixedbitset v0.4.2
[INFO] [stderr]    Compiling regex-syntax v0.6.28
[INFO] [stderr]    Compiling humantime v2.1.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling dot v0.1.4
[INFO] [stderr]    Compiling defer v0.1.0
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling pollster v0.3.0
[INFO] [stderr]    Compiling aho-corasick v0.7.20
[INFO] [stderr]    Compiling regex v1.7.1
[INFO] [stderr]    Compiling getrandom v0.2.8
[INFO] [stderr]    Compiling spirv v0.2.0+1.5.4
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling num-complex v0.4.3
[INFO] [stderr]    Compiling parking_lot v0.12.1
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling ndarray v0.15.6
[INFO] [stderr]    Compiling is-terminal v0.4.3
[INFO] [stderr]    Compiling gpu-descriptor v0.2.3
[INFO] [stderr]    Compiling env_logger v0.10.0
[INFO] [stderr]    Compiling rand_distr v0.4.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.38
[INFO] [stderr]    Compiling bytemuck_derive v1.4.0
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling bytemuck v1.13.0
[INFO] [stderr]    Compiling ndarray-rand v0.14.0
[INFO] [stderr]    Compiling arrayvec v0.7.2
[INFO] [stderr]    Compiling wgpu-types v0.15.1
[INFO] [stderr]    Compiling ron v0.8.0
[INFO] [stderr]    Compiling naga v0.11.0
[INFO] [stderr]    Compiling petgraph v0.6.3
[INFO] [stderr]    Compiling daggy v0.8.0
[INFO] [stderr]    Compiling wgpu-hal v0.15.2
[INFO] [stderr]    Compiling wgpu-core v0.15.1
[INFO] [stderr]    Compiling wgpu v0.15.1
[INFO] [stderr]    Compiling ugrad v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]  --> src/main.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(box_syntax)]
[INFO] [stdout]   |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[INFO] [stdout]   = note: removed in 1.70.0; see <https://github.com/rust-lang/rust/pull/108471> for more information
[INFO] [stdout]   = note: replaced with `#[rustc_box]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the beta release channel
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(allocator_api)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the beta release channel
[INFO] [stdout]  --> src/main.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(box_syntax)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the beta release channel
[INFO] [stdout]  --> src/main.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | #![feature(bound_map)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the beta release channel
[INFO] [stdout]  --> src/main.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | #![feature(map_many_mut)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ShapeBuilder` and `StrideShape`
[INFO] [stdout]  --> src/back/wgpu.rs:3:32
[INFO] [stdout]   |
[INFO] [stdout] 3 | use ndarray::{ArcArray, IxDyn, ShapeBuilder, StrideShape};
[INFO] [stdout]   |                                ^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BinOp`, `RedOp`, and `UnOp`
[INFO] [stdout]  --> src/eval/mod.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::ten::{BinOp, ParamId, RedOp, Shape, Tensor, TensorOps, UnOp};
[INFO] [stdout]   |                  ^^^^^           ^^^^^                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ArrayD`
[INFO] [stdout]  --> src/eval/mod.rs:4:36
[INFO] [stdout]   |
[INFO] [stdout] 4 | use ndarray::{ArcArray, ArrayBase, ArrayD, IxDyn, OwnedArcRepr};
[INFO] [stdout]   |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `defer::defer`
[INFO] [stdout]  --> src/optim/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use defer::defer;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufferT`
[INFO] [stdout]  --> src/optim/mod.rs:2:28
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::back::{Backend, BufferT};
[INFO] [stdout]   |                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::IxDyn`
[INFO] [stdout]  --> src/ten/ops.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use ndarray::IxDyn;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AddAssign`, `Add`, `BitAndAssign`, `BitAnd`, `BitOrAssign`, `BitOr`, `DivAssign`, `Div`, `Index`, `MulAssign`, `Mul`, `Neg`, `RangeBounds`, `SubAssign`, and `Sub`
[INFO] [stdout]   --> src/ten/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, Div, DivAssign, Index, Mul,
[INFO] [stdout]    |     ^^^  ^^^^^^^^^  ^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^  ^^^^^^^^^  ^^^^^  ^^^
[INFO] [stdout] 14 |     MulAssign, Neg, RangeBounds, Sub, SubAssign,
[INFO] [stdout]    |     ^^^^^^^^^  ^^^  ^^^^^^^^^^^  ^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Backend`
[INFO] [stdout]   --> src/main.rs:11:38
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::back::{wgpu::WgpuBackend, Backend, BufferT};
[INFO] [stdout]    |                                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Optimizer` and `SGD`
[INFO] [stdout]   --> src/main.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::optim::{Optimizer, SGD};
[INFO] [stdout]    |                    ^^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Axis` and `StrideShape`
[INFO] [stdout]   --> src/main.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | use ndarray::{Axis, StrideShape};
[INFO] [stdout]    |               ^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Debug`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::fmt::Debug;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BuildHasher`, `Hash`, and `Hasher`
[INFO] [stdout]   --> src/main.rs:18:17
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::hash::{BuildHasher, Hash, Hasher};
[INFO] [stdout]    |                 ^^^^^^^^^^^  ^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `DerefMut`, `Mul`, and `Neg`
[INFO] [stdout]   --> src/main.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::ops::{Add, DerefMut, Mul, Neg};
[INFO] [stdout]    |                ^^^  ^^^^^^^^  ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `map_many_mut` has been stable since 1.86.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | #![feature(map_many_mut)]
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `bound_map` has been stable since 1.77.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | #![feature(bound_map)]
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufferT`
[INFO] [stdout]   --> src/main.rs:11:47
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::back::{wgpu::WgpuBackend, Backend, BufferT};
[INFO] [stdout]    |                                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/back/wgpu.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let mut data_buffer = e.device.create_buffer_init(&BufferInitDescriptor {
[INFO] [stdout]    |             ----^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/back/wgpu.rs:50:13
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let mut recv_buffer = e.device.create_buffer(&BufferDescriptor {
[INFO] [stdout]    |             ----^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub`
[INFO] [stdout]    --> src/back/wgpu.rs:334:13
[INFO] [stdout]     |
[INFO] [stdout] 334 |         let sub = self.queue.submit(Some(commands));
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_sub`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub`
[INFO] [stdout]    --> src/back/wgpu.rs:391:13
[INFO] [stdout]     |
[INFO] [stdout] 391 |         let sub = self.queue.submit(Some(commands));
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_sub`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub`
[INFO] [stdout]    --> src/back/wgpu.rs:469:13
[INFO] [stdout]     |
[INFO] [stdout] 469 |         let sub = self.queue.submit(Some(commands));
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_sub`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dim`
[INFO] [stdout]    --> src/back/wgpu.rs:518:29
[INFO] [stdout]     |
[INFO] [stdout] 518 |             ShapeOp::Flip { dim} => {
[INFO] [stdout]     |                             ^^^ help: try ignoring the field: `dim: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub`
[INFO] [stdout]    --> src/back/wgpu.rs:544:13
[INFO] [stdout]     |
[INFO] [stdout] 544 |         let sub = self.queue.submit(Some(commands));
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_sub`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/back/wgpu.rs:509:13
[INFO] [stdout]     |
[INFO] [stdout] 509 |         let mut params = match op {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub`
[INFO] [stdout]    --> src/back/wgpu.rs:617:13
[INFO] [stdout]     |
[INFO] [stdout] 617 |         let sub = self.queue.submit(Some(commands));
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_sub`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `op`
[INFO] [stdout]    --> src/back/wgpu.rs:550:9
[INFO] [stdout]     |
[INFO] [stdout] 550 |         op: &MatOp,
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_op`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/back/wgpu.rs:589:13
[INFO] [stdout]     |
[INFO] [stdout] 589 |         let mut params = Params {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/mod.rs:201:13
[INFO] [stdout]     |
[INFO] [stdout] 201 |         let mut out = f(self);
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pid`
[INFO] [stdout]    --> src/eval/mod.rs:238:30
[INFO] [stdout]     |
[INFO] [stdout] 238 |             TensorOps::Param(pid) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_pid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/mod.rs:218:21
[INFO] [stdout]     |
[INFO] [stdout] 218 |                 let mut data = ArcArray::<f32, IxDyn>::from_elem::<ndarray::Shape<IxDyn>>(
[INFO] [stdout]     |                     ----^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/mod.rs:222:21
[INFO] [stdout]     |
[INFO] [stdout] 222 |                 let mut buf = self.b.buffer(&i.shape);
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/mod.rs:228:21
[INFO] [stdout]     |
[INFO] [stdout] 228 |                 let mut data = ArcArray::<f32, IxDyn>::from_shape_vec::<ndarray::Shape<IxDyn>>(
[INFO] [stdout]     |                     ----^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/mod.rs:233:21
[INFO] [stdout]     |
[INFO] [stdout] 233 |                 let mut buf = self.b.buffer(&i.shape);
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/mod.rs:239:21
[INFO] [stdout]     |
[INFO] [stdout] 239 |                 let mut dist = rand::distributions::Standard;
[INFO] [stdout]     |                     ----^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/mod.rs:241:21
[INFO] [stdout]     |
[INFO] [stdout] 241 |                 let mut data: ArrayBase<OwnedArcRepr<f32>, IxDyn> =
[INFO] [stdout]     |                     ----^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/mod.rs:254:21
[INFO] [stdout]     |
[INFO] [stdout] 254 |                 let mut buf = self.b.buffer(&i.shape);
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pid`
[INFO] [stdout]   --> src/optim/mod.rs:27:18
[INFO] [stdout]    |
[INFO] [stdout] 27 |             for (pid, p) in &mut e.params {
[INFO] [stdout]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_pid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/optim/mod.rs:28:21
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 let mut g = e.grads.get(&p.id()).unwrap().clone();
[INFO] [stdout]    |                     ----^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `shape`
[INFO] [stdout]    --> src/ten/ops.rs:371:13
[INFO] [stdout]     |
[INFO] [stdout] 371 |         let shape = self.shape();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_shape`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/ten/shape.rs:124:21
[INFO] [stdout]     |
[INFO] [stdout] 124 |     fn index(&self, index: RangeFull) -> &Self::Output {
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/ten/mod.rs:213:42
[INFO] [stdout]     |
[INFO] [stdout] 213 |             TensorOps::MatOp(MatOp::Mul, x, y) => {
[INFO] [stdout]     |                                          ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/ten/mod.rs:213:45
[INFO] [stdout]     |
[INFO] [stdout] 213 |             TensorOps::MatOp(MatOp::Mul, x, y) => {
[INFO] [stdout]     |                                             ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut backend = pollster::block_on(WgpuBackend::new());
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0554, E0557.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0554`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ugrad` (bin "ugrad") due to 5 previous errors; 44 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "53ce9d6d1c9eec15ea38fd661af60560e487b4cf036fdac11d7ef4445da7d184", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "53ce9d6d1c9eec15ea38fd661af60560e487b4cf036fdac11d7ef4445da7d184", kill_on_drop: false }`
[INFO] [stdout] 53ce9d6d1c9eec15ea38fd661af60560e487b4cf036fdac11d7ef4445da7d184
