Open-Source Wikis

/

wgpu

/

Lore

gfx-rs/wgpu

Lore

A timeline of how wgpu got here. Dates and events are derived from git history (first commits in directories, tag dates, large merge commits) and the CHANGELOG.md.

Eras

Origins as a gfx-hal successor (Aug 2018 – Mar 2019)

The repository's first commit is msiglreith / Initial commit on 2018-08-26, followed two days later by Setup crate structure and wrap first interface. The early scaffolding uses bors and is positioned as a successor to gfx-rs/gfx. The examples/ directory shows up on 2018-09-14. The first tag, wgpu-v0.2.0, arrives on 2019-03-06.

Dzmitry Malyshau (now the all-time top committer with ~1,886 commits) drives much of this period.

The split between wgpu and wgpu-core (May–Nov 2019)

In May 2019 the repository introduces a separate wgpu/ crate alongside the existing wgpu_native (which was renamed and reshaped). On 2019-11-15 the wgpu-core/ directory is created — the C-FFI-shaped core extracted from the rest. This split is the architectural decision that lets Firefox and Deno embed wgpu-core directly without depending on the friendlier wgpu Rust API.

v0.4.0 ships in November 2019.

Mozilla pickups and the wgpu-types crate (Dec 2019 – Apr 2020)

A series of mozilla-<sha> tags in December 2019 and early 2020 record the exact revisions Mozilla pulled into Firefox. wgpu-types/ is created on 2020-03-10 to house the plain-data types both Firefox and the standalone Rust API need without dragging in dependencies. v0.5.0 (April 2020) is the first release where the wgpu/wgpu-core/wgpu-types triangle is in place.

player/ lands on 2020-04-29 to enable replaying captured traces — a feature Mozilla wanted for crash repros.

gfx-hal becomes wgpu-hal (Jun 2021)

On 2021-06-04 the wgpu-hal/ directory is created, consolidating the per-API backends (previously living as separate gfx-hal crates) into one in-tree crate. The old gfx-hal repository is sunset; the wgpu-hal README.md describes the new crate as a "spiritual successor to gfx-hal, but with reduced scope, and oriented towards WebGPU implementation goals." This is the largest single architectural change the repo records.

Deno joins; CTS in-tree (Sep 2021)

On 2021-09-03, two directories appear: cts_runner/ and deno_webgpu/. This is the moment Deno's WebGPU bindings move into the wgpu monorepo. Running the WebGPU CTS via Deno becomes the standard regression test, and CTS list files (cts_runner/test.lst, fail.lst, skip.lst) start tracking expectations.

Tests as a workspace member (Jun 2023)

tests/ becomes a top-level workspace member on 2023-06-10, formalizing the #[gpu_test] harness. Before this, GPU tests lived inside wgpu/tests/ and re-implemented adapter selection ad hoc.

Naga merges in (Oct 2023)

The biggest event of 2023: naga, previously a separate gfx-rs/naga repository, is absorbed into wgpu. The merge is recorded in Integration of Naga into Repo (#4296) on 2023-10-25. This unlocks shipping shader-translation changes alongside the wgpu changes that need them in a single PR. Combined commit count from naga's prior history pushes Jim Blandy and several other naga regulars into wgpu's top committer list.

Steady-state, breaking releases on a quarterly cadence (2024 – 2026)

After the naga merge, the project settles into a rhythm of breaking releases roughly every three months: v22 through v29. Each release includes a one-week release candidate, a changelog cleanup, and the version bumps and migration notes. docs/release-checklist.md formalizes the process.

The most recent release in this dataset is v29.0.1 on 2026-03-26.

The wgpu-naga-bridge extraction (Mar 2026)

On 2026-03-13 a new crate, wgpu-naga-bridge/, appears. Its job is to mediate between naga and wgpu-core so that naga can be replaced or version-mismatched without forcing the rest of the workspace to follow. This is a preparatory refactor for the next big phase — likely supporting more shader translation targets independently of the in-tree naga version.

Longest-standing features

  • Surfaces / swapchains — present since the very first commits in 2018. The API has been refactored repeatedly (most visibly at v0.13 when Surface::configure replaced SwapChain) but conceptually unchanged.
  • wgpu_core::Global and the registry — the Global + Hub + Registry shape is mentioned in commits as early as 2019, and the structure has survived every major release. The exact resource list grows but the pattern is the same.
  • Bind groups, pipeline layouts, render/compute encoders — WebGPU primitives that have been in wgpu since before the WebGPU spec stabilized. They've been renamed (SwapChainSurface, BindGroup's descriptor evolution) but the concepts persist.

Deprecated and replaced features

  • gfx-hal — the predecessor. wgpu-hal explicitly absorbs its role. The old crate is unmaintained.
  • SwapChain — replaced by Surface::configure and Surface::get_current_texture. Code was removed in the v0.13 era.
  • The trace capture/replay pair as a primary debugging pathdocs/testing.md and the player/ README describe trace-based tests as "soft-deprecated"; the trace capturing system is currently broken, and writing new player tests is discouraged. Trace tests live on for regression coverage but the tooling is no longer the recommended way to write new ones.
  • ron-based traces with reading by humanswgpu-core migrated trace serialization to bincode for performance. The legacy ron format is still readable for old captures.

Major rewrites

  • gfx-hal → wgpu-hal (2021) — Reorganized as a single in-tree crate. The new HAL is narrower (no validation, no tracking) and tailored to WebGPU semantics rather than gfx-hal's broader Vulkan-style API.
  • Naga merge (Oct 2023) — Folded a separate ~70 K-line shader-translation repository into the workspace.
  • Tests crate restructure (Jun 2023)#[gpu_test] harness moved into a real workspace member.
  • wgpu-naga-bridge extraction (Mar 2026) — recent refactor that decouples naga's API surface from wgpu-core.

Growth trajectory

xychart-beta horizontal
    title "Major directories by year of creation"
    x-axis ["2018", "2019", "2020", "2021", "2023", "2026"]
    y-axis "Cumulative top-level crates" 0 --> 12
    bar [2, 4, 5, 8, 10, 11]
  • 2018: examples/, wgpu/ (the original combined crate).
  • 2019: wgpu/ (split form), wgpu-core/.
  • 2020: wgpu-types/, player/.
  • 2021: wgpu-hal/, wgpu-info/, cts_runner/, deno_webgpu/.
  • 2023: tests/, naga/ (merged from external repo).
  • 2026: wgpu-naga-bridge/.

The contributor base also grew non-trivially: by 2024, the top contributors include not just the original gfx-rs maintainers (Dzmitry Malyshau, Connor Fitzgerald) but also Andy Leiserson, Erich Gubler, teoxoy, Jim Blandy, João Capucho, and Kevin Reid — many of whom joined via the naga side or via Mozilla's involvement. The "Inner Daemons" handle and growing volume of bot- and AI-assisted commits are recent, post-2025 additions.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Lore – wgpu wiki | Factory