In October, we've (finally!) reached a major milestone - but there's still lots of work to be done!
What we've done
- We finally finished the Toga audit!!. We now have 100% test coverage of all Toga code on macOS, Windows, Linux/GTK, iOS and Android, with a consistent and fully documented API across all widgets. This has been a truly mammoth project, resolving countless bugs, adding dozens of new features, and improving platform support (especially on Windows and Android). Once we've finalised a couple of housekeeping issues, we will release Toga 0.4 incorporating all these changes. This will hopefully occur later this week.
- We attended the Python Core Team Sprint at the RedHat offices in Brno, Czechia. As a result of this attendance, we produced a draft of PEP 730, which is the first step towards formalizing support for iOS in CPython. An analogous Android PEP will be drafted once we've sorted out the process around the iOS PEP (as this is the first time a platform has gone through a formal process to be added to PEP 11's Tier 3 list).
- We reworked the build system for Apple support packages to separate the compilation of dependencies (like BZip2 and OpenSSL) from the compilation of Python itself. These libraries are updated infrequently, and on a completely different cadence to CPython itself, so treating them as re-usable resources rather than something that needs to be compiled at the same time as Python will significantly improve CPython build times.
- We released Briefcase 0.3.16, formalizing our support for Python 3.12, and adding the new support for dynamic libraries on iOS. This release also formally downgrades our support for AppImage, following extended problems in supporting AppImage as an output format.
- We released Rubicon ObjC 0.4.7, formalising our support for Python 3.12.
- We modified Briefcase to ensure that macOS apps are universal by default, with an option to request a single-architecture build.
- We added a deep debug logging level to Briefcase, and simplified the output of many other commands to ensure that important warnings aren't lost.
- We added support for Undo and Redo operations on macOS text widgets.
- We added support for user-registered fonts on iOS and macOS.
- We made some modifications to improve Toga's memory management when creating and destroying windows.
Now that we've finally finished the widget audit, we can finally release Toga 0.4, and start using the foundation that we've spent the last 12 months building.
In November, we'll start the work of upstreaming iOS patches to CPython core. The PEP we've drafted is nearing a form where it can be submitted to the Steering Council for approval, but the drafting process has raised a couple of technical issues that need to be investigated. However, while we wait for formal acceptance of the PEP, we will continue working on building continuous integration for our iOS CPython builds, and begin preparing patches that can be merged into CPython.
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:
- 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
- Provide an option to override app settings from the command line
- Add support for custom PyPI repositories
- Document how to debug an application in popular IDEs
- Correctly handle incomplete project deletions
- Add an option to select the Android base image when creating new emulators
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.