This commit was authored by running the following Nushell script, using
the `nu` binary and the lovely `fastmod` tool:
```nushell
# Copy-pasted from the OP in [`gpuweb`#4838](https://github.com/gpuweb/gpuweb/pull/4838).
let renames_table = '
Type Old New Used in
dict GPUImageDataLayout GPUTexelCopyBufferLayout "writeTexture,
parent type of ↙"
dict GPUImageCopyBuffer "GPUTexelCopyBufferInfo
extends ↑" T2B, B2T
dict GPUImageCopyTexture GPUTexelCopyTextureInfo T2B, B2T, T2T, writeTexture
dict GPUImageCopyTextureTagged "GPUCopyExternalImageDestInfo
extends ↑" copyExternalImageToTexture
dict GPUImageCopyExternalImage GPUCopyExternalImageSourceInfo copyExternalImageToTexture
union GPUImageCopyExternalImageSource GPUCopyExternalImageSource member of ↖
'
let renames_table = $renames_table
| from tsv
| select 'Old ' 'New '
| rename old new
| update new { $in | lines | get 0 } # only the first line has the renamed symbol identifier
| update old { strip_gpu_prefix | str trim }
| update new { strip_gpu_prefix | str trim }
| sort-by old | reverse # Replace most specific symbol names first (some have the same "word segments" but with fewer segments)
def strip_gpu_prefix []: string -> string {
$in | str replace --regex '^GPU' ''
}
# Rename image APIs.
for entry in $renames_table {
fastmod --accept-all --fixed-strings $entry.old $entry.new --iglob '!CHANGELOG.md' --iglob "!xtask/src/vendor_web_sys.rs" --iglob '!wgpu/src/backend/webgpu/webgpu_sys/' --iglob '!deno_webgpu/' --iglob '!wgpu/src/backend/webgpu.rs'
}
cargo fmt
```
…and cleaning up `deno_webgpu/`'s Rust compilation errors.
We already lowered the function expression if it's a normal in argument; no need to do it again. This eliminates an unused variable and expression. With chained function calls, this could lead to a lot of waste.
There's still an extra unused expression in the case of an out/inout argument; ideally we'd remove these expressions, but it might be tricky.
Fixes#6602
* Improve binding error
* Introduce a new BindingTypeName enum
* Fix formatting
* Use From trait instead of map functions for BindingTypeName
* Update CHANGELOG.md
Previously we only checked whether the outermost array's subtype was a
Matrix when determining whether to add ColMajor and MatrixStride
decorations, meaning arrays of arrays of matrices would not be
decorated.
In MSL output, avoid undefined behavior due to unbounded loops by
adding an unpredictable, never-actually-taken `break` to the bottom of
each loop body, rather than adding an unpredictable,
never-actually-taken branch over each loop.
This will probably have more of a performance impact, because it
affects each iteration of the loop, but unlike branching over the
loop, which leaves infinite loops (and thus undefined behavior) in the
output, this actually ensures that no loop presented to Metal is
unbounded, so that there is no undefined behavior present that the
optimizer could use to make unwelcome inferences.
Fixes#6528.