Pygame-ce

Latest version: v2.5.0

Safety actively analyzes 638388 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

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

Damus666
- added `mouse.get_just_[pressed|released]` in https://github.com/pygame-community/pygame-ce/pull/2836
- added `display.[get|set]_window_position` in https://github.com/pygame-community/pygame-ce/pull/2816
- `(F)Rect` can be initialized with no arguments in https://github.com/pygame-community/pygame-ce/pull/2655

whydoubt added the `pitch` argument for `image.tobytes` in https://github.com/pygame-community/pygame-ce/pull/2602

XFajk added `Color.from_normalized` constructor and `Color.normalized` property in https://github.com/pygame-community/pygame-ce/pull/2693

mzivic7 added `draw.aacircle` in https://github.com/pygame-community/pygame-ce/pull/2800

itzpr3d4t0r added `transform.hsl` in https://github.com/pygame-community/pygame-ce/pull/2398

ScriptLineStudios implemented a few convenience properties to `Surface` class: `Surface.width`, `Surface.height` and `Surface.size` in https://github.com/pygame-community/pygame-ce/pull/2813

bilhox added `math.invlerp` and `math.remap` in https://github.com/pygame-community/pygame-ce/pull/2654

ankith26 added `mixer.get_driver` in https://github.com/pygame-community/pygame-ce/pull/2741

SIMD Performance enhancements

Starbuck5 improved performance of SSE2 `no_surf_alpha_opaque_dst` blitter in https://github.com/pygame-community/pygame-ce/pull/2601 and https://github.com/pygame-community/pygame-ce/pull/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.

itzpr3d4t0r
- Partially refactor SSE2 blitters with macros in https://github.com/pygame-community/pygame-ce/pull/2656.
- Implemented AVX2 variant of `Surface.premul_alpha` in https://github.com/pygame-community/pygame-ce/pull/2615

MyreMylar added SIMD versions `transform.invert` in https://github.com/pygame-community/pygame-ce/pull/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: https://github.com/pygame-community/pygame-ce/pull/2561, https://github.com/pygame-community/pygame-ce/pull/2660, https://github.com/pygame-community/pygame-ce/pull/2634, https://github.com/pygame-community/pygame-ce/pull/2662, https://github.com/pygame-community/pygame-ce/pull/2661, https://github.com/pygame-community/pygame-ce/pull/2709, https://github.com/pygame-community/pygame-ce/pull/2791, https://github.com/pygame-community/pygame-ce/pull/2732, https://github.com/pygame-community/pygame-ce/pull/2731

A big thanks to everyone who contributed to pygame-geometry so far: Emc2356, itzpr3d4t0r, novialriptide, 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 https://github.com/pygame-community/pygame-ce/pull/2659

ankith26 added Wayland and PipeWire support in the linux wheels distributed by us in https://github.com/pygame-community/pygame-ce/pull/1997 and https://github.com/pygame-community/pygame-ce/pull/2733

ankith26 rewrote the build machinery in the `meson` buildsystem, while deprecating the old build machinery in the PRs https://github.com/pygame-community/pygame-ce/pull/2557, https://github.com/pygame-community/pygame-ce/pull/2803, https://github.com/pygame-community/pygame-ce/pull/2853, https://github.com/pygame-community/pygame-ce/pull/2856, https://github.com/pygame-community/pygame-ce/pull/2875, https://github.com/pygame-community/pygame-ce/pull/2854, https://github.com/pygame-community/pygame-ce/pull/2831, https://github.com/pygame-community/pygame-ce/pull/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 https://github.com/pygame-community/pygame-ce/pull/2762

oddbookworm re-added and properly deprecated the `blend` argument of `draw.aaline` in https://github.com/pygame-community/pygame-ce/pull/2743


Performance Enhancements

*In addition to those mentioned above that are SIMD-related*

itzpr3d4t0r
- Optimized `(F)Rect.unionall(_ip)` in https://github.com/pygame-community/pygame-ce/pull/2784
- Optimized `(F)Rect.collideXX` family of methods in https://github.com/pygame-community/pygame-ce/pull/2786
- Replaced use of internal C-API functions with more efficient alternatives in https://github.com/pygame-community/pygame-ce/pull/2819

Bug fixes

oddbookworm added shim to fix broken `midi` module compilation in https://github.com/pygame-community/pygame-ce/pull/2863

ankith26
- fixed some init related issues in the experimental `window` API in https://github.com/pygame-community/pygame-ce/pull/2860
- fixed segmentation fault during invalid `PixelArray` usage in in https://github.com/pygame-community/pygame-ce/pull/2742


General Enhancements

Kn4ughty made error messages for using `font` align clearer in https://github.com/pygame-community/pygame-ce/pull/2777

pmp-p ensured we keep supporting pygame on the web in
- wasm: unify pygame-web/pyodide/static Freetype init in https://github.com/pygame-community/pygame-ce/pull/2748
- fixed some `METH_NOARGS` arg missing in https://github.com/pygame-community/pygame-ce/pull/2888

Damus666
- made `transform` blur on a surface with either width or height equal to 0 not raise `ValueError` in https://github.com/pygame-community/pygame-ce/pull/2852
- Cleanup codebase, docs and examples with American spelling in https://github.com/pygame-community/pygame-ce/pull/2827

Starbuck5 added a `briefcase` template to pygame-ce in https://github.com/pygame-community/pygame-ce/pull/2862

RainRat fixed typos across the repository in https://github.com/pygame-community/pygame-ce/pull/2847

robertpfeiffer relax `Surface.convert` conditions in https://github.com/pygame-community/pygame-ce/pull/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 https://github.com/pygame-community/pygame-ce/pull/2823

Examples and Unit tests

snowfruit added an example for retro scaling in https://github.com/pygame-community/pygame-ce/pull/2785

Matiiss removed undefined variable in `aliens.py` in https://github.com/pygame-community/pygame-ce/pull/2769

Starbuck5 fixed `ftfont_test` being run directly in https://github.com/pygame-community/pygame-ce/pull/2763

MyreMylar
- Add a delta of 2 ms to test_music_pause__unpause() in https://github.com/pygame-community/pygame-ce/pull/2898

ankith26
- Force window surface update after set_size, hopefully proper fix for that pesky frequent pypy test fail in https://github.com/pygame-community/pygame-ce/pull/2865
- Minor changes to support pytest in https://github.com/pygame-community/pygame-ce/pull/2675


Docs, Tutorials and typestubs

lispspb
- fixed documentation mix up in attributes of object returned by `get_power_state` in https://github.com/pygame-community/pygame-ce/pull/2734
- added clarifications about ranges in `mixer` docs in https://github.com/pygame-community/pygame-ce/pull/2738

kritserv fixed an issue in `pygame.display.get_caption` docs in https://github.com/pygame-community/pygame-ce/pull/2765

yohanmoon added instructions for resolving setuptools issue in the docs readme in https://github.com/pygame-community/pygame-ce/pull/2868

Matiiss added more `/` (positional-only notation) to docs and stubs in https://github.com/pygame-community/pygame-ce/pull/2691

oddbookworm fixed indentation of surface attributes in https://github.com/pygame-community/pygame-ce/pull/2900

ankith26 did some minor docs/stubs improvements in `invlerp`/`remap` in https://github.com/pygame-community/pygame-ce/pull/2902

Starbuck5 added warning about 7.1 stereo on `set_source_location` in https://github.com/pygame-community/pygame-ce/pull/2881

MyreMylar
- removed duplicate images in tutorials in https://github.com/pygame-community/pygame-ce/pull/2871
- including `print_debug_info()` in issue template in https://github.com/pygame-community/pygame-ce/pull/2879
- adjusted symbol color in light theme in https://github.com/pygame-community/pygame-ce/pull/2891

Code quality and robustness

cclauss
- Minor optimizations by using comprehensions in https://github.com/pygame-community/pygame-ce/pull/2771
- PEP572 Use Python's assignment expression in https://github.com/pygame-community/pygame-ce/pull/2782
- Remove lint logic from `setup.py` in https://github.com/pygame-community/pygame-ce/pull/2796
- `setup.py`: Properly add `_sdl2_data_files` to `data_files` in https://github.com/pygame-community/pygame-ce/pull/2770

Lumiobyte fix a comment typo in `rect_impl.h` in https://github.com/pygame-community/pygame-ce/pull/2658

Matiiss reduced redundancy in `surface.fblits` code and handled generator exception in https://github.com/pygame-community/pygame-ce/pull/2679

oddbookworm applied formatting updates using newest version of clang-format in https://github.com/pygame-community/pygame-ce/pull/2744

itzpr3d4t0r
- removed shuffle masks in AVX fillers in https://github.com/pygame-community/pygame-ce/pull/2642
- simplified SIMD fill algorithms in https://github.com/pygame-community/pygame-ce/pull/2793

Starbuck5
- Unify freetype init codepaths in https://github.com/pygame-community/pygame-ce/pull/2801
- (Freetype) use calloc where possible in https://github.com/pygame-community/pygame-ce/pull/2802
- Cleanup `rwobject.c` file object methods in https://github.com/pygame-community/pygame-ce/pull/2717
- gitignore meson temp folder in https://github.com/pygame-community/pygame-ce/pull/2805
- Use `HasColorKey` before `GetColorKey` in https://github.com/pygame-community/pygame-ce/pull/2835 and https://github.com/pygame-community/pygame-ce/pull/2844

ankith26
- Remove docs non-public module stubs in https://github.com/pygame-community/pygame-ce/pull/2794
- Fix pylint undefined usage error in sysfont in https://github.com/pygame-community/pygame-ce/pull/2858
- Add explicit check and error for system cursor in https://github.com/pygame-community/pygame-ce/pull/2843
- Track version only in pyproject.toml in https://github.com/pygame-community/pygame-ce/pull/2820
- Remove all `.editorconfig` duplicates, re-add in project root with updates in https://github.com/pygame-community/pygame-ce/pull/2788

Dependencies, DevOps and CI

cclauss helped us improve our DevOps and CI
- `python3 setup.py lint` is deprecated: Let's lint with `pre-commit` in https://github.com/pygame-community/pygame-ce/pull/2772
- `build-on-msys2.yml`: Upgrade GitHub `actions/checkoutv4` in https://github.com/pygame-community/pygame-ce/pull/2812
- Format Python code with ruff format instead of black in https://github.com/pygame-community/pygame-ce/pull/2824

Starbuck5 continued working on changes that make our code ready for SDL3
- `transform.scale`: softstretch SDL2/SDL3 compat in https://github.com/pygame-community/pygame-ce/pull/2707
- SDL2/SDL3 mutex support in https://github.com/pygame-community/pygame-ce/pull/2712
- Simple SDL3 patches for `freetype`, `surface` and `mouse` in https://github.com/pygame-community/pygame-ce/pull/2838
- Use macros for `[Bytes|Bits]PerPixel` compat in SDL3 in https://github.com/pygame-community/pygame-ce/pull/2804

ankith26
- bumped gh actions mac runners (gets us native M1 builds) in https://github.com/pygame-community/pygame-ce/pull/2494
- kept the CI running by fixing a few dependency update related issues in https://github.com/pygame-community/pygame-ce/pull/2774, https://github.com/pygame-community/pygame-ce/pull/2778 and https://github.com/pygame-community/pygame-ce/pull/2916
- fixed `python -m docs` dev time convenience command in https://github.com/pygame-community/pygame-ce/pull/2889

MyreMylar altered our CODEOWNERS file to switch required PR review team in https://github.com/pygame-community/pygame-ce/pull/2873

Matiiss, oddbookworm, and Starbuck5 kept our `SDL` dependency updated in https://github.com/pygame-community/pygame-ce/pull/2689, https://github.com/pygame-community/pygame-ce/pull/2690, https://github.com/pygame-community/pygame-ce/pull/2705, https://github.com/pygame-community/pygame-ce/pull/2761, https://github.com/pygame-community/pygame-ce/pull/2806, https://github.com/pygame-community/pygame-ce/pull/2837

dependabot kept all our CI dependencies updated in https://github.com/pygame-community/pygame-ce/pull/2814, https://github.com/pygame-community/pygame-ce/pull/2809, https://github.com/pygame-community/pygame-ce/pull/2767, https://github.com/pygame-community/pygame-ce/pull/2755, https://github.com/pygame-community/pygame-ce/pull/2756, https://github.com/pygame-community/pygame-ce/pull/2754, https://github.com/pygame-community/pygame-ce/pull/2747, https://github.com/pygame-community/pygame-ce/pull/2746, https://github.com/pygame-community/pygame-ce/pull/2736, https://github.com/pygame-community/pygame-ce/pull/2730, https://github.com/pygame-community/pygame-ce/pull/2683, https://github.com/pygame-community/pygame-ce/pull/2628, https://github.com/pygame-community/pygame-ce/pull/2874, https://github.com/pygame-community/pygame-ce/pull/2861, https://github.com/pygame-community/pygame-ce/pull/2851, https://github.com/pygame-community/pygame-ce/pull/2833

Starbuck5 and ankith26 kept them releases coming in at https://github.com/pygame-community/pygame-ce/pull/2631, https://github.com/pygame-community/pygame-ce/pull/2817, https://github.com/pygame-community/pygame-ce/pull/2818, https://github.com/pygame-community/pygame-ce/pull/2903, https://github.com/pygame-community/pygame-ce/pull/2904, https://github.com/pygame-community/pygame-ce/pull/2921

New Contributors

This release we have had 11 new contributors, special thanks to everyone getting started!

* 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
* RainRat made their first contribution in 2847
* yohanmoon made their first contribution in 2868
* mzivic7 made their first contribution in 2800

In addition, we're also inviting 2 new members to the contributor team: Damus666 and gresm! Members of the team have more permissions and more responsibilities, as regular reviewers: https://github.com/pygame-community/pygame-ce/wiki/Becoming-a-Reviewer#becoming-a-regular-reviewer

Thanks all

A sincere thank you to everyone involved! This involves not only the PR makers but also to the broader community which includes issue reporters, PR reviewers, tutorial creators, admins/mods/helpers across various online platforms, individuals developing helper libraries, and most importantly, all our users – including you, the reader of these notes!

Apologies in advance if we've made an error in these notes, and please get in touch with us to get a correction made.

Until next time, take care, and enjoy pygaming!

**Full Changelog**: https://github.com/pygame-community/pygame-ce/compare/2.4.1...2.5.0

2.5.0.dev4

This is a pre-release for 2.5.0.

Highlights

- New functions for surfaces: `draw.aacircle()` and `transform.hsl`. Surfaces also have new attributes `Surface.width`, `Surface.height` and `Surface.size`.
- New window positioning API for pygame.display. `pygame.display.get/set_window_position()`
- New math functions `math.invlerp` and `math.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 https://github.com/pygame-community/pygame-ce/pull/2817
* Bump to 2.5.0.dev3 by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2818
* Bump actions/checkout from 4.1.2 to 4.1.3 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2814
* Minor optimizations by using comprehensions by cclauss in https://github.com/pygame-community/pygame-ce/pull/2771
* Remove use of Py_BuildValue("(ii)") by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2819
* Cleanup codebase, docs and examples with American spelling by Damus666 in https://github.com/pygame-community/pygame-ce/pull/2827
* Unify freetype init codepaths by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2801
* xwayland warning removed; documented; and debug info now contains whether x11 is running or xwayland by oddbookworm in https://github.com/pygame-community/pygame-ce/pull/2823
* Remove lint logic from setup.py by cclauss in https://github.com/pygame-community/pygame-ce/pull/2796
* Track version only in pyproject.toml by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2820
* Bump actions/checkout from 4.1.3 to 4.1.4 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2833
* Try sleeping in window autoresize test by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2832
* Use HasColorKey instead of GetColorKey in pgSurface_Blit by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2835
* Updated SDL to 2.30.3 by oddbookworm in https://github.com/pygame-community/pygame-ce/pull/2837
* Simple SDL3 patches for freetype, surface, mouse by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2838
* Format Python code with ruff format instead of black by cclauss in https://github.com/pygame-community/pygame-ce/pull/2824
* Bump gh actions mac runners (gets us native M1 builds) by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2494
* Add explicit check and error for system cursor by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2843
* Always call HasColorKey before GetColorKey by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2844
* Remove cython gen files, generate in meson build by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2831
* Optimized ( Rect/Frect ) unionall()/unionall_ip() by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2784
* PixelArray raise error assigning sequence to pixel by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2742
* Bump actions/checkout from 4.1.4 to 4.1.5 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2851
* fix typos by RainRat in https://github.com/pygame-community/pygame-ce/pull/2847
* Fix pylint undefined usage error in sysfont by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2858
* Add pygame.mouse.get_just_pressed/released() by Damus666 in https://github.com/pygame-community/pygame-ce/pull/2836
* Bump actions/checkout from 4.1.5 to 4.1.6 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2861
* Using blur on a surface with either width or height equal to 0 won't raise a ValueError by Damus666 in https://github.com/pygame-community/pygame-ce/pull/2852
* Simplified SIMD fill algorithms by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2793
* Bundle only the required pygame icon files by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2854
* add instruction for `ModuleNotFoundError: No Module named setuptools` by yohanmoon in https://github.com/pygame-community/pygame-ce/pull/2868
* Deprecate `setup.py stubcheck`, suggest and use replacement `buildconfig/stubs/stubcheck.py` by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2856
* Run display autoinit on window API, fixes by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2860
* Force window surface update after set_size, hopefully proper fix for that pesky frequent pypy test fail by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2865
* Surface properties by ScriptLineStudios in https://github.com/pygame-community/pygame-ce/pull/2813
* relax convert conditions by robertpfeiffer in https://github.com/pygame-community/pygame-ce/pull/2839
* Added shim to fix portmidi break by oddbookworm in https://github.com/pygame-community/pygame-ce/pull/2863
* Alter CODEOWNERS file to switch required PR review team by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2873
* Deprecate `setup.py docs`, make docs in meson build by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2853
* Remove duplicate images in tutorials by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2871
* Add Circle `contains()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2791
* Bump pypa/cibuildwheel from 2.17.0 to 2.18.1 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2874
* Minor changes to support pytest by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2675
* Window(opengl=True) will now create an OpenGL context by oddbookworm in https://github.com/pygame-community/pygame-ce/pull/2659
* Add pygame.display.get/set_window_position() by Damus666 in https://github.com/pygame-community/pygame-ce/pull/2816
* draw.aacircle() by mzivic7 in https://github.com/pygame-community/pygame-ce/pull/2800
* Update mixer docs by lispspb in https://github.com/pygame-community/pygame-ce/pull/2738
* Add a briefcase template to pygame-ce by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2862
* including `print_debug_info()` in issue template by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2879
* Add warning about 7.1 stereo on set_source_location by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2881
* fix some METH_NOARGS arg missing by pmp-p in https://github.com/pygame-community/pygame-ce/pull/2888
* Fix `python -m docs` dev time convenience command by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2889
* Add `transform.hsl()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2398
* Adjust symbol color in light theme by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2891
* Deprecate `setup.py sdist`, suggest and use replacement pypa/build based command by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2875
* Add missing check in SSE2 alpha blitter by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2896
* Add a delta of 2 ms to test_music_pause__unpause() by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2898
* ``invlerp`` and ``remap`` implementation by bilhox in https://github.com/pygame-community/pygame-ce/pull/2654
* fixed indentation of surface attributes by oddbookworm in https://github.com/pygame-community/pygame-ce/pull/2900
* Minor docs/stubs improvements in `invlerp`/`remap` by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2902

New Contributors
* RainRat made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2847
* yohanmoon made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2868
* mzivic7 made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2800

**Full Changelog**: https://github.com/pygame-community/pygame-ce/compare/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`, faster `transform.invert`, faster "multi-collide" `Rect` methods (like `Rect.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 to `Color`.
- `pitch` argument implemented in `image.tobytes()`.
- `Rect()` and `FRect()` now support initialization with no arguments.

What's Changed
* Start 2.5.0 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2631
* Bump docker/metadata-action from 5.3.0 to 5.4.0 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2628
* Call `PyObject_GetBuffer` directly, fix pypy fail by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2639
* Add Circle `move()`/`move_ip()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2561
* Improve performance of SSE2 no_surf_alpha_opaque_dst blitter by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2601
* Fix comment typo in rect_impl.h by Lumiobyte in https://github.com/pygame-community/pygame-ce/pull/2658
* Fix `Circle` move docs by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2660
* Remove shuffle masks in AVX fillers by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2642
* Matiiss update sdl ttf by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2687
* Fix error reporting sdl 2.29.2+ by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2689
* Bump actions/cache from 3.3.3 to 4.0.0 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2683
* Added more `/` (positional-only notation) by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2691
* Reduced redundancy in `surface.fblits` code and handled generator exception by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2679
* Rect() and FRect() initialization with no arguments by Damus666 in https://github.com/pygame-community/pygame-ce/pull/2655
* added from_normalized() and get and set normalized methods for pygame.Color by XFajk in https://github.com/pygame-community/pygame-ce/pull/2693
* Partially refactor SSE2 blitters with macros by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2656
* SDL 2.30.0 by oddbookworm in https://github.com/pygame-community/pygame-ce/pull/2705
* SDL 2.29.3 pre-release by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2690
* Implement pitch argument for image.tobytes() by whydoubt in https://github.com/pygame-community/pygame-ce/pull/2602
* transform.scale: softstretch SDL2/SDL3 compat by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2707
* Add missing geometry versionadded tags by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2709
* SDL2/SDL3 mutex support by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2712
* Add Circle `as_rect()`/ `as_frect()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2634
* Add Circle `rotate()` / `rotate_ip()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2662
* Add Circle `collideswith()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2661
* Bump CircleCI-Public/trigger-circleci-pipeline-action from 1.1.0 to 1.2.0 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2730
* Deleted a space in geometry docs by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2732
* Update system.rst by lispspb in https://github.com/pygame-community/pygame-ce/pull/2734
* Cleanup rwobject.c file object methods by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2717
* Add wayland and kmsdrm support to manylinux wheels by ankith26 in https://github.com/pygame-community/pygame-ce/pull/1997
* Bump actions/cache from 4.0.0 to 4.0.1 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2736
* Formatting updates using newest version of clang-format by oddbookworm in https://github.com/pygame-community/pygame-ce/pull/2744
* Bump docker/build-push-action from 5.1.0 to 5.2.0 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2747
* Bump softprops/action-gh-release from 1 to 2 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2746
* wasm: unify pygame-web/pyodide/static Freetype init by pmp-p in https://github.com/pygame-community/pygame-ce/pull/2748
* Reorganize geometry internals by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2731
* Undeprecate draw aaline blend by oddbookworm in https://github.com/pygame-community/pygame-ce/pull/2743
* AVX2 premul_alpha() by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2615
* Bump docker/login-action from 3.0.0 to 3.1.0 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2755
* Bump docker/build-push-action from 5.2.0 to 5.3.0 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2756
* Bump actions/checkout from 4.1.1 to 4.1.2 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2754
* Add `mixer.get_driver` by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2741
* Add pipewire and libsamplerate+fftw3 by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2733
* SDL 2.30.1 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2761
* Fix `pygame.display.get_caption()` Docs in display.rst by kritserv in https://github.com/pygame-community/pygame-ce/pull/2765
* Bump actions/cache from 4.0.1 to 4.0.2 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2767
* setup.py: Properly add _sdl2_data_files to data_files by cclauss in https://github.com/pygame-community/pygame-ce/pull/2770
* Update freetype download link because current one is broken (fixes failing circleci builds) by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2774
* Remove undefined variable in aliens.py by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2769
* Fix ftfont_test being run directly by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2763
* Remove pygame.threads by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2762
* Make error messages for using font.align clearer by Kn4ughty in https://github.com/pygame-community/pygame-ce/pull/2777
* Remove apt upgrade in CI by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2778
* `python3 setup.py lint` is deprecated: Let's lint with `pre-commit` by cclauss in https://github.com/pygame-community/pygame-ce/pull/2772
* Add example for retro scaling by snowfruit in https://github.com/pygame-community/pygame-ce/pull/2785
* PEP572 Use Python's assignment expression by cclauss in https://github.com/pygame-community/pygame-ce/pull/2782
* Remove all .editorconfig duplicates, re-add in project root with updates by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2788
* Add SIMD versions of the invert transform by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2534
* Remove docs non-public module stubs by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2794
* Add meson build system [phase 1] by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2557
* (Freetype) use calloc where possible by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2802
* Bump robinraju/release-downloader from 1.9 to 1.10 by dependabot in https://github.com/pygame-community/pygame-ce/pull/2809
* SDL 2.30.2 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2806
* gitignore meson temp folder by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2805
* Fix sdist to include meson stuff and minor updates by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2803
* build-on-msys2.yml: Upgrade GitHub actions/checkoutv4 by cclauss in https://github.com/pygame-community/pygame-ce/pull/2812
* Use macros for (Bytes|Bits)PerPixel compat in SDL3 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2804
* Add armv6 and armv7 to multiarch CI and fix build issues by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2779
* Optimized Rect multi-collision methods by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2786

New Contributors
* Lumiobyte made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2658
* XFajk made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2693
* whydoubt made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2602
* lispspb made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2734
* kritserv made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2765
* cclauss made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2770
* Kn4ughty made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2777
* snowfruit made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2785

**Full Changelog**: https://github.com/pygame-community/pygame-ce/compare/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.0` regression where `sysfont` wouldn'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 as `python -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 for `wavpack` music/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_flags` page. 2708
* oddbookworm removed use of the `display` depth 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**: https://github.com/pygame-community/pygame-ce/compare/2.4.0...2.4.1

2.4.0

β˜€οΈπŸ«πŸŽŠπŸ‘πŸŽ†πŸ πŸ•›πŸ«πŸŒˆπŸŽ„πŸ©πŸͺπŸŽ‡πŸ πŸŽ‰πŸ‘πŸͺ…
`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`](https://github.com/pygame-community/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, novialriptide, 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](https://pyga.me/docs/ref/geometry.html) 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.greyscale` through 2421 and 2432. **Expected speedup**: 7x for ARM/old x86 computers. 11x for x86 computers that support AVX2.
* itzpr3d4t0r worked on speeding `Surface.fill` when 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.smoothscale` in 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](https://pyga.me/docs/ref/window.html) for the current progress.

* Matiiss added the `[min|max]imum_size` properties in 2364
* novialriptide 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_surface` and `flip` methods and deprecating `from_display_module`. 2350, 2575, 2577, 2624.
* yunline added some unit tests in 2230
* yunline did a `grab` API rework in 2379 and 2520
* yunline added `mouse_rect` in 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.Window` in 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_to` by Matiiss in 2165
* `math.lerp` and `math.smoothstep` by robertpfeiffer in 2254
* `mixer.Channel.id` by oddbookworm in 2369
* `image.load_sized_svg` (scale as vector before loading into Surface) by ankith26 in 2620
* `mouse.[get|set]_relative_mode` by yunline in 2076
* `system.get_power_state` (battery info!) by yunline in 2257
* `display.message_box` (for alerts) by yunline in 2427

Updated API

* yunline improved subpixel rendering (float coordinates) for `_sdl2.video.Texture` and `_sdl2.video.Renderer` in 2039
* yunline added support for `int`/`str` color values in `_sdl2.video` module in 2400
* gresm added and improved support for subclassing `mixer.Sound` and `mixer.Channel` in 2590
* oddbookworm added keyword argument support to `Rect.collidedict[all]` in 2309
* oddbookworm did some changes to allow `clamp_magnitude`ing of the zero vector when possible in 2598
* Starbuck5 updated our build to use SDL_image 2.8.0, which adds support for `QOI` images, in 2595.

Removals and deprecations

* MightyJosip and MyreMylar removed deprecated `blend` argument from `draw.aaline[s]` in 2506 and 2550 respectively.
* MyreMylar removed the cythonised `_sprite` module in 2546. For now, a compat shim is provided, but its usage is deprecated.
* zoldalma999 deprecated the `depth` argument of `display.set_mode` in 2490
* Starbuck5 deprecated the old backends of `transform.smoothscale` in 2583

Performance enchancements
*In addition to those mentioned above that are SIMD-related*

* Starbuck5 optimized vector argument parsing in 2443, so `Vector` methods that operate on another `Vector` (like `move_towards`) are now ~10% faster.
* itzpr3d4t0r made many `[F]Rect` methods implement the FASTCALL convention in 2043, 2563 and 2570. All the updated functions should now work faster!
* Matiiss and itzpr3d4t0r optimized hadling of `[F]Rect` arguments 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_loop` in 2466
* Damus666 did some WASM related fixes in `display`, `math` and `color` submodules 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.rotozoom` in 2491
* yunline fix a segfault in the `update` method of `_sdl2.video.Texture` in 2553
* ankith26 fix file-like `close` not called in `freetype.Font` in 2606
* Temmie3754 fixed incorrectly drawn edges in `draw.polygon` in 2131
* Temmie3754 fixed `gfxdraw.bezier` for when there are a lot of points in 2503
* MyreMylar fixed a segfault when passing empty `StringIO`/`File` objects to `Font` in 2548
* MyreMylar fixed RLE related issues in the `transform` module in 2535
* MyreMylar prevented an unnecessary warning from being raised when using `SysFont` and the default font in 2543
* Starbuck5 implemented a fix for windows webcams that don't report framerate crashing `pygame.camera` in 2574
* Starbuck5 fixed `image.get_sdl_image_version` incorrectly handling the `linked` argument in 2597

Test and examples related improvements

* dr0id corrected a typo in `Rect` test methods in 2359
* Matiiss added a `mixer` test skip because it randomly fails on Linux in 2438
* zoldalma999 removed `test` tests in 2475
* JorasOliveira added tests to `Surface.get_(f)rect` in 2492
* gresm added more multiline examples in 2588
* KentAugust added multiplayer joystick example in 2524
* bilhox updated `video` example to use the new `pygame.display.message_box` in 2572
* llindstrom updated the `go_over_there` example 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 `overlay` module in 2411
* bilhox updated the French README in 2228
* oddbookworm did some minor `sprite` doc fixes in 2423
* sweatshirtwearingviper corrected a `sprite` documentation error in 2442
* Carbon32 added a Spanish translation of the README file in 2430
* novialriptide corrected casing for macOS in 2538
* Notenlish fixed caution visual bug for dark theme in 2418
* JiffyRob added docs for `devicename` parameter in `mixer.init` in 2525
* JorasOliveira clarified `event.custom_type` docs in 2527
* ZeroWave022 added typing support for `sprite.collide_mask` as `collided` argument in `sprite.spritecollide` in 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 `scrap` docs to highlight non-deprecated functions in 2515
* MyreMylar added some missing `versionadded` tags in `mouse` in 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_EVENTS` in 2511, 2484.
* MyreMylar removed an unused param from `Surface.convert_alpha` docs in 2486

Other general updates

* Matiiss improved `Surface.fill` error 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 stripped the leading `SDL_` from the pixel format name in 2477

Code quality and robustness

* Julian-O remove spurious comment in base `__init__.py` in 2507
* yunline removed unneeded SDL version checks in 2372
* Matiiss made minor improvements to `Window.size` and `Window.position` C code in 2367
* Matiiss fixed linter failing due to new `clang-format` version in 2461
* MyreMylar ran `clang-format` on the vendored contents of `SDL_gfx/` in 2508
* MyreMylar removed usage of deprecated `Thread.setDaemon` in 2559
* ankith26 fixed compiler warnings in event, camera and display in 2567
* ankith26 made windows `_camera` compile only on MSVC in 2585
* ankith26 updated `pygame.version` to not be an autogen file in 2537
* ankith26 fixed a pypy fail by calling `PyObject_GetBuffer` directly in base C code in 2639
* Starbuck5 started work on SDL3 support by incrementally patching modules to get them to compile in the PRs 2437, 2439, 2440, 2481, 2483, 2500, 2501, 2502
* Starbuck5 removed redundant checks in `pg_ResizeEventWatch` in 2487
* Starbuck5 added usage of `RAISE` macro when appropriate in 2444

CI and dependency related updates

* oddbookworm capped the sphinx version under 7.2.0 in 2407
* MyreMylar fixed grub-efi-amd64-signed installation failures on Ubuntu 20.04 CI builds in 2504
* zoldalma999 and Starbuck5 removed old CI files in 2479 and 2460
* Starbuck5 managed versions of our SDL dependencies, raising our minimum build requirements and updating to SDL 2.28.5 as well as a custom build of SDL_image 2.8.0. 2464, 2584, 2580, 2595, 2596, 2474
* ankith26 kept improving our Mac and Linux dependency systems, and keeping our subdependencies up to date. One big win of this work is a 1.4 mb reduction in the size of the Linux wheels, achieved by making mpg123, fluidsynth and sndfile not link directly to lower-level audio playback libs! 2470, 2513, 2549, 2471

New (& returning after a time) Contributors

* sweatshirtwearingviper made their first contribution in 2442
* Carbon32 made their first contribution in 2430
* Damus666 made their first contribution in 2480
* Julian-O made their first contribution in 2507
* llindstrom a pygame contributor of long standing, made their first contribution to pygame-ce 2521
* JorasOliveira, igordsm, Antonioarf, jpgianfaldoni, caioesr, cicerotcv and nataliaqmc made their first contributions in 2491
* MightyJosip a pygame contributor of long standing, made their first contribution to pygame-ce in 2550
* ZeroWave022 made their first contribution in 2569
* KentAugust made their first contribution in 2524
* maqa41 made their first contribution in pygame geometry
* newpaxonian made their first contribution in pygame geometry

Thanks all

A hearty thank you to everyone involved! In addition to PR makers, we are thank the community at large. 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!

Apologies in advance if we've made a mistake in these notes, do not hesitate to get in touch with us to get a correction made.

Cya, and have fun!

**Full Changelog**: https://github.com/pygame-community/pygame-ce/compare/2.3.2...2.4.0

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 https://github.com/pygame-community/pygame-ce/pull/2499
* Fix SDL_ConvertSurface(Format) for SDL3 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2500
* Optimized `Rect/FRect` `pgRect_FromObject` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2041
* Fix incorrectly drawn edges with fillpoly by Temmie3754 in https://github.com/pygame-community/pygame-ce/pull/2131
* Port last SDL_CreateRGBSurface calls to SDL3-safe PG_CreateSurface by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2501
* Fix grub-efi-amd64-signed installation failures on Ubuntu 20.04 CI builds by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2504
* Strip the leading SDL_ from the pixel format name by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2477
* Remove RDTSC key because detection removed in SDL3 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2502
* Implemented `(F)Rect.move_to` by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2165
* Remove spurious comment by Julian-O in https://github.com/pygame-community/pygame-ce/pull/2507
* Remove deprecated blend attribute from draw_aaline() & draw_aalines() by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2506
* `geometry` module, `Circle` base by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2268
* Fix caution visual bug for dark theme by Notenlish in https://github.com/pygame-community/pygame-ce/pull/2418
* run clang-format on the vendored contents of SDL_gfx/ by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2508
* Add docs for windows DPI awareness hint by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2511
* Optimized `pgRect_FromObject` by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2465
* Moving current scrap API docs to the top to avoid confusion by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2515
* `display.message_box()` by yunline in https://github.com/pygame-community/pygame-ce/pull/2427
* Window grab API rework by yunline in https://github.com/pygame-community/pygame-ce/pull/2379
* Fix problems caused by 2379 by yunline in https://github.com/pygame-community/pygame-ce/pull/2520
* Update pygame.examples.go_over_there for Python 3.12 by llindstrom in https://github.com/pygame-community/pygame-ce/pull/2521
* Fix issue 2109: Added requested tests by JorasOliveira in https://github.com/pygame-community/pygame-ce/pull/2492
* Make mpg123, fluidsynth and sndfile not link directly to lower-level audio playback libs by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2471
* Add docs for "devicename" parameter in 'pygame.mixer.init()' by JiffyRob in https://github.com/pygame-community/pygame-ce/pull/2525
* Remove the unused Surface param from convert alpha docs by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2486
* changed to wording in order to make it more clear by JorasOliveira in https://github.com/pygame-community/pygame-ce/pull/2527
* Fix issue 2446: rotozoom keeps the colorkey flag. by igordsm in https://github.com/pygame-community/pygame-ce/pull/2491
* Fix segmentation fault when destroying window by novialriptide in https://github.com/pygame-community/pygame-ce/pull/2530
* Correct casing for macOS by novialriptide in https://github.com/pygame-community/pygame-ce/pull/2538
* Update `pygame.version` to not be an autogen file by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2537
* Add Circle `collidepoint()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2536
* Added missing Circle attrs by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2519
* Add SSE2 intrinsics smoothscale backend by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2473
* Fix Circle stubs by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2545
* Remove 'responsive' tables from docs CSS by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2509
* Don't double install mac deps, cleanups by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2513
* Add Circle `collidecircle()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2540
* Fix segfault when passing empty StringIO/File object to Font by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2548
* Add the default font to sysfonts by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2543
* Remove and deprecate cythonised sprite module by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2546
* De-emphasise passing a list of rectangles to update by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2532
* Fix RLE usage in the transform module by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2535
* Remove blend from draw.aaline by MightyJosip in https://github.com/pygame-community/pygame-ce/pull/2550
* Fix segfault in Texture.update() by yunline in https://github.com/pygame-community/pygame-ce/pull/2553
* Compile SSE2 smoothscale intrinsics on NEON by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2544
* Fix setDaemon() deprecation error by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2559
* AVX Surface.fill() setup, AVX BLEND_ADD by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2382
* Add Premultiplied Alpha tutorial by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2531
* Add SIMD versions of the greyscale transform (attempt 2) by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2432
* Rect.clipline() optimization by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2563
* Add `Window.mouse_rect` by yunline in https://github.com/pygame-community/pygame-ce/pull/2564
* Fix compiler warnings in event, camera and display by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2567
* Rect.contains() optimization by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2570
* Support collide_mask as collided argument in spritecollide by ZeroWave022 in https://github.com/pygame-community/pygame-ce/pull/2569
* Add `get_surface()` for Window class by yunline in https://github.com/pygame-community/pygame-ce/pull/2350
* `mouse.get/set_relative_mode()` instead of `_sdl2.Window.relative_mouse` by yunline in https://github.com/pygame-community/pygame-ce/pull/2076
* Reduce amount of usage of "dummy" in codebase to minimum by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2547
* Updated ``video.py`` example so it uses ``pygame.display.message_box`` by bilhox in https://github.com/pygame-community/pygame-ce/pull/2572
* Fix for windows cameras without framerate by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2574
* Window update->flip, doc changes by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2577
* Add versionadded tag set_relative_mode by MyreMylar in https://github.com/pygame-community/pygame-ce/pull/2573
* Adding positional-only parameter notation (`/` in function signature) by Matiiss in https://github.com/pygame-community/pygame-ce/pull/2457
* Raise minimum SDL version to 2.0.10 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2584
* C loader targets a python alias by pmp-p in https://github.com/pygame-community/pygame-ce/pull/2586
* Fix gfxdraw.bezier for a lot of points by Temmie3754 in https://github.com/pygame-community/pygame-ce/pull/2503
* Smoothscale: deprecate old backends, update docs by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2583
* Install meson+ninja on buildscripts, bump glib by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2549
* Update SDL 2.26.5 -> 2.28.5 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2580
* Add lerp & smoothstep to math module by robertpfeiffer in https://github.com/pygame-community/pygame-ce/pull/2254
* Improved `blit()` docs by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2262
* Make Texture and Renderer compatible with float input (floor() based pixel rasterisation/conversion changing to round()) by yunline in https://github.com/pygame-community/pygame-ce/pull/2039
* Compile windows _camera on MSVC only by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2585
* Added missing AVX2 fillers by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2565
* Add multiplayer joystick example by KentAugust in https://github.com/pygame-community/pygame-ce/pull/2524
* Subclassing Sounds + Channels. by gresm in https://github.com/pygame-community/pygame-ce/pull/2590
* SDL_image 2.8.0 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2595
* Add SSE2 fillers by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2566
* Fix linked/non linked SDL image version getter by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2597
* Add Circle `update()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2562
* SDL_image 2.8.0 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2596
* Add Circle `colliderect()` by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2560
* Allow for clamping the zero vector when possible by oddbookworm in https://github.com/pygame-community/pygame-ce/pull/2598
* Multiline more examples by gresm in https://github.com/pygame-community/pygame-ce/pull/2588
* Set default convert format when `Window.get_surface()` is called by yunline in https://github.com/pygame-community/pygame-ce/pull/2575
* Move Window to pygame.window.Window namespace by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2604
* Fix Circle update() docs by itzpr3d4t0r in https://github.com/pygame-community/pygame-ce/pull/2614
* Test PBM and LBM images, test and document XCF by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2608
* Public docs for Window by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2607
* Remove Window API that will be questionable in SDL3 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2617
* Fix file-like `close` not called in freetype (Removed `pgRWops_ReleaseObject` and replaced usage with `SDL_RWclose`) by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2606
* Deprecate from_display_module by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2624
* Implement `pygame.image.load_sized_svg` by ankith26 in https://github.com/pygame-community/pygame-ce/pull/2620
* Update always_on_top doc (it's not x11 only) by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2618
* Push window out of 2.4.0 by Starbuck5 in https://github.com/pygame-community/pygame-ce/pull/2627

**Full Changelog**: https://github.com/pygame-community/pygame-ce/compare/2.4.0.dev2...2.4.0.dev4

New (& returning after a time) Contributors
* Julian-O made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2507
* llindstrom a pygame contributor of long standing, made their first contribution to pygame-ce https://github.com/pygame-community/pygame-ce/pull/2521
* JorasOliveira made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2492
* igordsm made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2491
* MightyJosip a pygame contributor of long standing, made their first contribution to pygame-ce in https://github.com/pygame-community/pygame-ce/pull/2550
* ZeroWave022 made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2569
* KentAugust made their first contribution in https://github.com/pygame-community/pygame-ce/pull/2524

**Full Changelog**: https://github.com/pygame-community/pygame-ce/compare/2.4.0.dev2...2.4.0.dev4

Page 1 of 4

Β© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.