[image: pygame 1.9.5] <https://www.pygame.org/wiki/about> TLDR; Some highlights.
Every single source file has been heavily modified and moved in this release. Initial (source code only) support for SDL2 has been merged in. We also support compiling with SDL1 in the same code base, so the migration to pygame 2 is easier. pygame 2 will be released with SDL2 being the default backend when some remaining issues are ironed out. The 1.9.x releases will continue with SDL1 until then. Also, the C API of pygame is undergoing a transformation with lots of cleanups. Then there have been plenty of other cleanups all throughout the python code as well. There's still lots to clean up, but things should be significantly easier for people to contribute <https://www.pygame.org/contribute.html> (👋 hello and thanks new contributors!). The documentation has been improved with better examples links, search functionality, and improved navigation. Support for older Macs, and newer Macs has been improved. The mask, midi, draw, and math modules have gotten lots of polish with rough edges removed. Thanks A very special thanks to the people who have volunteered commits to pygame since the last release. In alphabetical order... (@alphaCTzo7G <https://github.com/alphaCTzo7G>) | Amos Bastian (@amosbastian <https://github.com/amosbastian>) | Andrey Lopukhov (@andreyx86 <https://github.com/andreyx86>) | Augusto Noronha (@augusto2112 <https://github.com/augusto2112>) | Bernardo Sulzbach (@bernardosulzbach <https://github.com/bernardosulzbach>) | (@Bottersnike <https://github.com/Bottersnike>) | Cai Q.T. (@CAIQT <https://github.com/CAIQT>) | (@Cerealdragon <https://github.com/Cerealdragon>) | Charles (@charlesej <https://github.com/charlesej>) | (@ChrisWeissNike <https://github.com/ChrisWeissNike>) | (@cmtrapp02 <https://github.com/cmtrapp02>) | Daniel Molina (@daniel-molina <https://github.com/daniel-molina>) | David Caughell (@DavidCaughell <https://github.com/DavidCaughell>) | David Lönnhager (@dlon <https://github.com/dlon>) | (@dr0id <https://github.com/dr0id>) | burmer ( @dtschirmer <https://github.com/dtschirmer>) | (@e1000 <https://github.com/e1000>) | xFly_Dragon (@husano896 <https://github.com/husano896>) | (@IchMageBaume <https://github.com/IchMageBaume>) | René Dudfield (@illume <https://github.com/illume>) | (@LambdaGoblin <https://github.com/LambdaGoblin>) | Lenard Lindstrom (@llindstrom <https://github.com/llindstrom>) | François Magimel (@Linkid <https://github.com/Linkid>) | (@LiquidFenrir <https://github.com/LiquidFenrir>) | Mark Hurley (@markph0204 <https://github.com/markph0204>) | Marius Gedminas (@mgedmin <https://github.com/mgedmin>) | (@metulburr <https://github.com/metulburr>) | Michael Farrell (@micolous <https://github.com/micolous>) | Dominik George (@Natureshadow <https://github.com/Natureshadow>) | Nik (@nikolas <https://github.com/nikolas>) | Nunu-Willump (@Nunu-Willump <https://github.com/Nunu-Willump>) | (@pleboulanger <https://github.com/pleboulanger>) | Rebecca Chen (@rchen152 <https://github.com/rchen152>) | (@robertpfeiffer <https://github.com/robertpfeiffer>) | Sett (@sw00 <https://github.com/sw00>) | Quite a few new people have helped out with this release 🤗 An equally special thanks to everyone else who has contributed in other ways. Thanks to claudeb, imallet, and deshipu for moderating the discord chat to keep it friendly. Thanks to the twitter folk, and the stackoverflow Q&A people. Thanks to everyone who puts their game up on the pygame website for others to look at. Thanks to people making tutorials and sharing articles & books they've written. Thanks to the people working on stuntcat(the community game), and for those who have supported it financially. Thanks to the r/pygame mods and community. Thanks to pyladies groups for running fun sessions, and for making things better. Thanks to the teachers providing feedback, and for doing something fun with their students. Thanks to Debian, pyweek, ludumdare, Raspberrypi, and all the other community groups. 🖤 More details. #945 <https://github.com/pygame/pygame/pull/945> Vector: Explain slices and swizzling #944 <https://github.com/pygame/pygame/pull/944> Update surface documentation #937 <https://github.com/pygame/pygame/pull/937> Make mask offset boundary checking consistent #936 <https://github.com/pygame/pygame/pull/936> Update midi documentation #931 <https://github.com/pygame/pygame/pull/931> Fix drawing 1 pixel wide off-surface ellipses #929 <https://github.com/pygame/pygame/pull/929> Use SDL_RWops instead of pg_FopenUTF8. #928 <https://github.com/pygame/pygame/pull/928> Fix LayeredDirty's inconsistent use of its source rect #927 <https://github.com/pygame/pygame/pull/927> Workaround for locale errors with PyPy #926 <https://github.com/pygame/pygame/pull/926> Update dependencies for manylinux builds. #924 <https://github.com/pygame/pygame/pull/924> Upload .whl binaries to a github draft release when creating tag. #923 <https://github.com/pygame/pygame/pull/923> Update scrap documentation #922 <https://github.com/pygame/pygame/pull/922> #881 <https://github.com/pygame/pygame/pull/881> #879 <https://github.com/pygame/pygame/pull/879> Fix zero-sized mask segfaults #920 <https://github.com/pygame/pygame/pull/920> Fix the SystemError when no type specific clipboard content exists. #917 <https://github.com/pygame/pygame/pull/917> Update scrap tests #914 <https://github.com/pygame/pygame/pull/914> Update freetype tests #911 <https://github.com/pygame/pygame/pull/911> #893 <https://github.com/pygame/pygame/pull/893> #889 <https://github.com/pygame/pygame/pull/889> #876 <https://github.com/pygame/pygame/pull/876> #874 <https://github.com/pygame/pygame/pull/874> #844 <https://github.com/pygame/pygame/pull/844> #840 <https://github.com/pygame/pygame/pull/840> #831 <https://github.com/pygame/pygame/pull/831> #819 <https://github.com/pygame/pygame/pull/819> Improved mask tests #900 <https://github.com/pygame/pygame/pull/900> Add sprite tests #899 <https://github.com/pygame/pygame/pull/899> bugfix for dirty sprite when using a source rect #891 <https://github.com/pygame/pygame/pull/891> Add missing Vector2.magnitude() #873 <https://github.com/pygame/pygame/pull/873> Fix mask index out of bounds segmentation fault #806 <https://github.com/pygame/pygame/pull/806> Mask constructor 'fill' argument #807 <https://github.com/pygame/pygame/pull/807> Use version directives consistently in documentation and update style #805 <https://github.com/pygame/pygame/pull/805> Event functions: pump parameter and keyword arguments #803 <https://github.com/pygame/pygame/pull/803> Add customized repr()/str() output for Mask objects #802 <https://github.com/pygame/pygame/pull/802> Fix aaline()/aalines() not drawing on a surface's border #797 <https://github.com/pygame/pygame/pull/797> Keep surface alpha value for copied surfaces with SRCALPHA flag #760 <https://github.com/pygame/pygame/pull/760> #707 <https://github.com/pygame/pygame/pull/707> Load images on multiple threads properly #783 <https://github.com/pygame/pygame/pull/783> Fix overlap_mask() making incorrect mask #751 <https://github.com/pygame/pygame/pull/751> #749 <https://github.com/pygame/pygame/pull/749> #748 <https://github.com/pygame/pygame/pull/748> #746 <https://github.com/pygame/pygame/pull/746> #745 <https://github.com/pygame/pygame/pull/745> Added get_init() to all modules with an init() function #725 <https://github.com/pygame/pygame/pull/725> Allow camera module to be used on Windows #722 <https://github.com/pygame/pygame/pull/722> API version macros #698 <https://github.com/pygame/pygame/pull/698> Use pre styles in docs #670 <https://github.com/pygame/pygame/pull/670> Converting between ANSI notes and MIDI notes or frequencies #663 <https://github.com/pygame/pygame/pull/663> Compile for PyPy 3 and PyPy fixes #665 <https://github.com/pygame/pygame/pull/665> Chimp tutorial: reindent and clean some code #664 <https://github.com/pygame/pygame/pull/664> Chimp tutorial: fix reST syntax #656 <https://github.com/pygame/pygame/pull/656> #649 <https://github.com/pygame/pygame/pull/649> Handle Unicode objects and paths properly #631 <https://github.com/pygame/pygame/pull/631> Fix failing tests test_aapolygon and test_pie #630 <https://github.com/pygame/pygame/pull/630> Fix freetype rotation rendering #596 <https://github.com/pygame/pygame/pull/596> aaline cleanup #582 <https://github.com/pygame/pygame/pull/582> draw.aaline: blend correctly #577 <https://github.com/pygame/pygame/pull/577> #573 <https://github.com/pygame/pygame/pull/573> Fixed FreeType memory leaks #571 <https://github.com/pygame/pygame/pull/571> Fix surface.blits() bugs #560 <https://github.com/pygame/pygame/pull/560> Added math.Vector2 subclass test for issue #558 <https://github.com/pygame/pygame/pull/558> Raise TypeError on invalid point arguments #557 <https://github.com/pygame/pygame/pull/557> Update typecheck to allow subtypes #545 <https://github.com/pygame/pygame/pull/545> update system font lists in sysfont.py #538 <https://github.com/pygame/pygame/pull/538> Mac fonts support using system_profiler #559 <https://github.com/pygame/pygame/pull/559> Allow clean silencing of support prompt #553 <https://github.com/pygame/pygame/pull/553> Fix homebrew travis mac builds #551 <https://github.com/pygame/pygame/pull/551> Fixed freezing while playing music from file objects #550 <https://github.com/pygame/pygame/pull/550> updated for python 3 #546 <https://github.com/pygame/pygame/pull/546> Improve message on failed imports & cleanup #544 <https://github.com/pygame/pygame/pull/544> Spelling fix in examples/glcube.py #540 <https://github.com/pygame/pygame/pull/540> DirtySprite subclass allow other _layer values #536 <https://github.com/pygame/pygame/pull/536> dependency version into README & Cleanup SDL1.2 #534 <https://github.com/pygame/pygame/pull/534> More test cleanups. #535 <https://github.com/pygame/pygame/pull/535> draw_py for Python algos & aaline testing #534 <https://github.com/pygame/pygame/pull/534> More Test cleanup #518 <https://github.com/pygame/pygame/pull/518> Organise the docs modules by usage, add search form. #517 <https://github.com/pygame/pygame/pull/517> Test cleanup n+1 : yet another test cleanup branch #516 <https://github.com/pygame/pygame/pull/516> PY_VERSION_HEX < 0x02070000 : cleanup #515 <https://github.com/pygame/pygame/pull/515> Fix draw polygon ; tests & code cleanup #514 <https://github.com/pygame/pygame/pull/514> Cleanup Python < 2.7 references #511 <https://github.com/pygame/pygame/pull/511> Fix odd-width ellipses not drawing correctly #510 <https://github.com/pygame/pygame/pull/510> Update unit tests draw.ellipse, add unit tests draw.(aa)line(s) #509 <https://github.com/pygame/pygame/pull/509> Midi tests : add, refactor, cleanup #508 <https://github.com/pygame/pygame/pull/508> More test method cleanup #507 <https://github.com/pygame/pygame/pull/507> Improve mac compile times on travis. #505 <https://github.com/pygame/pygame/pull/505> Remove "if 1:" pattern in tests #504 <https://github.com/pygame/pygame/pull/504> Cleanup mixer test #503 <https://github.com/pygame/pygame/pull/503> Clang format all the src_c/.c files #502 <https://github.com/pygame/pygame/pull/502> Cleanup some test methods & test/sndarray_test.py #501 <https://github.com/pygame/pygame/pull/501> Add draw_ellipse unit test #500 <https://github.com/pygame/pygame/pull/500> Test for overlap mask #499 <https://github.com/pygame/pygame/pull/499> Remove boilerplate imports from top of test files #498 <https://github.com/pygame/pygame/pull/498> Adding a test for Thick Line Bug #493 <https://github.com/pygame/pygame/pull/493> 0 sized masks are now possible #489 <https://github.com/pygame/pygame/pull/489> transform.scale does not crash for zero sized surfaces #488 <https://github.com/pygame/pygame/pull/488> Added unit test 'test_zero_surface_transform' for issue 411 #486 <https://github.com/pygame/pygame/pull/486> Moved jquery.plugin.docscomments.js into pygameweb. #485 <https://github.com/pygame/pygame/pull/485> Repo cleanup. 8 things in top level. Rest in buildconfig/. Old stuff removed. #484 <https://github.com/pygame/pygame/pull/484> Added mac sdl2 support. Changed config.py -sdl2 #483 <https://github.com/pygame/pygame/pull/483> Support older mac core duo 2 cpus #482 <https://github.com/pygame/pygame/pull/482> The giant SDL2_patches merging PR. #476 <https://github.com/pygame/pygame/pull/476> Do not try to add portmidi on freebsd. It does not exist. #475 <https://github.com/pygame/pygame/pull/475> Resurrect Python 3.4 builds on Appveyor -- https://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations/