Category Archives: release

Kivy 1.10 released

We’re pleased to announce a new stable version of Kivy, version 1.10. You
can see the full detailed changelog on the mailing list announcement,
and download the new version from the Kivy website or via your package manager.

This release includes many new features. Highlights include:

  • Python 3.5/3.6+ support on Windows. Support for these versions was
    previously available in nightly builds due to changes in the
    compiler toolchain, but official wheels are now available.
  • A new RecycleView widget replaces the old ListView. It is
    faster and more efficient, but with a simpler API.
  • Graphics backend improvements including ANGLE support on Windows and
    a mock backend for headless Kivy.
  • Several new Window options when using the SDL2 backend, for much
    improved cross-platform behaviour.
  • Improvements in Clock performance.

There are also many other new features and bugfixes, spread across
over 1500 commits from almost 100 different developers. Thanks to everyone who contributed!

Continue reading

Posted in Kivy, Python, release | Comments Off on Kivy 1.10 released

Kivy 1.9.1 released

We’ve just released a new stable version of Kivy, version 1.9.1. You
can see the changelog on the mailing list announcement,
and download the new version from the Kivy website or via your package manager.
This is mainly a bugfix and tidying … Continue reading

Posted in Kivy, Python, release | Comments Off on Kivy 1.9.1 released

Kivy 1.9.1 released

We’ve just released a new stable version of Kivy, version 1.9.1. You
can see the changelog on the mailing list announcement,
and download the new version from the Kivy website or via your package manager.

This is mainly a bugfix and tidying release following the major
version 1.9 last year, but includes many bugfixes, smaller new
features, and improvements to our surrounding infrastructure across
almost 1000 new commits from over 70 different contributors.

One major improvement for Windows users is that we now have a fully
working installation method using pip and wheels for both Kivy and its
non-python binary dependencies, rather than our older standalone kivy
distribution. This should make it easy to install Kivy in any existing
Python installation. OS X distribution has also seen improvement,
including better support for working with homebrew.

We’ve also improved app packaging particularly on OS X, with a new
packaging method that should be easier than pyinstaller (though
pyinstaller is still supported), a buildozer backend for OS X
packaging (now buildozer works with Android, iOS and OS X!), and
generally improved and updated documentation for the packaging
process. The documentation for Windows and Linux packaging has
similarly been updated, and the new packaging methods and buildozer
support will hopefully be added for these in the future.

Packaging for Android with python-for-android is not tied to the
Kivy update schedule in the same way, but has been seeing significant
improvements and updates in the last few months, including a full
revamp of the toolchain and support for many new features, which you
can see in several of the recent previous posts on this blog.

In the future, we’re heading towards Kivy 2.0, which we’ve had in mind
for a while to be a major release with some big new features and
potentially removal of some long-deprecated components. We aren’t sure
on the timescale for this yet, but if it takes too long there will be
other minor releases first. For other updates, watch this blog or the
standard Kivy support channels.

Thanks to all our contributors, and enjoy the new release!

Continue reading

Posted in Kivy, Python, release | Comments Off on Kivy 1.9.1 released

Kivy 1.9 released

Kivy 1.9 has just been released! This has been a long time in the
making, for no very good reason, but now you can take advantage of all
our many new features in the stable branch. You can find the full
changelog at the official mailing list announceme… Continue reading

Posted in Kivy, Python, release | Comments Off on Kivy 1.9 released

Kivy 1.9 released

Kivy 1.9 has just been released! This has been a long time in the
making, for no very good reason, but now you can take advantage of all
our many new features in the stable branch. You can find the full
changelog at the official mailing list announcement.

This big release includes almost 2500 new commits (about 30% of the
total in Kivy!) from nearly 100 different contributors, including both
significant changes and many smaller fixes. I’ll showcase a few of
the most interesting ones below; these are also listed in the
changelog above, along with more information about the many other changes.

One of the most major internal changes is a shift to using SDL2 as our
window and other backend provider on almost all platforms – only
Android still uses the old pygame/SDL backend. This shouldn’t change
the external user API at all, but directly makes available features
that Pygame lacked such as proper support for high-DPI displays and
the ability to retain an OpenGL context on resize (previously lacking
in Windows and OS X), as well as resolving some old Pygame related
bugs and hopefully making further low level customisation easier in
the future. Although this doesn’t change at all how you interact with
Kivy, it’s a big improvement behind the scenes. This also means that
Pygame is now deprecated on platforms where SDL2 already works; we’ll
continue to support it for a while and it’s unlikely to stop working
even after that, but it’s no longer a focus.

Image of Kivy on a retina display with high DPI mode
Image of Kivy on a retina display without high DPI mode

These images show the difference in Kivy rendering on the same (OS X
retina) screen, first with the new SDL2 high DPI mode enabled so that
Kivy has full awareness of the true resolution, and second letting the
operating system scale up a smaller rendered result – the latter is
default for applications that do not declare DPI awareness, but Kivy
will now always render properly as in the first image. The
difference is dramatic, and we’re glad to be able to properly support
these resolutions. This improvement is currently enabled only on OS X,
but the equivalent Windows fix will be merged shortly and the
behaviour should already be correct on Linux.

A different change that may be more directly useful in your
applications is the new EffectWidget, which behaves as a normal
RelativeLayout but also lets you add one or more shader effects to its
rendered output. The API is designed to make it very easy to create
simple effects even without knowing about GLSL, in a way that can
easily be combined with existing applications.

Image of Kivy effectwidget

This above screenshot demonstrates the EffectWidget via one of the new
Kivy examples; the kv code of the left and right is identical,
except the right hand side includes colour mixing and pixelation
effects. Since these are applied at a very low level they are very
efficient (although not optimised for too many effects at once) and
can be applied even to video or moving scenes such as in games.

Image of the Kivy SVG example, including the famous svg tiger

One feature that has been heavily requested by users is SVG support
for Kivy, and preliminary support is included in 1.9! This is still
experimental and currently supports only Python 2, but much of the
work has been done and even complex SVG images are reproduced
well. The above image shows one of the new SVG examples, including the
famous tiger.

There are also some nice new features that can’t be captured so easily
in a screenshot. One is the addition of a rebind option to Kivy
properties. This resolves a problem that arose with code like

# In python
from kivy.uix.button import Button
from kivy.properties import ObjectProperty
class MyButton(Button):
    some_ref = ObjectProperty(None, rebind=True)

# And in kv language
<MyButton>:
    text: self.some_ref.text if self.some_ref else ''

The problem here was that kv could only bind automatically to the
first value of self.some_ref, so the text of the MyButton instance
would never update, and it is difficult to improve this internally
without dramatic slowdowns from checking if many objects have
changed. The new rebind option makes it possible to enable this second
level of binding in select places where appropriate; it won’t be
necessary or useful to everyone, but it’s a convenient feature when
really necessary.

Other new features include a new, faster video provider via Cython
and ffmpeg, Window modes to detect and react to the presence of a
software keyboard on Android, an internal rewiring of focus handling
for widgets, and many many other bugfixes and smaller new features.

Thanks to all our contributors, and enjoy the new release!

Continue reading

Posted in Kivy, Python, release | Comments Off on Kivy 1.9 released