[INFO] fetching crate pikuseru 0.1.1...
[INFO] testing pikuseru-0.1.1 against 1.91.0 for beta-1.92-2
[INFO] extracting crate pikuseru 0.1.1 into /workspace/builds/worker-2-tc1/source
[INFO] started tweaking crates.io crate pikuseru 0.1.1
[INFO] finished tweaking crates.io crate pikuseru 0.1.1
[INFO] tweaked toml for crates.io crate pikuseru 0.1.1 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate pikuseru 0.1.1 on toolchain 1.91.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.91.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate pikuseru 0.1.1 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" "+1.91.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wat v1.0.59
[INFO] [stderr]   Downloaded wasmtime-jit-debug v5.0.0
[INFO] [stderr]   Downloaded jobserver v0.1.25
[INFO] [stderr]   Downloaded wasm-encoder v0.24.0
[INFO] [stderr]   Downloaded io-lifetimes v1.0.5
[INFO] [stderr]   Downloaded wast v54.0.0
[INFO] [stderr]   Downloaded ordered-float v3.4.0
[INFO] [stderr]   Downloaded cranelift-frontend v0.92.0
[INFO] [stderr]   Downloaded wasmtime-fiber v5.0.0
[INFO] [stderr]   Downloaded rustix v0.36.8
[INFO] [stderr]   Downloaded proc-macro-crate v1.3.0
[INFO] [stderr]   Downloaded async-trait v0.1.64
[INFO] [stderr]   Downloaded shlex v1.1.0
[INFO] [stderr]   Downloaded term v0.5.2
[INFO] [stderr]   Downloaded clippy v0.0.302
[INFO] [stderr]   Downloaded num_enum_derive v0.5.10
[INFO] [stderr]   Downloaded python3-sys v0.7.1
[INFO] [stderr]   Downloaded toml_edit v0.18.1
[INFO] [stderr]   Downloaded regalloc2 v0.5.1
[INFO] [stderr]   Downloaded nom8 v0.2.0
[INFO] [stderr]   Downloaded wasmtime-environ v5.0.0
[INFO] [stderr]   Downloaded exr v1.5.3
[INFO] [stderr]   Downloaded rhai v1.12.0
[INFO] [stderr]   Downloaded cranelift-codegen-meta v0.92.0
[INFO] [stderr]   Downloaded cpython v0.7.1
[INFO] [stderr]   Downloaded wasmparser v0.96.0
[INFO] [stderr]   Downloaded rlua v0.19.4
[INFO] [stderr]   Downloaded pulldown-cmark v0.8.0
[INFO] [stderr]   Downloaded wasmtime-cranelift v5.0.0
[INFO] [stderr]   Downloaded gapbuffer v0.1.1
[INFO] [stderr]   Downloaded rlua-lua54-sys v0.1.3
[INFO] [stderr]   Downloaded cranelift-wasm v0.92.0
[INFO] [stderr]   Downloaded hound v3.5.0
[INFO] [stderr]   Downloaded bytemuck_derive v1.4.0
[INFO] [stderr]   Downloaded futures-sink v0.3.26
[INFO] [stderr]   Downloaded zune-inflate v0.2.50
[INFO] [stderr]   Downloaded cranelift-bforest v0.92.0
[INFO] [stderr]   Downloaded memfd v0.6.2
[INFO] [stderr]   Downloaded wasmtime-types v5.0.0
[INFO] [stderr]   Downloaded wasmtime-asm-macros v5.0.0
[INFO] [stderr]   Downloaded clang-sys v1.6.0
[INFO] [stderr]   Downloaded coreaudio-sys v0.2.11
[INFO] [stderr]   Downloaded futures-core v0.3.26
[INFO] [stderr]   Downloaded spin v0.9.5
[INFO] [stderr]   Downloaded simd-adler32 v0.3.4
[INFO] [stderr]   Downloaded psm v0.1.21
[INFO] [stderr]   Downloaded wasmtime-cache v5.0.0
[INFO] [stderr]   Downloaded wasmtime-wit-bindgen v5.0.0
[INFO] [stderr]   Downloaded wit-parser v0.3.1
[INFO] [stderr]   Downloaded ittapi v0.3.3
[INFO] [stderr]   Downloaded wasmtime-jit v5.0.0
[INFO] [stderr]   Downloaded paste v1.0.11
[INFO] [stderr]   Downloaded anyhow v1.0.69
[INFO] [stderr]   Downloaded toml_datetime v0.5.1
[INFO] [stderr]   Downloaded num_enum v0.5.10
[INFO] [stderr]   Downloaded rhai_codegen v1.5.0
[INFO] [stderr]   Downloaded tinystr v0.6.2
[INFO] [stderr]   Downloaded wasmtime-component-util v5.0.0
[INFO] [stderr]   Downloaded cranelift-codegen-shared v0.92.0
[INFO] [stderr]   Downloaded ittapi-sys v0.3.3
[INFO] [stderr]   Downloaded cranelift-entity v0.92.0
[INFO] [stderr]   Downloaded unicode-bidi v0.3.10
[INFO] [stderr]   Downloaded directories-next v2.0.0
[INFO] [stderr]   Downloaded is-terminal v0.4.3
[INFO] [stderr]   Downloaded zstd-sys v2.0.7+zstd.1.5.4
[INFO] [stderr]   Downloaded slice-group-by v0.3.0
[INFO] [stderr]   Downloaded cranelift-codegen v0.92.0
[INFO] [stderr]   Downloaded wasmtime-jit-icache-coherence v5.0.0
[INFO] [stderr]   Downloaded cranelift-isle v0.92.0
[INFO] [stderr]   Downloaded wasmtime-runtime v5.0.0
[INFO] [stderr]   Downloaded wasmtime v5.0.0
[INFO] [stderr]   Downloaded rtrb v0.2.3
[INFO] [stderr]   Downloaded file-per-thread-logger v0.1.6
[INFO] [stderr]   Downloaded wasmtime-component-macro v5.0.0
[INFO] [stderr]   Downloaded cranelift-native v0.92.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1.91.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6aeb4be097289fcaf418b606137ec06dadab22ada4be16533062d68f02e7441c
[INFO] running `Command { std: "docker" "start" "-a" "6aeb4be097289fcaf418b606137ec06dadab22ada4be16533062d68f02e7441c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6aeb4be097289fcaf418b606137ec06dadab22ada4be16533062d68f02e7441c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6aeb4be097289fcaf418b606137ec06dadab22ada4be16533062d68f02e7441c", kill_on_drop: false }`
[INFO] [stdout] 6aeb4be097289fcaf418b606137ec06dadab22ada4be16533062d68f02e7441c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1.91.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 38ce6206db96510d0826ac81c0b66fadf722ac01ff038cdaff4d4241eef892ea
[INFO] running `Command { std: "docker" "start" "-a" "38ce6206db96510d0826ac81c0b66fadf722ac01ff038cdaff4d4241eef892ea", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: pikuseru v0.1.1 (/opt/rustwide/workdir) ignoring invalid dependency `clippy` which is missing a lib target
[INFO] [stderr]    Compiling libc v0.2.139
[INFO] [stderr]    Compiling proc-macro2 v1.0.51
[INFO] [stderr]    Compiling unicode-ident v1.0.6
[INFO] [stderr]    Compiling quote v1.0.23
[INFO] [stderr]    Compiling syn v1.0.107
[INFO] [stderr]    Compiling serde_derive v1.0.152
[INFO] [stderr]    Compiling serde v1.0.152
[INFO] [stderr]    Compiling io-lifetimes v1.0.5
[INFO] [stderr]    Compiling ahash v0.7.6
[INFO] [stderr]    Compiling indexmap v1.9.2
[INFO] [stderr]    Compiling rustix v0.36.8
[INFO] [stderr]    Compiling smallvec v1.10.0
[INFO] [stderr]    Compiling target-lexicon v0.12.6
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling unicode-bidi v0.3.10
[INFO] [stderr]    Compiling cranelift-isle v0.92.0
[INFO] [stderr]    Compiling thiserror v1.0.38
[INFO] [stderr]    Compiling anyhow v1.0.69
[INFO] [stderr]    Compiling cranelift-codegen-shared v0.92.0
[INFO] [stderr]    Compiling cranelift-codegen-meta v0.92.0
[INFO] [stderr]    Compiling generic-array v0.14.6
[INFO] [stderr]    Compiling crossbeam-utils v0.8.14
[INFO] [stderr]    Compiling memoffset v0.7.1
[INFO] [stderr]    Compiling slice-group-by v0.3.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.13
[INFO] [stderr]    Compiling bumpalo v3.12.0
[INFO] [stderr]    Compiling idna v0.3.0
[INFO] [stderr]    Compiling aho-corasick v0.7.20
[INFO] [stderr]    Compiling paste v1.0.11
[INFO] [stderr]    Compiling regalloc2 v0.5.1
[INFO] [stderr]    Compiling zstd-safe v5.0.2+zstd.1.5.2
[INFO] [stderr]    Compiling either v1.8.1
[INFO] [stderr]    Compiling regex-syntax v0.6.28
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]    Compiling wasmtime-asm-macros v5.0.0
[INFO] [stderr]    Compiling termcolor v1.2.0
[INFO] [stderr]    Compiling leb128 v0.2.5
[INFO] [stderr]    Compiling rustversion v1.0.11
[INFO] [stderr]    Compiling rayon-core v1.10.2
[INFO] [stderr]    Compiling url v2.3.1
[INFO] [stderr]    Compiling wasm-encoder v0.24.0
[INFO] [stderr]    Compiling crossbeam-deque v0.8.2
[INFO] [stderr]    Compiling crossbeam-channel v0.5.6
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling smartstring v1.0.1
[INFO] [stderr]    Compiling ahash v0.8.3
[INFO] [stderr]    Compiling block-buffer v0.10.3
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling instant v0.1.12
[INFO] [stderr]    Compiling getrandom v0.2.8
[INFO] [stderr]    Compiling jobserver v0.1.25
[INFO] [stderr]    Compiling digest v0.10.6
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling cc v1.0.79
[INFO] [stderr]    Compiling const-random-macro v0.1.15
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling num_cpus v1.15.0
[INFO] [stderr]    Compiling dirs-sys-next v0.1.2
[INFO] [stderr]    Compiling async-trait v0.1.64
[INFO] [stderr]    Compiling wasmtime-cache v5.0.0
[INFO] [stderr]    Compiling cpufeatures v0.2.5
[INFO] [stderr]    Compiling miniz_oxide v0.6.2
[INFO] [stderr]    Compiling sha2 v0.10.6
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling regex v1.7.1
[INFO] [stderr]    Compiling directories-next v2.0.0
[INFO] [stderr]    Compiling wast v54.0.0
[INFO] [stderr]    Compiling const-random v0.1.15
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]    Compiling nix v0.23.2
[INFO] [stderr]    Compiling wasmtime-jit-icache-coherence v5.0.0
[INFO] [stderr]    Compiling cpp_demangle v0.3.5
[INFO] [stderr]    Compiling wasmtime v5.0.0
[INFO] [stderr]    Compiling base64 v0.13.1
[INFO] [stderr]    Compiling cranelift-codegen v0.92.0
[INFO] [stderr]    Compiling cpal v0.13.5
[INFO] [stderr]    Compiling wasmtime-fiber v5.0.0
[INFO] [stderr]    Compiling zstd-sys v2.0.7+zstd.1.5.4
[INFO] [stderr]    Compiling ittapi-sys v0.3.3
[INFO] [stderr]    Compiling is-terminal v0.4.3
[INFO] [stderr]    Compiling wasmtime-runtime v5.0.0
[INFO] [stderr]    Compiling memfd v0.6.2
[INFO] [stderr]    Compiling psm v0.1.21
[INFO] [stderr]    Compiling env_logger v0.10.0
[INFO] [stderr]    Compiling parking_lot v0.11.2
[INFO] [stderr]    Compiling rayon v1.6.1
[INFO] [stderr]    Compiling flate2 v1.0.25
[INFO] [stderr]    Compiling cache-padded v1.2.0
[INFO] [stderr]    Compiling weezl v0.1.7
[INFO] [stderr]    Compiling pikuseru v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling rtrb v0.2.3
[INFO] [stderr]    Compiling ordered-float v3.4.0
[INFO] [stdout] warning: unused variable: `target_os`
[INFO] [stdout]   --> build.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let target_os = env::var("TARGET").unwrap();
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_os`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling ittapi v0.3.3
[INFO] [stderr]    Compiling file-per-thread-logger v0.1.6
[INFO] [stderr]    Compiling glob v0.3.1
[INFO] [stderr]    Compiling fastrand v1.9.0
[INFO] [stderr]    Compiling hound v3.5.0
[INFO] [stderr]    Compiling gif v0.11.4
[INFO] [stderr]    Compiling png v0.17.7
[INFO] [stderr]    Compiling gapbuffer v0.1.1
[INFO] [stderr]    Compiling alsa v0.6.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.38
[INFO] [stderr]    Compiling strum_macros v0.24.3
[INFO] [stderr]    Compiling bytemuck_derive v1.4.0
[INFO] [stderr]    Compiling rhai_codegen v1.5.0
[INFO] [stderr]    Compiling displaydoc v0.2.3
[INFO] [stderr]    Compiling tinystr v0.6.2
[INFO] [stderr]    Compiling bytemuck v1.13.0
[INFO] [stderr]    Compiling wat v1.0.59
[INFO] [stderr]    Compiling strum v0.24.1
[INFO] [stderr]    Compiling rhai v1.12.0
[INFO] [stderr]    Compiling zstd v0.11.2+zstd.1.5.2
[INFO] [stderr]    Compiling cranelift-entity v0.92.0
[INFO] [stderr]    Compiling arrayvec v0.7.2
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling toml v0.5.11
[INFO] [stderr]    Compiling cranelift-bforest v0.92.0
[INFO] [stderr]    Compiling gimli v0.26.2
[INFO] [stderr]    Compiling wasmparser v0.96.0
[INFO] [stderr]    Compiling object v0.29.0
[INFO] [stderr]    Compiling wasmtime-jit-debug v5.0.0
[INFO] [stderr]    Compiling wasmtime-types v5.0.0
[INFO] [stderr]    Compiling addr2line v0.17.0
[INFO] [stderr]    Compiling wasmtime-environ v5.0.0
[INFO] [stderr]    Compiling wasmtime-jit v5.0.0
[INFO] [stderr]    Compiling cranelift-frontend v0.92.0
[INFO] [stderr]    Compiling cranelift-native v0.92.0
[INFO] [stderr]    Compiling cranelift-wasm v0.92.0
[INFO] [stderr]    Compiling wasmtime-cranelift v5.0.0
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]   --> src/core/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fs::File;
[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 import: `std::path::Path`
[INFO] [stdout]   --> src/core/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::read`
[INFO] [stdout]  --> src/cartridge/code.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::fs::read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]    --> src/plugins/lua_plugin.rs:615:15
[INFO] [stdout]     |
[INFO] [stdout] 615 |     use log::{error};
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]    --> src/plugins/python_plugin.rs:514:15
[INFO] [stdout]     |
[INFO] [stdout] 514 |     use log::{error};
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `borrow::Borrow`
[INFO] [stdout]  --> src/plugins/rhai_plugin.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use std::{sync::{Arc, Mutex}, borrow::Borrow};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `error`
[INFO] [stdout]  --> src/plugins/rhai_plugin.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 |     use log::{error, info, debug};
[INFO] [stdout]   |               ^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flip_x`
[INFO] [stdout]     --> src/gfx/mod.rs:1420:29
[INFO] [stdout]      |
[INFO] [stdout] 1420 | ...                   flip_x: bool,
[INFO] [stdout]      |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_flip_x`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flip_y`
[INFO] [stdout]     --> src/gfx/mod.rs:1421:29
[INFO] [stdout]      |
[INFO] [stdout] 1421 | ...                   flip_y: bool) -> (i32, i32) {
[INFO] [stdout]      |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_flip_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `values`
[INFO] [stdout]     --> src/gfx/mod.rs:1513:39
[INFO] [stdout]      |
[INFO] [stdout] 1513 |     pub fn poke(&mut self, addr: u32, values: Vec<u8>) {
[INFO] [stdout]      |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_values`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest_addr`
[INFO] [stdout]     --> src/gfx/mod.rs:1524:30
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                              ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, _dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stdout]      |
[INFO] [stdout] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout] 1524 +     pub fn memcpy(&mut self, MINOR_VERSION: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source_addr`
[INFO] [stdout]     --> src/gfx/mod.rs:1524:46
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                                              ^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, _source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stdout]      |
[INFO] [stdout] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout] 1524 +     pub fn memcpy(&mut self, dest_addr: u32, MINOR_VERSION: u32, len: u32) {/*
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]     --> src/gfx/mod.rs:1524:64
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                                                                ^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, _len: u32) {/*
[INFO] [stdout]      |                                                                +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stdout]      |
[INFO] [stdout] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout] 1524 +     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, MINOR_VERSION: u32) {/*
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/mod.rs:504:36
[INFO] [stdout]     |
[INFO] [stdout] 504 |     pub fn start_record(&mut self, filename: &str) {
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/mod.rs:607:34
[INFO] [stdout]     |
[INFO] [stdout] 607 |     pub fn screenshot(&mut self, filename: &str) {
[INFO] [stdout]     |                                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contexts`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:22:21
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     contexts: Arc<Mutex<Contexts>>,
[INFO] [stdout]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contexts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:23:21
[INFO] [stdout]    |
[INFO] [stdout] 23 |                     info: Arc<Mutex<Info>>,
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screen`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:24:21
[INFO] [stdout]    |
[INFO] [stdout] 24 |                     screen: Arc<Mutex<Screen>>,
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contexts`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:30:21
[INFO] [stdout]    |
[INFO] [stdout] 30 |                     contexts: Arc<Mutex<Contexts>>,
[INFO] [stdout]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contexts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:31:21
[INFO] [stdout]    |
[INFO] [stdout] 31 |                     info: Arc<Mutex<Info>>,
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:33:21
[INFO] [stdout]    |
[INFO] [stdout] 33 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_init", ());
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:70:17
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_draw", ());
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_update", ());
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/plugins/wasm_plugin.rs:65:21
[INFO] [stdout]    |
[INFO] [stdout] 65 |                     info: Arc<Mutex<Info>>,
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio`
[INFO] [stdout]   --> src/plugins/wasm_plugin.rs:67:21
[INFO] [stdout]    |
[INFO] [stdout] 67 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `add`
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:197:17
[INFO] [stdout]     |
[INFO] [stdout] 197 |             let add = Func::wrap(&mut store, |a: i32, b: i32| -> i32 { a + b });
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]  --> src/input/mouse_state.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | #[repr(transparent)]
[INFO] [stdout]   | ^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]   --> src/contexts/input_context.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl RawInputState {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 12 |     fn is_valid(self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]   --> src/contexts/input_context.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl RawMouseState {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 22 |     fn is_valid(self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:230:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |             self.init_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 230 |             let _ = self.init_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 237 |             self.draw_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 237 |             let _ = self.draw_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:244:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |             self.update_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 244 |             let _ = self.update_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/audio/notes/note.rs:98:9
[INFO] [stdout]     |
[INFO] [stdout]  98 | /         NOTES_LUT.write(std::array::from_fn(|index| {
[INFO] [stdout]  99 | |             // C1 is 45 notes away from A4. (69 - 45 = 24)
[INFO] [stdout] 100 | |             let index = index + 24;
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |             Note { name, frequency }
[INFO] [stdout] 110 | |         }));
[INFO] [stdout]     | |___________^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/audio/notes/note.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let notes = NOTES_LUT.assume_init_ref();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | /         SIN_LUT.write(std::array::from_fn(|index| {
[INFO] [stdout] 13 | |             let phase = (TAU * index as f32) / LUT_FULL_LEN as f32;
[INFO] [stdout] 14 | |             let phase = phase + (PI / LUT_FULL_LEN as f32); //Offset it slightly to break symmetry
[INFO] [stdout] ...  |
[INFO] [stdout] 17 | |         }));
[INFO] [stdout]    | |___________^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:60:24
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:72:24
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:95:24
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:106:24
[INFO] [stdout]     |
[INFO] [stdout] 106 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:124:24
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:142:24
[INFO] [stdout]     |
[INFO] [stdout] 142 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:158:24
[INFO] [stdout]     |
[INFO] [stdout] 158 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/wavetable/wavetable_instance.rs:24:35
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let definition = unsafe { NO_SOUND_DEFINITION.assume_init_ref().clone() };
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/sound/sound_engine.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | /         NO_SOUND_DEFINITION.write(std::sync::Arc::new(WavetableDefinition {
[INFO] [stdout] 37 | |             data: Box::new([0, 0]),
[INFO] [stdout] 38 | |             envelope: EnvelopeDefinition::default(),
[INFO] [stdout] 39 | |             interpolator: crate::audio::instruments::index_interpolator::IndexInterpolator::Truncate,
[INFO] [stdout] 40 | |         }));
[INFO] [stdout]    | |___________^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 42s
[INFO] running `Command { std: "docker" "inspect" "38ce6206db96510d0826ac81c0b66fadf722ac01ff038cdaff4d4241eef892ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "38ce6206db96510d0826ac81c0b66fadf722ac01ff038cdaff4d4241eef892ea", kill_on_drop: false }`
[INFO] [stdout] 38ce6206db96510d0826ac81c0b66fadf722ac01ff038cdaff4d4241eef892ea
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1.91.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8b11f1dcc0e8b509a81959484a83b67ceb94a02995e351ec33fb9eca508b97fd
[INFO] running `Command { std: "docker" "start" "-a" "8b11f1dcc0e8b509a81959484a83b67ceb94a02995e351ec33fb9eca508b97fd", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: pikuseru v0.1.1 (/opt/rustwide/workdir) ignoring invalid dependency `clippy` which is missing a lib target
[INFO] [stdout] warning: unused variable: `target_os`
[INFO] [stdout]   --> build.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let target_os = env::var("TARGET").unwrap();
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_os`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]   --> src/core/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fs::File;
[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 import: `std::path::Path`
[INFO] [stdout]   --> src/core/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::read`
[INFO] [stdout]  --> src/cartridge/code.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::fs::read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]    --> src/plugins/lua_plugin.rs:615:15
[INFO] [stdout]     |
[INFO] [stdout] 615 |     use log::{error};
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]    --> src/plugins/python_plugin.rs:514:15
[INFO] [stdout]     |
[INFO] [stdout] 514 |     use log::{error};
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `borrow::Borrow`
[INFO] [stdout]  --> src/plugins/rhai_plugin.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use std::{sync::{Arc, Mutex}, borrow::Borrow};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `error`
[INFO] [stdout]  --> src/plugins/rhai_plugin.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 |     use log::{error, info, debug};
[INFO] [stdout]   |               ^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flip_x`
[INFO] [stdout]     --> src/gfx/mod.rs:1420:29
[INFO] [stdout]      |
[INFO] [stdout] 1420 | ...                   flip_x: bool,
[INFO] [stdout]      |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_flip_x`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flip_y`
[INFO] [stdout]     --> src/gfx/mod.rs:1421:29
[INFO] [stdout]      |
[INFO] [stdout] 1421 | ...                   flip_y: bool) -> (i32, i32) {
[INFO] [stdout]      |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_flip_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `values`
[INFO] [stdout]     --> src/gfx/mod.rs:1513:39
[INFO] [stdout]      |
[INFO] [stdout] 1513 |     pub fn poke(&mut self, addr: u32, values: Vec<u8>) {
[INFO] [stdout]      |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_values`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest_addr`
[INFO] [stdout]     --> src/gfx/mod.rs:1524:30
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                              ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, _dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stdout]      |
[INFO] [stdout] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout] 1524 +     pub fn memcpy(&mut self, MINOR_VERSION: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source_addr`
[INFO] [stdout]     --> src/gfx/mod.rs:1524:46
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                                              ^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, _source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stdout]      |
[INFO] [stdout] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout] 1524 +     pub fn memcpy(&mut self, dest_addr: u32, MINOR_VERSION: u32, len: u32) {/*
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]     --> src/gfx/mod.rs:1524:64
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                                                                ^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, _len: u32) {/*
[INFO] [stdout]      |                                                                +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stdout]      |
[INFO] [stdout] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout] 1524 +     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, MINOR_VERSION: u32) {/*
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/mod.rs:504:36
[INFO] [stdout]     |
[INFO] [stdout] 504 |     pub fn start_record(&mut self, filename: &str) {
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/mod.rs:607:34
[INFO] [stdout]     |
[INFO] [stdout] 607 |     pub fn screenshot(&mut self, filename: &str) {
[INFO] [stdout]     |                                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contexts`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:22:21
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     contexts: Arc<Mutex<Contexts>>,
[INFO] [stdout]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contexts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:23:21
[INFO] [stdout]    |
[INFO] [stdout] 23 |                     info: Arc<Mutex<Info>>,
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screen`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:24:21
[INFO] [stdout]    |
[INFO] [stdout] 24 |                     screen: Arc<Mutex<Screen>>,
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contexts`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:30:21
[INFO] [stdout]    |
[INFO] [stdout] 30 |                     contexts: Arc<Mutex<Contexts>>,
[INFO] [stdout]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contexts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:31:21
[INFO] [stdout]    |
[INFO] [stdout] 31 |                     info: Arc<Mutex<Info>>,
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:33:21
[INFO] [stdout]    |
[INFO] [stdout] 33 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_init", ());
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:70:17
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_draw", ());
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_update", ());
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/plugins/wasm_plugin.rs:65:21
[INFO] [stdout]    |
[INFO] [stdout] 65 |                     info: Arc<Mutex<Info>>,
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio`
[INFO] [stdout]   --> src/plugins/wasm_plugin.rs:67:21
[INFO] [stdout]    |
[INFO] [stdout] 67 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `add`
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:197:17
[INFO] [stdout]     |
[INFO] [stdout] 197 |             let add = Func::wrap(&mut store, |a: i32, b: i32| -> i32 { a + b });
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]  --> src/input/mouse_state.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | #[repr(transparent)]
[INFO] [stdout]   | ^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]   --> src/contexts/input_context.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl RawInputState {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 12 |     fn is_valid(self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]   --> src/contexts/input_context.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl RawMouseState {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 22 |     fn is_valid(self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:230:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |             self.init_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 230 |             let _ = self.init_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 237 |             self.draw_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 237 |             let _ = self.draw_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:244:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |             self.update_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 244 |             let _ = self.update_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/audio/notes/note.rs:98:9
[INFO] [stdout]     |
[INFO] [stdout]  98 | /         NOTES_LUT.write(std::array::from_fn(|index| {
[INFO] [stdout]  99 | |             // C1 is 45 notes away from A4. (69 - 45 = 24)
[INFO] [stdout] 100 | |             let index = index + 24;
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |             Note { name, frequency }
[INFO] [stdout] 110 | |         }));
[INFO] [stdout]     | |___________^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/audio/notes/note.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let notes = NOTES_LUT.assume_init_ref();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | /         SIN_LUT.write(std::array::from_fn(|index| {
[INFO] [stdout] 13 | |             let phase = (TAU * index as f32) / LUT_FULL_LEN as f32;
[INFO] [stdout] 14 | |             let phase = phase + (PI / LUT_FULL_LEN as f32); //Offset it slightly to break symmetry
[INFO] [stdout] ...  |
[INFO] [stdout] 17 | |         }));
[INFO] [stdout]    | |___________^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:60:24
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:72:24
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:95:24
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:106:24
[INFO] [stdout]     |
[INFO] [stdout] 106 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:124:24
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:142:24
[INFO] [stdout]     |
[INFO] [stdout] 142 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:158:24
[INFO] [stdout]     |
[INFO] [stdout] 158 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/wavetable/wavetable_instance.rs:24:35
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let definition = unsafe { NO_SOUND_DEFINITION.assume_init_ref().clone() };
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/sound/sound_engine.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | /         NO_SOUND_DEFINITION.write(std::sync::Arc::new(WavetableDefinition {
[INFO] [stdout] 37 | |             data: Box::new([0, 0]),
[INFO] [stdout] 38 | |             envelope: EnvelopeDefinition::default(),
[INFO] [stdout] 39 | |             interpolator: crate::audio::instruments::index_interpolator::IndexInterpolator::Truncate,
[INFO] [stdout] 40 | |         }));
[INFO] [stdout]    | |___________^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling pikuseru v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::iter::FromIterator`
[INFO] [stdout]    --> src/gfx/sprite.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |     use std::iter::FromIterator;
[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 import: `std::fs::File`
[INFO] [stdout]   --> src/core/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fs::File;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/core/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::read`
[INFO] [stdout]  --> src/cartridge/code.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::fs::read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]    --> src/plugins/lua_plugin.rs:615:15
[INFO] [stdout]     |
[INFO] [stdout] 615 |     use log::{error};
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]    --> src/plugins/python_plugin.rs:514:15
[INFO] [stdout]     |
[INFO] [stdout] 514 |     use log::{error};
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `borrow::Borrow`
[INFO] [stdout]  --> src/plugins/rhai_plugin.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use std::{sync::{Arc, Mutex}, borrow::Borrow};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `error`
[INFO] [stdout]  --> src/plugins/rhai_plugin.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 |     use log::{error, info, debug};
[INFO] [stdout]   |               ^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gfx/sprite.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let mut s = Sprite::new(original_sprite);
[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: unused variable: `flip_x`
[INFO] [stdout]     --> src/gfx/mod.rs:1420:29
[INFO] [stdout]      |
[INFO] [stdout] 1420 | ...                   flip_x: bool,
[INFO] [stdout]      |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_flip_x`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flip_y`
[INFO] [stdout]     --> src/gfx/mod.rs:1421:29
[INFO] [stdout]      |
[INFO] [stdout] 1421 | ...                   flip_y: bool) -> (i32, i32) {
[INFO] [stdout]      |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_flip_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `values`
[INFO] [stdout]     --> src/gfx/mod.rs:1513:39
[INFO] [stdout]      |
[INFO] [stdout] 1513 |     pub fn poke(&mut self, addr: u32, values: Vec<u8>) {
[INFO] [stdout]      |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_values`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest_addr`
[INFO] [stdout]     --> src/gfx/mod.rs:1524:30
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                              ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, _dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stdout]      |
[INFO] [stdout] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout] 1524 +     pub fn memcpy(&mut self, MINOR_VERSION: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source_addr`
[INFO] [stdout]     --> src/gfx/mod.rs:1524:46
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                                              ^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, _source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stdout]      |
[INFO] [stdout] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout] 1524 +     pub fn memcpy(&mut self, dest_addr: u32, MINOR_VERSION: u32, len: u32) {/*
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]     --> src/gfx/mod.rs:1524:64
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout]      |                                                                ^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]      |
[INFO] [stdout] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, _len: u32) {/*
[INFO] [stdout]      |                                                                +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stdout]      |
[INFO] [stdout] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stdout] 1524 +     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, MINOR_VERSION: u32) {/*
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/mod.rs:504:36
[INFO] [stdout]     |
[INFO] [stdout] 504 |     pub fn start_record(&mut self, filename: &str) {
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/mod.rs:607:34
[INFO] [stdout]     |
[INFO] [stdout] 607 |     pub fn screenshot(&mut self, filename: &str) {
[INFO] [stdout]     |                                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contexts`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:22:21
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     contexts: Arc<Mutex<Contexts>>,
[INFO] [stdout]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contexts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:23:21
[INFO] [stdout]    |
[INFO] [stdout] 23 |                     info: Arc<Mutex<Info>>,
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screen`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:24:21
[INFO] [stdout]    |
[INFO] [stdout] 24 |                     screen: Arc<Mutex<Screen>>,
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio`
[INFO] [stdout]   --> src/plugins/rpython_plugin.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contexts`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:30:21
[INFO] [stdout]    |
[INFO] [stdout] 30 |                     contexts: Arc<Mutex<Contexts>>,
[INFO] [stdout]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contexts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:31:21
[INFO] [stdout]    |
[INFO] [stdout] 31 |                     info: Arc<Mutex<Info>>,
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:33:21
[INFO] [stdout]    |
[INFO] [stdout] 33 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_init", ());
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:70:17
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_draw", ());
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/plugins/rhai_plugin.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_update", ());
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/plugins/wasm_plugin.rs:65:21
[INFO] [stdout]    |
[INFO] [stdout] 65 |                     info: Arc<Mutex<Info>>,
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio`
[INFO] [stdout]   --> src/plugins/wasm_plugin.rs:67:21
[INFO] [stdout]    |
[INFO] [stdout] 67 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `add`
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:197:17
[INFO] [stdout]     |
[INFO] [stdout] 197 |             let add = Func::wrap(&mut store, |a: i32, b: i32| -> i32 { a + b });
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]  --> src/input/mouse_state.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | #[repr(transparent)]
[INFO] [stdout]   | ^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]   --> src/contexts/input_context.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl RawInputState {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 12 |     fn is_valid(self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]   --> src/contexts/input_context.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl RawMouseState {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 22 |     fn is_valid(self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:230:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |             self.init_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 230 |             let _ = self.init_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 237 |             self.draw_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 237 |             let _ = self.draw_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/plugins/wasm_plugin.rs:244:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |             self.update_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 244 |             let _ = self.update_fn.unwrap().call(&mut store, ());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/audio/notes/note.rs:98:9
[INFO] [stdout]     |
[INFO] [stdout]  98 | /         NOTES_LUT.write(std::array::from_fn(|index| {
[INFO] [stdout]  99 | |             // C1 is 45 notes away from A4. (69 - 45 = 24)
[INFO] [stdout] 100 | |             let index = index + 24;
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |             Note { name, frequency }
[INFO] [stdout] 110 | |         }));
[INFO] [stdout]     | |___________^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/audio/notes/note.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let notes = NOTES_LUT.assume_init_ref();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | /         SIN_LUT.write(std::array::from_fn(|index| {
[INFO] [stdout] 13 | |             let phase = (TAU * index as f32) / LUT_FULL_LEN as f32;
[INFO] [stdout] 14 | |             let phase = phase + (PI / LUT_FULL_LEN as f32); //Offset it slightly to break symmetry
[INFO] [stdout] ...  |
[INFO] [stdout] 17 | |         }));
[INFO] [stdout]    | |___________^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:60:24
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:72:24
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/fm/fm_waveform.rs:95:24
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:106:24
[INFO] [stdout]     |
[INFO] [stdout] 106 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:124:24
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:142:24
[INFO] [stdout]     |
[INFO] [stdout] 142 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/sound/instruments/fm/fm_waveform.rs:158:24
[INFO] [stdout]     |
[INFO] [stdout] 158 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/sound/instruments/wavetable/wavetable_instance.rs:24:35
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let definition = unsafe { NO_SOUND_DEFINITION.assume_init_ref().clone() };
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/sound/sound_engine.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | /         NO_SOUND_DEFINITION.write(std::sync::Arc::new(WavetableDefinition {
[INFO] [stdout] 37 | |             data: Box::new([0, 0]),
[INFO] [stdout] 38 | |             envelope: EnvelopeDefinition::default(),
[INFO] [stdout] 39 | |             interpolator: crate::audio::instruments::index_interpolator::IndexInterpolator::Truncate,
[INFO] [stdout] 40 | |         }));
[INFO] [stdout]    | |___________^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.23s
[INFO] running `Command { std: "docker" "inspect" "8b11f1dcc0e8b509a81959484a83b67ceb94a02995e351ec33fb9eca508b97fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8b11f1dcc0e8b509a81959484a83b67ceb94a02995e351ec33fb9eca508b97fd", kill_on_drop: false }`
[INFO] [stdout] 8b11f1dcc0e8b509a81959484a83b67ceb94a02995e351ec33fb9eca508b97fd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1.91.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1d5627e248ea1e026e71fb1751f95d24a41b901345f42a94f5534db37b47367e
[INFO] running `Command { std: "docker" "start" "-a" "1d5627e248ea1e026e71fb1751f95d24a41b901345f42a94f5534db37b47367e", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: pikuseru v0.1.1 (/opt/rustwide/workdir) ignoring invalid dependency `clippy` which is missing a lib target
[INFO] [stderr] warning: unused variable: `target_os`
[INFO] [stderr]   --> build.rs:25:9
[INFO] [stderr]    |
[INFO] [stderr] 25 |     let target_os = env::var("TARGET").unwrap();
[INFO] [stderr]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_os`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `pikuseru` (build script) generated 1 warning
[INFO] [stderr] warning: unused import: `std::fs::File`
[INFO] [stderr]   --> src/core/mod.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::fs::File;
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::path::Path`
[INFO] [stderr]   --> src/core/mod.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use std::path::Path;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fs::read`
[INFO] [stderr]  --> src/cartridge/code.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::fs::read;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]    --> src/plugins/lua_plugin.rs:615:15
[INFO] [stderr]     |
[INFO] [stderr] 615 |     use log::{error};
[INFO] [stderr]     |               ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]    --> src/plugins/python_plugin.rs:514:15
[INFO] [stderr]     |
[INFO] [stderr] 514 |     use log::{error};
[INFO] [stderr]     |               ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `borrow::Borrow`
[INFO] [stderr]  --> src/plugins/rhai_plugin.rs:4:35
[INFO] [stderr]   |
[INFO] [stderr] 4 |     use std::{sync::{Arc, Mutex}, borrow::Borrow};
[INFO] [stderr]   |                                   ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `debug` and `error`
[INFO] [stderr]  --> src/plugins/rhai_plugin.rs:6:15
[INFO] [stderr]   |
[INFO] [stderr] 6 |     use log::{error, info, debug};
[INFO] [stderr]   |               ^^^^^        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `flip_x`
[INFO] [stderr]     --> src/gfx/mod.rs:1420:29
[INFO] [stderr]      |
[INFO] [stderr] 1420 | ...                   flip_x: bool,
[INFO] [stderr]      |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_flip_x`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `flip_y`
[INFO] [stderr]     --> src/gfx/mod.rs:1421:29
[INFO] [stderr]      |
[INFO] [stderr] 1421 | ...                   flip_y: bool) -> (i32, i32) {
[INFO] [stderr]      |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_flip_y`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `values`
[INFO] [stderr]     --> src/gfx/mod.rs:1513:39
[INFO] [stderr]      |
[INFO] [stderr] 1513 |     pub fn poke(&mut self, addr: u32, values: Vec<u8>) {
[INFO] [stderr]      |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_values`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `dest_addr`
[INFO] [stderr]     --> src/gfx/mod.rs:1524:30
[INFO] [stderr]      |
[INFO] [stderr] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stderr]      |                              ^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]      |
[INFO] [stderr] 1524 |     pub fn memcpy(&mut self, _dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stderr]      |                              +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stderr]      |
[INFO] [stderr] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stderr] 1524 +     pub fn memcpy(&mut self, MINOR_VERSION: u32, source_addr: u32, len: u32) {/*
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `source_addr`
[INFO] [stderr]     --> src/gfx/mod.rs:1524:46
[INFO] [stderr]      |
[INFO] [stderr] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stderr]      |                                              ^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]      |
[INFO] [stderr] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, _source_addr: u32, len: u32) {/*
[INFO] [stderr]      |                                              +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stderr]      |
[INFO] [stderr] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stderr] 1524 +     pub fn memcpy(&mut self, dest_addr: u32, MINOR_VERSION: u32, len: u32) {/*
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `len`
[INFO] [stderr]     --> src/gfx/mod.rs:1524:64
[INFO] [stderr]      |
[INFO] [stderr] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stderr]      |                                                                ^^^
[INFO] [stderr]      |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]      |
[INFO] [stderr] 1524 |     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, _len: u32) {/*
[INFO] [stderr]      |                                                                +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MINOR_VERSION`
[INFO] [stderr]      |
[INFO] [stderr] 1524 -     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, len: u32) {/*
[INFO] [stderr] 1524 +     pub fn memcpy(&mut self, dest_addr: u32, source_addr: u32, MINOR_VERSION: u32) {/*
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `filename`
[INFO] [stderr]    --> src/core/mod.rs:504:36
[INFO] [stderr]     |
[INFO] [stderr] 504 |     pub fn start_record(&mut self, filename: &str) {
[INFO] [stderr]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `filename`
[INFO] [stderr]    --> src/core/mod.rs:607:34
[INFO] [stderr]     |
[INFO] [stderr] 607 |     pub fn screenshot(&mut self, filename: &str) {
[INFO] [stderr]     |                                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `contexts`
[INFO] [stderr]   --> src/plugins/rpython_plugin.rs:22:21
[INFO] [stderr]    |
[INFO] [stderr] 22 |                     contexts: Arc<Mutex<Contexts>>,
[INFO] [stderr]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contexts`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `info`
[INFO] [stderr]   --> src/plugins/rpython_plugin.rs:23:21
[INFO] [stderr]    |
[INFO] [stderr] 23 |                     info: Arc<Mutex<Info>>,
[INFO] [stderr]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `screen`
[INFO] [stderr]   --> src/plugins/rpython_plugin.rs:24:21
[INFO] [stderr]    |
[INFO] [stderr] 24 |                     screen: Arc<Mutex<Screen>>,
[INFO] [stderr]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `audio`
[INFO] [stderr]   --> src/plugins/rpython_plugin.rs:25:21
[INFO] [stderr]    |
[INFO] [stderr] 25 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stderr]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `contexts`
[INFO] [stderr]   --> src/plugins/rhai_plugin.rs:30:21
[INFO] [stderr]    |
[INFO] [stderr] 30 |                     contexts: Arc<Mutex<Contexts>>,
[INFO] [stderr]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contexts`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `info`
[INFO] [stderr]   --> src/plugins/rhai_plugin.rs:31:21
[INFO] [stderr]    |
[INFO] [stderr] 31 |                     info: Arc<Mutex<Info>>,
[INFO] [stderr]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `audio`
[INFO] [stderr]   --> src/plugins/rhai_plugin.rs:33:21
[INFO] [stderr]    |
[INFO] [stderr] 33 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stderr]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `result`
[INFO] [stderr]   --> src/plugins/rhai_plugin.rs:64:17
[INFO] [stderr]    |
[INFO] [stderr] 64 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_init", ());
[INFO] [stderr]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `result`
[INFO] [stderr]   --> src/plugins/rhai_plugin.rs:70:17
[INFO] [stderr]    |
[INFO] [stderr] 70 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_draw", ());
[INFO] [stderr]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `result`
[INFO] [stderr]   --> src/plugins/rhai_plugin.rs:76:17
[INFO] [stderr]    |
[INFO] [stderr] 76 |             let result = self.engine.call_fn::<bool>(&mut self.scope, &self.ast.as_mut().unwrap(), "_update", ());
[INFO] [stderr]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `info`
[INFO] [stderr]   --> src/plugins/wasm_plugin.rs:65:21
[INFO] [stderr]    |
[INFO] [stderr] 65 |                     info: Arc<Mutex<Info>>,
[INFO] [stderr]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `audio`
[INFO] [stderr]   --> src/plugins/wasm_plugin.rs:67:21
[INFO] [stderr]    |
[INFO] [stderr] 67 |                     audio: Arc<Mutex<AudioCommandBuffer>>) -> Result<()> {
[INFO] [stderr]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_audio`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `add`
[INFO] [stderr]    --> src/plugins/wasm_plugin.rs:197:17
[INFO] [stderr]     |
[INFO] [stderr] 197 |             let add = Func::wrap(&mut store, |a: i32, b: i32| -> i32 { a + b });
[INFO] [stderr]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_add`
[INFO] [stderr] 
[INFO] [stderr] warning: function `check` is never used
[INFO] [stderr]  --> src/input/mouse_state.rs:3:1
[INFO] [stderr]   |
[INFO] [stderr] 3 | #[repr(transparent)]
[INFO] [stderr]   | ^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_valid` is never used
[INFO] [stderr]   --> src/contexts/input_context.rs:12:8
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl RawInputState {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] 12 |     fn is_valid(self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_valid` is never used
[INFO] [stderr]   --> src/contexts/input_context.rs:22:8
[INFO] [stderr]    |
[INFO] [stderr] 21 | impl RawMouseState {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] 22 |     fn is_valid(self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/plugins/wasm_plugin.rs:230:13
[INFO] [stderr]     |
[INFO] [stderr] 230 |             self.init_fn.unwrap().call(&mut store, ());
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 230 |             let _ = self.init_fn.unwrap().call(&mut store, ());
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/plugins/wasm_plugin.rs:237:13
[INFO] [stderr]     |
[INFO] [stderr] 237 |             self.draw_fn.unwrap().call(&mut store, ());
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 237 |             let _ = self.draw_fn.unwrap().call(&mut store, ());
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/plugins/wasm_plugin.rs:244:13
[INFO] [stderr]     |
[INFO] [stderr] 244 |             self.update_fn.unwrap().call(&mut store, ());
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 244 |             let _ = self.update_fn.unwrap().call(&mut store, ());
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/audio/notes/note.rs:98:9
[INFO] [stderr]     |
[INFO] [stderr]  98 | /         NOTES_LUT.write(std::array::from_fn(|index| {
[INFO] [stderr]  99 | |             // C1 is 45 notes away from A4. (69 - 45 = 24)
[INFO] [stderr] 100 | |             let index = index + 24;
[INFO] [stderr] ...   |
[INFO] [stderr] 109 | |             Note { name, frequency }
[INFO] [stderr] 110 | |         }));
[INFO] [stderr]     | |___________^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/audio/notes/note.rs:117:21
[INFO] [stderr]     |
[INFO] [stderr] 117 |         let notes = NOTES_LUT.assume_init_ref();
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]   --> src/sound/instruments/fm/fm_waveform.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 12 | /         SIN_LUT.write(std::array::from_fn(|index| {
[INFO] [stderr] 13 | |             let phase = (TAU * index as f32) / LUT_FULL_LEN as f32;
[INFO] [stderr] 14 | |             let phase = phase + (PI / LUT_FULL_LEN as f32); //Offset it slightly to break symmetry
[INFO] [stderr] ...  |
[INFO] [stderr] 17 | |         }));
[INFO] [stderr]    | |___________^ mutable reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/sound/instruments/fm/fm_waveform.rs:60:24
[INFO] [stderr]    |
[INFO] [stderr] 60 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/sound/instruments/fm/fm_waveform.rs:72:24
[INFO] [stderr]    |
[INFO] [stderr] 72 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/sound/instruments/fm/fm_waveform.rs:84:24
[INFO] [stderr]    |
[INFO] [stderr] 84 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/sound/instruments/fm/fm_waveform.rs:95:24
[INFO] [stderr]    |
[INFO] [stderr] 95 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/sound/instruments/fm/fm_waveform.rs:106:24
[INFO] [stderr]     |
[INFO] [stderr] 106 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/sound/instruments/fm/fm_waveform.rs:124:24
[INFO] [stderr]     |
[INFO] [stderr] 124 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/sound/instruments/fm/fm_waveform.rs:142:24
[INFO] [stderr]     |
[INFO] [stderr] 142 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/sound/instruments/fm/fm_waveform.rs:158:24
[INFO] [stderr]     |
[INFO] [stderr] 158 |     let lut = unsafe { SIN_LUT.assume_init_ref() };
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/sound/instruments/wavetable/wavetable_instance.rs:24:35
[INFO] [stderr]    |
[INFO] [stderr] 24 |         let definition = unsafe { NO_SOUND_DEFINITION.assume_init_ref().clone() };
[INFO] [stderr]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]   --> src/sound/sound_engine.rs:36:9
[INFO] [stderr]    |
[INFO] [stderr] 36 | /         NO_SOUND_DEFINITION.write(std::sync::Arc::new(WavetableDefinition {
[INFO] [stderr] 37 | |             data: Box::new([0, 0]),
[INFO] [stderr] 38 | |             envelope: EnvelopeDefinition::default(),
[INFO] [stderr] 39 | |             interpolator: crate::audio::instruments::index_interpolator::IndexInterpolator::Truncate,
[INFO] [stderr] 40 | |         }));
[INFO] [stderr]    | |___________^ mutable reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::iter::FromIterator`
[INFO] [stderr]    --> src/gfx/sprite.rs:160:9
[INFO] [stderr]     |
[INFO] [stderr] 160 |     use std::iter::FromIterator;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fs::File`
[INFO] [stderr]   --> src/core/mod.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::fs::File;
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/gfx/sprite.rs:204:13
[INFO] [stderr]     |
[INFO] [stderr] 204 |         let mut s = Sprite::new(original_sprite);
[INFO] [stderr]     |             ----^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `pikuseru` (lib) generated 47 warnings (run `cargo fix --lib -p pikuseru` to apply 10 suggestions)
[INFO] [stderr] warning: `pikuseru` (lib test) generated 49 warnings (46 duplicates) (run `cargo fix --lib -p pikuseru --tests` to apply 3 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.36s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/pikuseru-317b149232a19a01)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test audio::tracker::chain::tests::test_chain_count_full ... ok
[INFO] [stdout] test audio::tracker::chain::tests::test_chain_count_separated ... ok
[INFO] [stdout] test gfx::sprite::tests::test_sprite_flags ... ok
[INFO] [stdout] test audio::tracker::chain::tests::test_chain_count_empty ... ok
[INFO] [stdout] test gfx::sprite::tests::test_sprite_flags2 ... ok
[INFO] [stdout] test gfx::sprite::tests::test_sprite_flip_x ... ok
[INFO] [stdout] test input::mouse_state::tests::test_mouse_state ... ok
[INFO] [stdout] test input::mouse_state::tests::test_mouse_state_deltas ... ok
[INFO] [stderr]      Running unittests src/bin/audio_test.rs (/opt/rustwide/target/debug/deps/audio_test-3a6916a49570f985)
[INFO] [stdout] test audio::notes::note::tests::test_from_name_octave ... ok
[INFO] [stderr]    Doc-tests pikuseru
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1d5627e248ea1e026e71fb1751f95d24a41b901345f42a94f5534db37b47367e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1d5627e248ea1e026e71fb1751f95d24a41b901345f42a94f5534db37b47367e", kill_on_drop: false }`
[INFO] [stdout] 1d5627e248ea1e026e71fb1751f95d24a41b901345f42a94f5534db37b47367e
