,--. | oo| | ~~| o o o o o o o o o o o |/\/\| pip install pygame==2.0.0.dev10
We only released 2.0.0.dev8 24 days ago. However, the last few weeks have been quite productive! It's as if we were all trapped inside for some reason. First up, the 'critical' window resizing <https://github.com/pygame/pygame/pull/1705> bugfix thanks to @robertpfeiffer <https://github.com/robertpfeiffer> but also to @nthykier <https://github.com/nthykier>. This is another step towards a backwards compatible pygame 2 release. Another 'critical' bug (backwards compatibility bugs that block a pygame 2 release from happening) that got a fix is the pygame.display.update() call on windows. A patch has been merged into SDL <https://github.com/pygame/pygame/issues/251> so this should be fixed in pygame soon. Community help A special thanks to all the people who help out others. From making videos, to answering questions, to writing guides. MyreMylar, MichaelCPalmer, jtiai, claudeb, DaFluffyPotato, Rabbid76, The Big Kahuna, sloth, Kingsley, ... and lots of other people. Type hints, and lint tools The last pygame pre-release(2.0.0.dev8) shipped with Type hints, and now Type hints have been refined <https://github.com/pygame/pygame/pull/1696> (not like oil, but more like an expensive fermented vegan cheese). Thanks to Josip Komljenović aka @MightyJosip <https://github.com/MightyJosip> - Some type hint and examples fixes <https://github.com/pygame/pygame/pull/1817> - Font type hints - use bool instead of int <https://github.com/pygame/pygame/pull/1833> - Add an *all* variable to constants.c <https://github.com/pygame/pygame/pull/1733> @MyreMylar <https://github.com/MyreMylar> This is useful for fixing static analysis tools like pylint and LGTM. The __all__ variable in a module is for telling python which variables are to be exported. Documentation and tutorials _________________________ =(__ ___ __ __)= | | | | | python -m pygame.docs | | | | The type hints were a | | major part of the doc | | work in this release. | | Some examples got an | | update too. | |__ ___ __ _____| =(_________________________)= - pygame.examples.glcube has been updated <https://github.com/pygame/pygame/pull/1730> to use 'modern' OpenGL API thanks to @MyreMylar <https://github.com/MyreMylar> but also to @robertpfeiffer <https://github.com/robertpfeiffer>, @illume <https://github.com/illume> and @imallett <https://github.com/imallett>. - Fix grammar in rect docs <https://github.com/pygame/pygame/pull/1836> Scott Noyes @snoyes <https://github.com/snoyes> an amazing assortment of ammendments And now have an ARM64 build for testing pygame <https://github.com/pygame/pygame/pull/1717> on Travis CI (who provide it to us for free thanks!). Additionally a few bugs on the release process were fixed. Hopefully this will help us keep things working nicely on ARM platforms like the raspberry PI. - Add Aarch64 linux library directory to config_unix.py <https://github.com/pygame/pygame/pull/1828> @MyreMylar <https://github.com/MyreMylar> Thanks to @galexandreg <https://github.com/galexandreg> Surface.blit can now take *very* large rects <https://github.com/pygame/pygame/pull/1869> for the area argument. Which is very useful in open world games that could have huge sizes of surfaces. With SDL1 supporting only smaller rects and surfaces, it used to be limited to a 16bit number. SCALED <https://github.com/pygame/pygame/pull/1704> is a feature for scaling up low resolution game screens to large size screens - like 4k monitors or high resolution phone screens. This received some code cleanups and documentation. Thanks to @robertpfeiffer <https://github.com/robertpfeiffer>, and to @nthykier <https://github.com/nthykier> and @MyreMylar <https://github.com/MyreMylar> for help reviewing/testing. pygame using SDL1 <https://github.com/pygame/pygame/pull/1719> is building <https://github.com/pygame/pygame/pull/1842> and passing tests again <https://github.com/pygame/pygame/pull/1832> thanks to @MyreMylar <https://github.com/MyreMylar> and @illume <https://github.com/illume>. We stopped testing with SDL1 some time ago, whilst still sort of supporting it theoretically... but then bitrot set in and a few things stopped working again. Why do we want to keep doing this? It's useful for backwards compatibility testing. Additionally SDL1 is still better in a few tiny ways - the main one being on some ancient embedded linux platforms. - Updates SDL1 overlay example so it works with py3 as well as py2 <https://github.com/pygame/pygame/pull/1856> @MyreMylar <https://github.com/MyreMylar> As part of a code robustness adventure of fixing... surface.blits was fixed <https://github.com/pygame/pygame/pull/1716> for low memory situations where thanks to @nthykier <https://github.com/nthykier>. Add support for controlling screensaver state <https://github.com/pygame/pygame/pull/1734> by @nthykier <https://github.com/nthykier> and continued on in #1843 <https://github.com/pygame/pygame/pull/1843> allows changing the behaviour of pygame with regards to screensavers. By default pygame disables screensavers, which is good for games because you don't want a screensaver kicking in midway through a cut-scene. But some apps don't need this behaviour. So pygame.display.set_allow_screensaver(True) camera ___ __()}|=| |] pygame.camera ( \/ |___| | /|\ /| / | \ The pygame.camera on windows got some fixes <https://github.com/pygame/pygame/pull/1775> so that it works well on SDL2 with the VideoCapture module. In the process @MyreMylar <https://github.com/MyreMylar> made some improvements to pygame.image.frombuffer <https://www.pygame.org/docs/ref/image.html#pygame.image.frombuffer> - the function used to quickly share large buffers of data with pygame and other modules. Mask ▓▓ ░░ ▓▓██▒▒ ▒▒▒▒░░ ░░░░ ░░▒▒░░░░ ▒▒▓▓████░░ ▓▓▓▓▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▓▓▓▓████▓▓░░▒▒▓▓▓▓▒▒▒▒ ░░▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▓▓▓▓▓▓████▓▓▓▓▓▓▓▓▓▓▒▒▒▒░░ ▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓██████▓▓▓▓▓▓▒▒▒▒▒▒▒▒ ░░ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒ ▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓████▓▓▓▓██▓▓▒▒▒▒░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▒▒▒▒ ░░▒▒▓▓▓▓██▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒░░ ▒▒▒▒▓▓ ░░▒▒▓▓██▓▓▓▓ ▒▒▓▓▓▓▓▓▒▒ ░░▓▓▒▒▒▒ ▒▒▒▒██▓▓▒▒ ▒▒▒▒▓▓▓▓▓▓ ▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒██▓▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓▒▒▓▓▒▒ ░░▒▒▓▓▓▓▒▒▒▒▓▓▓▓▒▒▓▓▒▒██▒▒▓▓▒▒▓▓▒▒▓▓▓▓▒▒▓▓▓▓ ░░▒▒▓▓▓▓▓▓▓▓▒▒▓▓▓▓▒▒██▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒ pygame.Mask -- when 1 bit is enough Mask.to_surface <https://www.pygame.org/docs/ref/mask.html#pygame.mask.Mask.to_surface> is a way to draw 1bit Mask objects to surfaces. 1bit surfaces are great because they can be processed up to 32x faster than Surfaces with a large color depth(since Surfaces use up to 32bits per pixel). Great for pixel perfect collision detection in particular. Mask.to_surface is already useful, but Charles (aka @charlesej <https://github.com/charlesej>) has been working on preparing to implement the area keyword as seen in Surface.blit. This could be interesting to those people interested in doing deformable terrain. - Add fuzzy color support for Mask.to_surface <https://github.com/pygame/pygame/pull/1747> - Add/update Mask.to_surface tests <https://github.com/pygame/pygame/pull/1772> - Add Mask.to_surface area tests <https://github.com/pygame/pygame/pull/1854> - Fix typo in mask type stub <https://github.com/pygame/pygame/pull/1771> @charlesej <https://github.com/charlesej> good first issue 'goodfirstissue' is a label applied to issues which would be good for someone who wants to try contributing to a Free, Open Source, or community project (like pygame). Dan Lawrence (aka @MyreMylar <https://github.com/MyreMylar>) has been hard at work preparing almost 100 "good first issue"s for people to do. Here are some of the first time contributors: - Added tests for mouse.set_pos() <https://github.com/pygame/pygame/pull/1824> Steven Chua aka @Graphcalibur <https://github.com/Graphcalibur> - Adds Surface.get_height test <https://github.com/pygame/pygame/pull/1829> K Duggan aka @kduggan15 <https://github.com/kduggan15> - Add Surface.get_size test <https://github.com/pygame/pygame/pull/1822> @PeanutbutterWarrior <https://github.com/PeanutbutterWarrior> - Surface.get_locked test <https://github.com/pygame/pygame/pull/1826> @PeanutbutterWarrior <https://github.com/PeanutbutterWarrior> - Add joystick.get_init test <https://github.com/pygame/pygame/pull/1848> @PeanutbutterWarrior <https://github.com/PeanutbutterWarrior> - test for surface.get_offset <https://github.com/pygame/pygame/pull/1859> Nachiket Naganure aka @NachiketUN <https://github.com/NachiketUN> - unit test for surface.get_clip() <https://github.com/pygame/pygame/pull/1860> Pierre Haou aka @pierrehaou <https://github.com/pierrehaou> Daniel Gillet (aka @dangillet <https://github.com/dangillet>) worked on making [saving images to BytesIO/StringIO]](#1858 <https://github.com/pygame/pygame/pull/1858>) work. Thanks to kbanger on discord for looking into this "ljpeg and lpng missing in Setup.SDL2.in <https://github.com/pygame/pygame/pull/1870>" issue, and also for working on updating the pygame buildroot package. Fonts matter (don't they?) Font got a touch of modernization applied to it <https://github.com/pygame/pygame/pull/1862>. font.bold = True, font.underline = True and font.italics = True are now things... rather than having to do a font.set_bold(True). Now the freetype Font object has a 'bgcolor' attribute <https://github.com/pygame/pygame/pull/1735> to mirror existing 'fgcolor' one. ftfont.Font: Fix NameError when resolution is 0 <https://github.com/pygame/pygame/pull/1840> Thanks to Niels Thykier, aka @nthykier <https://github.com/nthykier> SysFont <https://www.pygame.org/docs/ref/font.html?highlight=sysfont#pygame.font.SysFont> is used to load fonts which are already installed on users systems. It's historically been complex and often not working so well. Not anymore! @MyreMylar <https://github.com/MyreMylar> made some first steps at adding sysfont tests, and updating the font lists for windows and ubuntu <https://github.com/pygame/pygame/pull/1739>. Then @illume <https://github.com/illume> noticed some of those new tests failing on MacOS, because sysfont._add_font_paths was adding ttf to 'simple font names' <https://github.com/pygame/pygame/pull/1849>. So now it's working better on the Mac too. Optimizations Adds MMX, SSE2 & Arm NEON optimised versions of blit_blend_premultiplied() <https://github.com/pygame/pygame/pull/1711> @MyreMylar <https://github.com/MyreMylar> Some tweaks to the pre-multiply alpha blending <https://github.com/pygame/pygame/pull/1834> Add a SSE4.2 optimized version of image_tostring for some 32bit surfaces <https://github.com/pygame/pygame/pull/1715> @nthykier <https://github.com/nthykier> MSVC compiler optimisation hinting, 1% smaller pygame on windows <https://github.com/pygame/pygame/pull/1816> @MyreMylar <https://github.com/MyreMylar> Faster methods for drawing filled rects and circles <https://github.com/pygame/pygame/pull/1670> of all kinds, care of @robertpfeiffer <https://github.com/robertpfeiffer> As a small speed up Surface.blits <https://www.pygame.org/docs/ref/surface.html?highlight=surface%20blits#pygame.Surface.blits> was used in the pygame.sprite <http://www.pygame.org/docs/ref/sprite.html> module to speed it up a little bit <https://github.com/pygame/pygame/pull/1724>. Bug fixes and Cleanups The static code analysis tool by microsoft "/analyze" is now being used. Thanks to Dan Lawrence, aka @MyreMylar <https://github.com/MyreMylar> #1328 <https://github.com/pygame/pygame/issues/1328> setup: Error out on unused-value warnings with -pygame-ci <https://github.com/pygame/pygame/pull/1838> @nthykier <https://github.com/nthykier> Clean up incompatible pointer casts and add a -Werror for it in the CI builds <https://github.com/pygame/pygame/pull/1844> @nthykier <https://github.com/nthykier> Add pgRect_Normalize to C API <https://github.com/pygame/pygame/pull/1753> @PeanutbutterWarrior <https://github.com/PeanutbutterWarrior> noticed that not all of the modules returned a boolean, sometimes they returned an int Then @MyreMylar <https://github.com/MyreMylar> stepped up and made a PR to Always return bool from get_init() instead of sometimes returning int <https://github.com/pygame/pygame/pull/1851> Reject attempts to delete attributes in that cannot be deleted <https://github.com/pygame/pygame/pull/1841> @nthykier <https://github.com/nthykier> >>> import pygame>>> c = pygame.color.Color('black')>>> del c.aTraceback (most >>> recent call last): File "<stdin>", line 1, in <module>AttributeError: Cannot delete attribute a Freetype font int casting fix <https://github.com/pygame/pygame/pull/1855> Dan Lawrence (aka @MyreMylar <https://github.com/MyreMylar>) In MacOS we had a problem where Default SDL render driver back to opengl <https://github.com/pygame/pygame/issues/1725> from the metal renderer. This had to do with a problem with our new conan based dependency compilation on MacOS <https://github.com/pygame/pygame/pull/1864>. Hopefully that's fixed now. Issue gardening ******** **************** ******************* ******************** ******************** wWWWw wWWWw \\ // ******** vVVVv (___) wWWWw (___) vVVVv \\\// ******* (___) ~Y~ (___) vVVVv ~Y~ (___) \\\//// ~Y~ \| ~Y~ (___) |/ ~Y~ |||// \| \ |/ \| / \~Y~/ \| \ |/ ||||| \\|// \\|// \\|/// \\|// \\|// \\\|/// ,,,,,,,,,,,//||||\,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; This time 2 'critical' backwards compatibility issues were fixed since the last release. Also plenty of work went into looking at the alpha blit issue, and the color key issues. @MyreMylar <https://github.com/MyreMylar> made a great effort creating some good first issues, but also continued to go through a lot of older issues seeing if they could reproduce them, and asking questions of the original reporter, and also fixing a few here and there. As a result our issue garden is doing pretty well. ------------------------------ - 8 open 'critical' issues <https://github.com/pygame/pygame/issues?q=is%3Aissue+is%3Aopen+label%3Acritical> (backwards compatibility issues reported by people), and 24 closed (last release: 16 open, 22 closed). - merged PRs <https://github.com/pygame/pygame/pulls?q=is%3Apr+is%3Aclosed> - 1442 Commits since 1.9.6 stable release <https://github.com/pygame/pygame/compare/1.9.6...2.0.0.dev10> - 276 Commits since 2.0.0.dev8 pre release <https://github.com/pygame/pygame/compare/2.0.0.dev8...2.0.0.dev10>