Skip to content

Support hotpatching systems #19296

Open
@janhohenheim

Description

@janhohenheim

What problem does this solve or what need does it fill?

A common complaint from Bevy users is the relatively high iteration time. Hotpatching is a nice solution for this, as it allows code changes to affect the running binary.

What solution would you like?

While many things can be hotpatched, I think implementing it for systems is a nice start. This way, users could already start live-editing their UIs by changing a system that re-inserts a UI node hierarchy in Update, for example.

What alternative(s) have you considered?

  • Don't implement it
  • Start with hotpatching another area of Bevy
  • Leave it to third-party crates like dextrous-developer

Additional context

Recently, Dioxus has released an alpha of subsecond, which implements exactly this. One of their explicit goals is to make this technology available for other frameworks such as Bevy.
If we go this route, there is already a Bevy integration demo. Per @jkelleyrtp, this is not meant as a long-term end-user API, but to give Bevy maintainers and early adopters today an example of how to wire stuff up. We need to spend some time working on the integration between the two, in order to ensure it is safe.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-ECSEntities, components, systems, and eventsC-FeatureA new feature, making something new possibleC-UsabilityA targeted quality-of-life change that makes Bevy easier to useD-ComplexQuite challenging from either a design or technical perspective. Ask for help!D-UnsafeTouches with unsafe code in some wayS-Needs-DesignThis issue requires design work to think about how it would best be accomplishedX-BlessedHas a large architectural impact or tradeoffs, but the design has been endorsed by decision makers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions