Kivy 1.10 is a major release of a popular cross-platform open source framework which makes use of OpenGL to create a standardized UI and graphics environment for Python.
It has been over two years since Kivy 1.9 appeared and in the announcement made to Kivy users on Google Groups, Kivy org leader, Mathieu Virbel, apologizes for the delay, saying the new release had taken much more time than expected.
Virbel's description of Kivy is:
a full featured framework for creating novel and performant user interfaces, such as multitouch applications, released under the MIT license. The framework works on Windows, macOS, Linux, Android, iOS and Raspberry Pi.
The new release is the first that supports Python 3.5 and 3.6 on Windows using the same codebase, although Virbel notes that this support is only with Visual Studio 2015.
The other highlights listed in Virbel's post are:
The Kivy Clock has been moved to cython to improve performance. Even better, scheduling is now deterministic and will always execute callbacks in the order they were scheduled. Finally, all Clock scheduling and unscheduling is now thread-safe.
The graphics backends have been refactored. Graphics modules now call the central kivy.graphics.cgi subpackage for all OpenGL calls instead of direct API calls. The cgl package can switch between multiple GL backends on each platform at startup-time. The available backends are gl, sdl2 on Unix and glew, sdl2, angle_sdl2 on Windows. With the addition of the angle_sdl2 backend for windows, Kivy now supports environments with no or old OpenGL drivers as long as they have Direct3D 9+ support.
RecycleView is now fully integrated with layouts and can be used in place of e.g. BoxLayout or GridLayout. In view of ListView and its associated adaptors are being deprecated and slated to be removed in the next release.
CoverBehavior, similar to CSS cover, has been added to be used with images. It ensures that the image is sized so that it is as small as possible while ensuring that both dimensions are greater than or equal to the corresponding size of the widget.
Widgets that use size hints can now specify the maximum and minimum size of the widget and it'll be respected by the layouts.
There's a new interactive launcher, kivy,interactive
Among breaking changes, ButtonBehavior.always_release defaults to False, so by default a release outside the button is ignored. ButtonBehavior.MIN_STATE_TIME was removed and instead has been added to the config. Each button and dropdown now has their own configurable min_state_time property that defaults to the config value.
To reduce the Kivy install size, the Kivy examples have been split from the main Windows wheels and should now be installed manually if desired using pip install kivy_examples.
Many more changes are listed in the Changelog and the new version is available for download on the Kivy website.
Yes, they can coexist thanks to CloudNativePG, the PostgreSQL Operator for Kubernetes. Furthermore, if you want to try before you buy you can, thanks to the new learning environment, CNPG Playground.