bevyengine/bevy
Fun facts
Trivia from poking around the Bevy repo. Useful, mostly accurate, occasionally amusing.
The longest source files
The five largest Rust files in the workspace, by line count, all live in the foundational crates:
| File | Lines |
|---|---|
crates/bevy_pbr/src/render/mesh.rs |
4,741 |
crates/bevy_ecs/src/world/mod.rs |
4,636 |
crates/bevy_ecs/src/query/fetch.rs |
4,478 |
crates/bevy_reflect/src/lib.rs |
4,268 |
crates/bevy_ecs/src/query/iter.rs |
3,394 |
The PBR mesh renderer wins by a hair. The ECS query types come next — the Query API surface is a non-trivial chunk of generic code with handwritten unsafe bookkeeping.
Total Rust footprint
Roughly 580,000 lines of Rust across 1,779 files, spread over 60 official bevy_* crates. Add 193 WGSL shaders, 430 example targets, and 223 markdown docs and you have a fairly complete map of the project's text content.
The original technology stack
Bevy's earliest commits (Nov 2019) used:
legionas the ECS — replaced by hand-rolledbevy_ecsin mid-2020.nalgebrafor math — replaced byglamaround the same time.wgpuas the renderer — this one stuck, and is still the rendering backend in 2026.
Out of the three foundational dependencies of the original prototype, only wgpu survives unchanged.
The first commit
2019-11-12 initial commitCart's first commit. The repo predates Rust 1.40 and async/await stabilization. As of HEAD the project requires Rust 1.95.0 — about 55 toolchain releases later.
Naming origin
"Bevy" is a noun meaning a large group, especially of birds (a "bevy of swans," a "bevy of beauties"). It echoes the engine's emphasis on managing large numbers of entities efficiently. The mascot is a bird.
The crate prefix bevy_* is just a naming convention to avoid collisions on crates.io — every Bevy-affiliated workspace member is published as bevy_<thing>.
TODO archeology
A scan of *.rs files for TODO|FIXME|HACK produced 255 occurrences across 149 files. Roughly 8% of the Rust files have at least one maintenance marker. That's healthy density for a project that ships breaking changes every quarter — many TODOs are scoped to a future API change rather than ignored bugs.
Plugin count
DefaultPlugins (the "give me everything" group) installs around 40 plugins when all default features are on. The chain is defined in crates/bevy_internal/src/default_plugins.rs via the plugin_group! macro. MinimalPlugins, the headless equivalent, installs four — TaskPoolPlugin, TypeRegistrationPlugin, FrameCountPlugin, ScheduleRunnerPlugin.
The "internal" crate that's the real engine
The bevy crate at the workspace root is just 2,360 bytes (src/lib.rs). It does almost nothing — it re-exports bevy_internal::*. The actual bundling logic is in bevy_internal. Splitting it off this way lets bevy_dylib (the dynamic-linking helper for fast compiles) re-export the same surface.
The release cadence
Bevy has shipped a new minor version approximately every three months since version 0.2 in September 2020. As of HEAD (0.19.0-dev), there have been 18 minor releases plus numerous point releases over ~6 years. That's ~3 minor releases per year, almost mechanically on schedule. Bevy calls this the "train release schedule" — the train leaves on time whether or not your feature is on it.
Workspace member count
The root Cargo.toml declares the following workspace members:
crates/*— the 60 official crates.crates/bevy_derive/compile_fail,crates/bevy_ecs/compile_fail,crates/bevy_reflect/compile_fail— trybuild harnesses.examples/mobile,examples/no_std/*,examples/reflection/auto_register_static,examples/large_scenes/*— example targets that need their own Cargo manifests.benches,errors,tools/*— internal tools.
That's about 70 individually-built cargo packages in the workspace, not counting the integration tests under tests-integration/ (which are explicitly excluded via the exclude array).
See also
- By the numbers for the official statistics.
- Lore for the full timeline.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.