2.0.0.dev6 pygame pre release

:blossom::cherry_blossom: pip install pygame==2.0.0.dev6

Python 3.8 support. For pygame 2 anyway. Decided not to do it for pygame 1.9.6, and to instead try and fix a few more of those โ€˜criticalโ€™ blocker issues (current critical issue count is lucky 13).

Virtual Mouse mode with relative mouse movements was fixed to how it was in pygame 1.9.x - thanks to new committer @mcpalmer1980. Who also added a new pygame.music.fadein() function, plus examples!

Support for old SDL1 SDL_VIDEO_WINDOW_POS and SDL_VIDEO_CENTERED environment variables which were removed in SDL2.

The Great Examples Cleanup of October 2019 is complete.

All of the examples were tidied up. Extra documentation was added, and things clarified. Thanks to new committer @Starbuck5 for their work on examples/eventlist.py. Thereโ€™s now 43 example files!! Cleanups like removing usage of from pygame.locals import * , which is kind of coolโ€ฆ but also not considered good practice in the wider python community. Also the examples are now formatted with the python code for-matter. Additionally two interesting AND EDUCATIONAL new examples: music_drop_fade.py, and font_viewer.py were contributed by @mcpalmer1980

python3 -m pygame.examples.font_viewer
python3 -m pygame.examples.music_drop_fade

Cleanliness brings us joy

As part of the continuing codeprose cleanups of the pygame codeprose-base, we are now warning free on the clang C compiler on MacOS. Additionally warnings are now errors on the clang compiler when the robots check our code for us. We are also very close to zero warnings on different gcc versions, and Microsoft Visual C compiler too. We reached a new milestone with the โ€˜LGTMโ€™ static analyzer. It now gives pygame an โ€œA+โ€ for both the python code, and the C code - meaning pygame is within the top 5% of projects with those languages. LGTM now checks new pull requests automatically, and helps us find some issues on pull requests. The Coverity static analyzer rates pygame source code as having less defects than high quality code bases like the Linux kernel, OpenSSL, and libcurl. Strangely (to me) pygame is regularly trending on github as a C project. A lot of the cleanups were done by @charlesej, so thanks a lot for that! Oh, and a warningโ€ฆ please donโ€™t look at our setup.py file!!! Itโ€™s still scary AF. We have over 45,000 lines of python in pygame, and 350,000 lines of Cโ€ฆ and a lot of that needs some attention.

Some developer improvements include verbose mode to our test runner ( python3 -m pygame.tests -v ), and the mechanism to share functions and data in our C API has been documented. See the Hacking developer guide.

Want to collide between a rect and a line?

Well, @charlesej has you covered with the new Rect.clipline() . This can also tell you where a line clips with a Rect. It was great to see the discussion on this as different people talked about API trade offs, and together came up with a very nice API. Thanks to @mcpalmer1980 for the discussion on the design, and also to @thiagojobson (who is now part of the pygame team on github! :balloon: :tada: ).

First time committer @hnrkcode fixed how comments are displayed on the website. Also thanks to @0101011 for a doc fix. Speaking of new committers, @galexandreg helped out fixing the pygame.mixer.Sound.get_num_channels() function to return a correct result in some cases (the sound stuff got a number of fixes this release!)

@robertpfeiffer did some more work on the SCALED feature, after a patch from @lordmauve enabling use of it with OpenGL apps.

Thanks to TravisCI who have allowed us to try out their alpha ARM64 support. We donโ€™t have pygame building on it yet, but hopefully soon it can join our other ROBOT builders like the power pc one.

In distro packaging news, FreeBSD now has pygame 1.9.6. Which is great, because it stuck around at 1.8.x for many years now. Thanks to Wen, and Nathan in maintaining it there. See the giant list of 119 pygame packages in different distros. No one seems to have packaged a pre-release of pygame 2 yet.

Cheers to the folks in the discord chat helping people out, chatting and sharing project updates on things. Especially to claudeb, and blubberquark.

All the regressions that were reported in issues for the 2.0.0.dev4 release have been fixed. Including one circle drawing regression fix by @MightyJosip, who also fixed a long lasting โ€˜thick lineโ€™ pygame.draw issue. Both very tricky ones! Also thanks to some very detailed unit tests that were written by @charlesej for the draw module that let us verify the drawing algorithms.

Iโ€™m happy that 5 โ€˜criticalโ€™ backwards compatibility issues were fixed since the last release. If you notice a backwards compatibility issue with the pygame 2 series please let us know with a delicious issue report. Nom nom nom :pizza:

ps. Why dev6 instead of dev5? This time 2.0.0.dev5 was the version given to the git repo. So we can tell if someone is compiling pygame from source in bug reports. The git repo pygame will become 2.0.0.dev7, and when released it will be 2.0.0.dev8. This is how libsdl are doing things now too, and itโ€™s a good idea.
:robot: is coming. Happy hacking!