Skip to content

Conversation

@CharlieBaker2002
Copy link

Summary

  • Update all Bevy dependencies to 0.17.3
  • Fix InternedScheduleLabel interning across library swaps using string-based comparison
  • Add ActiveReloadableSchedules resource for dynamic label lookup
  • Add RegisteredScheduleRunners to prevent duplicate runner registration
  • Suppress kqueue file watcher panic on macOS (FSEvent backend still works)
  • Add DEXTEROUS_MANUAL_RELOAD env var for manual-only reload mode
  • Switch notify crate to macos_fsevent feature

Details

The main issue with Bevy 0.17 was that InternedScheduleLabel values are pointer-based and don't survive library swaps during hot reload. This PR fixes it by:

  1. Using string-based hash/equality in WrappedSchedule for stable comparison across reloads
  2. Storing active schedule labels in a resource that gets updated on each reload
  3. Having schedule runners look up labels dynamically instead of capturing them

Test plan

  • Tested hot reload with multiple consecutive reloads (VERSION_A → B → C → ...)
  • Verified systems continue running after reload
  • Confirmed no kqueue panic messages with suppression hook
  • Tested manual reload mode with DEXTEROUS_MANUAL_RELOAD=1
  • Tested with bevy/dynamic_linking for faster reload times (~5s vs ~15s)

🤖 Generated with Claude Code

CharlieBaker2002 and others added 2 commits January 10, 2026 16:58
- Update all Bevy dependencies to 0.17.3
- Fix InternedScheduleLabel interning across library swaps using string-based comparison
- Add ActiveReloadableSchedules resource for dynamic label lookup
- Add RegisteredScheduleRunners to prevent duplicate runner registration
- Suppress kqueue file watcher panic on macOS (FSEvent still works)
- Add DEXTEROUS_MANUAL_RELOAD env var for manual-only reload mode
- Switch notify crate to macos_fsevent feature

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add CARGO_TERM_COLOR=always for colored error output
- Add .reload_trigger file watcher for manual reload mode
- Manual mode now properly triggers reloads via ./reload script

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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.

1 participant