Skip to content

Bevy 0.19 work in progress: bump parry to 0.27 and sync with latest bevy main#987

Draft
stuartparmenter wants to merge 6 commits into
avianphysics:mainfrom
stuartparmenter:bevy-0.19
Draft

Bevy 0.19 work in progress: bump parry to 0.27 and sync with latest bevy main#987
stuartparmenter wants to merge 6 commits into
avianphysics:mainfrom
stuartparmenter:bevy-0.19

Conversation

@stuartparmenter

Copy link
Copy Markdown

Work to get avian compiling on bevy 0.19 (bevy main).

Builds on top of #965 (the in-progress bevy 0.19 migration). The first three commits here are the same as #965. On top of those, this PR adds:

  • Bump parry to 0.27. This bumps parry's transitive glamx to 0.2 (glam 0.32), matching bevy main. The parry<->bevy math conversion helpers (vec*_from_parry, vec*_to_parry, quat_*_parry) and the math::parry_conv module can all be removed.
  • Sync avian to the latest bevy main: fixes breakage from bevy PR #24164 and the bevy_scene to bevy_world_serialization feature rename.

avian2d also builds again as a side effect, since most of its remaining errors were 2D code calling vec3_* conversion helpers that only existed under #[cfg(feature = "3d")].

Opening as draft since #965 hasn't landed yet and this should probably go on top of it.

Test plan

  • cargo check -p avian2d -p avian3d
  • CI

jbuehler23 and others added 6 commits May 18, 2026 11:39
Pins bevy to the current main HEAD (74d39c6) via Cargo.lock so all of
the workspace's bevy_* git deps (bevy_heavy, bevy_transform_interpolation,
glam_matrix_extras) resolve to the same source as the top-level bevy dep.
Switches the 2d crate and examples_common crates over to the same git
dependency form as 3d.

Build fixes for changes landed on bevy main since jbuehler23's migration:

- bevy#24164 (resources-as-components / Mutability): the PhysicsDiagnostics
  trait's generic ResMut<Self> system now requires the
  `Resource<Mutability = Mutable>` bound.

- bevy#23619/#23630 (bevy_scene → bevy_world_serialization rename): the
  classic Scene API now lives in bevy_world_serialization. Point the
  `bevy_scene` cargo feature there and alias the renamed types
  (WorldAssetRoot / WorldInstance / WorldInstanceSpawner) so the existing
  collider-backend code keeps compiling unchanged.

- `experimental_bevy_feathers` feature was renamed to `bevy_feathers`.

- parry is still on glam 0.30 while bevy main bumped to glam 0.32, so the
  debug gizmos code now goes through `vec3_from_parry` / `vec3s_from_parry`
  / `quat_from_parry` at the parry → bevy boundary in the 3D shape paths.

avian3d builds clean; avian2d is still broken (extensive parry-conv work
needed for the 2D path).
Adds a workspace [patch.crates-io] entry pointing parry at a fork branch
that bumps glamx from 0.1.2 to 0.2 (glam 0.32 — the same major as Bevy).
With that, parry::math::Vec2/Vec3/Quat are the literal same types as
bevy_math, so the wrapper module `math::parry_conv` and every
vec*_from_parry / vec*_to_parry / quat_*_parry call site go away.

As a side effect, avian2d also builds now: most of its remaining errors
were 2D code calling vec3_* conversion helpers that only existed under
#[cfg(feature = "3d")]. Once the calls are gone, the dimension confusion
goes with them.

The patch should be dropped once dimforge/parry releases a version on
glamx >= 0.2.
parry 0.27.0 depends on glamx 0.2, so the fork patch that forced the
upgrade is no longer needed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants