Releases: pygame-community/pygame-ce
2.5.1.dev2
A pre-release before the final release, please help us by testing this!
Release highlights
This is mostly a bug-fixes-and-enhancements release, but we do have a few cool new stuff to showcase!
- We now support and distribute wheels for CPython 3.13 and PyPy for apple silicon.
- The experimental
Windowclass is now subclass-able. - Added new method
Surface.premul_alpha_ip - The
dstargument ofSurface.blitnow has a default value:(0, 0). This means you can skip this argument if you are blitting a surface at the origin (top-left) of the window.
What's Changed
- 2.5.0.dev5 by @Starbuck5 in #2904
- Start 2.5.1 by @Starbuck5 in #2905
- Bump docker/login-action from 3.1.0 to 3.2.0 by @dependabot in #2906
- Update docs of
Surface.get_(f)rect()and(F)Rect.move_to()by @damusss in #2901 - Fixed missing comma in README by @REX2626 in #2907
- Add SSE2, AVX2 & NEON support to
pygame.print_debug_info()by @MyreMylar in #2897 - Use github download links to get SDL dependencies by @ankith26 in #2916
- Update transform.get/set_smoothscale_backend typehint from str to Literal by @damusss in #2918
- Contribution Section Added to README.rst by @MrF1ow in #2910
- Update punctuation in some docs by @whangho in #2919
- More SDL3 compat: Surface things by @Starbuck5 in #2922
- Very small typehint fix for pygame.Mask by @damusss in #2926
- Remove SDL v1.2.10 checks in display.c by @Starbuck5 in #2928
- pygame.Surface docs improvements by @REX2626 in #2911
- Bump docker/build-push-action from 5.3.0 to 5.4.0 by @dependabot in #2932
- Fix failing tests based on numpy v2 by @ankith26 in #2934
- Bump actions/checkout from 4.1.6 to 4.1.7 by @dependabot in #2931
- Bump pypa/cibuildwheel from 2.18.1 to 2.19.1 by @dependabot in #2930
- EventState SDL3 compat by @Starbuck5 in #2940
- Try re-enabling tests disabled since SDL 2.0.18 by @MyreMylar in #2885
- Fix passing
parent_window=Nonetomessage_boxby @Matiiss in #2723 - Improve security of releases by adding hash checks by @ankith26 in #2941
- Updated SDL to 2.30.4 by @Matiiss in #2949
- Fix transform.hsl() to work on any Surface by @itzpr3d4t0r in #2948
- Bump docker/build-push-action from 5.4.0 to 6.1.0 by @dependabot in #2955
- Allow degenerate circles (radius = 0) by @damusss in #2913
- Improve
PixelArray.make_surface()performance by @itzpr3d4t0r in #2953 - Fix
Surface.fillwith rects with negative positions that overlap the surface by @oddbookworm in #2939 - Add ABGR format to frombytes and tobytes by @zoldalma999 in #2951
- Make window subclassable by @zoldalma999 in #2950
- Optimized
transform.scale2x()by @itzpr3d4t0r in #2859 - Use static inline instead of inline by @zoldalma999 in #2952
- Add default dest (0, 0) to Surface.blit by @damusss in #2936
- Docs generation is now
python -m buildconfig docsandpython -m buildconfig docs full_generationby @oddbookworm in #2942 - Bump docker/build-push-action from 6.1.0 to 6.2.0 by @dependabot in #2963
- Bump robinraju/release-downloader from 1.10 to 1.11 by @dependabot in #2964
- Add
Surface.premul_alpha_ip()by @itzpr3d4t0r in #2899 - SDL 2.30.5 by @oddbookworm in #2969
- Make pyproject license consistent with
setup.pyby @ankith26 in #2971 - Fix
premul_alpha_ipdoc indentation issue by @Matiiss in #2972 - Add new official logos for pygame - Community Edition by @Mega-JC in #2965
- Fix homepage and release notes link in pypi urls by @ankith26 in #2977
- Use PyObject_CallMethod in resource loaders by @Starbuck5 in #2974
- Get rid of docscomments.js from docs by @Notenlish in #2959
- Remove obsolete surflock functions by @Starbuck5 in #2973
- Bump docker/build-push-action from 6.2.0 to 6.3.0 by @dependabot in #2983
- Ensure
.premul_alpha_ip()works with zero sized Surfaces by @itzpr3d4t0r in #2980 - Bump pypa/cibuildwheel from 2.19.1 to 2.19.2 by @dependabot in #2982
- Restore inlining for
.fblits()internal functionality by @itzpr3d4t0r in #2978 - Optimized
mask.from_surface()when converting an alpha surface. by @itzpr3d4t0r in #2895 - Fix scaled-after-non-scaled usage by @ankith26 in #2925
- Optimized all
Rect/FRectmethods viapgRect_FromObjectby @itzpr3d4t0r in #2908 - General example changes by @bilhox in #2581
- python -m buildconfig now works again... by @oddbookworm in #2989
- Use python 3.8 isms in the type stubs by @ankith26 in #2995
- Add license identifier to readme by @MyreMylar in #2890
- Polish stubs with deprecated decorator by @damusss in #2984
- Make deprecated API raise deprecation warnings by @ankith26 in #3001
- Use
SDL_TTF_VERSION_ATLEASTby @zoldalma999 in #3003 - Make blend flag docs more accurate by @Mic-lab in #3004
- Fix editable install test fixtures logic by @ankith26 in #2996
- Support iterable in
display.updateby @ankith26 in #2987 - 3.13 source support (removes deprecated functions) by @Starbuck5 in #2994
- Centralize CI config and make it more uniform (Adds macOS arm64 pypy CI) by @ankith26 in #2945
- Optimize draw.aacircle and fix typo by @mzivic7 in #3012
- Pin all build dependencies by @ankith26 in #3015
- Bump docker/build-push-action from 6.3.0 to 6.4.1 by @dependabot in #3013
- Skip flaky window tests on pypy by @ankith26 in #3017
- Adjust tobytes premul formula by @ankith26 in #2966
- Update OpenGL Viewport when Window resizes by @damusss in #2915
- Use PyObject_CallNoArgs where applicable by @Starbuck5 in #3020
- Changed dark theme slightly to make code more readable in some cases by @oddbookworm in #2960
- Remove unnecessary pixeloffset member of subsurface data by @Starbuck5 in #3014
- draw.c: better strategy for 24bpp writes by @Starbuck5 in #3021
- Bump docker/login-action from 3.2.0 to 3.3.0 by @dependabot in #3025
- Bump docker/build-push-action from 6.4.1 to 6.5.0 by @dependabot in #3024
- Update SDL to 2.30.6 by @oddbookworm in #3034
- Skip yet another flaky pypy test by @ankith26 in #3031
- Add python 3.13 wheel support by @ankith26 in #3030
New Contrib...
2.5.0
☀️🌊🏖️😎🏄🐚🌈🏝️🍹☀️🌊🏖️🎉
pip uninstall pygame (if previously installed, to avoid package conflicts)
pip install pygame-ce --upgrade
☀️🌊🏖️😎🏄🐚🌈🏝️🍹☀️🌊🏖️🎉
This release, coming in just four months after the previous one, has been possible due to patches submitted by over 30 contributors, who have collectively made over 132 pull requests with 464 commits that touch 413 files! Impressive!
Now, onto the highlights!
Highlights
API updates
- added
mouse.get_just_[pressed|released]in #2836 - added
display.[get|set]_window_positionin #2816 (F)Rectcan be initialized with no arguments in #2655
@whydoubt added the pitch argument for image.tobytes in #2602
@XFajk added Color.from_normalized constructor and Color.normalized property in #2693
@mzivic7 added draw.aacircle in #2800
@itzpr3d4t0r added transform.hsl in #2398
@ScriptLineStudios implemented a few convenience properties to Surface class: Surface.width, Surface.height and Surface.size in #2813
@bilhox added math.invlerp and math.remap in #2654
@ankith26 added mixer.get_driver in #2741
SIMD Performance enhancements
@Starbuck5 improved performance of SSE2 no_surf_alpha_opaque_dst blitter in #2601 and #2896. As a result of this PR, some kinds of blit operations should get a nice speed up (upto about 2.5x speedup on the testcases we used) on some hardware.
- Partially refactor SSE2 blitters with macros in #2656.
- Implemented AVX2 variant of
Surface.premul_alphain #2615
@MyreMylar added SIMD versions transform.invert in #2534. This gives a significant performance boost, and in the example we tested, we have observed a 12x-13x speedup!
More pygame.geometry goodies
The recently introduced experimental pygame.geometry submodule has gotten more features and polish in this release in the PRs: #2561, #2660, #2634, #2662, #2661, #2709, #2791, #2732, #2731
A big thanks to everyone who contributed to pygame-geometry so far: @Emc2356, @itzpr3d4t0r, @andrewhong04, @ScriptLineStudios, @avaxar, @gresm, @Matiiss, @newpaxonian, @maqa41, and @blankRiot96
As with all experimental submodules, do remember that things in here are subject to change, and there are a lot more things to be added! See the docs for the current progress.
Other general highlights
@oddbookworm added opengl support to the experimental pygame.Window interface in #2659
@ankith26 added Wayland and PipeWire support in the linux wheels distributed by us in #1997 and #2733
@ankith26 rewrote the build machinery in the meson buildsystem, while deprecating the old build machinery in the PRs #2557, #2803, #2853, #2856, #2875, #2854, #2831, #2779. As part of these changes, a few improvements are:
- On 32-bit ARMv7 systems (which includes many Raspberry Pi), NEON (SIMD) optimizations are now enabled by default. Therefore users of this should see a significant performance boost in many operations that can support SIMD.
- Enhanced support for Windows MinGW/MSYS2 systems.
- Reduced wheel size.
Deprecations and Removals
@Starbuck5 removed the pygame.threads submodule in #2762
@oddbookworm re-added and properly deprecated the blend argument of draw.aaline in #2743
Performance Enhancements
In addition to those mentioned above that are SIMD-related
- Optimized
(F)Rect.unionall(_ip)in #2784 - Optimized
(F)Rect.collideXXfamily of methods in #2786 - Replaced use of internal C-API functions with more efficient alternatives in #2819
Bug fixes
@oddbookworm added shim to fix broken midi module compilation in #2863
- fixed some init related issues in the experimental
windowAPI in #2860 - fixed segmentation fault during invalid
PixelArrayusage in #2742
General Enhancements
@Kn4ughty made error messages for using font align clearer in #2777
@pmp-p ensured we keep supporting pygame on the web in
- wasm: unify pygame-web/pyodide/static Freetype init in #2748
- fixed some
METH_NOARGSarg missing in #2888
- made
transformblur on a surface with either width or height equal to 0 not raiseValueErrorin #2852 - Cleanup codebase, docs and examples with American spelling in #2827
@Starbuck5 added a briefcase template to pygame-ce in #2862
@RainRat fixed typos across the repository in #2847
@robertpfeiffer relax Surface.convert conditions in #2839, now it is no longer a requirement to have called display.set_mode when this method has been invoked with a
@oddbookworm removed the xwayland warning and ensured that debug info now contains whether x11 is running or xwayland in #2823
Examples and Unit tests
@snowfruit added an example for retro scaling in #2785
@Matiiss removed undefined variable in aliens.py in #2769
@Starbuck5 fixed ftfont_test being run directly in #2763
- Add a delta of 2 ms to test_music_pause__unpause() in #2898
- Force window surface update after set_size, hopefully proper fix for that pesky frequent pypy test fail in #2865
- Minor changes to support pytest in #2675
Docs, Tutorials and typestubs
- fixed documentation mix up in attributes of object returned by
get_power_statein #2734 - added clarifications about ranges in
mixerdocs in #2738
@kritserv fixed an issue in pygame.display.get_caption docs in #2765
@yohanmoon added instructions for resolving setuptools issue in the docs readme in #2868
@Matiiss added more / (positional-only notation) to docs and stubs in #2691
@oddbookworm fixed indentation of surface attributes in #2900
@ankith26 did some minor docs/stubs improvements in invlerp/remap in #2902
@Starbuck5 added warning about 7.1 stereo on set_source_location in #2881
- removed duplicate images in tutorials in #2871
- including
print_debug_info()in issue template in #2879 - adjusted symbol color in light theme in #2891
Code quality and robustness
- Minor optimizations by using comprehensions in #2771
- PEP572 Use Python's assignment expression in #2782
- Remove lint logic from
setup.pyin #2796 setup.py: Properly add_sdl2_data_filestodata_filesin #2770
@Lumiobyte fix a comment typo ...
2.5.0.dev4
This is a pre-release for 2.5.0.
Highlights
- New functions for surfaces:
draw.aacircle()andtransform.hsl. Surfaces also have new attributesSurface.width,Surface.heightandSurface.size. - New window positioning API for pygame.display.
pygame.display.get/set_window_position() - New math functions
math.invlerpandmath.remap - OpenGL support for the experimental Window class
- See the highlights of 2.5.0.dev2 as well: https://github.com/pygame-community/pygame-ce/releases/tag/2.5.0.dev2
What's Changed
- 2.5.0.dev2 by @Starbuck5 in #2817
- Bump to 2.5.0.dev3 by @ankith26 in #2818
- Bump actions/checkout from 4.1.2 to 4.1.3 by @dependabot in #2814
- Minor optimizations by using comprehensions by @cclauss in #2771
- Remove use of Py_BuildValue("(ii)") by @itzpr3d4t0r in #2819
- Cleanup codebase, docs and examples with American spelling by @Damus666 in #2827
- Unify freetype init codepaths by @Starbuck5 in #2801
- xwayland warning removed; documented; and debug info now contains whether x11 is running or xwayland by @oddbookworm in #2823
- Remove lint logic from setup.py by @cclauss in #2796
- Track version only in pyproject.toml by @ankith26 in #2820
- Bump actions/checkout from 4.1.3 to 4.1.4 by @dependabot in #2833
- Try sleeping in window autoresize test by @MyreMylar in #2832
- Use HasColorKey instead of GetColorKey in pgSurface_Blit by @Starbuck5 in #2835
- Updated SDL to 2.30.3 by @oddbookworm in #2837
- Simple SDL3 patches for freetype, surface, mouse by @Starbuck5 in #2838
- Format Python code with ruff format instead of black by @cclauss in #2824
- Bump gh actions mac runners (gets us native M1 builds) by @ankith26 in #2494
- Add explicit check and error for system cursor by @ankith26 in #2843
- Always call HasColorKey before GetColorKey by @Starbuck5 in #2844
- Remove cython gen files, generate in meson build by @ankith26 in #2831
- Optimized ( Rect/Frect ) unionall()/unionall_ip() by @itzpr3d4t0r in #2784
- PixelArray raise error assigning sequence to pixel by @ankith26 in #2742
- Bump actions/checkout from 4.1.4 to 4.1.5 by @dependabot in #2851
- fix typos by @RainRat in #2847
- Fix pylint undefined usage error in sysfont by @ankith26 in #2858
- Add pygame.mouse.get_just_pressed/released() by @Damus666 in #2836
- Bump actions/checkout from 4.1.5 to 4.1.6 by @dependabot in #2861
- Using blur on a surface with either width or height equal to 0 won't raise a ValueError by @Damus666 in #2852
- Simplified SIMD fill algorithms by @itzpr3d4t0r in #2793
- Bundle only the required pygame icon files by @ankith26 in #2854
- add instruction for
ModuleNotFoundError: No Module named setuptoolsby @yohanmoon in #2868 - Deprecate
setup.py stubcheck, suggest and use replacementbuildconfig/stubs/stubcheck.pyby @ankith26 in #2856 - Run display autoinit on window API, fixes by @ankith26 in #2860
- Force window surface update after set_size, hopefully proper fix for that pesky frequent pypy test fail by @ankith26 in #2865
- Surface properties by @ScriptLineStudios in #2813
- relax convert conditions by @robertpfeiffer in #2839
- Added shim to fix portmidi break by @oddbookworm in #2863
- Alter CODEOWNERS file to switch required PR review team by @MyreMylar in #2873
- Deprecate
setup.py docs, make docs in meson build by @ankith26 in #2853 - Remove duplicate images in tutorials by @MyreMylar in #2871
- Add Circle
contains()by @itzpr3d4t0r in #2791 - Bump pypa/cibuildwheel from 2.17.0 to 2.18.1 by @dependabot in #2874
- Minor changes to support pytest by @ankith26 in #2675
- Window(opengl=True) will now create an OpenGL context by @oddbookworm in #2659
- Add pygame.display.get/set_window_position() by @Damus666 in #2816
- draw.aacircle() by @mzivic7 in #2800
- Update mixer docs by @lispspb in #2738
- Add a briefcase template to pygame-ce by @Starbuck5 in #2862
- including
print_debug_info()in issue template by @MyreMylar in #2879 - Add warning about 7.1 stereo on set_source_location by @Starbuck5 in #2881
- fix some METH_NOARGS arg missing by @pmp-p in #2888
- Fix
python -m docsdev time convenience command by @ankith26 in #2889 - Add
transform.hsl()by @itzpr3d4t0r in #2398 - Adjust symbol color in light theme by @MyreMylar in #2891
- Deprecate
setup.py sdist, suggest and use replacement pypa/build based command by @ankith26 in #2875 - Add missing check in SSE2 alpha blitter by @Starbuck5 in #2896
- Add a delta of 2 ms to test_music_pause__unpause() by @MyreMylar in #2898
invlerpandremapimplementation by @bilhox in #2654- fixed indentation of surface attributes by @oddbookworm in #2900
- Minor docs/stubs improvements in
invlerp/remapby @ankith26 in #2902
New Contributors
- @RainRat made their first contribution in #2847
- @yohanmoon made their first contribution in #2868
- @mzivic7 made their first contribution in #2800
Full Changelog: 2.5.0.dev2...2.5.0.dev4
2.5.0.dev2
This is an early pre-release for 2.5.0, we expect to also do a dev4 before the full release.
Highlights
- More performance optimizations: Faster blitters in some cases, faster
Surface.premul_alpha, fastertransform.invert, faster "multi-collide"Rectmethods (likeRect.collidelist). - Incremental progress in
pygame.geometry, more methods added to classes. - Wayland and PipeWire support on linux wheels we distribute.
- Switched to the Meson build system (keeps us modern). As part of this we expect SIMD support by default on 32-bit ARM systems (like some Raspberry Pi).
Other API updates
- Added
from_normalized()method toColor. pitchargument implemented inimage.tobytes().Rect()andFRect()now support initialization with no arguments.
What's Changed
- Start 2.5.0 by @Starbuck5 in #2631
- Bump docker/metadata-action from 5.3.0 to 5.4.0 by @dependabot in #2628
- Call
PyObject_GetBufferdirectly, fix pypy fail by @ankith26 in #2639 - Add Circle
move()/move_ip()by @itzpr3d4t0r in #2561 - Improve performance of SSE2 no_surf_alpha_opaque_dst blitter by @Starbuck5 in #2601
- Fix comment typo in rect_impl.h by @Lumiobyte in #2658
- Fix
Circlemove docs by @itzpr3d4t0r in #2660 - Remove shuffle masks in AVX fillers by @itzpr3d4t0r in #2642
- Matiiss update sdl ttf by @Matiiss in #2687
- Fix error reporting sdl 2.29.2+ by @Matiiss in #2689
- Bump actions/cache from 3.3.3 to 4.0.0 by @dependabot in #2683
- Added more
/(positional-only notation) by @Matiiss in #2691 - Reduced redundancy in
surface.fblitscode and handled generator exception by @Matiiss in #2679 - Rect() and FRect() initialization with no arguments by @Damus666 in #2655
- added from_normalized() and get and set normalized methods for pygame.Color by @XFajk in #2693
- Partially refactor SSE2 blitters with macros by @itzpr3d4t0r in #2656
- SDL 2.30.0 by @oddbookworm in #2705
- SDL 2.29.3 pre-release by @Matiiss in #2690
- Implement pitch argument for image.tobytes() by @whydoubt in #2602
- transform.scale: softstretch SDL2/SDL3 compat by @Starbuck5 in #2707
- Add missing geometry versionadded tags by @itzpr3d4t0r in #2709
- SDL2/SDL3 mutex support by @Starbuck5 in #2712
- Add Circle
as_rect()/as_frect()by @itzpr3d4t0r in #2634 - Add Circle
rotate()/rotate_ip()by @itzpr3d4t0r in #2662 - Add Circle
collideswith()by @itzpr3d4t0r in #2661 - Bump CircleCI-Public/trigger-circleci-pipeline-action from 1.1.0 to 1.2.0 by @dependabot in #2730
- Deleted a space in geometry docs by @itzpr3d4t0r in #2732
- Update system.rst by @lispspb in #2734
- Cleanup rwobject.c file object methods by @Starbuck5 in #2717
- Add wayland and kmsdrm support to manylinux wheels by @ankith26 in #1997
- Bump actions/cache from 4.0.0 to 4.0.1 by @dependabot in #2736
- Formatting updates using newest version of clang-format by @oddbookworm in #2744
- Bump docker/build-push-action from 5.1.0 to 5.2.0 by @dependabot in #2747
- Bump softprops/action-gh-release from 1 to 2 by @dependabot in #2746
- wasm: unify pygame-web/pyodide/static Freetype init by @pmp-p in #2748
- Reorganize geometry internals by @itzpr3d4t0r in #2731
- Undeprecate draw aaline blend by @oddbookworm in #2743
- AVX2 premul_alpha() by @itzpr3d4t0r in #2615
- Bump docker/login-action from 3.0.0 to 3.1.0 by @dependabot in #2755
- Bump docker/build-push-action from 5.2.0 to 5.3.0 by @dependabot in #2756
- Bump actions/checkout from 4.1.1 to 4.1.2 by @dependabot in #2754
- Add
mixer.get_driverby @ankith26 in #2741 - Add pipewire and libsamplerate+fftw3 by @ankith26 in #2733
- SDL 2.30.1 by @Starbuck5 in #2761
- Fix
pygame.display.get_caption()Docs in display.rst by @kritserv in #2765 - Bump actions/cache from 4.0.1 to 4.0.2 by @dependabot in #2767
- setup.py: Properly add _sdl2_data_files to data_files by @cclauss in #2770
- Update freetype download link because current one is broken (fixes failing circleci builds) by @ankith26 in #2774
- Remove undefined variable in aliens.py by @Matiiss in #2769
- Fix ftfont_test being run directly by @Starbuck5 in #2763
- Remove pygame.threads by @Starbuck5 in #2762
- Make error messages for using font.align clearer by @Kn4ughty in #2777
- Remove apt upgrade in CI by @ankith26 in #2778
python3 setup.py lintis deprecated: Let's lint withpre-commitby @cclauss in #2772- Add example for retro scaling by @snowfruit in #2785
- PEP572 Use Python's assignment expression by @cclauss in #2782
- Remove all .editorconfig duplicates, re-add in project root with updates by @ankith26 in #2788
- Add SIMD versions of the invert transform by @MyreMylar in #2534
- Remove docs non-public module stubs by @ankith26 in #2794
- Add meson build system [phase 1] by @ankith26 in #2557
- (Freetype) use calloc where possible by @Starbuck5 in #2802
- Bump robinraju/release-downloader from 1.9 to 1.10 by @dependabot in #2809
- SDL 2.30.2 by @Starbuck5 in #2806
- gitignore meson temp folder by @Starbuck5 in #2805
- Fix sdist to include meson stuff and minor updates by @ankith26 in #2803
- build-on-msys2.yml: Upgrade GitHub actions/checkout@v4 by @cclauss in #2812
- Use macros for (Bytes|Bits)PerPixel compat in SDL3 by @Starbuck5 in #2804
- Add armv6 and armv7 to multiarch CI and fix build issues by @ankith26 in #2779
- Optimized Rect multi-collision methods by @itzpr3d4t0r in #2786
New Contributors
- @Lumiobyte made their first contribution in #2658
- @XFajk made their first contribution in #2693
- @whydoubt made their first contribution in #2602
- @lispspb made their first contribution in #2734
- @kritserv made their first contribution in #2765
- @cclauss made their first contribution in #2770
- @Kn4ughty made their first contribution in #2777
- @snowfruit made their first contribution in #2785
Full Changelog: 2.4.1...2.5.0.dev2
2.4.1
🎩⚓📺💽🦾🎩⚓📺💽🦾🎩⚓📺💽🦾
pip uninstall pygame (if previously installed, to avoid package conflicts)
pip install pygame-ce --upgrade
🎩⚓📺💽🦾🎩⚓📺💽🦾🎩⚓📺💽🦾
Hello! This is a smaller release focused on bugfixes and small updates that we've developed on the course to 2.5.0. Rather than waiting for 2.5.0 to get these out into the world, we're doing this release to get bugfixes and small updates out into the world as soon as possible.
Special thanks to all our contributors and reviewers. Check out the changes!
Bugfixes
- @Starbuck5 Fixed a
2.3.0regression wheresysfontwouldn't provide real bold/italic fonts. (Thanks @RasmusTufvesson for reporting this). #2678 - @Starbuck5 Fixed a rare bug involving
libpng16-16.dll. #2674 - @Matiiss Fixed a segfault that could be triggered in
Surface.fblits. #2667 - @gresm Changed local docs viewing (
python -m pygame.docs) to launch a webserver on Linux, to get around permissions issues with some Linux environments. This can be accessed explicitly aspython -m pygame.docs.serve. #2676 - @pmp-p Fixed the webassembly build setup. #2653
- @Matiiss Fixed a memory leak in
Renderer.to_surface. #2665
Dependencies
- @Matiiss updated the build to
SDL_ttf 2.22.0(fixing an issue where"\n\n"would segfault multiline-rendering). #2688 - @ankith26 updated the build to
SDL_mixer 2.8.0(adding support forwavpackmusic/sound). #2703 - @Starbuck5 updated the build to
SDL_image 2.8.2(also fixing a rare bug involving libpng, mentioned earlier). #2674
Documentation and examples
- @Matiiss updated the bug report template. #2669
- @Matiiss improved the Window.flip error message when no surface is associated with the Window. #2633
- @Matiiss furthered deprecation of deprecated sprite groups. #2666
- @szabolcsdombi Fixed documentation of a Window parameter name (allow_highdpi -> allow_high_dpi). #2704
- @itzpr3d4t0r Added more links to the
special_flagspage. #2708 - @oddbookworm removed use of the
displaydepth parameter in examples. #2644
CI and tests
- @MyreMylar kept the CI running error-free by adjusting to a Python 3.12.2 change. #2715
- @ankith26 improved test resiliency and coverage. #2640, #2641, #2647
- @Starbuck5 fixed code formatting for latest black version. #2697
- @dependabot kept github actions up to date. #2612, #2613, #2663, #2671, #2701, #2700, #2702, #2710
New contributors
- @szabolcsdombi made their first contribution in #2704
Community showcase
Clear Code released a new pygame tutorial meant specifically for pygame-ce, check it out: https://www.youtube.com/watch?v=WViyCAa6yLI
Full Changelog: 2.4.0...2.4.1
2.4.0 - The happy new year release
☀️🏫🎊🏡🎆🏠🕛🏫🌈🎄🏩🏪🎇🏠🎉🏡🪅
pip uninstall pygame (if previously installed, to avoid package conflicts)
pip install pygame-ce --upgrade
☀️🏫🎊🏡🎆🏠🕛🏫🌈🎄🏩🏪🎇🏠🎉🏡🪅
Happy new year! And with that, hello and welcome to yet another release of pygame-ce!
In about 4 months since the last release, this release has seen 36 contributors make over 150 pull requests and 606 commits with 81,203 line additions and 88,026 line deletions across 375 files! Wow!
The 2.4.x series drops support for Python 3.7, which has reached EOL. If you are still using this, consider upgrading to a newer Python version!
Special thanks to all our new (and returning after a while) contributors. Check out the changes!
Notable changes
🟢 A new experimental geometry submodule with a Circle class
A new submodule is making its way to pygame, how exciting!
The pygame_geometry project started with the purpose of helping users integrate special colliders more easily, by providing implementations for things like polygons, circles, lines, and raycasting. This submodule is still in early development and is very much experimental, but is set to slowly make its way into pygame-ce over the next couple of releases.
A big thanks to everyone who contributed to pygame-geometry so far: @Emc2356, @itzpr3d4t0r, @andrewhong04, @ScriptLineStudios, @avaxar, @gresm, @Matiiss, @newpaxonian, @maqa41 and @blankRiot96
Parts of the submodule were ported bit by bit in the PRs #2268, #2562, #2560, #2614, #2540, #2536, #2519 and #2545
As with all experimental submodules, do remember that things in here are subject to change, and there are a lot more things to be added! See the docs for the current progress.
🚀 More SIMD-based performance enhancements
Did you know pygame-ce uses optimized assembly? We use single instruction, multiple data (SIMD) instructions to speed up operations with lots of parallel computations. In this release, we've used this to increase performance of several transform and Surface operations (with more to come in future releases). These optimizations target Intel/AMD and ARM architectures.
- @MyreMylar added an optimized backend for
transform.greyscalethrough #2421 and #2432. Expected speedup: 7x for ARM/old x86 computers. 11x for x86 computers that support AVX2. - @itzpr3d4t0r worked on speeding
Surface.fillwhen used with blend flags in #2566, #2382 and #2565. Expected speedup: Ridiculously faster, like 50-100x faster - @Starbuck5 added a new optimized backend for
transform.smoothscalein #2473 and #2544. Expected speedup: 15% faster on x86, 35% faster on ARM.
🪟 Improvements to the experimental Window class
A lot of nice work went behind the experimental Window class in this release. The Window class enables controlling multiple windows, and enables cool new windowing features over the pygame.display API. This is important because we hope the Window API exits experimental status soon! See the docs for the current progress.
- @Matiiss added the
[min|max]imum_sizeproperties in #2364 - @andrewhong04 fixed a segmentation fault when destroying window in #2530
- @yunline and @Starbuck5 created a new way to manage display surfaces with Window, adding the
get_surfaceandflipmethods and deprecatingfrom_display_module. #2350, #2575, #2577, #2624. - @yunline added some unit tests in #2230
- @yunline did a
grabAPI rework in #2379 and #2520 - @yunline added
mouse_rectin #2564 - @Starbuck5 worked to improve the documentation and remove extraneous/questionable bits of the API. #2617, #2618, #2627.
- @Starbuck5 made the Window class available as
pygame.Windowin #2604 and #2607.
API Changes
New API
key.get_just_[pressed|released](check key status without event loop) by @ScriptLineStudios in #1912[F]Rect.move_toby @Matiiss in #2165math.lerpandmath.smoothstepby @robertpfeiffer in #2254mixer.Channel.idby @oddbookworm in #2369image.load_sized_svg(scale as vector before loading into Surface) by @ankith26 in #2620mouse.[get|set]_relative_modeby @yunline in #2076system.get_power_state(battery info!) by @yunline in #2257display.message_box(for alerts) by @yunline in #2427
Updated API
- @yunline improved subpixel rendering (float coordinates) for
_sdl2.video.Textureand_sdl2.video.Rendererin #2039 - @yunline added support for
int/strcolor values in_sdl2.videomodule in #2400 - @gresm added and improved support for subclassing
mixer.Soundandmixer.Channelin #2590 - @oddbookworm added keyword argument support to
Rect.collidedict[all]in #2309 - @oddbookworm did some changes to allow
clamp_magnitudeing of the zero vector when possible in #2598 - @Starbuck5 updated our build to use SDL_image 2.8.0, which adds support for
QOIimages, in #2595.
Removals and deprecations
- @MightyJosip and @MyreMylar removed deprecated
blendargument fromdraw.aaline[s]in #2506 and #2550 respectively. - @MyreMylar removed the cythonised
_spritemodule in #2546. For now, a compat shim is provided, but its usage is deprecated. - @zoldalma999 deprecated the
depthargument ofdisplay.set_modein #2490 - @Starbuck5 deprecated the old backends of
transform.smoothscalein #2583
Performance enchancements
In addition to those mentioned above that are SIMD-related
- @Starbuck5 optimized vector argument parsing in #2443, so
Vectormethods that operate on anotherVector(likemove_towards) are now ~10% faster. - @itzpr3d4t0r made many
[F]Rectmethods implement the FASTCALL convention in #2043, #2563 and #2570. All the updated functions should now work faster! - @Matiiss and @itzpr3d4t0r optimized hadling of
[F]Rectarguments in #2041 and #2465.
Bug fixes
- @dr0id added checks to disable font API usage when the subsystem is not initialized in #2371
- @oddbookworm fixed an underflow issue in
tick_busy_loopin #2466 - @Damus666 did some WASM related fixes in
display,mathandcolorsubmodules in #2480 and #2482 (by adding required PyObject *_null parameter to functions marked with METH_NOARGS) - @pmp-p fixed a WASM loader incorrect target issue in #2586
- A team of new contributors: @igordsm, @JorasOliveira, @Antonioarf, @jpgianfaldoni, @caioesr, @cicerotcv and @nataliaqmc fixed a colorkey issue in
transform.rotozoomin #2491 - @yunline fix a segfault in the
updatemethod of_sdl2.video.Texturein #2553 - @ankith26 fix file-like
closenot called infreetype.Fontin #2606 - @Temmie3754 fixed incorrectly drawn edges in
draw.polygonin #2131 - @Temmie3754 fixed
gfxdraw.bezierfor when there are a lot of points in #2503 - @MyreMylar fixed a segfault when passing empty
StringIO/Fileobjects toFontin #2548 - @MyreMylar fixed RLE related issues in the
transformmodule in #2535 - @MyreMylar prevented an unnecessary warning from being raised when using
SysFontand the default font in #2543 - @Starbuck5 implemented a fix for windows webcams that don't report framerate crashing
pygame.camerain #2574 - @Starbuck5 fixed
image.get_sdl_image_versionincorrectly handling thelinkedargument in #2597
Test and examples related improvements
- @dr0id corrected a typo in
Recttest methods in #2359 - @Matiiss added a
mixertest skip because it randomly fails on Linux in #2438 - @zoldalma999 removed
testtests in #2475 - @JorasOliveira added tests to
Surface.get_(f)rectin #2492 - @gresm added more multiline examples in #2588
- @KentAugust added multiplayer joystick example in #2524
- @bilhox updated
videoexample to use the newpygame.display.message_boxin #2572 - @llindstrom updated the
go_over_thereexample for Python 3.12 in #2521 - @ankith26 made some freetype tests run on CI and fixed a minor test fail in #2370
- @ankith26 added tests for PBM, LBM and XCF images, and also updated some docs in #2608
Docs and typing related enhancements
- @itzpr3d4t0r improved
Surface.blit[s]docs in #2262 and #2263 - @zoldalma999 remove mentions of
overlaymodule in #2411 - @bilhox updated the French README in #2228
- @oddbookworm did some minor
spritedoc fixes in #2423 - @sweatshirtwearingviper corrected a
spritedocumentation error in #2442 - @Carbon32 added a Spanish translation of the README file in #2430
- @andrewhong04 corrected casing for macOS in #2538
- @Notenlish fixed caution visual bug for dark theme in #2418
- @JiffyRob added docs for
devicenameparameter inmixer.initin #2525 - @JorasOliveira clarified
event.custom_typedocs in #2527 - @ZeroWave022 added typing support for
sprite.collide_maskascollidedargument insprite.spritecollidein #2569 - @Starbuck5 removed some obsolete information in #2459 and #2499
- @Matiiss added positional-only parameter notation (
/in function signature) in #2457. This removes ambiguity from the docs about whether a function supports keyword arguments or not. - @Matiiss edited
scrapdocs to highlight non-deprecated functions in #2515 - @MyreMylar added some missing
versionaddedtags inmousein #2573 - @MyreMylar added a Premultiplied Alpha tutorial in #2531
- @MyreMylar de-emphasise passing a list of rectangles to update in #2532
- @MyreMylar removed 'responsive' tables from docs CSS in #2509
- @MyreMylar added docs for windows DPI awareness hint and docs/tests for
SDL_MOUSE_TOUCH_EVENTSin #2511, #2484. - @MyreMylar removed an unused param from
Surface.convert_alphadocs in #2486
Other general updates
- @Matiiss improved
Surface.fillerror message for invalid blend flags in #2434 - @ankith26 dropped Python 3.7 support in #2493
- @MyreMylar reduced usage of "dummy" in codebase to minimum in #2547
- @MyreMylar s...
2.4.0.dev4
Hello!
A final dev pre-release before the release of 2.4.0 - please test it!
🍾 🐍 🎉 🌈
The 2.4.x series drops support for Python 3.7, which has reached EOL. If you are using this python version, consider upgrading!
(Yes these notes are mostly autogenerated, if something is missing from here, please do reach out and let us know! The notes for the final release is going to be more handwritten and polished)
Notable new features
- 🟢 A new, experimental, Circle geometry class - like
Rect&FRect, but for Circles. - 🚀 More SIMD based performance enhancements - for the transform submodule and filling surfaces with special blend modes.
- 🪟 More improvements to the experimental Window class - should be a lot easier to use for standard pygame software rendering using (e.g. using
.blit()). - 🐛 And, as usual, lots of more enhancements and bug fixes. You can see the full list of changes below
And special thanks to all our new (and returning after a while) contributors.
What's Changed
- We no longer have any OBJ-c source, remove tag mention by @Starbuck5 in #2499
- Fix SDL_ConvertSurface(Format) for SDL3 by @Starbuck5 in #2500
- Optimized
Rect/FRectpgRect_FromObjectby @itzpr3d4t0r in #2041 - Fix incorrectly drawn edges with fillpoly by @Temmie3754 in #2131
- Port last SDL_CreateRGBSurface calls to SDL3-safe PG_CreateSurface by @Starbuck5 in #2501
- Fix grub-efi-amd64-signed installation failures on Ubuntu 20.04 CI builds by @MyreMylar in #2504
- Strip the leading SDL_ from the pixel format name by @MyreMylar in #2477
- Remove RDTSC key because detection removed in SDL3 by @Starbuck5 in #2502
- Implemented
(F)Rect.move_toby @Matiiss in #2165 - Remove spurious comment by @Julian-O in #2507
- Remove deprecated blend attribute from draw_aaline() & draw_aalines() by @MyreMylar in #2506
geometrymodule,Circlebase by @itzpr3d4t0r in #2268- Fix caution visual bug for dark theme by @Notenlish in #2418
- run clang-format on the vendored contents of SDL_gfx/ by @MyreMylar in #2508
- Add docs for windows DPI awareness hint by @MyreMylar in #2511
- Optimized
pgRect_FromObjectby @Matiiss in #2465 - Moving current scrap API docs to the top to avoid confusion by @Matiiss in #2515
display.message_box()by @yunline in #2427- Window grab API rework by @yunline in #2379
- Fix problems caused by #2379 by @yunline in #2520
- Update pygame.examples.go_over_there for Python 3.12 by @llindstrom in #2521
- Fix issue #2109: Added requested tests by @JorasOliveira in #2492
- Make mpg123, fluidsynth and sndfile not link directly to lower-level audio playback libs by @ankith26 in #2471
- Add docs for "devicename" parameter in 'pygame.mixer.init()' by @JiffyRob in #2525
- Remove the unused Surface param from convert alpha docs by @MyreMylar in #2486
- changed to wording in order to make it more clear by @JorasOliveira in #2527
- Fix issue #2446: rotozoom keeps the colorkey flag. by @igordsm in #2491
- Fix segmentation fault when destroying window by @andrewhong04 in #2530
- Correct casing for macOS by @andrewhong04 in #2538
- Update
pygame.versionto not be an autogen file by @ankith26 in #2537 - Add Circle
collidepoint()by @itzpr3d4t0r in #2536 - Added missing Circle attrs by @itzpr3d4t0r in #2519
- Add SSE2 intrinsics smoothscale backend by @Starbuck5 in #2473
- Fix Circle stubs by @itzpr3d4t0r in #2545
- Remove 'responsive' tables from docs CSS by @MyreMylar in #2509
- Don't double install mac deps, cleanups by @ankith26 in #2513
- Add Circle
collidecircle()by @itzpr3d4t0r in #2540 - Fix segfault when passing empty StringIO/File object to Font by @MyreMylar in #2548
- Add the default font to sysfonts by @MyreMylar in #2543
- Remove and deprecate cythonised sprite module by @MyreMylar in #2546
- De-emphasise passing a list of rectangles to update by @MyreMylar in #2532
- Fix RLE usage in the transform module by @MyreMylar in #2535
- Remove blend from draw.aaline by @MightyJosip in #2550
- Fix segfault in Texture.update() by @yunline in #2553
- Compile SSE2 smoothscale intrinsics on NEON by @Starbuck5 in #2544
- Fix setDaemon() deprecation error by @MyreMylar in #2559
- AVX Surface.fill() setup, AVX BLEND_ADD by @itzpr3d4t0r in #2382
- Add Premultiplied Alpha tutorial by @MyreMylar in #2531
- Add SIMD versions of the greyscale transform (attempt #2) by @MyreMylar in #2432
- Rect.clipline() optimization by @itzpr3d4t0r in #2563
- Add
Window.mouse_rectby @yunline in #2564 - Fix compiler warnings in event, camera and display by @ankith26 in #2567
- Rect.contains() optimization by @itzpr3d4t0r in #2570
- Support collide_mask as collided argument in spritecollide by @ZeroWave022 in #2569
- Add
get_surface()for Window class by @yunline in #2350 mouse.get/set_relative_mode()instead of_sdl2.Window.relative_mouseby @yunline in #2076- Reduce amount of usage of "dummy" in codebase to minimum by @MyreMylar in #2547
- Updated
video.pyexample so it usespygame.display.message_boxby @bilhox in #2572 - Fix for windows cameras without framerate by @Starbuck5 in #2574
- Window update->flip, doc changes by @Starbuck5 in #2577
- Add versionadded tag set_relative_mode by @MyreMylar in #2573
- Adding positional-only parameter notation (
/in function signature) by @Matiiss in #2457 - Raise minimum SDL version to 2.0.10 by @Starbuck5 in #2584
- C loader targets a python alias by @pmp-p in #2586
- Fix gfxdraw.bezier for a lot of points by @Temmie3754 in #2503
- Smoothscale: deprecate old backends, update docs by @Starbuck5 in #2583
- Install meson+ninja on buildscripts, bump glib by @ankith26 in #2549
- Update SDL 2.26.5 -> 2.28.5 by @Starbuck5 in #2580
- Add lerp & smoothstep to math module by @robertpfeiffer in #2254
- Improved
blit()docs by @itzpr3d4t0r in #2262 - Make Texture and Renderer compatible with float input (floor() based pixel rasterisation/conversion changing to round()) by @yunline in #2039
- Compile windows _camera on MSVC only by @ankith26 in #2585
- Added missing AVX2 fillers by @itzpr3d4t0r in #2565
- Add multiplayer joystick example by @KentAugust in #2524
- Subclassing Sounds + Channels. by @gresm in https://github.com/pygame-communi...
2.4.0.dev2
A pre-release for testing before the full release, thanks to everyone! 🥳
The 2.4.x series drops support for Python 3.7, which has reached EOL. If you are using this python version, consider upgrading!
(Yes these notes are mostly autogenerated, if something is missing from here, please do reach out and let us know! The notes for the final release is going to be more handwritten and polished)
What's Changed
- Start 2.4.0 by @ankith26 in #2362
- Minor improvements to
Window.sizeandWindow.positionC code by @Matiiss in #2367 - correct typo in rect test methods by @dr0id in #2359
- remove SDL_VERSION_ATLEAST(2, 0, 5) by @yunline in #2372
- Remove sdlmain_osx.m by @Starbuck5 in #2357
- Try getting freetype tests running on CI, fix minor test fail issues by @ankith26 in #2370
- Improved
blits()docs by @itzpr3d4t0r in #2263 - Bump pypa/cibuildwheel from 2.14.1 to 2.15.0 by @dependabot in #2396
- Bump uraimo/run-on-arch-action from 2.5.0 to 2.5.1 by @dependabot in #2397
- Cap the sphinx version under 7.2.0 by @oddbookworm in #2407
- Add a
mixer.Channel.idgetter by @oddbookworm in #2369 - Remove mentions of overlay module by @zoldalma999 in #2411
- added keyword use_values to collidedict and collidedictall by @oddbookworm in #2309
- Added
Window.(min|max)imum_sizeby @Matiiss in #2364 - Support int and str input for color values in video module by @yunline in #2400
- Update README.fr.rst (fix typos,
pygame=>pygame-ce...) by @bilhox in #2228 - minor sprite doc fixes by @oddbookworm in #2423
- Bump actions/checkout from 3.5.3 to 3.6.0 by @dependabot in #2424
- Add unitest for
Windowby @yunline in #2230 - Add SIMD functionality to the transform submodule (Attempt 2) by @MyreMylar in #2421
- Patches so constants.c compiles in SDL3 by @Starbuck5 in #2437
- Use format instead of masks (4) by @Starbuck5 in #2439
- Use format instead of masks (5) by @Starbuck5 in #2440
- Improved
Surface.fillerror message for invalid blend flags by @Matiiss in #2434 - Use RAISE when appropriate by @Starbuck5 in #2444
- Bump actions/checkout from 3.6.0 to 4.0.0 by @dependabot in #2449
- Corrects sprite documentation error by @sweatshirtwearingviper in #2442
- Bump actions/cache from 3.3.1 to 3.3.2 by @dependabot in #2448
- Bump docker/build-push-action from 4.1.1 to 4.2.1 by @dependabot in #2447
- Optimize vector parsing in math.c by @Starbuck5 in #2443
- get_just_pressed and get_just_released by @ScriptLineStudios in #1912
- Add
get_power_state()by @yunline in #2257 - Bump docker/metadata-action from 4.6.0 to 5.0.0 by @dependabot in #2454
- Bump docker/build-push-action from 4.2.1 to 5.0.0 by @dependabot in #2455
- Bump docker/login-action from 2.2.0 to 3.0.0 by @dependabot in #2456
- Fix linter failing due to new clang-format version by @Matiiss in #2461
- Spanish Translation by @Carbon32 in #2430
- Remove conan buildconfig by @Starbuck5 in #2460
- Remove experimental notice on system module by @Starbuck5 in #2459
- Made many
Rect/FRectmethods fastcall by @itzpr3d4t0r in #2043 - Bump actions/checkout from 4.0.0 to 4.1.0 by @dependabot in #2469
- Fix uint64 underflow in
tick_busy_loopby @oddbookworm in #2466 - Bump pypa/cibuildwheel from 2.15.0 to 2.16.0 by @dependabot in #2468
- Raise minimum deps of SDL and friends by @Starbuck5 in #2464
- Bump versions of many manylinux deps by @ankith26 in #2470
- Skipping mixer test because it randomly fails on Linux by @Matiiss in #2438
- Up cibuildwheel by @Starbuck5 in #2474
- Remove test tests by @zoldalma999 in #2475
- WASM: add required PyObject *_null parameter to functions marked with METH_NOARGS in display.c by @Damus666 in #2480
- Remove old CI files by @zoldalma999 in #2479
- WASM: add required PyObject *_null parameter to remaining functions marked with METH_NOARGS in math.c and color.c by @Damus666 in #2482
- Add PG_CreateSurface(From) for SDL2/3 compat by @Starbuck5 in #2481
- Bump pypa/cibuildwheel from 2.16.0 to 2.16.1 by @dependabot in #2489
- Bump TheMrMilchmann/setup-msvc-dev from 2 to 3 by @dependabot in #2488
- Remove redundant check in pg_ResizeEventWatch by @Starbuck5 in #2487
- Drop python 3.7 by @ankith26 in #2493
- Deprecate set_mode depth argument by @zoldalma999 in #2490
- Enhancement/font/check initialization by @dr0id in #2371
- Port SDL_ShowCursor to SDL3 by @Starbuck5 in #2483
- Use SDL_MOUSE_TOUCH_EVENTS in touch test and docs by @MyreMylar in #2484
New Contributors
- @sweatshirtwearingviper made their first contribution in #2442
- @Carbon32 made their first contribution in #2430
- @Damus666 made their first contribution in #2480
Full Changelog: 2.3.1.dev4...2.4.0.dev2
2.3.2
☀️🌊🏖️😎🏄🐚🏝️🍹☀️🌊🏖️
pip uninstall pygame (if previously installed, to avoid package conflicts)
pip install pygame-ce --upgrade
☀️🌊🏖️😎🏄🐚🏝️🍹☀️🌊🏖️
Hello and welcome to a shiny new bugfix release of pygame-ce! While we are working towards a 2.4.0 release, we thought it'd be nice to have a quick 2.3.2 with a couple of fixes and enhancements.
Bug fixes
- New contributor @cyuria fixed a long standing and infamous bug in
pygame.draw.arcin #2344 where arcs with widths would be incorrectly rendered with holes in between. music.get_poscould segfault due to an internal zero division error, this has now been fixed by @oddbookworm in #2426- @ankith26 fixed a couple of overflow related bugs in mapped int color handling and improved the internal C API for it in #2349
- @oddbookworm fixed a case of segfaulting in
PixelArrayin #2276 - @Matiiss fixed
Sound.__init__incorrectly raisingTypeErrorinstead ofFileNotFoundErrorfor some inputs in #2381 - @dr0id fixed
copy.deepcopysupport forSurfacein #2394 - @pmp-p fixed webassembly support of
pygame.newbufferandpygame.pixelarrayin #2419 and #2413
Codebase fixes and robustness improvements
- @pmp-p fixed compilation error when
lseek64is absent (like webassembly 32 bit mode) in #2410 - @yunline replaced usage of
PYGAMEAPI_DISPLAY_INTERNALwith the intendedBUILD_STATICinwindow.cin #2412 - @dr0id added a lint warning ignore in
locals.pyto make the linter pass in #2393 - @yunline bumped cython to 3.0.0 in #2395
- @ankith26 bumped cibuildwheel in #2402 and as a result, this release now has wheels shipping for the python 3.12 release candidate, ready for the full release of Python 3.12 at the start of October!
Deprecation warnings
- @bilhox fixed joystick doc and properly deprecated
pygame.Joystick.init/get_idin #2363 - @ankith26 deprecated passing out of range sequence lengths to colorspace setters in #2392
Unit-tests, typing and examples related improvements
- @dr0id fixed
ftfontto pass same tests asfontin #2180 - @Matiiss removed an unneeded
mixertest skip in #2384 - @devdanzin fixed the rect typing with
Union[FRect, Rect]inspritein #2380 - @dr0id fixed
propertyusage issues infontstubs in #2358 - @ddorn fixed stubs for
Color.__getitem__in #2391 - @yunline fixed a couple of typing issues in
Windowand also did some cleanups in #2366 - @ankith26 fixed minor issues in joystick and moveit examples in #2387
- @robertpfeiffer improved glcube example and display docs in #2038
New Contributors
Thanks all
Sincere thanks to everyone helping out! In addition to PR makers, as always we are thankful to the community at large and this includes issue reporters, PR reviewers, tutorial makers, admins/mods/helpers on various online forums, people who make helper libraries, and last but certainly not least, all our users including you: the person reading these notes!
If we've made a mistake in these notes, please get in touch with us to get a correction made.
Cya, have fun using pygame-ce!
Full Changelog: 2.3.1...2.3.2
2.3.1
☀️🌊🏖️😎🏄🐚🏝️🍹☀️🌊🏖️
pip uninstall pygame (if previously installed, to avoid package conflicts)
pip install pygame-ce --upgrade
☀️🌊🏖️😎🏄🐚🏝️🍹☀️🌊🏖️
Heya, welcome to another release of pygame-ce!! It's been about 2 months since the last release and there have been a lot of nice additions, enhancements and bugfixes. We hope this release treats you well until we get the next release out ;)
This release has several changes to the wheels (binaries) we distribute. We've raised our minimum MacOS version from 10.9 to 10.11, following our dependencies. Unlike previous releases, this release has wheels for aarch64 Linux, Python 3.12 beta releases, and Pypy 3.10. We've dropped wheels for Pypy3.7 due to lack of use. Thanks to @ankith26 and @Starbuck5 for these updates, in #2171, #2352, #2325, #2315, and #2335.
See what we've been working on!
New additions
- @andrewhong04 added the
point_sizeattribute tofont.Fontin #1961. This allows fonts to be resized after being loaded. - @dr0id added
style_nameproperty tofont.Font/freetype.Fontin #2175 - @yunline added two
pygame.systemfunctionsget_cpu_instruction_setsandget_total_ramin #2308. These can be used to find out more about the system at runtime. - @dr0id added new
Rect/FRectmethods -scale_by/scale_by_ipand @jonotassia updated these to accept keyword-arguments. This addition was ported topygame-ceby @Starbuck5 in #2277 - New contributor @AlexanderGroeger added functions to manage soundfonts (
get_soundfontandset_soundfont) tomixerin #2274. This is relevant for midi playback throughpygame.mixer. - @Matiiss added a few convenience classmethods -
Color.from_<color_space>(i.e.Color.from_hsla) in #2177 - @yunline added
always_on_topattribute to_sdl2.video.Windowin #2307. Now you can use this to force yourWindows to always be highlighted at the top.
Potential breaking changes
- @yunline fixed
transform.gaussian_blurto handle radius like other standard implementations in #2246 (as an effect of this change, the output will be visually different to the older versions) - @that1guy232 removed the obsolete and deprecated vidcapture camera backend in #2207
Bug fixes
time.set_timerhad a long standing bug in which one could get a segfault in some cases (like the timer duration being too low). @ankith26 fixed this in #2284 along with other enhancements to code quality and performance. As a resultset_timeris now much more accurate with the timing!- @ankith26 fixed
FRectslice subscripting to correctly returnfloats in #2313 - @yunline added support for
SDL_WINDOWIDback, fixing a long standing compatibility issue with pygame 1 in #1953. However, this fix is not perfect, and there are some known issues with it (like certain events not working). We heavily recommend not using this. pygame-ce2.3.0 introduced a regression whereSysFontcould no longer handleNone. @Sjmarf fixed this in #2271- Another
pygame-ce2.3.0 regression was in_sdl2.video.Window, this class was no longer usable when pyinstaller was used. @Starbuck5 fixed this by correctly marking a hiddenimport in the pyinstaller hook in #2287 - @yunline fixed potential segfaults in
fontin #2255 - @zoldalma999 fixed a segfault related to
_sdl2.Window.from_display_modulethat happened ondeallocin #2341
Usage and performance enhancements
- @ScriptLineStudios added support for
Vector2objects inget_at/set_atmethods ofSurfacein #2111 - @itzpr3d4t0r improved the performance of
Surface.set_atby changing it to useFASTCALLin #2330 - @yunline added
__repr__to the_sdl2.video.Windowclass in #2345
Docs and examples improvements
- New contributor @devdanzin fixed the positioning of the theme icon of the docs when the page shrinks in #2321
- New contributors @Martinus2004 and @JiffyRob updated existing example programs to use
pygame-cemultiline text rendering. #2219, #2235 - New contributor @IrvKalb corrected the documentation of the
get_pref_pathfunction in thesystemmodule to use theorgargument in the example in #2326 - @Mega-JC made "note" blocks in the documentation look more distinct. #2163
- @VantaTree fixed a typo in the event docs in #2290
- @oddbookworm removed
pygame.cdromreferences from documentation and code in #2327 - @bilhox updated joystick docs to reflect changed mappings of the joycon controllers in #2258
- @rethanon added named colors to docs of the
drawandSurfacemodules in #2346 - @Starbuck5 removed
SDLversion information where it mentions versions that are below our supportedSDLversion in #2334
Unittests and typing related improvements
- @oddbookworm improved
Rect/FRecttyping to be more generic and accurate in #2297 - @ankith26 made some types more lax by using a custom
SequenceABC and also fixed some other related issues in #2292 - @ankith26 made freetype tests run again on CI and fixed minor test failures in #2383 and #2370
Code robustness and cleanups
- @zoldalma999 renamed
PyClockObjecttopgClockObject, remove rendered field, small cleanups intime.cin #2351 - @yunline fixed warnings in
video.cin #2343 and removed the oldWindowcython sources in #2294 - @Starbuck5 did a lot of code cleanups and maintenance work. #2272, #2318, #2278, #2305, #2301, #2328, #2316, #2347, #2356
New Contributors
- @Martinus2004 made their first contribution in #2219
- @devdanzin made their first contribution in #2321
- @JiffyRob made their first contribution in #2235
- @IrvKalb made their first contribution in #2326
- @AlexanderGroeger made their first contribution in #2274
Thanks all
Sincere thanks to everyone helping out! In addition to PR makers, as always we are thankful to the community at large and this includes issue reporters, PR reviewers, tutorial makers, admins/mods/helpers on various online forums, people who make helper libraries, and last but certainly not least, all our users including you: the person reading these notes!
If we've made a mistake in these notes, please get in touch with us to get a correction made.
Cya, have fun using pygame-ce!
Full Changelog: 2.3.0...2.3.1