[INFO] cloning repository https://github.com/jyi2ya/gpu-zhenhaowan [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jyi2ya/gpu-zhenhaowan" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjyi2ya%2Fgpu-zhenhaowan", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjyi2ya%2Fgpu-zhenhaowan'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4a53c80697c155b79ea09f64eefc138a92b22b54 [INFO] testing jyi2ya/gpu-zhenhaowan against try#16fbf98f22730e073c09e7b03f0eafb87a295545 for pr-145628 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjyi2ya%2Fgpu-zhenhaowan" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/jyi2ya/gpu-zhenhaowan [INFO] finished tweaking git repo https://github.com/jyi2ya/gpu-zhenhaowan [INFO] tweaked toml for git repo https://github.com/jyi2ya/gpu-zhenhaowan written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jyi2ya/gpu-zhenhaowan on toolchain 16fbf98f22730e073c09e7b03f0eafb87a295545 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+16fbf98f22730e073c09e7b03f0eafb87a295545" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/jyi2ya/gpu-zhenhaowan 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" "+16fbf98f22730e073c09e7b03f0eafb87a295545" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+16fbf98f22730e073c09e7b03f0eafb87a295545" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 66b6d7e34de16389b7fd0ed146c68740eb903b1dd93cad299929271870755ba3 [INFO] running `Command { std: "docker" "start" "-a" "66b6d7e34de16389b7fd0ed146c68740eb903b1dd93cad299929271870755ba3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "66b6d7e34de16389b7fd0ed146c68740eb903b1dd93cad299929271870755ba3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "66b6d7e34de16389b7fd0ed146c68740eb903b1dd93cad299929271870755ba3", kill_on_drop: false }` [INFO] [stdout] 66b6d7e34de16389b7fd0ed146c68740eb903b1dd93cad299929271870755ba3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+16fbf98f22730e073c09e7b03f0eafb87a295545" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] d817601110af6cf5f8fb66528511a4f3bd5a5617c8af3958d0a2024465f0a65c [INFO] running `Command { std: "docker" "start" "-a" "d817601110af6cf5f8fb66528511a4f3bd5a5617c8af3958d0a2024465f0a65c", kill_on_drop: false }` [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Compiling libm v0.2.13 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling futures-core v0.3.31 [INFO] [stderr] Compiling zerocopy v0.8.24 [INFO] [stderr] Compiling getrandom v0.3.2 [INFO] [stderr] Compiling parking v2.2.1 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Compiling embassy-futures v0.1.1 [INFO] [stderr] Compiling spin v0.9.8 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling hashbrown v0.15.2 [INFO] [stderr] Compiling ahash v0.8.11 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling dirs-sys v0.4.1 [INFO] [stderr] Compiling portable-atomic v1.11.0 [INFO] [stderr] Compiling cubecl-common v0.5.0 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling futures-io v0.3.31 [INFO] [stderr] Compiling dirs v5.0.1 [INFO] [stderr] Compiling smallvec v1.15.0 [INFO] [stderr] Compiling rustversion v1.0.20 [INFO] [stderr] Compiling rand_core v0.9.3 [INFO] [stderr] Compiling prettyplease v0.2.32 [INFO] [stderr] Compiling float-ord v0.3.2 [INFO] [stderr] Compiling futures-lite v2.6.0 [INFO] [stderr] Compiling thiserror v2.0.12 [INFO] [stderr] Compiling cubecl-runtime v0.5.0 [INFO] [stderr] Compiling cubecl-macros v0.5.0 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Compiling naga v25.0.1 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling libloading v0.8.6 [INFO] [stderr] Compiling unicode-width v0.2.0 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling tracing-core v0.1.33 [INFO] [stderr] Compiling md5 v0.7.0 [INFO] [stderr] Compiling ash v0.38.0+1.3.281 [INFO] [stderr] Compiling syn v2.0.100 [INFO] [stderr] Compiling concurrent-queue v2.5.0 [INFO] [stderr] Compiling io-uring v0.7.4 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling parking_lot v0.12.3 [INFO] [stderr] Compiling codespan-reporting v0.12.0 [INFO] [stderr] Compiling wgpu-hal v25.0.1 [INFO] [stderr] Compiling compio-driver v0.7.0 [INFO] [stderr] Compiling event-listener v5.4.0 [INFO] [stderr] Compiling compio-buf v0.5.1 [INFO] [stderr] Compiling khronos-egl v6.0.0 [INFO] [stderr] Compiling crossbeam-queue v0.3.12 [INFO] [stderr] Compiling indexmap v2.9.0 [INFO] [stderr] Compiling crossbeam-channel v0.5.15 [INFO] [stderr] Compiling glow v0.16.0 [INFO] [stderr] Compiling litrs v0.4.1 [INFO] [stderr] Compiling profiling v1.0.16 [INFO] [stderr] Compiling wgpu-core v25.0.1 [INFO] [stderr] Compiling no-std-compat v0.2.0 [INFO] [stderr] Compiling event-listener-strategy v0.5.4 [INFO] [stderr] Compiling fixedbitset v0.4.2 [INFO] [stderr] Compiling async-task v4.7.1 [INFO] [stderr] Compiling async-channel v2.3.1 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Compiling stable-vec v0.4.1 [INFO] [stderr] Compiling type-map v0.5.0 [INFO] [stderr] Compiling wgpu v25.0.0 [INFO] [stderr] Compiling winnow v0.7.6 [INFO] [stderr] Compiling document-features v0.2.11 [INFO] [stderr] Compiling compio-log v0.1.0 [INFO] [stderr] Compiling toml_datetime v0.6.8 [INFO] [stderr] Compiling compio-fs v0.7.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling petgraph v0.6.5 [INFO] [stderr] Compiling cubecl-wgpu v0.5.0 [INFO] [stderr] Compiling rustix v1.0.5 [INFO] [stderr] Compiling os_pipe v1.2.1 [INFO] [stderr] Compiling linux-raw-sys v0.9.4 [INFO] [stderr] Compiling web-time v1.1.0 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling anyhow v1.0.98 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling ttf-parser v0.21.1 [INFO] [stderr] Compiling scope_timer v0.2.3 [INFO] [stderr] Compiling rand v0.9.1 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling ordered-float v4.6.0 [INFO] [stderr] Compiling num-complex v0.4.6 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling num-iter v0.1.45 [INFO] [stderr] Compiling fontdue v0.9.3 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling toml_edit v0.22.24 [INFO] [stderr] Compiling num v0.4.3 [INFO] [stderr] Compiling regex v1.11.1 [INFO] [stderr] Compiling sanitize-filename v0.5.0 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling bytemuck_derive v1.9.3 [INFO] [stderr] Compiling derive_more-impl v1.0.0 [INFO] [stderr] Compiling derive-new v0.6.0 [INFO] [stderr] Compiling variadics_please v1.1.0 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling proc-macro-crate v3.3.0 [INFO] [stderr] Compiling compio-macros v0.1.2 [INFO] [stderr] Compiling bytemuck v1.22.0 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling cubecl-macros-internal v0.5.0 [INFO] [stderr] Compiling derive_more v1.0.0 [INFO] [stderr] Compiling compio-io v0.6.0 [INFO] [stderr] Compiling half v2.6.0 [INFO] [stderr] Compiling bitflags v2.9.0 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling spirv v0.3.0+sdk-1.3.268.0 [INFO] [stderr] Compiling gpu-descriptor-types v0.2.0 [INFO] [stderr] Compiling gpu-alloc-types v0.3.0 [INFO] [stderr] Compiling wgpu-types v25.0.0 [INFO] [stderr] Compiling gpu-descriptor v0.3.1 [INFO] [stderr] Compiling gpu-alloc v0.6.0 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling rspirv v0.12.0+sdk-1.3.268.0 [INFO] [stderr] Compiling compio-runtime v0.7.0 [INFO] [stderr] Compiling compio-net v0.7.0 [INFO] [stderr] Compiling compio-process v0.4.0 [INFO] [stderr] Compiling cubecl-ir v0.5.0 [INFO] [stderr] Compiling compio v0.14.0 [INFO] [stderr] Compiling cubecl-opt v0.5.0 [INFO] [stderr] Compiling cubecl-core v0.5.0 [INFO] [stderr] Compiling cubecl-std v0.5.0 [INFO] [stderr] Compiling cubecl-reduce v0.5.0 [INFO] [stderr] Compiling cubecl-spirv v0.5.0 [INFO] [stderr] Compiling cubecl-linalg v0.5.0 [INFO] [stderr] Compiling wgpu-core-deps-windows-linux-android v25.0.0 [INFO] [stderr] Compiling cubecl v0.5.0 [INFO] [stderr] Compiling gpu-zhenhaowan v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/cpu.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | fn timer(label: &str) -> scope_timer::ScopeTimer { [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 4 | fn timer(label: &str) -> scope_timer::ScopeTimer<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 07s [INFO] running `Command { std: "docker" "inspect" "d817601110af6cf5f8fb66528511a4f3bd5a5617c8af3958d0a2024465f0a65c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d817601110af6cf5f8fb66528511a4f3bd5a5617c8af3958d0a2024465f0a65c", kill_on_drop: false }` [INFO] [stdout] d817601110af6cf5f8fb66528511a4f3bd5a5617c8af3958d0a2024465f0a65c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+16fbf98f22730e073c09e7b03f0eafb87a295545" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e1433e32eb6ad224d03c73f836dd0a6226fe42075a60bf69a00cc1b72973bda6 [INFO] running `Command { std: "docker" "start" "-a" "e1433e32eb6ad224d03c73f836dd0a6226fe42075a60bf69a00cc1b72973bda6", kill_on_drop: false }` [INFO] [stderr] Compiling gpu-zhenhaowan v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/cpu.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | fn timer(label: &str) -> scope_timer::ScopeTimer { [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 4 | fn timer(label: &str) -> scope_timer::ScopeTimer<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.79s [INFO] running `Command { std: "docker" "inspect" "e1433e32eb6ad224d03c73f836dd0a6226fe42075a60bf69a00cc1b72973bda6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e1433e32eb6ad224d03c73f836dd0a6226fe42075a60bf69a00cc1b72973bda6", kill_on_drop: false }` [INFO] [stdout] e1433e32eb6ad224d03c73f836dd0a6226fe42075a60bf69a00cc1b72973bda6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+16fbf98f22730e073c09e7b03f0eafb87a295545" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 67633ae5665a6869f900a87c750c7b79a0113b3252e0f00b7477272ea22c539b [INFO] running `Command { std: "docker" "start" "-a" "67633ae5665a6869f900a87c750c7b79a0113b3252e0f00b7477272ea22c539b", kill_on_drop: false }` [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/cpu.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | fn timer(label: &str) -> scope_timer::ScopeTimer { [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 4 | fn timer(label: &str) -> scope_timer::ScopeTimer<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: `gpu-zhenhaowan` (bin "gpu-zhenhaowan" test) generated 1 warning (run `cargo fix --bin "gpu-zhenhaowan" --tests` to apply 1 suggestion) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/gpu_zhenhaowan-239f28d5f82417ef) [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" "67633ae5665a6869f900a87c750c7b79a0113b3252e0f00b7477272ea22c539b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "67633ae5665a6869f900a87c750c7b79a0113b3252e0f00b7477272ea22c539b", kill_on_drop: false }` [INFO] [stdout] 67633ae5665a6869f900a87c750c7b79a0113b3252e0f00b7477272ea22c539b