2.4.0.dev4
Pre-release
Pre-release
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/FRect
pgRect_FromObject
by @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_to
by @Matiiss in #2165 - Remove spurious comment by @Julian-O in #2507
- Remove deprecated blend attribute from draw_aaline() & draw_aalines() by @MyreMylar in #2506
geometry
module,Circle
base 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_FromObject
by @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 @novialriptide in #2530
- Correct casing for macOS by @novialriptide in #2538
- Update
pygame.version
to 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_rect
by @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_mouse
by @yunline in #2076- Reduce amount of usage of "dummy" in codebase to minimum by @MyreMylar in #2547
- Updated
video.py
example so it usespygame.display.message_box
by @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 #2590
- SDL_image 2.8.0 by @Starbuck5 in #2595
- Add SSE2 fillers by @itzpr3d4t0r in #2566
- Fix linked/non linked SDL image version getter by @Starbuck5 in #2597
- Add Circle
update()
by @itzpr3d4t0r in #2562 - SDL_image 2.8.0 by @Starbuck5 in #2596
- Add Circle
colliderect()
by @itzpr3d4t0r in #2560 - Allow for clamping the zero vector when possible by @oddbookworm in #2598
- Multiline more examples by @gresm in #2588
- Set default convert format when
Window.get_surface()
is called by @yunline in #2575 - Move Window to pygame.window.Window namespace by @Starbuck5 in #2604
- Fix Circle update() docs by @itzpr3d4t0r in #2614
- Test PBM and LBM images, test and document XCF by @ankith26 in #2608
- Public docs for Window by @Starbuck5 in #2607
- Remove Window API that will be questionable in SDL3 by @Starbuck5 in #2617
- Fix file-like
close
not called in freetype (RemovedpgRWops_ReleaseObject
and replaced usage withSDL_RWclose
) by @ankith26 in #2606 - Deprecate from_display_module by @Starbuck5 in #2624
- Implement
pygame.image.load_sized_svg
by @ankith26 in #2620 - Update always_on_top doc (it's not x11 only) by @Starbuck5 in #2618
- Push window out of 2.4.0 by @Starbuck5 in #2627
Full Changelog: 2.4.0.dev2...2.4.0.dev4
New (& returning after a time) Contributors
- @Julian-O made their first contribution in #2507
- @llindstrom a pygame contributor of long standing, made their first contribution to pygame-ce #2521
- @JorasOliveira made their first contribution in #2492
- @igordsm made their first contribution 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
Full Changelog: 2.4.0.dev2...2.4.0.dev4