Backed out 2 changesets (bug 1590167, bug 1575008) for lints failures at mapped_hyph.h on a CLOSED TREE.
authorGurzau Raul <rgurzau@mozilla.com>
Wed, 13 Nov 2019 21:38:23 +0200
changeset 501766 6387f7830d6646e39f8d1102d9d436985c2546c2
parent 501765 909f5eb0cc4807fb607a7ec225d3d1389c3bcf49
child 501767 f7c199feb6c60812b4e41ea944f4c13a6b2b80a7
push id114172
push userdluca@mozilla.com
push dateTue, 19 Nov 2019 11:31:10 +0000
treeherdermozilla-inbound@b5c5ba07d3db [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1590167, 1575008
milestone72.0a1
backs out4d16c3d62cfc0503075206bccfbd3b32ad396e64
97b8c3759aae60e6513fe0c2c7e399c0814081b3
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out 2 changesets (bug 1590167, bug 1575008) for lints failures at mapped_hyph.h on a CLOSED TREE. Backed out changeset 4d16c3d62cfc (bug 1575008) Backed out changeset 97b8c3759aae (bug 1590167)
.cargo/config.in
.clang-format-ignore
Cargo.lock
Cargo.toml
dom/base/nsGlobalWindowInner.cpp
dom/base/nsGlobalWindowInner.h
dom/webgpu/Adapter.cpp
dom/webgpu/Adapter.h
dom/webgpu/Device.cpp
dom/webgpu/Device.h
dom/webgpu/Instance.cpp
dom/webgpu/Instance.h
dom/webgpu/InstanceProvider.cpp
dom/webgpu/InstanceProvider.h
dom/webgpu/ObjectModel.h
dom/webgpu/ffi/moz.build
dom/webgpu/ffi/wgpu.h
dom/webgpu/ipc/PWebGPU.ipdl
dom/webgpu/ipc/WebGPUChild.cpp
dom/webgpu/ipc/WebGPUChild.h
dom/webgpu/ipc/WebGPUParent.cpp
dom/webgpu/ipc/WebGPUParent.h
dom/webgpu/ipc/WebGPUSerialize.h
dom/webgpu/ipc/WebGPUTypes.h
dom/webgpu/mochitest/mochitest.ini
dom/webgpu/mochitest/test_device_creation.html
dom/webgpu/moz.build
dom/webgpu/thread/WebGPUThreading.cpp
dom/webgpu/thread/WebGPUThreading.h
dom/webgpu/thread/moz.build
dom/webgpu/wgpu-native/Cargo.toml
dom/webgpu/wgpu-native/cbindgen.toml
dom/webgpu/wgpu-native/src/binding_model.rs
dom/webgpu/wgpu-native/src/command/allocator.rs
dom/webgpu/wgpu-native/src/command/bind.rs
dom/webgpu/wgpu-native/src/command/compute.rs
dom/webgpu/wgpu-native/src/command/mod.rs
dom/webgpu/wgpu-native/src/command/render.rs
dom/webgpu/wgpu-native/src/command/transfer.rs
dom/webgpu/wgpu-native/src/conv.rs
dom/webgpu/wgpu-native/src/device.rs
dom/webgpu/wgpu-native/src/hub.rs
dom/webgpu/wgpu-native/src/id.rs
dom/webgpu/wgpu-native/src/instance.rs
dom/webgpu/wgpu-native/src/lib.rs
dom/webgpu/wgpu-native/src/pipeline.rs
dom/webgpu/wgpu-native/src/resource.rs
dom/webgpu/wgpu-native/src/swap_chain.rs
dom/webgpu/wgpu-native/src/track/buffer.rs
dom/webgpu/wgpu-native/src/track/mod.rs
dom/webgpu/wgpu-native/src/track/range.rs
dom/webgpu/wgpu-native/src/track/texture.rs
dom/webgpu/wgpu-remote/Cargo.toml
dom/webgpu/wgpu-remote/cbindgen.toml
dom/webgpu/wgpu-remote/src/lib.rs
dom/webgpu/wgpu-remote/src/server.rs
dom/webidl/WebGPU.webidl
gfx/ipc/GPUParent.cpp
gfx/layers/ipc/CompositorBridgeChild.cpp
gfx/layers/ipc/CompositorBridgeChild.h
gfx/layers/ipc/CompositorBridgeParent.cpp
gfx/layers/ipc/CompositorBridgeParent.h
gfx/layers/ipc/ContentCompositorBridgeParent.cpp
gfx/layers/ipc/ContentCompositorBridgeParent.h
gfx/layers/ipc/PCompositorBridge.ipdl
gfx/thebes/gfxPlatform.cpp
intl/hyphenation/glue/hnjalloc.h
intl/hyphenation/glue/hnjstdio.cpp
intl/hyphenation/glue/moz.build
intl/hyphenation/glue/nsHyphenationManager.cpp
intl/hyphenation/glue/nsHyphenator.cpp
intl/hyphenation/glue/nsHyphenator.h
intl/hyphenation/hyphen/AUTHORS
intl/hyphenation/hyphen/COPYING
intl/hyphenation/hyphen/COPYING.LGPL
intl/hyphenation/hyphen/COPYING.MPL
intl/hyphenation/hyphen/NEWS
intl/hyphenation/hyphen/README
intl/hyphenation/hyphen/README.compound
intl/hyphenation/hyphen/README.hyphen
intl/hyphenation/hyphen/README.nonstandard
intl/hyphenation/hyphen/hyphen.c
intl/hyphenation/hyphen/hyphen.h
intl/hyphenation/hyphen/moz.build
intl/locales/af/hyphenation/hyph_af.hyf
intl/locales/bg/hyphenation/hyph_bg.hyf
intl/locales/ca/hyphenation/hyph_ca.hyf
intl/locales/cy/hyphenation/hyph_cy.hyf
intl/locales/da/hyphenation/hyph_da.hyf
intl/locales/de-1901/hyphenation/hyph_de-1901.hyf
intl/locales/de-1996/hyphenation/hyph_de-1996.hyf
intl/locales/de-CH/hyphenation/hyph_de-CH.hyf
intl/locales/en-US/hyphenation/hyph_en_US.hyf
intl/locales/eo/hyphenation/hyph_eo.hyf
intl/locales/es/hyphenation/hyph_es.hyf
intl/locales/et/hyphenation/hyph_et.hyf
intl/locales/fi/hyphenation/hyph_fi.hyf
intl/locales/fr/hyphenation/hyph_fr.hyf
intl/locales/gl/hyphenation/hyph_gl.hyf
intl/locales/hr/hyphenation/hyph_hr.hyf
intl/locales/hsb/hyphenation/hyph_hsb.dic
intl/locales/hsb/hyphenation/hyph_hsb.hyf
intl/locales/hu/hyphenation/hyph_hu.hyf
intl/locales/ia/hyphenation/hyph_ia.hyf
intl/locales/is/hyphenation/hyph_is.hyf
intl/locales/it/hyphenation/hyph_it.hyf
intl/locales/kmr/hyphenation/hyph_kmr.hyf
intl/locales/la/hyphenation/hyph_la.hyf
intl/locales/lt/hyphenation/hyph_lt.hyf
intl/locales/mn/hyphenation/hyph_mn.hyf
intl/locales/moz.build
intl/locales/nb/hyphenation/hyph_nb.hyf
intl/locales/nl/hyphenation/hyph_nl.hyf
intl/locales/nn/hyphenation/hyph_nn.hyf
intl/locales/pl/hyphenation/hyph_pl.hyf
intl/locales/pt/hyphenation/hyph_pt.hyf
intl/locales/ru/hyphenation/hyph_ru.hyf
intl/locales/sh/hyphenation/hyph_sh.hyf
intl/locales/sl/hyphenation/hyph_sl.hyf
intl/locales/sv/hyphenation/hyph_sv.hyf
intl/locales/tr/hyphenation/hyph_tr.hyf
intl/locales/uk/hyphenation/hyph_uk.hyf
intl/moz.build
layout/style/RunCbindgen.py
servo/components/style/Cargo.toml
testing/testsuite-targets.mk
third_party/rust/arrayvec/.cargo-checksum.json
third_party/rust/arrayvec/Cargo.toml
third_party/rust/arrayvec/README.rst
third_party/rust/arrayvec/benches/extend.rs
third_party/rust/arrayvec/build.rs
third_party/rust/arrayvec/src/array.rs
third_party/rust/arrayvec/src/array_string.rs
third_party/rust/arrayvec/src/char.rs
third_party/rust/arrayvec/src/lib.rs
third_party/rust/arrayvec/src/maybe_uninit.rs
third_party/rust/arrayvec/src/maybe_uninit_nodrop.rs
third_party/rust/arrayvec/src/maybe_uninit_stable.rs
third_party/rust/arrayvec/src/range.rs
third_party/rust/arrayvec/tests/serde.rs
third_party/rust/arrayvec/tests/tests.rs
third_party/rust/ash/.cargo-checksum.json
third_party/rust/ash/Cargo.toml
third_party/rust/ash/output
third_party/rust/ash/src/allocator.rs
third_party/rust/ash/src/device.rs
third_party/rust/ash/src/entry.rs
third_party/rust/ash/src/extensions/experimental/amd.rs
third_party/rust/ash/src/extensions/experimental/mod.rs
third_party/rust/ash/src/extensions/ext/debug_marker.rs
third_party/rust/ash/src/extensions/ext/debug_report.rs
third_party/rust/ash/src/extensions/ext/debug_utils.rs
third_party/rust/ash/src/extensions/ext/mod.rs
third_party/rust/ash/src/extensions/khr/android_surface.rs
third_party/rust/ash/src/extensions/khr/display_swapchain.rs
third_party/rust/ash/src/extensions/khr/mod.rs
third_party/rust/ash/src/extensions/khr/surface.rs
third_party/rust/ash/src/extensions/khr/swapchain.rs
third_party/rust/ash/src/extensions/khr/wayland_surface.rs
third_party/rust/ash/src/extensions/khr/win32_surface.rs
third_party/rust/ash/src/extensions/khr/xcb_surface.rs
third_party/rust/ash/src/extensions/khr/xlib_surface.rs
third_party/rust/ash/src/extensions/mod.rs
third_party/rust/ash/src/extensions/mvk/ios_surface.rs
third_party/rust/ash/src/extensions/mvk/macos_surface.rs
third_party/rust/ash/src/extensions/mvk/mod.rs
third_party/rust/ash/src/extensions/nv/mesh_shader.rs
third_party/rust/ash/src/extensions/nv/mod.rs
third_party/rust/ash/src/extensions/nv/ray_tracing.rs
third_party/rust/ash/src/instance.rs
third_party/rust/ash/src/lib.rs
third_party/rust/ash/src/prelude.rs
third_party/rust/ash/src/util.rs
third_party/rust/ash/src/version.rs
third_party/rust/ash/src/vk.rs
third_party/rust/ash/tests/constant_size_arrays.rs
third_party/rust/ash/tests/display.rs
third_party/rust/atom/.cargo-checksum.json
third_party/rust/atom/Cargo.toml
third_party/rust/atom/LICENSE
third_party/rust/atom/examples/fifo.rs
third_party/rust/atom/examples/simple.rs
third_party/rust/atom/readme.md
third_party/rust/atom/src/lib.rs
third_party/rust/atom/tests/atom.rs
third_party/rust/backtrace/.cargo-checksum.json
third_party/rust/backtrace/Cargo.lock
third_party/rust/backtrace/Cargo.toml
third_party/rust/backtrace/README.md
third_party/rust/backtrace/appveyor.yml
third_party/rust/backtrace/benches/benchmarks.rs
third_party/rust/backtrace/ci/android-sdk.sh
third_party/rust/backtrace/ci/docker/arm-linux-androideabi/Dockerfile
third_party/rust/backtrace/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
third_party/rust/backtrace/ci/run-docker.sh
third_party/rust/backtrace/ci/runtest-android.rs
third_party/rust/backtrace/examples/raw.rs
third_party/rust/backtrace/src/backtrace/dbghelp.rs
third_party/rust/backtrace/src/backtrace/libunwind.rs
third_party/rust/backtrace/src/backtrace/mod.rs
third_party/rust/backtrace/src/backtrace/noop.rs
third_party/rust/backtrace/src/backtrace/unix_backtrace.rs
third_party/rust/backtrace/src/capture.rs
third_party/rust/backtrace/src/dbghelp.rs
third_party/rust/backtrace/src/dylib.rs
third_party/rust/backtrace/src/lib.rs
third_party/rust/backtrace/src/print.rs
third_party/rust/backtrace/src/print/fuchsia.rs
third_party/rust/backtrace/src/symbolize/coresymbolication.rs
third_party/rust/backtrace/src/symbolize/dbghelp.rs
third_party/rust/backtrace/src/symbolize/dladdr.rs
third_party/rust/backtrace/src/symbolize/dladdr_resolve.rs
third_party/rust/backtrace/src/symbolize/gimli.rs
third_party/rust/backtrace/src/symbolize/libbacktrace.rs
third_party/rust/backtrace/src/symbolize/mod.rs
third_party/rust/backtrace/src/symbolize/noop.rs
third_party/rust/backtrace/src/types.rs
third_party/rust/backtrace/src/windows.rs
third_party/rust/backtrace/tests/accuracy/auxiliary.rs
third_party/rust/backtrace/tests/accuracy/main.rs
third_party/rust/backtrace/tests/concurrent-panics.rs
third_party/rust/backtrace/tests/long_fn_name.rs
third_party/rust/backtrace/tests/skip_inner_frames.rs
third_party/rust/backtrace/tests/smoke.rs
third_party/rust/blake2b_simd/.cargo-checksum.json
third_party/rust/blake2b_simd/Cargo.toml
third_party/rust/block/.cargo-checksum.json
third_party/rust/block/Cargo.toml
third_party/rust/block/README.md
third_party/rust/block/src/lib.rs
third_party/rust/block/src/test_utils.rs
third_party/rust/cc/.cargo-checksum.json
third_party/rust/cc/Cargo.lock
third_party/rust/cc/Cargo.toml
third_party/rust/cc/README.md
third_party/rust/cc/azure-pipelines.yml
third_party/rust/cc/ci/azure-install-rust.yml
third_party/rust/cc/ci/azure-steps.yml
third_party/rust/cc/src/bin/gcc-shim.rs
third_party/rust/cc/src/com.rs
third_party/rust/cc/src/lib.rs
third_party/rust/cc/src/setup_config.rs
third_party/rust/cc/src/winapi.rs
third_party/rust/cc/src/windows_registry.rs
third_party/rust/cc/tests/cc_env.rs
third_party/rust/cc/tests/cflags.rs
third_party/rust/cc/tests/cxxflags.rs
third_party/rust/cc/tests/support/mod.rs
third_party/rust/cc/tests/test.rs
third_party/rust/cocoa/.cargo-checksum.json
third_party/rust/cocoa/COPYRIGHT
third_party/rust/cocoa/Cargo.lock
third_party/rust/cocoa/Cargo.toml
third_party/rust/cocoa/LICENSE-APACHE
third_party/rust/cocoa/LICENSE-MIT
third_party/rust/cocoa/README.md
third_party/rust/cocoa/examples/color.rs
third_party/rust/cocoa/examples/fullscreen.rs
third_party/rust/cocoa/examples/hello_world.rs
third_party/rust/cocoa/examples/tab_view.rs
third_party/rust/cocoa/src/appkit.rs
third_party/rust/cocoa/src/base.rs
third_party/rust/cocoa/src/foundation.rs
third_party/rust/cocoa/src/lib.rs
third_party/rust/cocoa/src/macros.rs
third_party/rust/cocoa/src/quartzcore.rs
third_party/rust/cocoa/tests/foundation.rs
third_party/rust/colorful/.cargo-checksum.json
third_party/rust/colorful/Cargo.toml
third_party/rust/colorful/CodeOfConduct.md
third_party/rust/colorful/README.md
third_party/rust/colorful/license
third_party/rust/colorful/rustfmt.toml
third_party/rust/colorful/src/core/color_string.rs
third_party/rust/colorful/src/core/colors.rs
third_party/rust/colorful/src/core/hsl.rs
third_party/rust/colorful/src/core/mod.rs
third_party/rust/colorful/src/core/rgb.rs
third_party/rust/colorful/src/core/style.rs
third_party/rust/colorful/src/core/symbols.rs
third_party/rust/colorful/src/lib.rs
third_party/rust/colorful/tests/test_all_color.rs
third_party/rust/colorful/tests/test_animation.rs
third_party/rust/colorful/tests/test_basic.rs
third_party/rust/colorful/tests/test_extra.rs
third_party/rust/colorful/tests/test_gradient.rs
third_party/rust/colorful/tests/test_hsl.rs
third_party/rust/copyless/.cargo-checksum.json
third_party/rust/copyless/CHANGELOG.md
third_party/rust/copyless/Cargo.toml
third_party/rust/copyless/LICENSE
third_party/rust/copyless/README.md
third_party/rust/copyless/bors.toml
third_party/rust/copyless/rustfmt.toml
third_party/rust/copyless/src/boxed.rs
third_party/rust/copyless/src/lib.rs
third_party/rust/copyless/src/vec.rs
third_party/rust/core-graphics/.cargo-checksum.json
third_party/rust/core-graphics/Cargo.toml
third_party/rust/core-graphics/src/color.rs
third_party/rust/core-graphics/src/lib.rs
third_party/rust/core-graphics/src/window.rs
third_party/rust/crossbeam-deque/.cargo-checksum.json
third_party/rust/crossbeam-deque/CHANGELOG.md
third_party/rust/crossbeam-deque/Cargo.toml
third_party/rust/crossbeam-deque/LICENSE-MIT
third_party/rust/crossbeam-deque/README.md
third_party/rust/crossbeam-deque/src/lib.rs
third_party/rust/crossbeam-deque/tests/fifo.rs
third_party/rust/crossbeam-deque/tests/injector.rs
third_party/rust/crossbeam-deque/tests/lifo.rs
third_party/rust/crossbeam-epoch/.cargo-checksum.json
third_party/rust/crossbeam-epoch/CHANGELOG.md
third_party/rust/crossbeam-epoch/Cargo.lock
third_party/rust/crossbeam-epoch/Cargo.toml
third_party/rust/crossbeam-epoch/README.md
third_party/rust/crossbeam-epoch/build.rs
third_party/rust/crossbeam-epoch/src/atomic.rs
third_party/rust/crossbeam-epoch/src/deferred.rs
third_party/rust/crossbeam-epoch/src/guard.rs
third_party/rust/crossbeam-epoch/src/internal.rs
third_party/rust/crossbeam-epoch/src/lib.rs
third_party/rust/crossbeam-epoch/src/sync/queue.rs
third_party/rust/crossbeam-utils-0.6.5/.cargo-checksum.json
third_party/rust/crossbeam-utils-0.6.5/CHANGELOG.md
third_party/rust/crossbeam-utils-0.6.5/Cargo.toml
third_party/rust/crossbeam-utils-0.6.5/LICENSE-APACHE
third_party/rust/crossbeam-utils-0.6.5/LICENSE-MIT
third_party/rust/crossbeam-utils-0.6.5/README.md
third_party/rust/crossbeam-utils-0.6.5/benches/atomic_cell.rs
third_party/rust/crossbeam-utils-0.6.5/src/atomic/atomic_cell.rs
third_party/rust/crossbeam-utils-0.6.5/src/atomic/consume.rs
third_party/rust/crossbeam-utils-0.6.5/src/atomic/mod.rs
third_party/rust/crossbeam-utils-0.6.5/src/backoff.rs
third_party/rust/crossbeam-utils-0.6.5/src/cache_padded.rs
third_party/rust/crossbeam-utils-0.6.5/src/lib.rs
third_party/rust/crossbeam-utils-0.6.5/src/sync/mod.rs
third_party/rust/crossbeam-utils-0.6.5/src/sync/parker.rs
third_party/rust/crossbeam-utils-0.6.5/src/sync/sharded_lock.rs
third_party/rust/crossbeam-utils-0.6.5/src/sync/wait_group.rs
third_party/rust/crossbeam-utils-0.6.5/src/thread.rs
third_party/rust/crossbeam-utils-0.6.5/tests/atomic_cell.rs
third_party/rust/crossbeam-utils-0.6.5/tests/cache_padded.rs
third_party/rust/crossbeam-utils-0.6.5/tests/parker.rs
third_party/rust/crossbeam-utils-0.6.5/tests/sharded_lock.rs
third_party/rust/crossbeam-utils-0.6.5/tests/thread.rs
third_party/rust/crossbeam-utils-0.6.5/tests/wait_group.rs
third_party/rust/crossbeam-utils/.cargo-checksum.json
third_party/rust/crossbeam-utils/CHANGELOG.md
third_party/rust/crossbeam-utils/Cargo.toml
third_party/rust/crossbeam-utils/LICENSE-MIT
third_party/rust/crossbeam-utils/README.md
third_party/rust/crossbeam-utils/benches/atomic_cell.rs
third_party/rust/crossbeam-utils/build.rs
third_party/rust/crossbeam-utils/src/atomic/atomic_cell.rs
third_party/rust/crossbeam-utils/src/atomic/mod.rs
third_party/rust/crossbeam-utils/src/atomic/seq_lock.rs
third_party/rust/crossbeam-utils/src/atomic/seq_lock_wide.rs
third_party/rust/crossbeam-utils/src/backoff.rs
third_party/rust/crossbeam-utils/src/cache_padded.rs
third_party/rust/crossbeam-utils/src/lib.rs
third_party/rust/crossbeam-utils/src/thread.rs
third_party/rust/crossbeam-utils/tests/atomic_cell.rs
third_party/rust/crossbeam-utils/tests/parker.rs
third_party/rust/crossbeam-utils/tests/sharded_lock.rs
third_party/rust/crossbeam-utils/tests/thread.rs
third_party/rust/d3d12/.cargo-checksum.json
third_party/rust/d3d12/Cargo.toml
third_party/rust/d3d12/README.md
third_party/rust/d3d12/appveyor.yml
third_party/rust/d3d12/bors.toml
third_party/rust/d3d12/src/com.rs
third_party/rust/d3d12/src/command_allocator.rs
third_party/rust/d3d12/src/command_list.rs
third_party/rust/d3d12/src/debug.rs
third_party/rust/d3d12/src/descriptor.rs
third_party/rust/d3d12/src/device.rs
third_party/rust/d3d12/src/dxgi.rs
third_party/rust/d3d12/src/heap.rs
third_party/rust/d3d12/src/lib.rs
third_party/rust/d3d12/src/pso.rs
third_party/rust/d3d12/src/query.rs
third_party/rust/d3d12/src/queue.rs
third_party/rust/d3d12/src/resource.rs
third_party/rust/d3d12/src/sync.rs
third_party/rust/gfx-auxil/.cargo-checksum.json
third_party/rust/gfx-auxil/Cargo.toml
third_party/rust/gfx-auxil/src/lib.rs
third_party/rust/gfx-backend-dx11/.cargo-checksum.json
third_party/rust/gfx-backend-dx11/Cargo.toml
third_party/rust/gfx-backend-dx11/README.md
third_party/rust/gfx-backend-dx11/shaders/blit.hlsl
third_party/rust/gfx-backend-dx11/shaders/clear.hlsl
third_party/rust/gfx-backend-dx11/shaders/copy.hlsl
third_party/rust/gfx-backend-dx11/src/conv.rs
third_party/rust/gfx-backend-dx11/src/debug.rs
third_party/rust/gfx-backend-dx11/src/device.rs
third_party/rust/gfx-backend-dx11/src/dxgi.rs
third_party/rust/gfx-backend-dx11/src/internal.rs
third_party/rust/gfx-backend-dx11/src/lib.rs
third_party/rust/gfx-backend-dx11/src/shader.rs
third_party/rust/gfx-backend-dx12/.cargo-checksum.json
third_party/rust/gfx-backend-dx12/Cargo.toml
third_party/rust/gfx-backend-dx12/README.md
third_party/rust/gfx-backend-dx12/shaders/blit.hlsl
third_party/rust/gfx-backend-dx12/src/command.rs
third_party/rust/gfx-backend-dx12/src/conv.rs
third_party/rust/gfx-backend-dx12/src/descriptors_cpu.rs
third_party/rust/gfx-backend-dx12/src/device.rs
third_party/rust/gfx-backend-dx12/src/internal.rs
third_party/rust/gfx-backend-dx12/src/lib.rs
third_party/rust/gfx-backend-dx12/src/pool.rs
third_party/rust/gfx-backend-dx12/src/resource.rs
third_party/rust/gfx-backend-dx12/src/root_constants.rs
third_party/rust/gfx-backend-dx12/src/window.rs
third_party/rust/gfx-backend-empty/.cargo-checksum.json
third_party/rust/gfx-backend-empty/Cargo.toml
third_party/rust/gfx-backend-empty/src/lib.rs
third_party/rust/gfx-backend-metal/.cargo-checksum.json
third_party/rust/gfx-backend-metal/Cargo.toml
third_party/rust/gfx-backend-metal/README.md
third_party/rust/gfx-backend-metal/shaders/blit.metal
third_party/rust/gfx-backend-metal/shaders/clear.metal
third_party/rust/gfx-backend-metal/shaders/fill.metal
third_party/rust/gfx-backend-metal/shaders/gfx_shaders.metallib
third_party/rust/gfx-backend-metal/shaders/macros.h
third_party/rust/gfx-backend-metal/src/command.rs
third_party/rust/gfx-backend-metal/src/conversions.rs
third_party/rust/gfx-backend-metal/src/device.rs
third_party/rust/gfx-backend-metal/src/internal.rs
third_party/rust/gfx-backend-metal/src/lib.rs
third_party/rust/gfx-backend-metal/src/native.rs
third_party/rust/gfx-backend-metal/src/soft.rs
third_party/rust/gfx-backend-metal/src/window.rs
third_party/rust/gfx-backend-vulkan/.cargo-checksum.json
third_party/rust/gfx-backend-vulkan/Cargo.toml
third_party/rust/gfx-backend-vulkan/README.md
third_party/rust/gfx-backend-vulkan/src/command.rs
third_party/rust/gfx-backend-vulkan/src/conv.rs
third_party/rust/gfx-backend-vulkan/src/device.rs
third_party/rust/gfx-backend-vulkan/src/info.rs
third_party/rust/gfx-backend-vulkan/src/lib.rs
third_party/rust/gfx-backend-vulkan/src/native.rs
third_party/rust/gfx-backend-vulkan/src/pool.rs
third_party/rust/gfx-backend-vulkan/src/window.rs
third_party/rust/gfx-hal/.cargo-checksum.json
third_party/rust/gfx-hal/Cargo.toml
third_party/rust/gfx-hal/src/adapter.rs
third_party/rust/gfx-hal/src/buffer.rs
third_party/rust/gfx-hal/src/command/clear.rs
third_party/rust/gfx-hal/src/command/mod.rs
third_party/rust/gfx-hal/src/command/structs.rs
third_party/rust/gfx-hal/src/device.rs
third_party/rust/gfx-hal/src/format.rs
third_party/rust/gfx-hal/src/image.rs
third_party/rust/gfx-hal/src/lib.rs
third_party/rust/gfx-hal/src/memory.rs
third_party/rust/gfx-hal/src/pass.rs
third_party/rust/gfx-hal/src/pool.rs
third_party/rust/gfx-hal/src/pso/compute.rs
third_party/rust/gfx-hal/src/pso/descriptor.rs
third_party/rust/gfx-hal/src/pso/graphics.rs
third_party/rust/gfx-hal/src/pso/input_assembler.rs
third_party/rust/gfx-hal/src/pso/mod.rs
third_party/rust/gfx-hal/src/pso/output_merger.rs
third_party/rust/gfx-hal/src/pso/specialization.rs
third_party/rust/gfx-hal/src/query.rs
third_party/rust/gfx-hal/src/queue/family.rs
third_party/rust/gfx-hal/src/queue/mod.rs
third_party/rust/gfx-hal/src/range.rs
third_party/rust/gfx-hal/src/window.rs
third_party/rust/hibitset/.cargo-checksum.json
third_party/rust/hibitset/Cargo.toml
third_party/rust/hibitset/LICENSE-APACHE
third_party/rust/hibitset/LICENSE-MIT
third_party/rust/hibitset/README.md
third_party/rust/hibitset/benches/benches.rs
third_party/rust/hibitset/benches/iter.rs
third_party/rust/hibitset/bors.toml
third_party/rust/hibitset/src/atomic.rs
third_party/rust/hibitset/src/iter/drain.rs
third_party/rust/hibitset/src/iter/mod.rs
third_party/rust/hibitset/src/iter/parallel.rs
third_party/rust/hibitset/src/lib.rs
third_party/rust/hibitset/src/ops.rs
third_party/rust/hibitset/src/util.rs
third_party/rust/malloc_buf/.cargo-checksum.json
third_party/rust/malloc_buf/Cargo.toml
third_party/rust/malloc_buf/src/lib.rs
third_party/rust/mapped_hyph/.cargo-checksum.json
third_party/rust/mapped_hyph/COPYRIGHT
third_party/rust/mapped_hyph/Cargo.toml
third_party/rust/mapped_hyph/LICENSE-APACHE
third_party/rust/mapped_hyph/LICENSE-MIT
third_party/rust/mapped_hyph/README.md
third_party/rust/mapped_hyph/benches/bench.rs
third_party/rust/mapped_hyph/cbindgen.toml
third_party/rust/mapped_hyph/doc/mapped_hyph_format.md
third_party/rust/mapped_hyph/hyph_en_US.hyf
third_party/rust/mapped_hyph/src/bin/hyf_compile.rs
third_party/rust/mapped_hyph/src/builder.rs
third_party/rust/mapped_hyph/src/ffi.rs
third_party/rust/mapped_hyph/src/lib.rs
third_party/rust/mapped_hyph/src/main.rs
third_party/rust/mapped_hyph/tests/base.hyf
third_party/rust/mapped_hyph/tests/base.hyph
third_party/rust/mapped_hyph/tests/base.word
third_party/rust/mapped_hyph/tests/compound.hyf
third_party/rust/mapped_hyph/tests/compound4.hyf
third_party/rust/mapped_hyph/tests/compound5.hyf
third_party/rust/mapped_hyph/tests/compound6.hyf
third_party/rust/mapped_hyph/tests/hyphen.hyf
third_party/rust/mapped_hyph/tests/lhmin.hyf
third_party/rust/mapped_hyph/tests/num.hyf
third_party/rust/mapped_hyph/tests/rhmin.hyf
third_party/rust/mapped_hyph/tests/settings2.hyf
third_party/rust/mapped_hyph/tests/settings3.hyf
third_party/rust/mapped_hyph/tests/test.rs
third_party/rust/metal/.cargo-checksum.json
third_party/rust/metal/Cargo.lock
third_party/rust/metal/Cargo.toml
third_party/rust/metal/LICENSE-APACHE
third_party/rust/metal/LICENSE-MIT
third_party/rust/metal/README.md
third_party/rust/metal/bors.toml
third_party/rust/metal/examples/argument-buffer/main.rs
third_party/rust/metal/examples/bind/main.rs
third_party/rust/metal/examples/caps/main.rs
third_party/rust/metal/examples/compute/compute-argument-buffer.metal
third_party/rust/metal/examples/compute/compute-argument-buffer.rs
third_party/rust/metal/examples/compute/default.metallib
third_party/rust/metal/examples/compute/embedded-lib.rs
third_party/rust/metal/examples/compute/main.rs
third_party/rust/metal/examples/compute/shaders.metal
third_party/rust/metal/examples/library/main.rs
third_party/rust/metal/examples/reflection/main.rs
third_party/rust/metal/examples/window/default.metallib
third_party/rust/metal/examples/window/main.rs
third_party/rust/metal/examples/window/shaders.metal
third_party/rust/metal/src/argument.rs
third_party/rust/metal/src/buffer.rs
third_party/rust/metal/src/capturemanager.rs
third_party/rust/metal/src/commandbuffer.rs
third_party/rust/metal/src/commandqueue.rs
third_party/rust/metal/src/constants.rs
third_party/rust/metal/src/depthstencil.rs
third_party/rust/metal/src/device.rs
third_party/rust/metal/src/drawable.rs
third_party/rust/metal/src/encoder.rs
third_party/rust/metal/src/heap.rs
third_party/rust/metal/src/lib.rs
third_party/rust/metal/src/library.rs
third_party/rust/metal/src/pipeline/compute.rs
third_party/rust/metal/src/pipeline/mod.rs
third_party/rust/metal/src/pipeline/render.rs
third_party/rust/metal/src/renderpass.rs
third_party/rust/metal/src/resource.rs
third_party/rust/metal/src/sampler.rs
third_party/rust/metal/src/texture.rs
third_party/rust/metal/src/types.rs
third_party/rust/metal/src/vertexdescriptor.rs
third_party/rust/neqo-common/.cargo-checksum.json
third_party/rust/neqo-common/src/log.rs
third_party/rust/neqo-common/tests/log.rs
third_party/rust/neqo-crypto/.cargo-checksum.json
third_party/rust/neqo-crypto/build.rs
third_party/rust/neqo-crypto/src/agent.rs
third_party/rust/neqo-crypto/src/agentio.rs
third_party/rust/neqo-http3/.cargo-checksum.json
third_party/rust/neqo-http3/src/connection.rs
third_party/rust/neqo-http3/src/connection_client.rs
third_party/rust/neqo-http3/src/connection_server.rs
third_party/rust/neqo-http3/src/control_stream_local.rs
third_party/rust/neqo-http3/src/control_stream_remote.rs
third_party/rust/neqo-http3/src/hframe.rs
third_party/rust/neqo-http3/src/stream_type_reader.rs
third_party/rust/neqo-http3/src/transaction_client.rs
third_party/rust/neqo-http3/src/transaction_server.rs
third_party/rust/neqo-qpack/.cargo-checksum.json
third_party/rust/neqo-qpack/src/decoder.rs
third_party/rust/neqo-qpack/src/encoder.rs
third_party/rust/neqo-transport/.cargo-checksum.json
third_party/rust/neqo-transport/src/connection.rs
third_party/rust/neqo-transport/src/crypto.rs
third_party/rust/neqo-transport/src/dump.rs
third_party/rust/neqo-transport/src/flow_mgr.rs
third_party/rust/neqo-transport/src/frame.rs
third_party/rust/neqo-transport/src/recovery.rs
third_party/rust/neqo-transport/src/recv_stream.rs
third_party/rust/neqo-transport/src/send_stream.rs
third_party/rust/neqo-transport/src/server.rs
third_party/rust/neqo-transport/src/tracking.rs
third_party/rust/objc/.cargo-checksum.json
third_party/rust/objc/CHANGELOG.md
third_party/rust/objc/Cargo.toml
third_party/rust/objc/LICENSE.txt
third_party/rust/objc/README.md
third_party/rust/objc/examples/example.rs
third_party/rust/objc/src/declare.rs
third_party/rust/objc/src/encode.rs
third_party/rust/objc/src/exception.rs
third_party/rust/objc/src/lib.rs
third_party/rust/objc/src/macros.rs
third_party/rust/objc/src/message/apple/arm.rs
third_party/rust/objc/src/message/apple/arm64.rs
third_party/rust/objc/src/message/apple/mod.rs
third_party/rust/objc/src/message/apple/x86.rs
third_party/rust/objc/src/message/apple/x86_64.rs
third_party/rust/objc/src/message/gnustep.rs
third_party/rust/objc/src/message/mod.rs
third_party/rust/objc/src/message/verify.rs
third_party/rust/objc/src/rc/autorelease.rs
third_party/rust/objc/src/rc/mod.rs
third_party/rust/objc/src/rc/strong.rs
third_party/rust/objc/src/rc/weak.rs
third_party/rust/objc/src/runtime.rs
third_party/rust/objc/src/test_utils.rs
third_party/rust/objc_exception/.cargo-checksum.json
third_party/rust/objc_exception/Cargo.toml
third_party/rust/objc_exception/build.rs
third_party/rust/objc_exception/extern/exception.m
third_party/rust/objc_exception/src/lib.rs
third_party/rust/range-alloc/.cargo-checksum.json
third_party/rust/range-alloc/Cargo.toml
third_party/rust/range-alloc/src/lib.rs
third_party/rust/raw-window-handle/.cargo-checksum.json
third_party/rust/raw-window-handle/CHANGELOG.md
third_party/rust/raw-window-handle/Cargo.toml
third_party/rust/raw-window-handle/LICENSE
third_party/rust/raw-window-handle/README.md
third_party/rust/raw-window-handle/appveyor.yml
third_party/rust/raw-window-handle/rustfmt.toml
third_party/rust/raw-window-handle/src/android.rs
third_party/rust/raw-window-handle/src/ios.rs
third_party/rust/raw-window-handle/src/lib.rs
third_party/rust/raw-window-handle/src/macos.rs
third_party/rust/raw-window-handle/src/unix.rs
third_party/rust/raw-window-handle/src/web.rs
third_party/rust/raw-window-handle/src/windows.rs
third_party/rust/relevant/.cargo-checksum.json
third_party/rust/relevant/Cargo.toml
third_party/rust/relevant/LICENSE-APACHE
third_party/rust/relevant/LICENSE-MIT
third_party/rust/relevant/README.md
third_party/rust/relevant/src/lib.rs
third_party/rust/rendy-descriptor/.cargo-checksum.json
third_party/rust/rendy-descriptor/Cargo.toml
third_party/rust/rendy-descriptor/src/allocator.rs
third_party/rust/rendy-descriptor/src/lib.rs
third_party/rust/rendy-descriptor/src/ranges.rs
third_party/rust/rendy-memory/.cargo-checksum.json
third_party/rust/rendy-memory/Cargo.toml
third_party/rust/rendy-memory/src/allocator/dedicated.rs
third_party/rust/rendy-memory/src/allocator/dynamic.rs
third_party/rust/rendy-memory/src/allocator/linear.rs
third_party/rust/rendy-memory/src/allocator/mod.rs
third_party/rust/rendy-memory/src/block.rs
third_party/rust/rendy-memory/src/heaps/heap.rs
third_party/rust/rendy-memory/src/heaps/memory_type.rs
third_party/rust/rendy-memory/src/heaps/mod.rs
third_party/rust/rendy-memory/src/lib.rs
third_party/rust/rendy-memory/src/mapping/mod.rs
third_party/rust/rendy-memory/src/mapping/range.rs
third_party/rust/rendy-memory/src/mapping/write.rs
third_party/rust/rendy-memory/src/memory.rs
third_party/rust/rendy-memory/src/usage.rs
third_party/rust/rendy-memory/src/util.rs
third_party/rust/rendy-memory/src/utilization.rs
third_party/rust/shared_library/.cargo-checksum.json
third_party/rust/shared_library/Cargo.toml
third_party/rust/shared_library/LICENSE-APACHE
third_party/rust/shared_library/LICENSE-MIT
third_party/rust/shared_library/src/dynamic_library.rs
third_party/rust/shared_library/src/lib.rs
third_party/rust/spirv_cross/.cargo-checksum.json
third_party/rust/spirv_cross/Cargo.toml
third_party/rust/spirv_cross/build.rs
third_party/rust/spirv_cross/src/bindings_native.rs
third_party/rust/spirv_cross/src/bindings_wasm.rs
third_party/rust/spirv_cross/src/bindings_wasm_functions.rs
third_party/rust/spirv_cross/src/compiler.rs
third_party/rust/spirv_cross/src/emscripten.rs
third_party/rust/spirv_cross/src/glsl.rs
third_party/rust/spirv_cross/src/hlsl.rs
third_party/rust/spirv_cross/src/lib.rs
third_party/rust/spirv_cross/src/msl.rs
third_party/rust/spirv_cross/src/ptr_util.rs
third_party/rust/spirv_cross/src/spirv.rs
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/.clang-format
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/.gitignore
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/CMakeLists.txt
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/GLSL.std.450.h
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/LICENSE
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/Makefile
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/cmake/gitversion.in.h
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/format_all.sh
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/gn/BUILD.gn
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/barrier.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/external_interface.h
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/image.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/internal_interface.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/sampler.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/thread_group.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/main.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/pkg-config/spirv-cross-c-shared.pc.in
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv.h
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cfg.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cfg.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_common.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cpp.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cpp.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_c.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_c.h
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_containers.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_error_handling.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_parsed_ir.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_parsed_ir.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_util.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_util.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_glsl.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_glsl.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_hlsl.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_hlsl.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_msl.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_msl.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_parser.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_parser.hpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_reflect.cpp
third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_reflect.hpp
third_party/rust/spirv_cross/src/wrapper.cpp
third_party/rust/spirv_cross/src/wrapper.hpp
third_party/rust/spirv_cross/tests/common/mod.rs
third_party/rust/spirv_cross/tests/glsl_tests.rs
third_party/rust/spirv_cross/tests/hlsl_tests.rs
third_party/rust/spirv_cross/tests/msl_tests.rs
third_party/rust/spirv_cross/tests/shaders/array.vert
third_party/rust/spirv_cross/tests/shaders/array.vert.spv
third_party/rust/spirv_cross/tests/shaders/rasterize_disabled.vert
third_party/rust/spirv_cross/tests/shaders/rasterize_disabled.vert.spv
third_party/rust/spirv_cross/tests/shaders/sampler.frag
third_party/rust/spirv_cross/tests/shaders/sampler.frag.spv
third_party/rust/spirv_cross/tests/shaders/simple.vert
third_party/rust/spirv_cross/tests/shaders/simple.vert.spv
third_party/rust/spirv_cross/tests/shaders/specialization.comp
third_party/rust/spirv_cross/tests/shaders/specialization.comp.spv
third_party/rust/spirv_cross/tests/shaders/struct.frag
third_party/rust/spirv_cross/tests/shaders/struct.frag.spv
third_party/rust/spirv_cross/tests/shaders/struct.vert
third_party/rust/spirv_cross/tests/shaders/struct.vert.spv
third_party/rust/spirv_cross/tests/shaders/workgroup.comp
third_party/rust/spirv_cross/tests/shaders/workgroup.comp.spv
third_party/rust/spirv_cross/tests/spirv_tests.rs
third_party/rust/storage-map/.cargo-checksum.json
third_party/rust/storage-map/Cargo.toml
third_party/rust/storage-map/LICENSE
third_party/rust/storage-map/README.md
third_party/rust/storage-map/src/lib.rs
third_party/rust/storage-map/tests/ten.rs
third_party/rust/uluru/.cargo-checksum.json
third_party/rust/uluru/Cargo.toml
third_party/rust/wio/.cargo-checksum.json
third_party/rust/wio/Cargo.toml
third_party/rust/wio/LICENSE-APACHE
third_party/rust/wio/LICENSE-MIT
third_party/rust/wio/README.md
third_party/rust/wio/src/apc.rs
third_party/rust/wio/src/com.rs
third_party/rust/wio/src/console.rs
third_party/rust/wio/src/error.rs
third_party/rust/wio/src/handle.rs
third_party/rust/wio/src/lib.rs
third_party/rust/wio/src/perf.rs
third_party/rust/wio/src/pipe.rs
third_party/rust/wio/src/sleep.rs
third_party/rust/wio/src/thread.rs
third_party/rust/wio/src/ums.rs
third_party/rust/wio/src/wide.rs
third_party/rust/x11/.cargo-checksum.json
third_party/rust/x11/Cargo.toml
third_party/rust/x11/build.rs
third_party/rust/x11/examples/hello-world.rs
third_party/rust/x11/examples/input.rs
third_party/rust/x11/examples/xrecord.rs
third_party/rust/x11/src/dpms.rs
third_party/rust/x11/src/glx.rs
third_party/rust/x11/src/internal.rs
third_party/rust/x11/src/keysym.rs
third_party/rust/x11/src/lib.rs
third_party/rust/x11/src/link.rs
third_party/rust/x11/src/xcursor.rs
third_party/rust/x11/src/xf86vmode.rs
third_party/rust/x11/src/xfixes.rs
third_party/rust/x11/src/xft.rs
third_party/rust/x11/src/xinerama.rs
third_party/rust/x11/src/xinput.rs
third_party/rust/x11/src/xinput2.rs
third_party/rust/x11/src/xlib.rs
third_party/rust/x11/src/xlib_xcb.rs
third_party/rust/x11/src/xmd.rs
third_party/rust/x11/src/xmu.rs
third_party/rust/x11/src/xrandr.rs
third_party/rust/x11/src/xrecord.rs
third_party/rust/x11/src/xrender.rs
third_party/rust/x11/src/xss.rs
third_party/rust/x11/src/xt.rs
third_party/rust/x11/src/xtest.rs
toolkit/library/gtest/rust/Cargo.toml
toolkit/library/moz.build
toolkit/library/rust/Cargo.toml
toolkit/library/rust/gkrust-features.mozbuild
toolkit/library/rust/shared/Cargo.toml
toolkit/library/rust/shared/lib.rs
tools/vcs/mach_commands.py
--- a/.cargo/config.in
+++ b/.cargo/config.in
@@ -7,31 +7,16 @@ branch = "r0.13.1"
 git = "https://github.com/shravanrn/nix/"
 replace-with = "vendored-sources"
 
 [source."https://github.com/mozilla/neqo"]
 branch = "master"
 git = "https://github.com/mozilla/neqo"
 replace-with = "vendored-sources"
 
-[source."https://github.com/kvark/spirv_cross"]
-branch = "wgpu"
-git = "https://github.com/kvark/spirv_cross"
-replace-with = "vendored-sources"
-
-[source."https://github.com/kvark/rust-objc-exception"]
-branch = "cc"
-git = "https://github.com/kvark/rust-objc-exception"
-replace-with = "vendored-sources"
-
-[source."https://github.com/jfkthame/mapped_hyph.git"]
-git = "https://github.com/jfkthame/mapped_hyph.git"
-replace-with = "vendored-sources"
-tag = "v0.3.0"
-
 [source."https://github.com/hsivonen/packed_simd"]
 branch = "rust_1_32"
 git = "https://github.com/hsivonen/packed_simd"
 replace-with = "vendored-sources"
 
 [source."https://github.com/alexcrichton/mio-named-pipes"]
 branch = "master"
 git = "https://github.com/alexcrichton/mio-named-pipes"
--- a/.clang-format-ignore
+++ b/.clang-format-ignore
@@ -33,17 +33,16 @@ layout/style/nsStyleStructList.h
 
 # Generated by protobuf
 .*/.*.pb.h
 .*/.*.pb.cc
 
 # Autogenerated file
 gfx/gl/GLConsts.h
 gfx/webrender_bindings/webrender_ffi_generated.h
-dom/webgpu/ffi/wgpu_ffi_generated.h
 intl/unicharutil/util/nsSpecialCasingData.cpp
 intl/unicharutil/util/nsUnicodePropertyData.cpp
 intl/unicharutil/util/nsUnicodeScriptCodes.h
 media/mp4parse-rust/mp4parse.h
 security/manager/ssl/StaticHPKPins.h
 widget/gtk/wayland/gtk-primary-selection-client-protocol.h
 widget/gtk/wayland/gtk-primary-selection-protocol.c
 
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -41,31 +41,21 @@ dependencies = [
 
 [[package]]
 name = "arrayref"
 version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "arrayvec"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "ash"
-version = "0.29.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "atom"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
+]
 
 [[package]]
 name = "atomic"
 version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "atomic_refcell"
@@ -97,17 +87,17 @@ dependencies = [
 
 [[package]]
 name = "audioipc"
 version = "0.2.4"
 dependencies = [
  "audio_thread_priority 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
  "cubeb 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)",
  "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -170,31 +160,32 @@ dependencies = [
 
 [[package]]
 name = "autocfg"
 version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "backtrace"
-version = "0.3.38"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
  "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "rustc-demangle 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "backtrace-sys"
 version = "0.1.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "baldrdash"
 version = "0.1.0"
 dependencies = [
  "bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -339,30 +330,25 @@ dependencies = [
  "moz_task 0.1.0",
  "nserror 0.1.0",
  "nsstring 0.1.0",
  "xpcom 0.1.0",
 ]
 
 [[package]]
 name = "blake2b_simd"
-version = "0.5.9"
+version = "0.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
  "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "block"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
 name = "block-buffer"
 version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "block-padding 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "byte-tools 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -420,17 +406,17 @@ dependencies = [
 
 [[package]]
 name = "cast"
 version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "cc"
-version = "1.0.47"
+version = "1.0.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "cert_storage"
 version = "0.0.1"
 dependencies = [
  "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -506,37 +492,18 @@ dependencies = [
  "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "cmake"
 version = "0.1.29"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "cocoa"
-version = "0.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
- "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "colorful"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
+]
 
 [[package]]
 name = "comedy"
 version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -552,52 +519,47 @@ source = "registry+https://github.com/ru
 name = "cookie"
 version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "copyless"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
 name = "core-foundation"
 version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "core-foundation-sys"
 version = "0.6.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "core-graphics"
-version = "0.17.3"
+version = "0.17.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "core-text"
 version = "13.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "coreaudio-sys"
 version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -707,31 +669,31 @@ name = "crc32fast"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "crossbeam-deque"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "crossbeam-epoch"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
  "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "crossbeam-queue"
 version = "0.1.2"
@@ -745,26 +707,16 @@ name = "crossbeam-utils"
 version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "crossbeam-utils"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "cssparser"
 version = "0.25.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "cssparser-macros 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "dtoa-short 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "itoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -861,26 +813,16 @@ name = "cubeb-sys"
 version = "0.6.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "d3d12"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "darling"
 version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "darling_core 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "darling_macro 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -1088,17 +1030,17 @@ dependencies = [
  "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "failure"
 version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)",
+ "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
  "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "failure_derive"
 version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
@@ -1271,126 +1213,16 @@ source = "registry+https://github.com/ru
 dependencies = [
  "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "gfx-auxil"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "spirv_cross 0.16.0 (git+https://github.com/kvark/spirv_cross?branch=wgpu)",
-]
-
-[[package]]
-name = "gfx-backend-dx11"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-auxil 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "range-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "raw-window-handle 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "spirv_cross 0.16.0 (git+https://github.com/kvark/spirv_cross?branch=wgpu)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
- "wio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "gfx-backend-dx12"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "d3d12 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-auxil 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "range-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "raw-window-handle 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "spirv_cross 0.16.0 (git+https://github.com/kvark/spirv_cross?branch=wgpu)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "gfx-backend-empty"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "raw-window-handle 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "gfx-backend-metal"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "cocoa 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "copyless 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-auxil 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "metal 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "range-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "raw-window-handle 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "spirv_cross 0.16.0 (git+https://github.com/kvark/spirv_cross?branch=wgpu)",
- "storage-map 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "gfx-backend-vulkan"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "ash 0.29.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "raw-window-handle 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
- "x11 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "gfx-hal"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "raw-window-handle 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "gkrust"
 version = "0.1.0"
 dependencies = [
  "gkrust-shared 0.1.0",
  "mozilla-central-workspace-hack 0.1.0",
  "stylo_tests 0.0.1",
 ]
 
@@ -1405,17 +1237,17 @@ dependencies = [
  "nsstring-gtest 0.1.0",
  "xpcom-gtest 0.1.0",
 ]
 
 [[package]]
 name = "gkrust-shared"
 version = "0.1.0"
 dependencies = [
- "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
  "audio_thread_priority 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "audioipc-client 0.4.0",
  "audioipc-server 0.2.3",
  "authenticator 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "bitsdownload 0.1.0",
  "bookmark_sync 0.1.0",
  "cert_storage 0.0.1",
  "cose-c 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1425,34 +1257,32 @@ dependencies = [
  "encoding_glue 0.1.0",
  "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "geckoservo 0.0.1",
  "gkrust_utils 0.1.0",
  "jsrust_shared 0.1.0",
  "kvstore 0.1.0",
  "lmdb-rkv-sys 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "mapped_hyph 0.3.0 (git+https://github.com/jfkthame/mapped_hyph.git?tag=v0.3.0)",
  "mdns_service 0.1.0",
  "mozurl 0.0.1",
  "mp4parse_capi 0.11.2",
  "neqo_glue 0.1.0",
  "netwerk_helper 0.0.1",
  "nserror 0.1.0",
  "nsstring 0.1.0",
  "prefs_parser 0.0.1",
  "profiler_helper 0.1.0",
  "rlbox_lucet_sandbox 0.1.0 (git+https://github.com/PLSysSec/rlbox_lucet_sandbox/?rev=997c648eb0eaeaaa7a00a9eee20431f750b4e190)",
  "rsdparsa_capi 0.1.0",
  "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "shift_or_euc_c 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "static_prefs 0.1.0",
  "storage 0.1.0",
  "webrender_bindings 0.1.0",
- "wgpu-remote 0.1.0",
  "xpcom 0.1.0",
  "xulstore 0.1.0",
 ]
 
 [[package]]
 name = "gkrust_utils"
 version = "0.1.0"
 dependencies = [
@@ -1557,24 +1387,16 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "hibitset"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "atom 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "http"
 version = "0.1.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)",
  "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "itoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
@@ -1781,17 +1603,17 @@ dependencies = [
  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "libloading"
 version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "libudev"
 version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
@@ -1807,17 +1629,17 @@ dependencies = [
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "libz-sys"
 version = "1.0.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
  "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "line-wrap"
 version = "0.1.1"
@@ -1843,17 +1665,17 @@ dependencies = [
 ]
 
 [[package]]
 name = "lmdb-rkv-sys"
 version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "lock_api"
 version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1885,33 +1707,33 @@ dependencies = [
  "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "lucet-runtime"
 version = "0.1.1"
 source = "git+https://github.com/PLSysSec/lucet_sandbox_compiler#5c22392b5b1aaa60e915c75e92b57391e1e61e6d"
 dependencies = [
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "lucet-module 0.1.1 (git+https://github.com/PLSysSec/lucet_sandbox_compiler)",
  "lucet-runtime-internals 0.1.1 (git+https://github.com/PLSysSec/lucet_sandbox_compiler)",
  "num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "lucet-runtime-internals"
 version = "0.1.1"
 source = "git+https://github.com/PLSysSec/lucet_sandbox_compiler#5c22392b5b1aaa60e915c75e92b57391e1e61e6d"
 dependencies = [
  "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
  "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "getrandom 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lucet-module 0.1.1 (git+https://github.com/PLSysSec/lucet_sandbox_compiler)",
  "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "nix 0.13.1 (git+https://github.com/shravanrn/nix/?branch=r0.13.1)",
@@ -1944,24 +1766,16 @@ source = "registry+https://github.com/ru
 name = "mach"
 version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "malloc_buf"
-version = "0.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "malloc_size_of"
 version = "0.0.1"
 dependencies = [
  "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "cssparser 0.25.9 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "hashglobe 0.1.0",
  "selectors 0.21.0",
@@ -1978,25 +1792,16 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
  "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "mapped_hyph"
-version = "0.3.0"
-source = "git+https://github.com/jfkthame/mapped_hyph.git?tag=v0.3.0#3b5fffbe17e8cdcc6814886a9b9170fde3db13bd"
-dependencies = [
- "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "marionette"
 version = "0.1.0"
 dependencies = [
  "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_repr 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -2034,30 +1839,16 @@ dependencies = [
 name = "memoffset"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "metal"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "cocoa 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "mime"
 version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -2069,17 +1860,17 @@ dependencies = [
  "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "miniz-sys"
 version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "miniz_oxide"
 version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
@@ -2285,66 +2076,66 @@ dependencies = [
 [[package]]
 name = "murmurhash3"
 version = "0.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "neqo-common"
 version = "0.1.4"
-source = "git+https://github.com/mozilla/neqo#cf61e302a90ea844a61381a9e0bc464946187868"
+source = "git+https://github.com/mozilla/neqo#a17c1e83bb44ed923eb16a4c675ffe569b3a08f3"
 dependencies = [
  "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "neqo-crypto"
 version = "0.1.4"
-source = "git+https://github.com/mozilla/neqo#cf61e302a90ea844a61381a9e0bc464946187868"
+source = "git+https://github.com/mozilla/neqo#a17c1e83bb44ed923eb16a4c675ffe569b3a08f3"
 dependencies = [
  "bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "neqo-common 0.1.4 (git+https://github.com/mozilla/neqo)",
  "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
  "toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "neqo-http3"
 version = "0.1.4"
-source = "git+https://github.com/mozilla/neqo#cf61e302a90ea844a61381a9e0bc464946187868"
+source = "git+https://github.com/mozilla/neqo#a17c1e83bb44ed923eb16a4c675ffe569b3a08f3"
 dependencies = [
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "neqo-common 0.1.4 (git+https://github.com/mozilla/neqo)",
  "neqo-crypto 0.1.4 (git+https://github.com/mozilla/neqo)",
  "neqo-qpack 0.1.4 (git+https://github.com/mozilla/neqo)",
  "neqo-transport 0.1.4 (git+https://github.com/mozilla/neqo)",
  "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "neqo-qpack"
 version = "0.1.4"
-source = "git+https://github.com/mozilla/neqo#cf61e302a90ea844a61381a9e0bc464946187868"
+source = "git+https://github.com/mozilla/neqo#a17c1e83bb44ed923eb16a4c675ffe569b3a08f3"
 dependencies = [
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "neqo-common 0.1.4 (git+https://github.com/mozilla/neqo)",
  "neqo-crypto 0.1.4 (git+https://github.com/mozilla/neqo)",
  "neqo-transport 0.1.4 (git+https://github.com/mozilla/neqo)",
 ]
 
 [[package]]
 name = "neqo-transport"
 version = "0.1.4"
-source = "git+https://github.com/mozilla/neqo#cf61e302a90ea844a61381a9e0bc464946187868"
+source = "git+https://github.com/mozilla/neqo#a17c1e83bb44ed923eb16a4c675ffe569b3a08f3"
 dependencies = [
  "derive_more 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "neqo-common 0.1.4 (git+https://github.com/mozilla/neqo)",
  "neqo-crypto 0.1.4 (git+https://github.com/mozilla/neqo)",
  "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "slice-deque 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2392,17 +2183,17 @@ dependencies = [
 ]
 
 [[package]]
 name = "nix"
 version = "0.13.1"
 source = "git+https://github.com/shravanrn/nix/?branch=r0.13.1#4af6c367603869a30fddb5ffb0aba2b9477ba92e"
 dependencies = [
  "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
  "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "nodrop"
 version = "0.1.12"
@@ -2504,33 +2295,16 @@ source = "registry+https://github.com/ru
 name = "num_cpus"
 version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "objc"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "objc_exception 0.1.2 (git+https://github.com/kvark/rust-objc-exception?branch=cc)",
-]
-
-[[package]]
-name = "objc_exception"
-version = "0.1.2"
-source = "git+https://github.com/kvark/rust-objc-exception?branch=cc#c86ad3a52984461fc5c63980d12e8ceed847854c"
-dependencies = [
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "object"
 version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "flate2 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
  "goblin 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
  "parity-wasm 0.40.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "scroll 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2919,44 +2693,31 @@ dependencies = [
 name = "rand_xorshift"
 version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "range-alloc"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "raw-window-handle"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "rayon"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "rayon-core"
 version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "rdrand"
@@ -3003,58 +2764,24 @@ dependencies = [
 ]
 
 [[package]]
 name = "regex-syntax"
 version = "0.6.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
-name = "relevant"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "remove_dir_all"
 version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "rendy-descriptor"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "relevant 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rendy-memory"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "colorful 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "hibitset 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "relevant 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "ringbuf"
 version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -3113,17 +2840,17 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "rust-argon2"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "blake2b_simd 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "blake2b_simd 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "rust-ini"
 version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
@@ -3132,17 +2859,17 @@ name = "rust_cascade"
 version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "bit_reverse 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "murmurhash3 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "rustc-demangle"
 version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
@@ -3356,25 +3083,16 @@ source = "registry+https://github.com/ru
 dependencies = [
  "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "opaque-debug 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "shared_library"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "shift_or_euc"
 version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)",
  "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -3436,24 +3154,16 @@ source = "registry+https://github.com/ru
 dependencies = [
  "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "spirv_cross"
-version = "0.16.0"
-source = "git+https://github.com/kvark/spirv_cross?branch=wgpu#636677bad724797789239c16e6d332e9b4d97b86"
-dependencies = [
- "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "stable_deref_trait"
 version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "static_prefs"
 version = "0.1.0"
 
@@ -3464,24 +3174,16 @@ dependencies = [
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "nserror 0.1.0",
  "nsstring 0.1.0",
  "storage_variant 0.1.0",
  "xpcom 0.1.0",
 ]
 
 [[package]]
-name = "storage-map"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "storage_variant"
 version = "0.1.0"
 dependencies = [
  "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
  "nserror 0.1.0",
  "nsstring 0.1.0",
  "xpcom 0.1.0",
 ]
@@ -3496,17 +3198,17 @@ name = "strsim"
 version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "style"
 version = "0.0.1"
 dependencies = [
  "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
  "atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "cssparser 0.25.9 (registry+https://github.com/rust-lang/crates.io-index)",
  "derive_more 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "fallible 0.0.1",
@@ -3540,17 +3242,17 @@ dependencies = [
  "static_prefs 0.1.0",
  "style_derive 0.0.1",
  "style_traits 0.0.1",
  "thin-slice 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
  "to_shmem 0.0.1",
  "to_shmem_derive 0.0.1",
  "toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "uluru 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "uluru 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "walkdir 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "style_derive"
@@ -3881,17 +3583,17 @@ dependencies = [
  "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "tokio-threadpool"
 version = "0.1.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -3954,20 +3656,20 @@ source = "registry+https://github.com/ru
 
 [[package]]
 name = "typenum"
 version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "uluru"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "unicase"
 version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -4132,17 +3834,17 @@ name = "webrender"
 version = "0.60.0"
 dependencies = [
  "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-text 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "cstr 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "dwrote 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "freetype 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "image 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -4170,17 +3872,17 @@ dependencies = [
 [[package]]
 name = "webrender_api"
 version = "0.60.0"
 dependencies = [
  "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "derive_more 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "malloc_size_of_derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "peek-poke 0.2.0",
  "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_bytes 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
  "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -4189,17 +3891,17 @@ dependencies = [
 
 [[package]]
 name = "webrender_bindings"
 version = "0.1.0"
 dependencies = [
  "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "dwrote 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "nsstring 0.1.0",
  "num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -4230,50 +3932,16 @@ dependencies = [
 name = "weedle"
 version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "wgpu-native"
-version = "0.4.0"
-dependencies = [
- "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "copyless 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-backend-dx11 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-backend-dx12 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-backend-empty 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-backend-metal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-backend-vulkan 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "raw-window-handle 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "rendy-descriptor 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "rendy-memory 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "wgpu-remote"
-version = "0.1.0"
-dependencies = [
- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "wgpu-native 0.4.0",
-]
-
-[[package]]
 name = "winapi"
 version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "winapi"
 version = "0.3.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4318,24 +3986,16 @@ dependencies = [
 name = "winreg"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "wio"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "wr_malloc_size_of"
 version = "0.0.1"
 dependencies = [
  "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -4360,25 +4020,16 @@ name = "ws2_32-sys"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "x11"
-version = "2.18.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
- "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "xfailure"
 version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "xml-rs"
 version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4455,89 +4106,81 @@ dependencies = [
 
 [metadata]
 "checksum Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)" = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
 "checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2"
 "checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
 "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
 "checksum app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9dadc668390b373e73e4abbfc1f07238b09a25858f2f39c06cebc6d8e141d774"
 "checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee"
-"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"
-"checksum ash 0.29.0 (registry+https://github.com/rust-lang/crates.io-index)" = "003d1fb2eb12eb06d4a03dbe02eea67a9fac910fa97932ab9e3a75b96a1ea5e5"
-"checksum atom 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3c86699c3f02778ec07158376991c8f783dd1f2f95c579ffaf0738dc984b2fe2"
+"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba"
 "checksum atomic 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c210c1f4db048cda477b652d170572d84c9640695835f17663595d3bd543fc28"
 "checksum atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2dcb6e6d35f20276943cc04bb98e538b348d525a04ac79c10021561d202f21"
 "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652"
 "checksum audio_thread_priority 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)" = "197b2d259505d11c92d266e1784f01cc935eb764d2f54e16aedf4e5085197871"
 "checksum authenticator 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ec149e5d5d4caa2c9ead53a8ce1ea9c4204c388c65bf3b96c2d1dc0fcf4aeb66"
 "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875"
-"checksum backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)" = "690a62be8920ccf773ee00ef0968649b0e724cda8bd5b12286302b4ae955fdf5"
+"checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a"
 "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0"
 "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
 "checksum binary-space-partition 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88ceb0d16c4fd0e42876e298d7d3ce3780dd9ebdcbe4199816a32c77e08597ff"
 "checksum bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8ab639324e3ee8774d296864fbc0dbbb256cf1a41c490b94cba90c082915f92"
 "checksum bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ebd71393f1ec0509b553aa012b9b58e81dadbdff7130bd3b8cba576e69b32f75"
 "checksum binjs_meta 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6c9a0da2208ceb785c1626fa8b7d250d2e5546ae230294b4a998e4f818c1768e"
 "checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb"
 "checksum bit_reverse 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5e97e02db5a2899c0377f3d6031d5da8296ca2b47abef6ed699de51b9e40a28c"
 "checksum bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a606a02debe2813760609f57a64a2ffd27d9fdf5b2f133eaca0b248dd92cdd2"
 "checksum bitreader 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "80b13e2ab064ff3aa0bdbf1eff533f9822dc37899821f5f98c67f263eab51707"
-"checksum blake2b_simd 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b83b7baab1e671718d78204225800d6b170e648188ac7dc992e9d6bddf87d0c0"
-"checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+"checksum blake2b_simd 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "5850aeee1552f495dd0250014cf64b82b7c8879a89d83b33bbdace2cc4f63182"
 "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
 "checksum block-padding 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc4358306e344bf9775d0197fd00d2603e5afb0771bb353538630f022068ea3"
 "checksum boxfnonce 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8380105befe91099e6f69206164072c05bc92427ff6aa8a5171388317346dd75"
 "checksum byte-tools 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "980479e6fde23246dfb54d47580d66b4e99202e7579c5eaa9fe10ecb5ebd2182"
 "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb"
 "checksum bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e178b8e0e239e844b083d5a0d4a156b2654e67f9f80144d48398fcd736a24fb8"
 "checksum cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427"
-"checksum cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)" = "aa87058dce70a3ff5621797f1506cb837edd02ac4c0ae642b4542dce802908b8"
+"checksum cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)" = "30f813bf45048a18eda9190fd3c6b78644146056740c43172a5a3699118588fd"
 "checksum cexpr 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8fc0086be9ca82f7fc89fc873435531cb898b86e850005850de1f820e2db6e9b"
 "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4"
 "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878"
 "checksum clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853"
 "checksum clap 2.31.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f0f16b89cbb9ee36d87483dc939fe9f1e13c05898d56d7b230a0d4dff033a536"
 "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
 "checksum cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "56d741ea7a69e577f6d06b36b7dff4738f680593dc27a701ffa8506b73ce28bb"
-"checksum cocoa 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8cd20045e880893b4a8286d5639e9ade85fb1f6a14c291f882cf8cf2149d37d9"
-"checksum colorful 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bca1619ff57dd7a56b58a8e25ef4199f123e78e503fe1653410350a1b98ae65"
 "checksum comedy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4f03fbb05a4df3523a44cda10340e6ae6bea03ee9d01240a1a2c1ef6c73e95"
 "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
 "checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5"
-"checksum copyless 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6ff9c56c9fb2a49c05ef0e431485a22400af20d33226dc0764d891d09e724127"
 "checksum core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4e2640d6d0bf22e82bed1b73c6aef8d5dd31e5abe6666c57e6d45e2649f4f887"
 "checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
-"checksum core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)" = "56790968ab1c8a1202a102e6de05fc6e1ec87da99e4e93e9a7d13efbfc1e95a9"
+"checksum core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)" = "62ceafe1622ffc9a332199096841d0ff9912ec8cf8f9cde01e254a7d5217cd10"
 "checksum core-text 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f3f46450d6f2397261af420b4ccce23807add2e45fa206410a03d66fb7f050ae"
 "checksum coreaudio-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e8f5954c1c7ccb55340443e8b29fca24013545a5e7d72c1ca7db4fc02b982ce"
 "checksum cose 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "72fa26cb151d3ae4b70f63d67d0fed57ce04220feafafbae7f503bef7aae590d"
 "checksum cose-c 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "49726015ab0ca765144fcca61e4a7a543a16b795a777fa53f554da2fffff9a94"
 "checksum cranelift-bforest 0.46.1 (git+https://github.com/CraneStation/Cranelift?rev=da179e4fd83d49b7ad6c9f286b1ea04d4f64907e)" = "<none>"
 "checksum cranelift-codegen 0.46.1 (git+https://github.com/CraneStation/Cranelift?rev=da179e4fd83d49b7ad6c9f286b1ea04d4f64907e)" = "<none>"
 "checksum cranelift-codegen-meta 0.46.1 (git+https://github.com/CraneStation/Cranelift?rev=da179e4fd83d49b7ad6c9f286b1ea04d4f64907e)" = "<none>"
 "checksum cranelift-codegen-shared 0.46.1 (git+https://github.com/CraneStation/Cranelift?rev=da179e4fd83d49b7ad6c9f286b1ea04d4f64907e)" = "<none>"
 "checksum cranelift-entity 0.41.0 (git+https://github.com/PLSysSec/lucet_sandbox_compiler)" = "<none>"
 "checksum cranelift-entity 0.46.1 (git+https://github.com/CraneStation/Cranelift?rev=da179e4fd83d49b7ad6c9f286b1ea04d4f64907e)" = "<none>"
 "checksum cranelift-frontend 0.46.1 (git+https://github.com/CraneStation/Cranelift?rev=da179e4fd83d49b7ad6c9f286b1ea04d4f64907e)" = "<none>"
 "checksum cranelift-wasm 0.46.1 (git+https://github.com/CraneStation/Cranelift?rev=da179e4fd83d49b7ad6c9f286b1ea04d4f64907e)" = "<none>"
 "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
-"checksum crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca"
-"checksum crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac"
+"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71"
+"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9"
 "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
 "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c"
-"checksum crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4"
 "checksum cssparser 0.25.9 (registry+https://github.com/rust-lang/crates.io-index)" = "fbe18ca4efb9ba3716c6da66cc3d7e673bf59fa576353011f48c4cfddbdd740e"
 "checksum cssparser-macros 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5bb1c84e87c717666564ec056105052331431803d606bd45529b28547b611eef"
 "checksum cstr 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b6557bdb1dc9647eae1cf7f5601b14cd45fc3c7ccf2df618387416fe542da6ea"
 "checksum cstr-macros 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cd670e5ff58768ef624207fb95709ce63b8d05573fb9a05165f0eef471ea6a3a"
 "checksum cubeb 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3cbcdfde9ea319160af6eff068ffaa96aad3532e1b5c0ebc134614cfacacae24"
 "checksum cubeb-backend 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5a1e7add4e7642a8aebb24172922318482bed52389a12cb339f728bbd4c4ed9c"
 "checksum cubeb-core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfd9b2ea1cb6afed9419b0d18fc4093df552ccb2300eb57793629f8cd370b4c8"
 "checksum cubeb-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "309c5839c5fa03c08363bd308566cbe4654b25a9984342d7546a33d55b80a3d6"
-"checksum d3d12 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc7ed48e89905e5e146bcc1951cc3facb9e44aea9adf5dc01078cda1bd24b662"
 "checksum darling 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe629a532efad5526454efb0700f86d5ad7ff001acb37e431c8bf017a432a8e"
 "checksum darling_core 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ee54512bec54b41cf2337a22ddfadb53c7d4c738494dc2a186d7b037ad683b85"
 "checksum darling_macro 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0cd3e432e52c0810b72898296a69d66b1d78d1517dff6cde7a130557a55a62c1"
 "checksum dbus 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e1b39f3f6aa3d4a1522c4f0f9f1e9e9167bd93740a8690874caa7cf8ce47d7"
 "checksum deflate 0.7.19 (registry+https://github.com/rust-lang/crates.io-index)" = "8a6abb26e16e8d419b5c78662aa9f82857c2386a073da266840e474d5055ec86"
 "checksum derive_more 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f57d78cf3bd45270dad4e70c21ec77a960b36c7a841ff9db76aaa775a8fb871"
 "checksum devd-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d009f166c0d9e9f9909dc751630b3a6411ab7f85a153d32d01deb364ffe52a7"
 "checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c"
@@ -4565,33 +4208,25 @@ dependencies = [
 "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
 "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
 "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
 "checksum futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)" = "884dbe32a6ae4cd7da5c6db9b78114449df9953b8d490c9d7e1b51720b922c62"
 "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
 "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
 "checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592"
 "checksum getrandom 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8d1dffef07351aafe6ef177e4dd2b8dcf503e6bc765dea3b0de9ed149a3db1ec"
-"checksum gfx-auxil 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "572eee952a9a23c99cfe3e4fd95d277784058a89ac3c77ff6fa3d80a4e321919"
-"checksum gfx-backend-dx11 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c66c77836ff26cf9916e5c8745715a22eae1fc61d994ffa0bea8a7dbd708ece2"
-"checksum gfx-backend-dx12 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b6e913cc800fb12eaba2c420091a02aca9aafbefd672600dfc5b52654343d341"
-"checksum gfx-backend-empty 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d383e6bc48867cb37d298a20139fd1eec298f8f6d594690cd1c50ef25470cc7"
-"checksum gfx-backend-metal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8de5c71f18ba805c95b84d6c78c472ef44485a6fc46e3b49fe1e6739c8d7b0c0"
-"checksum gfx-backend-vulkan 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "62538fedd66a78968a162e8e1a29d085ffbc97f8782634684b2f7da7aea59207"
-"checksum gfx-hal 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "977716fea7800ab5bc9a1e048dd2f72b23af166d8c2f48c6fb6d1ce37d77ca7e"
 "checksum gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39a23d5e872a275135d66895d954269cf5e8661d234eb1c2480f4ce0d586acbd"
 "checksum gleam 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)" = "7f46fd8874e043ffac0d638ed1567a2584f7814f6d72b4db37ab1689004a26c4"
 "checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
 "checksum goblin 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "e3fa261d919c1ae9d1e4533c4a2f99e10938603c4208d56c05bec7a872b661b0"
 "checksum guid_win 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "87261686cc5e35b6584f4c2a430c2b153d8a92ab1ef820c16be34c1df8f5f58b"
 "checksum h2 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "a27e7ed946e8335bdf9a191bc1b9b14a03ba822d013d2f58437f4fabcbd7fc2c"
 "checksum headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6e2e51d356081258ef05ff4c648138b5d3fe64b7300aaad3b820554a2b7fb6"
 "checksum headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "967131279aaa9f7c20c7205b45a391638a83ab118e6509b2d0ccbe08de044237"
 "checksum headers-derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f33cf300c485e3cbcba0235013fcc768723451c9b84d1b31aa7fec0491ac9a11"
-"checksum hibitset 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "47e7292fd9f7fe89fa35c98048f2d0a69b79ed243604234d18f6f8a1aa6f408d"
 "checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a"
 "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83"
 "checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e"
 "checksum hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f1ebec079129e43af5e234ef36ee3d7e6085687d145b7ea653b262d16c6b65f1"
 "checksum ident_case 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c9826188e666f2ed92071d2dadef6edc430b11b158b5b2b3f4babbcc891eaaa"
 "checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
 "checksum image 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)" = "663a975007e0b49903e2e8ac0db2c432c465855f2d65f17883ba1476e85f0b42"
 "checksum indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4d6d89e0948bf10c08b9ecc8ac5b83f07f857ebe2c0cbe38de15b4e4f510356"
@@ -4616,24 +4251,21 @@ dependencies = [
 "checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc"
 "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6"
 "checksum lucet-module 0.1.1 (git+https://github.com/PLSysSec/lucet_sandbox_compiler)" = "<none>"
 "checksum lucet-runtime 0.1.1 (git+https://github.com/PLSysSec/lucet_sandbox_compiler)" = "<none>"
 "checksum lucet-runtime-internals 0.1.1 (git+https://github.com/PLSysSec/lucet_sandbox_compiler)" = "<none>"
 "checksum lucet-wasi 0.1.1 (git+https://github.com/PLSysSec/lucet_sandbox_compiler)" = "<none>"
 "checksum lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084"
 "checksum mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
-"checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
 "checksum malloc_size_of_derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "35adee9ed962cf7d07d62cb58bc45029f3227f5b5b86246caa8632f06c187bc3"
-"checksum mapped_hyph 0.3.0 (git+https://github.com/jfkthame/mapped_hyph.git?tag=v0.3.0)" = "<none>"
 "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"
 "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39"
 "checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
 "checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f"
-"checksum metal 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddf8052f20601c7af6293d3f7bf7b9159aee5974804fe65d871d437f933ec1eb"
 "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425"
 "checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599"
 "checksum miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9e3ae51cea1576ceba0dde3d484d30e6e5b86dee0b2d412fe3a16a15c98202"
 "checksum miniz_oxide 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7108aff85b876d06f22503dcce091e29f76733b2bfdd91eebce81f5e68203a10"
 "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23"
 "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40"
 "checksum mio-named-pipes 0.1.6 (git+https://github.com/alexcrichton/mio-named-pipes)" = "<none>"
 "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125"
@@ -4656,18 +4288,16 @@ dependencies = [
 "checksum num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1"
 "checksum num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2"
 "checksum num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c8b15b261814f992e33760b1fca9fe8b693d8a65299f20c9901688636cfb746"
 "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea"
 "checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124"
 "checksum num-rational 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e96f040177bb3da242b5b1ecf3f54b5d5af3efbbfb18608977a5d2767b22f10"
 "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1"
 "checksum num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "514f0d73e64be53ff320680ca671b64fe3fb91da01e1ae2ddc99eb51d453b20d"
-"checksum objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "31d20fd2b37e07cf5125be68357b588672e8cefe9a96f8c17a9d46053b3e590d"
-"checksum objc_exception 0.1.2 (git+https://github.com/kvark/rust-objc-exception?branch=cc)" = "<none>"
 "checksum object 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81afbc5773e99efe9533d8a539dfac37e531dcd0f4eeb41584bae03ccf76d4c2"
 "checksum once_cell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "891f486f630e5c5a4916c7e16c4b24a53e78c860b646e9f8e005e4f16847bfed"
 "checksum opaque-debug 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "51ecbcb821e1bd256d456fe858aaa7f380b63863eab2eb86eee1bd9f33dd6682"
 "checksum ordered-float 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2f0015e9e8e28ee20c581cfbfe47c650cedeb9ed0721090e0b7ebb10b9cdbcc2"
 "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13"
 "checksum packed_simd 0.3.3 (git+https://github.com/hsivonen/packed_simd?branch=rust_1_32)" = "<none>"
 "checksum parity-wasm 0.40.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1e39faaa292a687ea15120b1ac31899b13586446521df6c149e46f1584671e0f"
 "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
@@ -4698,30 +4328,25 @@ dependencies = [
 "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
 "checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0"
 "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
 "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
 "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
 "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
 "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
 "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
-"checksum range-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dd5927936723a9e8b715d37d7e4b390455087c4bdf25b9f702309460577b14f9"
-"checksum raw-window-handle 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e815b85b31e4d397ca9dd8eb1d692e9cb458b9f6ae8ac2232c995dca8236f87"
 "checksum rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "83a27732a533a1be0a0035a111fe76db89ad312f6f0347004c220c57f209a123"
 "checksum rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "98dcf634205083b17d0861252431eb2acbfb698ab7478a2d20de07954f47ec7b"
 "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
 "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
 "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
 "checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d"
 "checksum regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d9d8297cc20bbb6184f8b45ff61c8ee6a9ac56c156cec8e38c3e5084773c44ad"
 "checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716"
-"checksum relevant 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bbc232e13d37f4547f5b9b42a5efc380cabe5dbc1807f8b893580640b2ab0308"
 "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
-"checksum rendy-descriptor 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f475bcc0505946e998590f1f0545c52ef4b559174a1b353a7ce6638def8b621e"
-"checksum rendy-memory 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08f99de535d9e48d9cfab780b521702cc0d7183d354872d223967b75abae1199"
 "checksum ringbuf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "588456c74d5ff0a5806bc084818e043e767533f743c11ee6f3ccf298599c6847"
 "checksum rkv 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9aab7c645d32e977e186448b0a5c2c3139a91a7f630cfd8a8c314d1d145e78bf"
 "checksum rlbox_lucet_sandbox 0.1.0 (git+https://github.com/PLSysSec/rlbox_lucet_sandbox/?rev=997c648eb0eaeaaa7a00a9eee20431f750b4e190)" = "<none>"
 "checksum ron 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "da06feaa07f69125ab9ddc769b11de29090122170b402547f64b86fe16ebc399"
 "checksum runloop 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d79b4b604167921892e84afbbaad9d5ad74e091bf6c511d9dbfb0593f09fabd"
 "checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf"
 "checksum rust-ini 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8a654c5bda722c699be6b0fe4c0d90de218928da5b724c3e467fc48865c37263"
 "checksum rust_cascade 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f3fe4900d38dab1ad21a515e44687dd0711e6b0ec5b214a3b1aa8857343bcf3a"
@@ -4744,29 +4369,26 @@ dependencies = [
 "checksum serde_bytes 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "45af0182ff64abaeea290235eb67da3825a576c5d53e642c4d5b652e12e6effc"
 "checksum serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)" = "beed18e6f5175aef3ba670e57c60ef3b1b74d250d962a26604bff4c80e970dd4"
 "checksum serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "44dd2cfde475037451fa99b7e5df77aa3cfd1536575fa8e7a538ab36dcde49ae"
 "checksum serde_repr 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "29a734c298df0346c4cd5919595981c266dabbf12dc747c85e1a95e96077a52b"
 "checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97"
 "checksum serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)" = "38b08a9a90e5260fe01c6480ec7c811606df6d3a660415808c3c3fa8ed95b582"
 "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68"
 "checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d"
-"checksum shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11"
 "checksum shift_or_euc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f930dea4685b9803954b9d74cdc175c6d946a22f2eafe5aa2e9a58cdcae7da8c"
 "checksum shift_or_euc_c 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c81ec08c8a68c45c48d8ef58b80ce038cc9945891c4a4996761e2ec5cba05abc"
 "checksum shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
 "checksum siphasher 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2ffc669b726f2bc9a3bcff66e5e23b56ba6bf70e22a34c3d7b6d0b3450b65b84"
 "checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d"
 "checksum slice-deque 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "31ef6ee280cdefba6d2d0b4b78a84a1c1a3f3a4cec98c2d4231c8bc225de0f25"
 "checksum smallbitvec 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1764fe2b30ee783bfe3b9b37b2649d8d590b3148bb12e0079715d4d5c673562e"
 "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7"
 "checksum socket2 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)" = "df028e0e632c2a1823d920ad74895e7f9128e6438cbc4bc6fd1f180e644767b9"
-"checksum spirv_cross 0.16.0 (git+https://github.com/kvark/spirv_cross?branch=wgpu)" = "<none>"
 "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b"
-"checksum storage-map 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0a4829a5c591dc24a944a736d6b1e4053e51339a79fd5d4702c4c999a9c45e"
 "checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970"
 "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
 "checksum svg_fmt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c666f0fed8e1e20e057af770af9077d72f3d5a33157b8537c1475dd8ffd6d32b"
 "checksum syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)" = "66c8865bf5a7cbb662d8b011950060b3c8743dca141b054bf7195b20d314d8e2"
 "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf"
 "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015"
 "checksum synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f085a5855930c0441ca1288cf044ea4aecf4f43a91668abdb870b4ba546a203"
 "checksum target-lexicon 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7975cb2c6f37d77b190bc5004a2bb015971464756fde9514651a525ada2a741a"
@@ -4792,17 +4414,17 @@ dependencies = [
 "checksum tokio-tcp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5b4c329b47f071eb8a746040465fa751bd95e4716e98daef6a9b4e434c17d565"
 "checksum tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72558af20be886ea124595ea0f806dd5703b8958e4705429dd58b3d8231f72f2"
 "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e"
 "checksum tokio-udp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "43eb534af6e8f37d43ab1b612660df14755c42bd003c5f8d2475ee78cc4600c0"
 "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445"
 "checksum toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"
 "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382"
 "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169"
-"checksum uluru 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6d7b39d0c32eba57d52d334e4bdd150df6e755264eefaa1ae2e7cd125f35e1ca"
+"checksum uluru 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2606e9192f308ddc4f0b3c5d1bf3400e28a70fff956e9d9f46d23b094746d9f"
 "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6"
 "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
 "checksum unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"
 "checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1"
 "checksum unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f"
 "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
 "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
 "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
@@ -4823,16 +4445,14 @@ dependencies = [
 "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
 "checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
 "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
 "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9"
 "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 "checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9"
 "checksum winreg 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a27a759395c1195c4cc5cda607ef6f8f6498f64e78f7900f5de0a127a424704a"
-"checksum wio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5"
 "checksum ws 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a6f5bb86663ff4d1639408410f50bf6050367a8525d644d49a6894cd618a631"
 "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
-"checksum x11 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39697e3123f715483d311b5826e254b6f3cfebdd83cf7ef3358f579c3d68e235"
 "checksum xfailure 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "da90eac47bf1d7871b75004b9b631d107df15f37669383b23f0b5297bc7516b6"
 "checksum xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "541b12c998c5b56aa2b4e6f18f03664eef9a4fd0a246a55594efae6cc2d964b5"
 "checksum yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "95acf0db5515d07da9965ec0e0ba6cc2d825e2caeb7303b66ca441729801254e"
 "checksum zip 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "36b9e08fb518a65cf7e08a1e482573eb87a2f4f8c6619316612a3c1f162fe822"
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -58,18 +58,16 @@ debug-assertions = false
 panic = "abort"
 codegen-units = 1
 
 [patch.crates-io]
 libudev-sys = { path = "dom/webauthn/libudev-sys" }
 packed_simd = { git = "https://github.com/hsivonen/packed_simd", branch = "rust_1_32" }
 rlbox_lucet_sandbox = { git = "https://github.com/PLSysSec/rlbox_lucet_sandbox/", rev="997c648eb0eaeaaa7a00a9eee20431f750b4e190" }
 nix = { git = "https://github.com/shravanrn/nix/", branch = "r0.13.1", rev="4af6c367603869a30fddb5ffb0aba2b9477ba92e" }
-spirv_cross = { git = "https://github.com/kvark/spirv_cross", branch = "wgpu" }
-objc_exception = { git = "https://github.com/kvark/rust-objc-exception", branch = "cc" }
 
 [patch.crates-io.cranelift-codegen]
 git = "https://github.com/CraneStation/Cranelift"
 rev = "da179e4fd83d49b7ad6c9f286b1ea04d4f64907e"
 
 [patch.crates-io.cranelift-wasm]
 git = "https://github.com/CraneStation/Cranelift"
 rev = "da179e4fd83d49b7ad6c9f286b1ea04d4f64907e"
--- a/dom/base/nsGlobalWindowInner.cpp
+++ b/dom/base/nsGlobalWindowInner.cpp
@@ -835,16 +835,17 @@ class PromiseDocumentFlushedResolver fin
 
 //*****************************************************************************
 //***    nsGlobalWindowInner: Object Management
 //*****************************************************************************
 
 nsGlobalWindowInner::nsGlobalWindowInner(nsGlobalWindowOuter* aOuterWindow,
                                          WindowGlobalChild* aActor)
     : nsPIDOMWindowInner(aOuterWindow, aActor),
+      mozilla::webgpu::InstanceProvider(this),
       mWasOffline(false),
       mHasHadSlowScript(false),
       mIsChrome(false),
       mCleanMessageManager(false),
       mNeedsFocus(true),
       mHasFocus(false),
       mShowFocusRingForContent(false),
       mFocusByKeyOccurred(false),
@@ -1391,16 +1392,18 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_
 
   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPendingPromises)
 
   for (size_t i = 0; i < tmp->mDocumentFlushedResolvers.Length(); i++) {
     NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocumentFlushedResolvers[i]->mPromise);
     NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocumentFlushedResolvers[i]->mCallback);
   }
 
+  static_cast<mozilla::webgpu::InstanceProvider*>(tmp)->CcTraverse(cb);
+
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 
 NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsGlobalWindowInner)
   JSObject* wrapper = tmp->GetWrapperPreserveColor();
   if (wrapper) {
     // Mark our realm as dead, so the JS engine won't hand out our
     // global after this point.
     JS::RealmBehaviorsRef(js::GetNonCCWObjectRealm(wrapper)).setNonLive();
@@ -1505,16 +1508,18 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ns
 
   NS_IMPL_CYCLE_COLLECTION_UNLINK(mPendingPromises)
   for (size_t i = 0; i < tmp->mDocumentFlushedResolvers.Length(); i++) {
     NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocumentFlushedResolvers[i]->mPromise);
     NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocumentFlushedResolvers[i]->mCallback);
   }
   tmp->mDocumentFlushedResolvers.Clear();
 
+  static_cast<mozilla::webgpu::InstanceProvider*>(tmp)->CcUnlink();
+
   NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
 NS_IMPL_CYCLE_COLLECTION_UNLINK_END
 
 #ifdef DEBUG
 void nsGlobalWindowInner::RiskyUnlink() {
   NS_CYCLE_COLLECTION_INNERNAME.Unlink(this);
 }
 #endif
--- a/dom/base/nsGlobalWindowInner.h
+++ b/dom/base/nsGlobalWindowInner.h
@@ -42,16 +42,17 @@
 #include "mozilla/dom/StorageEventBinding.h"
 #include "mozilla/dom/UnionTypes.h"
 #include "mozilla/ErrorResult.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/GuardObjects.h"
 #include "mozilla/LinkedList.h"
 #include "mozilla/OwningNonNull.h"
 #include "mozilla/TimeStamp.h"
+#include "mozilla/webgpu/InstanceProvider.h"
 #include "nsWrapperCacheInlines.h"
 #include "mozilla/dom/Document.h"
 #include "mozilla/dom/EventTarget.h"
 #include "mozilla/dom/WindowBinding.h"
 #include "mozilla/dom/WindowProxyHolder.h"
 #include "Units.h"
 #include "nsComponentManagerUtils.h"
 #include "nsSize.h"
@@ -175,17 +176,18 @@ class nsGlobalWindowInner final : public
     // implemented on chrome windows.
     ,
                                   private nsIDOMChromeWindow,
                                   public nsIScriptGlobalObject,
                                   public nsIScriptObjectPrincipal,
                                   public nsSupportsWeakReference,
                                   public nsIInterfaceRequestor,
                                   public PRCListStr,
-                                  public nsAPostRefreshObserver {
+                                  public nsAPostRefreshObserver,
+                                  public mozilla::webgpu::InstanceProvider {
  public:
   typedef mozilla::dom::BrowsingContext RemoteProxy;
 
   typedef mozilla::TimeStamp TimeStamp;
   typedef mozilla::TimeDuration TimeDuration;
 
   typedef nsDataHashtable<nsUint64HashKey, nsGlobalWindowInner*>
       InnerWindowByIdTable;
--- a/dom/webgpu/Adapter.cpp
+++ b/dom/webgpu/Adapter.cpp
@@ -1,46 +1,20 @@
 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/dom/WebGPUBinding.h"
 #include "Adapter.h"
 
-#include "Device.h"
 #include "Instance.h"
-#include "ipc/WebGPUChild.h"
-#include "mozilla/dom/Promise.h"
 
 namespace mozilla {
 namespace webgpu {
 
-GPU_IMPL_CYCLE_COLLECTION(Adapter, mBridge, mParent)
+GPU_IMPL_CYCLE_COLLECTION(Adapter, mParent)
 GPU_IMPL_JS_WRAP(Adapter)
 
-Adapter::Adapter(Instance* const aParent, RawId aId)
-    : ChildOf(aParent), mBridge(aParent->GetBridge()), mId(aId) {}
 Adapter::~Adapter() = default;
 
-WebGPUChild* Adapter::GetBridge() const { return mBridge; }
-
-already_AddRefed<dom::Promise> Adapter::RequestDevice(
-    const dom::GPUDeviceDescriptor& aDesc, ErrorResult& aRv) {
-  RefPtr<dom::Promise> promise = dom::Promise::Create(GetParentObject(), aRv);
-  if (NS_WARN_IF(aRv.Failed())) {
-    return nullptr;
-  }
-
-  Maybe<RawId> id = mBridge->AdapterRequestDevice(mId, aDesc);
-  if (id.isSome()) {
-    RefPtr<Device> device = new Device(this, id.value());
-    promise->MaybeResolve(device);
-  } else {
-    promise->MaybeRejectWithDOMException(NS_ERROR_DOM_NOT_SUPPORTED_ERR,
-                                         "Unable to instanciate a Device");
-  }
-
-  return promise.forget();
-}
-
 }  // namespace webgpu
 }  // namespace mozilla
--- a/dom/webgpu/Adapter.h
+++ b/dom/webgpu/Adapter.h
@@ -2,51 +2,42 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef GPU_Adapter_H_
 #define GPU_Adapter_H_
 
 #include "mozilla/AlreadyAddRefed.h"
-#include "mozilla/webgpu/WebGPUTypes.h"
 #include "nsString.h"
 #include "ObjectModel.h"
 
 namespace mozilla {
 namespace dom {
 class Promise;
 struct GPUDeviceDescriptor;
 struct GPUExtensions;
 struct GPUFeatures;
 }  // namespace dom
 
 namespace webgpu {
 class Device;
 class Instance;
-class WebGPUChild;
 
 class Adapter final : public ObjectBase, public ChildOf<Instance> {
  public:
   GPU_DECL_CYCLE_COLLECTION(Adapter)
   GPU_DECL_JS_WRAP(Adapter)
 
+  const nsString mName;
+
  private:
   Adapter() = delete;
   virtual ~Adapter();
 
-  const RefPtr<WebGPUChild> mBridge;
-  const RawId mId;
-  const nsString mName;
-
  public:
-  explicit Adapter(Instance* const aParent, RawId aId);
   void GetName(nsString& out) const { out = mName; }
-  WebGPUChild* GetBridge() const;
-
-  already_AddRefed<dom::Promise> RequestDevice(
-      const dom::GPUDeviceDescriptor& aDesc, ErrorResult& aRv);
 };
 
 }  // namespace webgpu
 }  // namespace mozilla
 
 #endif  // GPU_Adapter_H_
--- a/dom/webgpu/Device.cpp
+++ b/dom/webgpu/Device.cpp
@@ -2,35 +2,25 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/dom/WebGPUBinding.h"
 #include "Device.h"
 
 #include "Adapter.h"
-#include "ipc/WebGPUChild.h"
 
 namespace mozilla {
 namespace webgpu {
 
-NS_IMPL_CYCLE_COLLECTION_INHERITED(Device, DOMEventTargetHelper, mBridge)
+NS_IMPL_CYCLE_COLLECTION_INHERITED(Device, DOMEventTargetHelper)
 NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED_0(Device, DOMEventTargetHelper)
 GPU_IMPL_JS_WRAP(Device)
 
-Device::Device(Adapter* const aParent, RawId aId)
-    : DOMEventTargetHelper(aParent->GetParentObject()),
-      mBridge(aParent->GetBridge()),
-      mId(aId) {
-  Unused << mId;  // TODO: remove
-}
+Device::Device(nsIGlobalObject* aGlobal) : DOMEventTargetHelper(aGlobal) {}
 
-Device::~Device() {
-  if (mBridge->IsOpen()) {
-    mBridge->SendDeviceDestroy(mId);
-  }
-}
+Device::~Device() = default;
 
 void Device::GetLabel(nsAString& aValue) const { aValue = mLabel; }
 void Device::SetLabel(const nsAString& aLabel) { mLabel = aLabel; }
 
 }  // namespace webgpu
 }  // namespace mozilla
--- a/dom/webgpu/Device.h
+++ b/dom/webgpu/Device.h
@@ -2,17 +2,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef GPU_DEVICE_H_
 #define GPU_DEVICE_H_
 
 #include "mozilla/RefPtr.h"
-#include "mozilla/webgpu/WebGPUTypes.h"
+
 #include "mozilla/DOMEventTargetHelper.h"
 
 namespace mozilla {
 namespace dom {
 struct GPUExtensions;
 struct GPUFeatures;
 struct GPULimits;
 
@@ -50,34 +50,32 @@ class Fence;
 class InputState;
 class PipelineLayout;
 class Queue;
 class RenderBundleEncoder;
 class RenderPipeline;
 class Sampler;
 class ShaderModule;
 class Texture;
-class WebGPUChild;
 
 class Device final : public DOMEventTargetHelper {
  public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(Device, DOMEventTargetHelper)
   GPU_DECL_JS_WRAP(Device)
 
+  explicit Device(nsIGlobalObject* aGlobal);
+
  private:
   Device() = delete;
   virtual ~Device();
 
-  const RefPtr<WebGPUChild> mBridge;
-  const RawId mId;
   nsString mLabel;
 
  public:
-  explicit Device(Adapter* const aParent, RawId aId);
   void GetLabel(nsAString& aValue) const;
   void SetLabel(const nsAString& aLabel);
 
   // IMPL_EVENT_HANDLER(uncapturederror)
 };
 
 }  // namespace webgpu
 }  // namespace mozilla
--- a/dom/webgpu/Instance.cpp
+++ b/dom/webgpu/Instance.cpp
@@ -1,78 +1,32 @@
 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "Instance.h"
 
 #include "Adapter.h"
-#include "gfxConfig.h"
+#include "InstanceProvider.h"
 #include "nsIGlobalObject.h"
-#include "ipc/WebGPUChild.h"
-#include "ipc/WebGPUTypes.h"
-#include "mozilla/layers/CompositorBridgeChild.h"
 
 namespace mozilla {
 namespace webgpu {
 
-GPU_IMPL_CYCLE_COLLECTION(Instance, mBridge, mOwner)
+GPU_IMPL_CYCLE_COLLECTION(Instance, mParent)
 
 /*static*/
-already_AddRefed<Instance> Instance::Create(nsIGlobalObject* aOwner) {
-  if (!gfx::gfxConfig::IsEnabled(gfx::Feature::WEBGPU)) {
-    return nullptr;
-  }
-
-  RefPtr<WebGPUChild> bridge =
-      layers::CompositorBridgeChild::Get()->GetWebGPUChild();
-  if (NS_WARN_IF(!bridge)) {
-    MOZ_CRASH("Failed to create an IPDL bridge for WebGPU!");
-  }
-
-  RefPtr<Instance> result = new Instance(aOwner, bridge);
-  return result.forget();
+RefPtr<Instance> Instance::Create(nsIGlobalObject* parent) {
+  return new Instance(parent);
 }
 
-Instance::Instance(nsIGlobalObject* aOwner, WebGPUChild* aBridge)
-    : mOwner(aOwner), mBridge(aBridge) {}
+Instance::Instance(nsIGlobalObject* parent) : mParent(parent) {}
 
 Instance::~Instance() = default;
 
 JSObject* Instance::WrapObject(JSContext* cx,
                                JS::Handle<JSObject*> givenProto) {
   return dom::GPU_Binding::Wrap(cx, this, givenProto);
 }
 
-WebGPUChild* Instance::GetBridge() const { return mBridge; }
-
-already_AddRefed<dom::Promise> Instance::RequestAdapter(
-    const dom::GPURequestAdapterOptions& aOptions, ErrorResult& aRv) {
-  RefPtr<dom::Promise> promise = dom::Promise::Create(mOwner, aRv);
-  if (NS_WARN_IF(aRv.Failed())) {
-    return nullptr;
-  }
-
-  RefPtr<Instance> instance = this;
-
-  mBridge->InstanceRequestAdapter(aOptions)->Then(
-      GetMainThreadSerialEventTarget(), __func__,
-      [promise, instance](RawId id) {
-        MOZ_ASSERT(id != 0);
-        RefPtr<Adapter> adapter = new Adapter(instance, id);
-        promise->MaybeResolve(adapter);
-      },
-      [promise](const Maybe<ipc::ResponseRejectReason>& aRv) {
-        if (aRv.isSome()) {
-          promise->MaybeRejectWithDOMException(NS_ERROR_DOM_ABORT_ERR,
-                                               "Internal communication error!");
-        } else {
-          promise->MaybeRejectWithDOMException(NS_ERROR_DOM_INVALID_STATE_ERR,
-                                               "No matching adapter found!");
-        }
-      });
-
-  return promise.forget();
-}
-
 }  // namespace webgpu
 }  // namespace mozilla
--- a/dom/webgpu/Instance.h
+++ b/dom/webgpu/Instance.h
@@ -14,37 +14,31 @@
 namespace mozilla {
 namespace dom {
 class Promise;
 struct GPURequestAdapterOptions;
 }  // namespace dom
 
 namespace webgpu {
 class Adapter;
-class GPUAdapter;
-class WebGPUChild;
+class InstanceProvider;
 
 class Instance final : public nsWrapperCache {
  public:
   GPU_DECL_CYCLE_COLLECTION(Instance)
   GPU_DECL_JS_WRAP(Instance)
 
-  static already_AddRefed<Instance> Create(nsIGlobalObject* aOwner);
+  nsCOMPtr<nsIGlobalObject> mParent;
 
-  already_AddRefed<dom::Promise> RequestAdapter(
-      const dom::GPURequestAdapterOptions& aOptions, ErrorResult& aRv);
+  static RefPtr<Instance> Create(nsIGlobalObject* parent);
 
  private:
-  explicit Instance(nsIGlobalObject* aOwner, WebGPUChild* aBridge);
+  explicit Instance(nsIGlobalObject* parent);
   virtual ~Instance();
 
-  nsCOMPtr<nsIGlobalObject> mOwner;
-  const RefPtr<WebGPUChild> mBridge;
-
  public:
-  nsIGlobalObject* GetParentObject() const { return mOwner; }
-  WebGPUChild* GetBridge() const;
+  nsIGlobalObject* GetParentObject() const { return mParent.get(); }
 };
 
 }  // namespace webgpu
 }  // namespace mozilla
 
 #endif  // GPU_INSTANCE_H_
new file mode 100644
--- /dev/null
+++ b/dom/webgpu/InstanceProvider.cpp
@@ -0,0 +1,38 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "InstanceProvider.h"
+
+#include "Instance.h"
+
+namespace mozilla {
+namespace webgpu {
+
+InstanceProvider::InstanceProvider(nsIGlobalObject* const global)
+    : mGlobal(global) {}
+
+InstanceProvider::~InstanceProvider() = default;
+
+already_AddRefed<Instance> InstanceProvider::Webgpu() const {
+  if (!mInstance) {
+    const auto inst = Instance::Create(mGlobal);
+    mInstance = Some(inst);
+  }
+  auto ret = mInstance.value();
+  return ret.forget();
+}
+
+void InstanceProvider::CcTraverse(
+    nsCycleCollectionTraversalCallback& callback) const {
+  if (mInstance) {
+    CycleCollectionNoteChild(callback, mInstance.ref().get(),
+                             "webgpu::InstanceProvider::mInstance", 0);
+  }
+}
+
+void InstanceProvider::CcUnlink() { mInstance = Some(nullptr); }
+
+}  // namespace webgpu
+}  // namespace mozilla
new file mode 100644
--- /dev/null
+++ b/dom/webgpu/InstanceProvider.h
@@ -0,0 +1,55 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef GPU_INSTANCE_PROVIDER_H_
+#define GPU_INSTANCE_PROVIDER_H_
+
+#include "mozilla/AlreadyAddRefed.h"
+#include "mozilla/Maybe.h"
+#include "mozilla/RefPtr.h"
+
+class nsCycleCollectionTraversalCallback;
+class nsIGlobalObject;
+
+namespace mozilla {
+namespace webgpu {
+class Instance;
+
+class InstanceProvider {
+ private:
+  nsIGlobalObject* const mGlobal;
+  mutable Maybe<RefPtr<Instance>> mInstance;
+
+ protected:
+  explicit InstanceProvider(nsIGlobalObject* global);
+  virtual ~InstanceProvider();
+
+ public:
+  already_AddRefed<Instance> Webgpu() const;
+
+  nsIGlobalObject* GetParentObject() const { return mGlobal; }
+
+  void CcTraverse(nsCycleCollectionTraversalCallback&) const;
+  void CcUnlink();
+};
+
+template <typename T>
+void ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& callback,
+                                 const Maybe<T>& field, const char* name,
+                                 uint32_t flags) {
+  if (field) {
+    CycleCollectionNoteChild(callback, field.value(), name, flags);
+  }
+}
+
+template <typename T>
+void ImplCycleCollectionUnlink(Maybe<T>& field) {
+  field = Nothing();
+}
+
+}  // namespace webgpu
+}  // namespace mozilla
+
+#endif  // GPU_INSTANCE_PROVIDER_H_
--- a/dom/webgpu/ObjectModel.h
+++ b/dom/webgpu/ObjectModel.h
@@ -14,18 +14,18 @@ class nsIGlobalObject;
 namespace mozilla {
 namespace webgpu {
 
 template <typename T>
 class ChildOf {
  public:
   const RefPtr<T> mParent;
 
-  explicit ChildOf(T* const parent);
-
+  explicit ChildOf(
+      T* parent = nullptr);  // TODO: This can't be nullptr eventually.
  protected:
   virtual ~ChildOf();
 
  public:
   nsIGlobalObject* GetParentObject() const;
 };
 
 class ObjectBase : public nsWrapperCache {
deleted file mode 100644
--- a/dom/webgpu/ffi/moz.build
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-EXPORTS.mozilla.webgpu.ffi += [
-    'wgpu.h',
-]
-
-UNIFIED_SOURCES += [
-]
-
-if CONFIG['COMPILE_ENVIRONMENT']:
-    GENERATED_FILES += [
-        'wgpu_ffi_generated.h',
-    ]
-
-    EXPORTS.mozilla.webgpu.ffi += [
-        '!wgpu_ffi_generated.h',
-    ]
-
-    ffi_generated = GENERATED_FILES['wgpu_ffi_generated.h']
-    ffi_generated.script = '/layout/style/RunCbindgen.py:generate'
-    ffi_generated.inputs = [
-        '/dom/webgpu/wgpu-remote',
-    ]
-
-
-include('/ipc/chromium/chromium-config.mozbuild')
-
-FINAL_LIBRARY = 'xul'
deleted file mode 100644
--- a/dom/webgpu/ffi/wgpu.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef WGPU_h
-#define WGPU_h
-
-// Prelude of types necessary before including wgpu_ffi_generated.h
-namespace mozilla {
-namespace webgpu {
-namespace ffi {
-
-#define WGPU_INLINE
-#define WGPU_FUNC
-#define WGPU_DESTRUCTOR_SAFE_FUNC
-
-extern "C" {
-#include "wgpu_ffi_generated.h"
-}
-
-#undef WGPU_INLINE
-#undef WGPU_FUNC
-#undef WGPU_DESTRUCTOR_SAFE_FUNC
-
-}  // namespace ffi
-}  // namespace webgpu
-}  // namespace mozilla
-
-#endif  // WGPU_h
deleted file mode 100644
--- a/dom/webgpu/ipc/PWebGPU.ipdl
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * vim: sw=2 ts=8 et :
- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-using RawId from "mozilla/webgpu/WebGPUTypes.h";
-using dom::GPURequestAdapterOptions from "mozilla/dom/WebGPUBinding.h";
-using dom::GPUDeviceDescriptor from "mozilla/dom/WebGPUBinding.h";
-
-include "mozilla/webgpu/WebGPUSerialize.h";
-include protocol PCompositorBridge;
-
-namespace mozilla {
-namespace webgpu {
-
-/**
- * Represents the connection between a WebGPUChild actor that issues WebGPU
- * command from the content process, and a WebGPUParent in the compositor
- * process that runs the commands.
- */
-async protocol PWebGPU
-{
-  manager PCompositorBridge;
-
-parent:
-  async InstanceRequestAdapter(GPURequestAdapterOptions options, RawId[] ids) returns (RawId adapterId);
-  async AdapterRequestDevice(RawId selfId, GPUDeviceDescriptor desc, RawId newId);
-  async DeviceDestroy(RawId selfId);
-  async Shutdown();
-
-child:
-  async __delete__();
-};
-
-} // webgpu
-} // mozilla
deleted file mode 100644
--- a/dom/webgpu/ipc/WebGPUChild.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "WebGPUChild.h"
-#include "mozilla/dom/WebGPUBinding.h"
-#include "mozilla/webgpu/ffi/wgpu.h"
-
-namespace mozilla {
-namespace webgpu {
-
-NS_IMPL_CYCLE_COLLECTION(WebGPUChild)
-NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(WebGPUChild, AddRef)
-NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(WebGPUChild, Release)
-
-static ffi::WGPUClient* initialize() {
-  ffi::WGPUInfrastructure infra = ffi::wgpu_client_new();
-  return infra.client;
-}
-
-WebGPUChild::WebGPUChild() : mClient(initialize()), mIPCOpen(false) {}
-
-WebGPUChild::~WebGPUChild() {
-  if (mClient) {
-    ffi::wgpu_client_delete(mClient);
-  }
-}
-
-RefPtr<RawIdPromise> WebGPUChild::InstanceRequestAdapter(
-    const dom::GPURequestAdapterOptions& aOptions) {
-  const int max_ids = 10;
-  RawId ids[max_ids] = {0};
-  unsigned long count =
-      ffi::wgpu_client_make_adapter_ids(mClient, ids, max_ids);
-
-  auto client = mClient;
-  nsTArray<RawId> sharedIds;
-  for (unsigned long i = 0; i != count; ++i) {
-    sharedIds.AppendElement(ids[i]);
-  }
-
-  return SendInstanceRequestAdapter(aOptions, sharedIds)
-      ->Then(
-          GetCurrentThreadSerialEventTarget(), __func__,
-          [client, ids, count](const RawId& aId) {
-            if (aId == 0) {
-              ffi::wgpu_client_kill_adapter_ids(client, ids, count);
-              return RawIdPromise::CreateAndReject(Nothing(), __func__);
-            } else {
-              // find the position in the list
-              unsigned int i = 0;
-              while (ids[i] != aId) {
-                i++;
-              }
-              if (i > 0) {
-                ffi::wgpu_client_kill_adapter_ids(client, ids, i);
-              }
-              if (i + 1 < count) {
-                ffi::wgpu_client_kill_adapter_ids(client, ids + i + 1,
-                                                  count - i - 1);
-              }
-              return RawIdPromise::CreateAndResolve(aId, __func__);
-            }
-          },
-          [client, ids, count](const ipc::ResponseRejectReason& aReason) {
-            ffi::wgpu_client_kill_adapter_ids(client, ids, count);
-            return RawIdPromise::CreateAndReject(Some(aReason), __func__);
-          });
-}
-
-Maybe<RawId> WebGPUChild::AdapterRequestDevice(
-    RawId aSelfId, const dom::GPUDeviceDescriptor& aDesc) {
-  RawId id = ffi::wgpu_client_make_device_id(mClient, aSelfId);
-  if (SendAdapterRequestDevice(aSelfId, aDesc, id)) {
-    return Some(id);
-  } else {
-    ffi::wgpu_client_kill_device_id(mClient, id);
-    return Nothing();
-  }
-}
-
-}  // namespace webgpu
-}  // namespace mozilla
deleted file mode 100644
--- a/dom/webgpu/ipc/WebGPUChild.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef WEBGPU_CHILD_H_
-#define WEBGPU_CHILD_H_
-
-#include "mozilla/webgpu/PWebGPUChild.h"
-#include "mozilla/MozPromise.h"
-
-namespace mozilla {
-namespace dom {
-struct GPURequestAdapterOptions;
-}  // namespace dom
-namespace layers {
-class CompositorBridgeChild;
-}  // namespace layers
-namespace webgpu {
-namespace ffi {
-struct WGPUClient;
-}  // namespace ffi
-
-typedef MozPromise<RawId, Maybe<ipc::ResponseRejectReason>, true> RawIdPromise;
-
-class WebGPUChild final : public PWebGPUChild {
- public:
-  friend class layers::CompositorBridgeChild;
-
-  NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(WebGPUChild)
-  NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGPUChild)
-
- public:
-  explicit WebGPUChild();
-
-  bool IsOpen() const { return mIPCOpen; }
-  RefPtr<RawIdPromise> InstanceRequestAdapter(
-      const dom::GPURequestAdapterOptions& aOptions);
-  Maybe<RawId> AdapterRequestDevice(RawId aSelfId,
-                                    const dom::GPUDeviceDescriptor& aDesc);
-
- private:
-  virtual ~WebGPUChild();
-
-  // AddIPDLReference and ReleaseIPDLReference are only to be called by
-  // CompositorBridgeChild's AllocPWebGPUChild and DeallocPWebGPUChild methods
-  // respectively. We intentionally make them private to prevent misuse.
-  // The purpose of these methods is to be aware of when the IPC system around
-  // this actor goes down: mIPCOpen is then set to false.
-  void AddIPDLReference() {
-    MOZ_ASSERT(!mIPCOpen);
-    mIPCOpen = true;
-    AddRef();
-  }
-  void ReleaseIPDLReference() {
-    MOZ_ASSERT(mIPCOpen);
-    mIPCOpen = false;
-    Release();
-  }
-
-  ffi::WGPUClient* const mClient;
-  bool mIPCOpen;
-};
-
-}  // namespace webgpu
-}  // namespace mozilla
-
-#endif  // WEBGPU_CHILD_H_
deleted file mode 100644
--- a/dom/webgpu/ipc/WebGPUParent.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "WebGPUParent.h"
-#include "mozilla/webgpu/ffi/wgpu.h"
-
-namespace mozilla {
-namespace webgpu {
-
-WebGPUParent::WebGPUParent() : mContext(ffi::wgpu_server_new()) {}
-
-WebGPUParent::~WebGPUParent() = default;
-
-ipc::IPCResult WebGPUParent::RecvInstanceRequestAdapter(
-    const dom::GPURequestAdapterOptions& aOptions,
-    const nsTArray<RawId>& aTargetIds,
-    InstanceRequestAdapterResolver&& resolver) {
-  ffi::WGPURequestAdapterOptions options = {};
-  if (aOptions.mPowerPreference.WasPassed()) {
-    options.power_preference = static_cast<ffi::WGPUPowerPreference>(
-        aOptions.mPowerPreference.Value());
-  }
-  // TODO: make available backends configurable by prefs
-
-  int8_t index = ffi::wgpu_server_instance_request_adapter(
-      mContext, &options, aTargetIds.Elements(), aTargetIds.Length());
-  if (index >= 0) {
-    resolver(aTargetIds[index]);
-  } else {
-    resolver(0);
-  }
-  return IPC_OK();
-}
-
-ipc::IPCResult WebGPUParent::RecvAdapterRequestDevice(
-    RawId aSelfId, const dom::GPUDeviceDescriptor& aOptions, RawId aNewId) {
-  ffi::WGPUDeviceDescriptor desc = {};
-  // TODO: fill up the descriptor
-
-  ffi::wgpu_server_adapter_request_device(mContext, aSelfId, &desc, aNewId);
-  return IPC_OK();
-}
-
-ipc::IPCResult WebGPUParent::RecvDeviceDestroy(RawId aSelfId) {
-  ffi::wgpu_server_device_destroy(mContext, aSelfId);
-  return IPC_OK();
-}
-
-ipc::IPCResult WebGPUParent::RecvShutdown() {
-  ffi::wgpu_server_delete(const_cast<ffi::WGPUGlobal*>(mContext));
-  return IPC_OK();
-}
-
-}  // namespace webgpu
-}  // namespace mozilla
deleted file mode 100644
--- a/dom/webgpu/ipc/WebGPUParent.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef WEBGPU_PARENT_H_
-#define WEBGPU_PARENT_H_
-
-#include "mozilla/webgpu/PWebGPUParent.h"
-#include "WebGPUTypes.h"
-
-namespace mozilla {
-namespace webgpu {
-namespace ffi {
-struct WGPUGlobal;
-}  // namespace ffi
-
-class WebGPUParent final : public PWebGPUParent {
-  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(WebGPUParent)
-
- public:
-  explicit WebGPUParent();
-
-  ipc::IPCResult RecvInstanceRequestAdapter(
-      const dom::GPURequestAdapterOptions& aOptions,
-      const nsTArray<RawId>& aTargetIds,
-      InstanceRequestAdapterResolver&& resolver);
-  ipc::IPCResult RecvAdapterRequestDevice(RawId aSelfId,
-                                          const dom::GPUDeviceDescriptor& aDesc,
-                                          RawId aNewId);
-  ipc::IPCResult RecvDeviceDestroy(RawId aSelfId);
-  ipc::IPCResult RecvShutdown();
-
- private:
-  virtual ~WebGPUParent();
-
-  const ffi::WGPUGlobal* const mContext;
-};
-
-}  // namespace webgpu
-}  // namespace mozilla
-
-#endif  // WEBGPU_PARENT_H_
deleted file mode 100644
--- a/dom/webgpu/ipc/WebGPUSerialize.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef WEBGPU_SERIALIZE_H_
-#define WEBGPU_SERIALIZE_H_
-
-#include "WebGPUTypes.h"
-#include "ipc/IPCMessageUtils.h"
-#include "mozilla/dom/WebGPUBinding.h"
-
-namespace IPC {
-
-#define DEFINE_IPC_SERIALIZER_ENUM(something)                    \
-  template <>                                                    \
-  struct ParamTraits<something>                                  \
-      : public ContiguousEnumSerializer<something, something(0), \
-                                        something::EndGuard_> {}
-
-DEFINE_IPC_SERIALIZER_ENUM(mozilla::dom::GPUPowerPreference);
-
-DEFINE_IPC_SERIALIZER_WITH_FIELDS(mozilla::dom::GPURequestAdapterOptions,
-                                  mPowerPreference);
-DEFINE_IPC_SERIALIZER_WITH_FIELDS(mozilla::dom::GPUExtensions,
-                                  mAnisotropicFiltering);
-DEFINE_IPC_SERIALIZER_WITH_FIELDS(mozilla::dom::GPULimits, mMaxBindGroups);
-DEFINE_IPC_SERIALIZER_WITH_FIELDS(mozilla::dom::GPUDeviceDescriptor,
-                                  mExtensions, mLimits);
-
-#undef DEFINE_IPC_SERIALIZER_ENUM
-
-}  // namespace IPC
-#endif  // WEBGPU_SERIALIZE_H_
deleted file mode 100644
--- a/dom/webgpu/ipc/WebGPUTypes.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef WEBGPU_TYPES_H_
-#define WEBGPU_TYPES_H_
-
-namespace mozilla {
-namespace webgpu {
-
-typedef uint64_t RawId;
-
-}  // namespace webgpu
-
-}  // namespace mozilla
-
-#endif  // WEBGPU_TYPES_H_
--- a/dom/webgpu/mochitest/mochitest.ini
+++ b/dom/webgpu/mochitest/mochitest.ini
@@ -1,6 +1,6 @@
 [DEFAULT]
 subsuite = webgl1-core
 prefs = dom.webgpu.enable=true
 
 [test_enabled.html]
-[test_device_creation.html]
+
deleted file mode 100644
--- a/dom/webgpu/mochitest/test_device_creation.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset='utf-8'>
-<script src="/tests/SimpleTest/SimpleTest.js"></script>
-<link rel="stylesheet" href="/tests/SimpleTest/test.css">
-</head>
-<body>
-<script>
-
-ok(SpecialPowers.getBoolPref('dom.webgpu.enable'), 'Pref should be enabled.');
-
-const func = async function() {
-  const adapter = await navigator.gpu.requestAdapter();
-  const device = await adapter.requestDevice();
-  ok(device !== undefined, 'device !== undefined');
-};
-
-SimpleTest.waitForExplicitFinish();
-func().finally(() => SimpleTest.finish());
-
-</script>
-</body>
-</html>
-
--- a/dom/webgpu/moz.build
+++ b/dom/webgpu/moz.build
@@ -8,33 +8,34 @@ with Files('**'):
     BUG_COMPONENT = ('Core', 'Graphics: WebGPU')
 
 MOCHITEST_MANIFESTS += [
     'mochitest/mochitest-no-pref.ini',
     'mochitest/mochitest.ini',
 ]
 
 DIRS += [
-    'ffi',
+    'thread',
 ]
 
 h_and_cpp = [
     'Adapter',
     'BindGroup',
     'BindGroupLayout',
     'Buffer',
     'CanvasContext',
     'CommandBuffer',
     'CommandEncoder',
     'ComputePassEncoder',
     'ComputePipeline',
     'Device',
     'DeviceLostInfo',
     'Fence',
     'Instance',
+    'InstanceProvider',
     'ObjectModel',
     'OutOfMemoryError',
     'PipelineLayout',
     'ProgrammablePassEncoder',
     'Queue',
     'RenderBundle',
     'RenderBundleEncoder',
     'RenderEncoderBase',
@@ -45,27 +46,9 @@ h_and_cpp = [
     'SwapChain',
     'Texture',
     'TextureView',
     'ValidationError',
 ]
 EXPORTS.mozilla.webgpu += [x + '.h' for x in h_and_cpp]
 UNIFIED_SOURCES += [x + '.cpp' for x in h_and_cpp]
 
-IPDL_SOURCES += [
-    'ipc/PWebGPU.ipdl',
-]
-
-EXPORTS.mozilla.webgpu += [
-    'ipc/WebGPUChild.h',
-    'ipc/WebGPUParent.h',
-    'ipc/WebGPUSerialize.h',
-    'ipc/WebGPUTypes.h',
-]
-
-UNIFIED_SOURCES += [
-    'ipc/WebGPUChild.cpp',
-    'ipc/WebGPUParent.cpp',
-]
-
-include('/ipc/chromium/chromium-config.mozbuild')
-
 FINAL_LIBRARY = 'xul'
new file mode 100644
--- /dev/null
+++ b/dom/webgpu/thread/WebGPUThreading.cpp
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "WebGPUThreading.h"
+#include "mtransport/runnable_utils.h"
+
+namespace mozilla {
+namespace webgpu {
+
+static StaticRefPtr<WebGPUThreading> sWebGPUThread;
+
+WebGPUThreading::WebGPUThreading(base::Thread* aThread) : mThread(aThread) {}
+
+WebGPUThreading::~WebGPUThreading() { delete mThread; }
+
+// static
+void WebGPUThreading::Start() {
+  MOZ_ASSERT(NS_IsMainThread());
+  MOZ_ASSERT(!sWebGPUThread);
+
+  base::Thread* thread = new base::Thread("WebGPU");
+
+  base::Thread::Options options;
+  if (!thread->StartWithOptions(options)) {
+    delete thread;
+    return;
+  }
+
+  sWebGPUThread = new WebGPUThreading(thread);
+  const auto fnInit = []() {};
+
+  RefPtr<Runnable> runnable =
+      NS_NewRunnableFunction("WebGPUThreading fnInit", fnInit);
+  sWebGPUThread->GetLoop()->PostTask(runnable.forget());
+}
+
+// static
+void WebGPUThreading::ShutDown() {
+  MOZ_ASSERT(NS_IsMainThread());
+  MOZ_ASSERT(sWebGPUThread);
+
+  const auto fnExit = []() {};
+
+  RefPtr<Runnable> runnable =
+      NS_NewRunnableFunction("WebGPUThreading fnExit", fnExit);
+  sWebGPUThread->GetLoop()->PostTask(runnable.forget());
+
+  sWebGPUThread = nullptr;
+}
+
+// static
+MessageLoop* WebGPUThreading::GetLoop() {
+  MOZ_ASSERT(NS_IsMainThread());
+  return sWebGPUThread ? sWebGPUThread->mThread->message_loop() : nullptr;
+}
+
+}  // namespace webgpu
+}  // namespace mozilla
new file mode 100644
--- /dev/null
+++ b/dom/webgpu/thread/WebGPUThreading.h
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef MOZILLA_WEBGPU_THREADING_H
+#define MOZILLA_WEBGPU_THREADING_H
+
+#include "ThreadSafeRefcountingWithMainThreadDestruction.h"
+#include "base/thread.h"  // for Thread
+#include "mozilla/layers/SynchronousTask.h"
+
+namespace mozilla {
+namespace webgpu {
+
+class WebGPUThreading final {
+  NS_INLINE_DECL_THREADSAFE_REFCOUNTING_WITH_MAIN_THREAD_DESTRUCTION(
+      WebGPUThreading)
+
+ public:
+  /// Can only be called from the main thread.
+  static void Start();
+
+  /// Can only be called from the main thread.
+  static void ShutDown();
+
+  /// Can be called from any thread. Returns `nullptr` if
+  /// the threading is not initialized.
+  static MessageLoop* GetLoop();
+
+ private:
+  explicit WebGPUThreading(base::Thread* aThread);
+  ~WebGPUThreading();
+
+  base::Thread* const mThread;
+};
+
+}  // namespace webgpu
+}  // namespace mozilla
+
+#endif  // MOZILLA_WEBGPU_THREADING_H
new file mode 100644
--- /dev/null
+++ b/dom/webgpu/thread/moz.build
@@ -0,0 +1,18 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+h_and_cpp = [
+    'WebGPUThreading',
+]
+EXPORTS.mozilla.webgpu += [x + '.h' for x in h_and_cpp]
+UNIFIED_SOURCES += [x + '.cpp' for x in h_and_cpp]
+
+
+LOCAL_INCLUDES += [
+    '/ipc/chromium/src',
+]
+
+FINAL_LIBRARY = 'xul'
deleted file mode 100644
--- a/dom/webgpu/wgpu-native/Cargo.toml
+++ /dev/null
@@ -1,53 +0,0 @@
-[package]
-name = "wgpu-native"
-version = "0.4.0"
-authors = [
-	"Dzmitry Malyshau <kvark@mozilla.com>",
-	"Joshua Groves <josh@joshgroves.com>",
-]
-edition = "2018"
-description = "WebGPU native implementation on gfx-hal"
-homepage = "https://github.com/gfx-rs/wgpu"
-repository = "https://github.com/gfx-rs/wgpu"
-keywords = ["graphics"]
-license = "MPL-2.0"
-
-[lib]
-#crate-type = ["lib", "cdylib", "staticlib"]
-crate-type = ["lib"]
-
-[features]
-default = []
-local = ["lazy_static", "raw-window-handle"]
-metal-auto-capture = ["gfx-backend-metal/auto-capture"]
-#NOTE: glutin feature is not stable, use at your own risk
-#glutin = ["gfx-backend-gl/glutin"]
-
-[dependencies]
-arrayvec = "0.5"
-bitflags = "1.0"
-copyless = "0.1"
-fxhash = "0.2"
-lazy_static = { version = "1.1.0", optional = true }
-log = "0.4"
-hal = { package = "gfx-hal", version = "0.4" }
-gfx-backend-empty = { version = "0.4" }
-parking_lot = "0.9"
-raw-window-handle = { version = "0.3", optional = true }
-rendy-memory = "0.5"
-rendy-descriptor = "0.5"
-serde = { version = "1.0", features = ["serde_derive"], optional = true }
-smallvec = "0.6"
-vec_map = "0.8"
-
-[target.'cfg(any(target_os = "ios", target_os = "macos"))'.dependencies]
-gfx-backend-metal = { version = "0.4" }
-gfx-backend-vulkan = { version = "0.4", optional = true }
-
-[target.'cfg(all(unix, not(target_os = "ios"), not(target_os = "macos")))'.dependencies]
-gfx-backend-vulkan = { version = "0.4", features = ["x11"] }
-
-[target.'cfg(windows)'.dependencies]
-gfx-backend-dx12 = { version = "0.4.1" }
-gfx-backend-dx11 = { version = "0.4" }
-gfx-backend-vulkan = { version = "0.4" }
deleted file mode 100644
--- a/dom/webgpu/wgpu-native/cbindgen.toml
+++ /dev/null
@@ -1,37 +0,0 @@
-header = """
-#define WGPU_LOCAL
-"""
-include_version = true
-braces = "SameLine"
-line_length = 100
-tab_width = 2
-language = "C"
-
-[export]
-prefix = "WGPU"
-#TODO: figure out why cbindgen even tries to export a private type...
-exclude = ["BufferMapResult"]
-
-[parse]
-parse_deps = false
-
-[parse.expand]
-features = ["local"]
-
-[fn]
-
-[struct]
-derive_eq = true
-
-[enum]
-prefix_with_name = true
-derive_helper_methods = true
-
-[macro_expansion]
-bitflags = true
-
-[defines]
-"feature = local" = "WGPU_LOCAL"
-"feature = gfx-backend-gl" = "WGPU_BACKEND_GL"
-"feature = winit" = "WGPU_WINIT"
-"feature = glutin" = "WGPU_GLUTIN"
deleted file mode 100644
--- a/dom/webgpu/wgpu-native/src/binding_model.rs
+++ /dev/null
@@ -1,132 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-use crate::{
-    resource::TextureViewDimension,
-    track::TrackerSet,
-    BindGroupLayoutId,
-    BufferAddress,
-    BufferId,
-    DeviceId,
-    LifeGuard,
-    RefCount,
-    SamplerId,
-    Stored,
-    TextureViewId,
-};
-
-use arrayvec::ArrayVec;
-use bitflags::bitflags;
-use rendy_descriptor::{DescriptorRanges, DescriptorSet};
-
-use std::borrow::Borrow;
-
-pub const MAX_BIND_GROUPS: usize = 4;
-
-bitflags! {
-    #[repr(transparent)]
-    pub struct ShaderStage: u32 {
-        const NONE = 0;
-        const VERTEX = 1;
-        const FRAGMENT = 2;
-        const COMPUTE = 4;
-    }
-}
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)]
-pub enum BindingType {
-    UniformBuffer = 0,
-    StorageBuffer = 1,
-    ReadonlyStorageBuffer = 2,
-    Sampler = 3,
-    SampledTexture = 4,
-    StorageTexture = 5,
-}
-
-#[repr(C)]
-#[derive(Clone, Debug, Hash)]
-pub struct BindGroupLayoutBinding {
-    pub binding: u32,
-    pub visibility: ShaderStage,
-    pub ty: BindingType,
-    pub texture_dimension: TextureViewDimension,
-    pub multisampled: bool,
-    pub dynamic: bool,
-}
-
-#[repr(C)]
-#[derive(Debug)]
-pub struct BindGroupLayoutDescriptor {
-    pub bindings: *const BindGroupLayoutBinding,
-    pub bindings_length: usize,
-}
-
-#[derive(Debug)]
-pub struct BindGroupLayout<B: hal::Backend> {
-    pub(crate) raw: B::DescriptorSetLayout,
-    pub(crate) bindings: Vec<BindGroupLayoutBinding>,
-    pub(crate) desc_ranges: DescriptorRanges,
-    pub(crate) dynamic_count: usize,
-}
-
-#[repr(C)]
-#[derive(Debug)]
-pub struct PipelineLayoutDescriptor {
-    pub bind_group_layouts: *const BindGroupLayoutId,
-    pub bind_group_layouts_length: usize,
-}
-
-#[derive(Debug)]
-pub struct PipelineLayout<B: hal::Backend> {
-    pub(crate) raw: B::PipelineLayout,
-    pub(crate) bind_group_layout_ids: ArrayVec<[BindGroupLayoutId; MAX_BIND_GROUPS]>,
-}
-
-#[repr(C)]
-#[derive(Debug)]
-pub struct BufferBinding {
-    pub buffer: BufferId,
-    pub offset: BufferAddress,
-    pub size: BufferAddress,
-}
-
-#[repr(C)]
-#[derive(Debug)]
-pub enum BindingResource {
-    Buffer(BufferBinding),
-    Sampler(SamplerId),
-    TextureView(TextureViewId),
-}
-
-#[repr(C)]
-#[derive(Debug)]
-pub struct BindGroupBinding {
-    pub binding: u32,
-    pub resource: BindingResource,
-}
-
-#[repr(C)]
-#[derive(Debug)]
-pub struct BindGroupDescriptor {
-    pub layout: BindGroupLayoutId,
-    pub bindings: *const BindGroupBinding,
-    pub bindings_length: usize,
-}
-
-#[derive(Debug)]
-pub struct BindGroup<B: hal::Backend> {
-    pub(crate) raw: DescriptorSet<B>,
-    pub(crate) device_id: Stored<DeviceId>,
-    pub(crate) layout_id: BindGroupLayoutId,
-    pub(crate) life_guard: LifeGuard,
-    pub(crate) used: TrackerSet,
-    pub(crate) dynamic_count: usize,
-}
-
-impl<B: hal::Backend> Borrow<RefCount> for BindGroup<B> {
-    fn borrow(&self) -> &RefCount {
-        &self.life_guard.ref_count
-    }
-}
deleted file mode 100644
--- a/dom/webgpu/wgpu-native/src/command/allocator.rs
+++ /dev/null
@@ -1,165 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-use super::CommandBuffer;
-use crate::{
-    hub::GfxBackend,
-    track::TrackerSet,
-    DeviceId,
-    Features,
-    LifeGuard,
-    Stored,
-    SubmissionIndex,
-};
-
-use hal::{command::CommandBuffer as _, device::Device as _, pool::CommandPool as _};
-use parking_lot::Mutex;
-
-use std::{collections::HashMap, sync::atomic::Ordering, thread};
-
-#[derive(Debug)]
-struct CommandPool<B: hal::Backend> {
-    raw: B::CommandPool,
-    available: Vec<B::CommandBuffer>,
-}
-
-impl<B: hal::Backend> CommandPool<B> {
-    fn allocate(&mut self) -> B::CommandBuffer {
-        if self.available.is_empty() {
-            let extra = unsafe {
-                self.raw.allocate_vec(20, hal::command::Level::Primary)
-            };
-            self.available.extend(extra);
-        }
-
-        self.available.pop().unwrap()
-    }
-}
-
-#[derive(Debug)]
-struct Inner<B: hal::Backend> {
-    pools: HashMap<thread::ThreadId, CommandPool<B>>,
-    pending: Vec<CommandBuffer<B>>,
-}
-
-impl<B: hal::Backend> Inner<B> {
-    fn recycle(&mut self, cmd_buf: CommandBuffer<B>) {
-        let pool = self.pools.get_mut(&cmd_buf.recorded_thread_id).unwrap();
-        for mut raw in cmd_buf.raw {
-            unsafe {
-                raw.reset(false);
-            }
-            pool.available.push(raw);
-        }
-    }
-}
-
-#[derive(Debug)]
-pub struct CommandAllocator<B: hal::Backend> {
-    queue_family: hal::queue::QueueFamilyId,
-    inner: Mutex<Inner<B>>,
-}
-
-impl<B: GfxBackend> CommandAllocator<B> {
-    pub(crate) fn allocate(
-        &self,
-        device_id: Stored<DeviceId>,
-        device: &B::Device,
-        features: Features,
-    ) -> CommandBuffer<B> {
-        //debug_assert_eq!(device_id.backend(), B::VARIANT);
-        let thread_id = thread::current().id();
-        let mut inner = self.inner.lock();
-
-        let pool = inner.pools.entry(thread_id).or_insert_with(|| CommandPool {
-            raw: unsafe {
-                device.create_command_pool(
-                    self.queue_family,
-                    hal::pool::CommandPoolCreateFlags::RESET_INDIVIDUAL,
-                )
-            }
-            .unwrap(),
-            available: Vec::new(),
-        });
-        let init = pool.allocate();
-
-        CommandBuffer {
-            raw: vec![init],
-            is_recording: true,
-            recorded_thread_id: thread_id,
-            device_id,
-            life_guard: LifeGuard::new(),
-            trackers: TrackerSet::new(B::VARIANT),
-            used_swap_chain: None,
-            features,
-        }
-    }
-}
-
-impl<B: hal::Backend> CommandAllocator<B> {
-    pub fn new(queue_family: hal::queue::QueueFamilyId) -> Self {
-        CommandAllocator {
-            queue_family,
-            inner: Mutex::new(Inner {
-                pools: HashMap::new(),
-                pending: Vec::new(),
-            }),
-        }
-    }
-
-    pub fn extend(&self, cmd_buf: &CommandBuffer<B>) -> B::CommandBuffer {
-        let mut inner = self.inner.lock();
-        let pool = inner.pools.get_mut(&cmd_buf.recorded_thread_id).unwrap();
-
-        if pool.available.is_empty() {
-            let extra = unsafe {
-                pool.raw.allocate_vec(20, hal::command::Level::Primary)
-            };
-            pool.available.extend(extra);
-        }
-
-        pool.available.pop().unwrap()
-    }
-
-    pub fn after_submit(&self, mut cmd_buf: CommandBuffer<B>, submit_index: SubmissionIndex) {
-        cmd_buf.trackers.clear();
-        cmd_buf
-            .life_guard
-            .submission_index
-            .store(submit_index, Ordering::Release);
-        self.inner.lock().pending.push(cmd_buf);
-    }
-
-    pub fn maintain(&self, last_done: SubmissionIndex) {
-        let mut inner = self.inner.lock();
-        for i in (0 .. inner.pending.len()).rev() {
-            let index = inner.pending[i]
-                .life_guard
-                .submission_index
-                .load(Ordering::Acquire);
-            if index <= last_done {
-                let cmd_buf = inner.pending.swap_remove(i);
-                log::trace!(
-                    "recycling comb submitted in {} when {} is done",
-                    index,
-                    last_done
-                );
-                inner.recycle(cmd_buf);
-            }
-        }
-    }
-
-    pub fn destroy(self, device: &B::Device) {
-        let mut inner = self.inner.lock();
-        while let Some(cmd_buf) = inner.pending.pop() {
-            inner.recycle(cmd_buf);
-        }
-        for (_, mut pool) in inner.pools.drain() {
-            unsafe {
-                pool.raw.free(pool.available);
-                device.destroy_command_pool(pool.raw);
-            }
-        }
-    }
-}
deleted file mode 100644
--- a/dom/webgpu/wgpu-native/src/command/bind.rs
+++ /dev/null
@@ -1,222 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-use crate::{
-    hub::GfxBackend,
-    BindGroup,
-    BindGroupId,
-    BindGroupLayoutId,
-    BufferAddress,
-    PipelineLayoutId,
-    Stored,
-};
-
-use smallvec::{smallvec, SmallVec};
-
-use std::convert::identity;
-
-pub const DEFAULT_BIND_GROUPS: usize = 4;
-type BindGroupMask = u8;
-
-#[derive(Clone, Debug)]
-pub struct BindGroupPair {
-    layout_id: BindGroupLayoutId,
-    group_id: Stored<BindGroupId>,
-}
-
-#[derive(Debug)]
-pub enum LayoutChange<'a> {
-    Unchanged,
-    Match(BindGroupId, &'a [BufferAddress]),
-    Mismatch,
-}
-
-#[derive(Debug)]
-pub enum Provision {
-    Unchanged,
-    Changed { was_compatible: bool },
-}
-
-struct TakeSome<I> {
-    iter: I,
-}
-impl<T, I> Iterator for TakeSome<I>
-where
-    I: Iterator<Item = Option<T>>,
-{
-    type Item = T;
-    fn next(&mut self) -> Option<T> {
-        self.iter.next().and_then(identity)
-    }
-}
-
-#[derive(Clone, Default, Debug)]
-pub struct BindGroupEntry {
-    expected_layout_id: Option<BindGroupLayoutId>,
-    provided: Option<BindGroupPair>,
-    dynamic_offsets: Vec<BufferAddress>,
-}
-
-impl BindGroupEntry {
-    fn provide<B: GfxBackend>(
-        &mut self,
-        bind_group_id: BindGroupId,
-        bind_group: &BindGroup<B>,
-        offsets: &[BufferAddress],
-    ) -> Provision {
-        debug_assert_eq!(B::VARIANT, bind_group_id.backend());
-
-        let was_compatible = match self.provided {
-            Some(BindGroupPair {
-                layout_id,
-                ref group_id,
-            }) => {
-                if group_id.value == bind_group_id && offsets == self.dynamic_offsets.as_slice() {
-                    assert_eq!(layout_id, bind_group.layout_id);
-                    return Provision::Unchanged;
-                }
-                self.expected_layout_id == Some(layout_id)
-            }
-            None => true,
-        };
-
-        self.provided = Some(BindGroupPair {
-            layout_id: bind_group.layout_id,
-            group_id: Stored {
-                value: bind_group_id,
-                ref_count: bind_group.life_guard.ref_count.clone(),
-            },
-        });
-        //TODO: validate the count of dynamic offsets to match the layout
-        self.dynamic_offsets.clear();
-        self.dynamic_offsets.extend_from_slice(offsets);
-
-        Provision::Changed { was_compatible }
-    }
-
-    pub fn expect_layout(&mut self, bind_group_layout_id: BindGroupLayoutId) -> LayoutChange {
-        let some = Some(bind_group_layout_id);
-        if self.expected_layout_id != some {
-            self.expected_layout_id = some;
-            match self.provided {
-                Some(BindGroupPair {
-                    layout_id,
-                    ref group_id,
-                }) if layout_id == bind_group_layout_id => {
-                    LayoutChange::Match(group_id.value, &self.dynamic_offsets)
-                }
-                Some(_) | None => LayoutChange::Mismatch,
-            }
-        } else {
-            LayoutChange::Unchanged
-        }
-    }
-
-    fn is_valid(&self) -> bool {
-        match (self.expected_layout_id, self.provided.as_ref()) {
-            (None, _) => true,
-            (Some(_), None) => false,
-            (Some(layout), Some(pair)) => layout == pair.layout_id,
-        }
-    }
-
-    fn actual_value(&self) -> Option<BindGroupId> {
-        self.expected_layout_id.and_then(|layout_id| {
-            self.provided.as_ref().and_then(|pair| {
-                if pair.layout_id == layout_id {
-                    Some(pair.group_id.value)
-                } else {
-                    None
-                }
-            })
-        })
-    }
-}
-
-#[derive(Debug)]
-pub struct Binder {
-    pub(crate) pipeline_layout_id: Option<PipelineLayoutId>, //TODO: strongly `Stored`
-    pub(crate) entries: SmallVec<[BindGroupEntry; DEFAULT_BIND_GROUPS]>,
-}
-
-impl Binder {
-    pub(crate) fn new(max_bind_groups: u32) -> Self {
-        Self {
-            pipeline_layout_id: None,
-            entries: smallvec![Default::default(); max_bind_groups as usize],
-        }
-    }
-
-    pub(crate) fn reset_expectations(&mut self, length: usize) {
-        for entry in self.entries[length ..].iter_mut() {
-            entry.expected_layout_id = None;
-        }
-    }
-
-    /// Attempt to set the value of the specified bind group index.
-    /// Returns Some() when the new bind group is ready to be actually bound
-    /// (i.e. compatible with current expectations). Also returns an iterator
-    /// of bind group IDs to be bound with it: those are compatible bind groups
-    /// that were previously blocked because the current one was incompatible.
-    pub(crate) fn provide_entry<'a, B: GfxBackend>(
-        &'a mut self,
-        index: usize,
-        bind_group_id: BindGroupId,
-        bind_group: &BindGroup<B>,
-        offsets: &[BufferAddress],
-    ) -> Option<(
-        PipelineLayoutId,
-        impl 'a + Iterator<Item = BindGroupId>,
-        impl 'a + Iterator<Item = &'a BufferAddress>,
-    )> {
-        log::trace!("\tBinding [{}] = group {:?}", index, bind_group_id);
-        debug_assert_eq!(B::VARIANT, bind_group_id.backend());
-
-        match self.entries[index].provide(bind_group_id, bind_group, offsets) {
-            Provision::Unchanged => None,
-            Provision::Changed { was_compatible, .. } => {
-                let compatible_count = self.compatible_count();
-                if index < compatible_count {
-                    let end = compatible_count.min(if was_compatible {
-                        index + 1
-                    } else {
-                        self.entries.len()
-                    });
-                    log::trace!("\t\tbinding up to {}", end);
-                    Some((
-                        self.pipeline_layout_id?,
-                        TakeSome {
-                            iter: self.entries[index + 1 .. end]
-                                .iter()
-                                .map(|entry| entry.actual_value()),
-                        },
-                        self.entries[index + 1 .. end]
-                            .iter()
-                            .flat_map(|entry| entry.dynamic_offsets.as_slice()),
-                    ))
-                } else {
-                    log::trace!("\t\tskipping above compatible {}", compatible_count);
-                    None
-                }
-            }
-        }
-    }
-
-    pub(crate) fn invalid_mask(&self) -> BindGroupMask {
-        self.entries.iter().enumerate().fold(0, |mask, (i, entry)| {
-            if entry.is_valid() {
-                mask
-            } else {
-                mask | 1u8 << i
-            }
-        })
-    }
-
-    fn compatible_count(&self) -> usize {
-        self.entries
-            .iter()
-            .position(|entry| !entry.is_valid())
-            .unwrap_or(self.entries.len())
-    }
-}
deleted file mode 100644
--- a/dom/webgpu/wgpu-native/src/command/compute.rs
+++ /dev/null
@@ -1,316 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-use crate::{
-    command::bind::{Binder, LayoutChange},
-    device::all_buffer_stages,
-    hub::{GfxBackend, Global, Token},
-    track::{Stitch, TrackerSet},
-    BindGroupId,
-    BufferAddress,
-    BufferId,
-    BufferUsage,
-    CommandBuffer,
-    CommandBufferId,
-    ComputePassId,
-    ComputePipelineId,
-    RawString,
-    Stored,
-    BIND_BUFFER_ALIGNMENT,
-};
-#[cfg(feature = "local")]
-use crate::{gfx_select, hub::GLOBAL};
-
-use hal::{self, command::CommandBuffer as _};
-
-use std::iter;
-#[cfg(feature = "local")]
-use std::slice;
-
-#[derive(Debug)]
-pub struct ComputePass<B: hal::Backend> {
-    raw: B::CommandBuffer,
-    cmb_id: Stored<CommandBufferId>,
-    binder: Binder,
-    trackers: TrackerSet,
-}
-
-impl<B: hal::Backend> ComputePass<B> {
-    pub(crate) fn new(
-        raw: B::CommandBuffer,
-        cmb_id: Stored<CommandBufferId>,
-        trackers: TrackerSet,
-        max_bind_groups: u32,
-    ) -> Self {
-        ComputePass {
-            raw,
-            cmb_id,
-            binder: Binder::new(max_bind_groups),
-            trackers,
-        }
-    }
-}
-
-// Common routines between render/compute
-
-pub fn compute_pass_end_pass<B: GfxBackend>(global: &Global, pass_id: ComputePassId) {
-    let mut token = Token::root();
-    let hub = B::hub(global);
-    let (mut cmb_guard, mut token) = hub.command_buffers.write(&mut token);
-    let (pass, _) = hub.compute_passes.unregister(pass_id, &mut token);
-    let cmb = &mut cmb_guard[pass.cmb_id.value];
-
-    // There are no transitions to be made: we've already been inserting barriers
-    // into the parent command buffer while recording this compute pass.
-    cmb.trackers = pass.trackers;
-    cmb.raw.push(pass.raw);
-}
-
-#[cfg(feature = "local")]
-#[no_mangle]
-pub extern "C" fn wgpu_compute_pass_end_pass(pass_id: ComputePassId) {
-    gfx_select!(pass_id => compute_pass_end_pass(&*GLOBAL, pass_id))
-}
-
-pub fn compute_pass_set_bind_group<B: GfxBackend>(
-    global: &Global,
-    pass_id: ComputePassId,
-    index: u32,
-    bind_group_id: BindGroupId,
-    offsets: &[BufferAddress],
-) {
-    let hub = B::hub(global);
-    let mut token = Token::root();
-
-    let (pipeline_layout_guard, mut token) = hub.pipeline_layouts.read(&mut token);
-    let (bind_group_guard, mut token) = hub.bind_groups.read(&mut token);
-    let (mut pass_guard, mut token) = hub.compute_passes.write(&mut token);
-    let pass = &mut pass_guard[pass_id];
-
-    let bind_group = pass
-        .trackers
-        .bind_groups
-        .use_extend(&*bind_group_guard, bind_group_id, (), ())
-        .unwrap();
-
-    assert_eq!(bind_group.dynamic_count, offsets.len());
-
-    if cfg!(debug_assertions) {
-        for off in offsets {
-            assert_eq!(
-                *off % BIND_BUFFER_ALIGNMENT,
-                0,
-                "Misaligned dynamic buffer offset: {} does not align with {}",
-                off,
-                BIND_BUFFER_ALIGNMENT
-            );
-        }
-    }
-
-    //Note: currently, WebGPU compute passes have synchronization defined
-    // at a dispatch granularity, so we insert the necessary barriers here.
-    let (buffer_guard, mut token) = hub.buffers.read(&mut token);
-    let (texture_guard, _) = hub.textures.read(&mut token);
-
-    log::trace!(
-        "Encoding barriers on binding of {:?} in pass {:?}",
-        bind_group_id,
-        pass_id
-    );
-    CommandBuffer::insert_barriers(
-        &mut pass.raw,
-        &mut pass.trackers,
-        &bind_group.used,
-        Stitch::Last,
-        &*buffer_guard,
-        &*texture_guard,
-    );
-
-    if let Some((pipeline_layout_id, follow_up_sets, follow_up_offsets)) = pass
-        .binder
-        .provide_entry(index as usize, bind_group_id, bind_group, offsets)
-    {
-        let bind_groups = iter::once(bind_group.raw.raw())
-            .chain(follow_up_sets.map(|bg_id| bind_group_guard[bg_id].raw.raw()));
-        unsafe {
-            pass.raw.bind_compute_descriptor_sets(
-                &pipeline_layout_guard[pipeline_layout_id].raw,
-                index as usize,
-                bind_groups,
-                offsets
-                    .iter()
-                    .chain(follow_up_offsets)
-                    .map(|&off| off as hal::command::DescriptorSetOffset),
-            );
-        }
-    };
-}
-
-#[cfg(feature = "local")]
-#[no_mangle]
-pub extern "C" fn wgpu_compute_pass_set_bind_group(
-    pass_id: ComputePassId,
-    index: u32,
-    bind_group_id: BindGroupId,
-    offsets: *const BufferAddress,
-    offsets_length: usize,
-) {
-    let offsets = if offsets_length != 0 {
-        unsafe { slice::from_raw_parts(offsets, offsets_length) }
-    } else {
-        &[]
-    };
-    gfx_select!(pass_id => compute_pass_set_bind_group(&*GLOBAL, pass_id, index, bind_group_id, offsets))
-}
-
-#[no_mangle]
-pub extern "C" fn wgpu_compute_pass_push_debug_group(_pass_id: ComputePassId, _label: RawString) {
-    //TODO
-}
-
-#[no_mangle]
-pub extern "C" fn wgpu_compute_pass_pop_debug_group(_pass_id: ComputePassId) {
-    //TODO
-}
-
-#[no_mangle]
-pub extern "C" fn wgpu_compute_pass_insert_debug_marker(
-    _pass_id: ComputePassId,
-    _label: RawString,