Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More reliable macOS hot-reloading test, workaround missing GDExtension methods #657

Merged
merged 5 commits into from
Apr 6, 2024

Conversation

Bromeon
Copy link
Member

@Bromeon Bromeon commented Apr 6, 2024

The macOS hot reloading test has been flaky, with the UDP communication failing around 10-20% of the time. Python's low-level select() API is not easy to use reliably -- it often returned immediately, indicating a timeout. After spending a lot of time on different approaches (e.g. poll(), retrying, etc) to no avail, I decided to rewrite the orchestration script to GDScript and run it in the Godot runtime. This also brings parity to the other side (Editor instance doing the reload).

This reduces the active Python code in the repo again to 0. We had a good run... 🥲

Apart from that, the PR works around 8 GDExtension methods that are advertised in the API but missing at runtime, see godotengine/godot#90303 for details.

Also includes smaller maintenance changes, see commits.

UDP handling on Python is too low-level with the standard library, and turned out to work unreliably across platforms
(especially macOS). Even with separate select/poll implementations, I couldn't get it to work 100%.
@Bromeon Bromeon added bug c: tooling CI, automation, tools labels Apr 6, 2024
@Bromeon Bromeon changed the title More reliable macOS hot-reloading test, workaround missing Godot API methods More reliable macOS hot-reloading test, workaround missing GDExtension methods Apr 6, 2024
@Bromeon Bromeon enabled auto-merge April 6, 2024 12:53
@Bromeon Bromeon added this pull request to the merge queue Apr 6, 2024
Merged via the queue into master with commit e7dd8b8 Apr 6, 2024
16 checks passed
@Bromeon Bromeon deleted the bugfix/macos-reload-ci branch April 6, 2024 13:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug c: tooling CI, automation, tools
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant