libsdl is a library pygame is built on. It had a new release after almost 9 months of development. The [2.0.14 release notes](https://discourse.libsdl.org/t/sdl-2-0-14-released/28470) detail things a little bit. More than 9 months worth of effort is a bit much to explain.
There's been a number of bugs fixed we reported in the pygame 2 series. One of which was pygame.display.update() updating the whole screen on windows. So, now 'dirty rect drawing' is faster again on windows. From the list you'll notice a lot of work went into joystick and game controller improvements. Including support for more than 4 xbox controllers at once on windows. But linux, android, mac, and even freebsd got joystick improvements. On linux the Kernel Mode Setting (KMSDRM) video driver was improved a lot. For retro computing fans, the OS2 port got a lot of love. Lots of portability things were improved, like fixing compilation for M1 CPUs, improving the build system. Raspberry Pi support has been improved, as have most video drivers for other platforms.
Xbox One port
Victor Lopez started on an Xbox one port, and has had some success.
> I can confirm Xbox One is able to run the aliens sample with joystick support, audio and sprites, it needs, however, heavy testing.
These are the relevant repositories:
- https://github.com/greentwip/cpython
- https://github.com/greentwip/pygame
pathlib support for image, sound, and font loading.
pathlib is an object oriented way of doing path handling in python 3 (there's also a backport to python2). Before pygame didn't handle these objects in resource loading functions for image and sound loading. Now it does pathlib!
python
path = pathlib.Path('.') / "data" / "house_lo.wav"
sound1 = mixer.Sound(path)
Thanks to ankith26 in 2366 and René Dudfield (illume) in 2387 .
Cursor object API
Starbuck5 worked on a new Cursor object in https://github.com/pygame/pygame/pull/2331
Now you can add system cursors, and color cursors out of surfaces along with the other ones you could draw with ascii art.
python
box = pygame.cursors.Cursor((10,10), pygame.Surface((20,20)))
pg.mouse.set_cursor(box)
pg.mouse.set_cursor(pg.SYSTEM_CURSOR_NO)
pg.mouse.get_cursor()
>>> <Cursor(type: system, constant: SYSTEM_CURSOR_NO)>
Starbuck5
- added a link to patreon on github in 2362
- Improved the README.rst by clarifying, restructuring and improving links. 2396
- Cleaned up 'import pygame._view' in packager_imports by removing it. 2384
- Docs build fixes + home for the Korean tutorial 2420
Starbuck5 added a deprecation warning for mouse.set_system_cursor() 2397 after a long discussion and research with a number of us on if we [should have deprecation warnings anyway?](https://github.com/pygame/pygame/issues/2197).
pygame.draw.rect fixes.
Another project Starbuck5 worked on was fixing some draw.rect issues in PR 2406 found by gummbum and dr0id
This script by dr0id made it much easier to spot the problems.

galexandreg worked on text_input documentation improvements on by default, needed for pygame.TEXTINPUT https://github.com/pygame/pygame/pull/2333
robertpfeiffer made a few fixes to issues with android support. Added K_AC_BACK key constant, fixed data_file pruning and "STRIPPED" install 2311
Ankith ankith26 merged these ones in (whilst also looking at some difficult event posting issues, and cleaning up some image loading code).
- Unittests for event module 2283
- Delete obsolete test/util files 2303
- Documented pygame.image load_basic, load_extended, save_extended. image.c code cleanups. https://github.com/pygame/pygame/pull/2270
- Pathlib support for most pygame functions 2366
- Drop PyLong_FromUnicode, removed in python 3.10 2385
- little music doc fix 2414
mcpalmer1980 Added experimental relative mouse motion support to video.Window in 2392 They have also been using the experimental _sdl2 features quite a lot and coming up with some good improvements and discussions on that (including a new package!).
Dan Lawrence ( MyreMylar ) was on a coding rampage and made a number of improvements:
- mixer.music.get_busy() return False when the music is paused 2295
- Small improvement to the get_locks() test 2281
- Interactive test for touch.get_finger() 2279
- Removed the link to the closed Discord server from GitHub 2296 😢
- pygame.midi pass the output buffersize down to portmidi 2272
- interactive test for set_gamma_ramp() 2278
- Rejiged the alpha blitter path logic to cover issue on mac 2345
- Account for mixer.init()/pre_init() returning more channels than asked 2372
- Fix typo in image.frombuffer() type hint 2383
Many many special Thanks go to
- everyone writing up issues, answering questions, sharing your work, or moderating discussions on different forums.
- reviewers including: illume, siggisv, ankith26, robertpfeiffer, MyreMylar, Starbuck5, pmp-p, and others.
- [patreon.com/pygame](https://patreon.com/pygame) sponsors: Christopher Cacho, Daniel Lawrence, Tommi Sinivuo, Leif Theden, zoldalma, and Bob Johnson. With their help half of the first patreon goal of covering the monthly hosting costs has been covered and a number of pygame tutorials have been made.
- the people supporting pygame financially by buying the pre-release of a [pygame book](https://pygame.itch.io/pygame-book). It's a book by a long time pygame contributor where all funds go towards pygame development.
See ya!
---
- [merged PRs](https://github.com/pygame/pygame/pulls?q=is%3Apr+is%3Aclosed+merged%3A2020-10-28..2020-12-24+sort%3Acreated-desc+) since we started the pygame 2.0.0.
- [189 Commits since 2.0.0 stable release](https://github.com/pygame/pygame/compare/2.0.0...2.0.1)