February may be the shortest month - but it's been a month of big progress for BeeWare!
What we've done
- The biggest news for the month is that it is now possible to upload iOS and Android wheels to PyPI! This is ultimately a very small change adding a list of allowed tags to the underlying PyPI codebase - but it is an important step towards the goal of having the Python ecosystem support iOS and Android as a first class citizen.
- We submitted a pull request adding iOS support to cibuildwheel. With this change, a simple package can build binary wheels for iOS with a single command: CIBW_PLATFORM=ios cibuildwheel. As proof, we built and published iOS wheels for a simple binary package. For completeness, we also built and uploaded Android wheels using our existing Chaquopy-based build tooling; in the near future, we're hoping to replace that with a cibuildwheel-based approach as well.
- We completed a major refactor of the BeeWare website. This dramatically simplifies the structure of some parts of the website - most notably, the projects page. A huge thanks to community member Kattni for all their hard work on this refactor.
- We released Briefcase 0.3.22. This is a bug fix release to silence a warning raised during builds caused by the release of pip 25.0. This warning had the potential to become an error at an unknown point in the future, so we decided to push out a low-feature release to avoid that possibility.
- We released Toga 0.4.9. This release contains only 1 change over the 0.4.8 release - it imposes an upper bound on the version of Travertino that it specifies as a requirement. This ensures that when we release the next version of Travertino, we don't need to accomodate compatibility with Toga 0.4 APIs.
- We added initial support for GTK4 to Toga. This is only the very initial phases of GTK4 support - most widgets aren't currently supported - but the basic infrastructure that allows a GTK4 app to start at all now exists. We now need to go through the process of porting every GTK widget for GTK4 compatibility. Thanks to the work we did on the Toga 0.4 widget audit, we have a comprehensive test suite that we can use to evaluate progress on this task.
- We corrected some issues with background color handling on Windows, including adding support for transparency on widget backgrounds. This also included adding support for alpha blending to Travertino.
- We corrected a long-standing issue that caused instability in Toga's iOS tests.
- We corrected a problem with the CPython iOS test runner that prevented multiple test runners starting at the same time, and another problem that was caused when running the runner under CI conditions.
- We upgraded the CPython iOS buildbot to run on macOS Sonoma, and Xcode 16.4; this some issues with iOS 18 compatibility that we have resolved.
What's next?
In March we will continue to work on binary packaging. Although it is now possible to upload binary wheels to PyPI, that capability isn't much use unless projects are able to build those wheels in the first place. In the process of developing the pull request for cibuildwheel, we've identified a gap in the PEP 517 specification associated with building more complex binary packages, and a set of missing features in virtual environments in a cross-platform build configuration. We have some ideas for how to fill these gaps; but we need to do some more experimentation to prove that those approaches will work as expected. The eventual goal will be to author a PEP to address these gaps in the PEP 517 standard. We should also be able to begin the process of adding Android binary wheel support, mirroring the changes we've made for iOS over the past months.
We'll also continue to work on Python Emscripten support. The Emscripten buildbot is almost ready to launch; we have one last technical issue to resolve, and then we'll be able to add Emscripten to the CPython buildbot fleet.
Unfortunately, it looks like the work we were planning on Toga's Web backend will be deferred. We believed we may have had an opportunity to work with another group at Anaconda to improve Toga's web backend, but that opportunity looks like it will not eventuate. We're still interested in improving the web backend, but we probably won't be able to commit significant resources to that project in the near future.
Want to get involved?
Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:
- Update the Toga testbed test suite to use Pixel 7 Pro device sizes
- Filter out a message generated after Xcode updates
- Add the ability to configure the ABIs built by an Android project
- Rationalise the application of adhoc signing on macOS
- Document how to debug an application in popular IDEs
- Add an option to select the Android base image when creating new emulators
- Add an API to request that an app be given focus
- Investigate the source of a Table column resize issue on Windows
- Correct the handling of double quotes in formal names
Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.
- الإدخال السابق
- January 2025 Status Update