Skip to content

Releases: pygame-community/pygame-ce

2.4.0.dev2

04 Oct 19:02
f08b287
Compare
Choose a tag to compare
2.4.0.dev2 Pre-release
Pre-release

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

New Contributors

Full Changelog: 2.3.1.dev4...2.4.0.dev2

2.3.2

03 Sep 17:58
bd6e38d
Compare
Choose a tag to compare

☀️🌊🏖️😎🏄🐚🏝️🍹☀️🌊🏖️
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.arc in #2344 where arcs with widths would be incorrectly rendered with holes in between.
  • music.get_pos could 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 PixelArray in #2276
  • @Matiiss fixed Sound.__init__ incorrectly raising TypeError instead of FileNotFoundError for some inputs in #2381
  • @dr0id fixed copy.deepcopy support for Surface in #2394
  • @pmp-p fixed webassembly support of pygame.newbuffer and pygame.pixelarray in #2419 and #2413

Codebase fixes and robustness improvements

  • @pmp-p fixed compilation error when lseek64 is absent (like webassembly 32 bit mode) in #2410
  • @yunline replaced usage of PYGAMEAPI_DISPLAY_INTERNAL with the intended BUILD_STATIC in window.c in #2412
  • @dr0id added a lint warning ignore in locals.py to 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_id in #2363
  • @ankith26 deprecated passing out of range sequence lengths to colorspace setters in #2392

Unit-tests, typing and examples related improvements

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

07 Aug 06:51
2ffcf1e
Compare
Choose a tag to compare

☀️🌊🏖️😎🏄🐚🏝️🍹☀️🌊🏖️
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

  • @novialriptide added the point_size attribute to font.Font in #1961. This allows fonts to be resized after being loaded.
  • @dr0id added style_name property to font.Font/freetype.Font in #2175
  • @yunline added two pygame.system functions get_cpu_instruction_sets and get_total_ram in #2308. These can be used to find out more about the system at runtime.
  • @dr0id added new Rect/FRect methods - scale_by/scale_by_ip and @jonotassia updated these to accept keyword-arguments. This addition was ported to pygame-ce by @Starbuck5 in #2277
  • New contributor @AlexanderGroeger added functions to manage soundfonts (get_soundfont and set_soundfont) to mixer in #2274. This is relevant for midi playback through pygame.mixer.
  • @Matiiss added a few convenience classmethods - Color.from_<color_space> (i.e. Color.from_hsla) in #2177
  • @yunline added always_on_top attribute to _sdl2.video.Window in #2307. Now you can use this to force your Windows to always be highlighted at the top.

Potential breaking changes

  • @yunline fixed transform.gaussian_blur to 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_timer had 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 result set_timer is now much more accurate with the timing!
  • @ankith26 fixed FRect slice subscripting to correctly return floats in #2313
  • @yunline added support for SDL_WINDOWID back, 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-ce 2.3.0 introduced a regression where SysFont could no longer handle None. @Sjmarf fixed this in #2271
  • Another pygame-ce 2.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 font in #2255
  • @zoldalma999 fixed a segfault related to _sdl2.Window.from_display_module that happened on dealloc in #2341

Usage and performance enhancements

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-ce multiline text rendering. #2219, #2235
  • New contributor @IrvKalb corrected the documentation of the get_pref_path function in the system module to use the org argument 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.cdrom references 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 draw and Surface modules in #2346
  • @Starbuck5 removed SDL version information where it mentions versions that are below our supported SDL version in #2334

Unittests and typing related improvements

  • @oddbookworm improved Rect/FRect typing to be more generic and accurate in #2297
  • @ankith26 made some types more lax by using a custom Sequence ABC 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

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.0...2.3.1

2.3.1.dev4

30 Jul 10:03
b2fd18d
Compare
Choose a tag to compare
2.3.1.dev4 Pre-release
Pre-release

The last pre-release before the full release, for testing. Thanks to everyone! 🎉

(Yes this stuff is 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

New Contributors

Full Changelog: 2.3.1.dev2...2.3.1.dev4

2.3.1.dev2

20 Jul 19:23
8ea22ac
Compare
Choose a tag to compare
2.3.1.dev2 Pre-release
Pre-release

A pre-release for testing before the full release, thanks to everyone! 🥳

(Yes this stuff is 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

New Contributors

Full Changelog: 2.3.0...2.3.1.dev2

2.3.0

15 Jun 06:02
Compare
Choose a tag to compare

pygame-ce 2.3.0

☀️🌊🏖️😎🏄🐚🏝️🍹☀️🌊🏖️
pip uninstall pygame
pip install pygame-ce --upgrade
☀️🌊🏖️😎🏄🐚🏝️🍹☀️🌊🏖️

Welcome to the newest release of pygame-ce! Summer is near (here in the northern hemisphere), and with that comes the time of vacations and game jams. The pygame-ce team has been working hard on improving several things for the last few months so you can enjoy your programming activity. You will be seeing a lot of light during these months, so for a change you can now view the pygame-ce documentation in dark mode. Outside of that, there have been a lot of other improvements, bug fixes, and other stuff which are listed below. We hope you will enjoy the changes, and we will continue to improve our beloved library in the following releases.

Besides the dark mode docs, a big story in this release are improvements to the experimental pygame._sdl2 module. It now has non-skeleton documentation, and the Window class was completely rewritten in C to enable better integration with the rest of pygame-ce.

Check out what we've been working on!

What's Changed

Additions

  • @durkisneer1 added the pygame.Surface.get_frect() convenience method. #2071
  • @yunline added pygame.mixer.Channel.set_source_location() (for panning-like effects). #1844
  • @PurityLake added keyword argument support to Font.render(). #2000
  • @Sjmarf improved a font warning message emitted when requested system fonts are not found. For example: The system font 'comicsans2' couldn't be found. Did you mean: 'comicsans', 'comicsansms'? #2147

Bug Fixes

  • @ankith26 fixed audio issues on older Macs (like pygame.mixer wouldn't work at all). If you see Library not loaded: @loader_path/libmp3lame.0.dylib, this is fixed now. #2118
  • @Starbuck5 fixed a regression where "tracker music" (XM/MOD/IT files) would no longer play on Windows. #2152
  • @Starbuck5 fixed a regression in pygame.transform.scale() when scaling to a destination surface with a different pixel format. #2172
  • @yunline fixed a SystemError issue when disconnecting and reconnecting controllers. #2048
  • @Temmie3754 fixed issue when converting surface to 8 bit surface with palettes. #2031
  • @yunline made it so pygame-ce will raise an error if source and destination surfaces are the same in pygame.transform.(box/gaussian)_blur, rather than just producing incorrect results. #2161
  • @cbdj fixed the Android build configuration. #2249

Optimizations

  • @ScriptLineStudios optimized a case for pygame.draw.polygon when drawing triangles. #2126
  • @itzpr3d4t0r optimized pygame.Rect.move, pygame.Rect.move_ip (and corresponding FRect methods) with FASTCALL, a 20-40% speedup. #2040
  • @Matiiss optimized pygame.Surface.get_(f)rect with FASTCALL, achieving a 20-40% speedup as well. #2179
  • @Starbuck5 slightly improved create/destroy performance and reduced memory usage of pygame.math.Vector(2/3) (enabling future optimizations). #2174

Deprecations

  • @MyreMylar added deprecation warnings for pygame.sprite.RenderPlain, pygame.sprite.RenderClear and pygame.sprite.OrderedUpdates (will be removed in pygame-ce 2.4.0). #2036
  • @SSS-Says-Snek added deprecation warnings for pygame.image.tostring and pygame.image.fromstring in favor of (to/from)bytes. #2101

Documentation, Examples, and Type Hints

Operations and Code Quality

New Contributors

Other News

DaFluffyPotato gave us a shoutout in a video about pygame-ce on his channel, titled "Pygame CE - Better & Faster." Check it out if you're interested: https://www.youtube.com/watch?v=pYq9edSUaOw

Full Changelog: 2.2.1...2.3.0

2.3.0.dev4

05 Jun 06:33
Compare
Choose a tag to compare
2.3.0.dev4 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: 2.3.0.dev2...2.3.0.dev4

2.3.0.dev2

17 May 05:50
Compare
Choose a tag to compare
2.3.0.dev2 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: 2.2.1...2.3.0.dev2

2.2.1

02 Apr 23:34
Compare
Choose a tag to compare

pygame-ce 2.2.1

# if you're switching over from pygame/pygame,
# remove it first to avoid conflicting namespace
pip uninstall pygame
pip install pygame-ce==2.2.1

This is a quick patch release to address a reported regression in a certain type of alpha blits, after the blit optimizations from 2.2.0. We're not sure how common this issue is, only one person reported it, but we wanted to get a release out quickly to address it.

We're also including all the changes since 2.2.0 merged in the last ~week, so it's not just that bugfix, we also have some nice enhancements.

What's Changed

Enhancements

  • @ankith26 and @Starbuck5 pulled in updates for pygame's dependencies: SDL and SDL satellite libraries. This updates us with all their hard work fixing bugs. #2057, #1986

  • @Starbuck5 sped up pygame.transform.scale and scale_by by replacing our internal scaling algorithm with an SDL function which is 10-40% faster. #1884

  • @SSS-Says-Snek added some helpful information to the Surface repr. When you print a surface, it looks like <Surface(50x50x32 SW)>. Now, it might look like <Surface(50x50x32, colorkey=(255, 255, 255, 255))> or <Surface(50x50x32, global_alpha=200)>. The idea is to give more information in the representation when there is more relevant things to know about the Surface. We hope that this will help people confused by Surface behavior in debugging. #2016

  • @Sjmarf made it so font.Sysfont will emit a warning if your font choice fell back to the default font. #1973

Bugfixes

  • @Starbuck5 fixed a regression in one of the AVX2 alpha blitters, thanks to @bigwhoopgames for the bug report. #2067

  • @dr0id fixed a bug where Sysfont could rarely give you a non-existent font file on Windows. (That's what we get for believing the Windows registry) #2034

  • @robertpfeiffer fixed a regresion where having $XDG_SESSION_TYPE not set would cause a crash in display.set_mode #2079

Docs, Examples, and Types

Cleanups and Robustness

New Contributors

Other News

Full Changelog: 2.2.0...2.2.1

2.2.0

25 Mar 09:32
Compare
Choose a tag to compare

pygame-ce 2.2.0

pygame_logo_transform

  • Demo of transform grayscale, invert, and blur routines. Invert and blur new in this release.
# if you're switching over from pygame/pygame,
# remove it first to avoid conflicting namespace
pip uninstall pygame
pip install pygame-ce==2.2.0

Welcome to the newest release of pygame-ce! We're excited to share the last month's worth of merged
enhancements, bugfixes, and cleanups.

What's Changed

Enhancements

  • @Emc2356 and @yunline added pygame.FRect, a version of pygame.Rect that supports floating point values! The FRect class supports the whole pygame.Rect API. This is useful so that one can use floating point values for position, while still being a Rect. #1944, #2046

  • @Starbuck5 accelerated many types of alpha blitting using AVX2 instructions, achieving a 30-300% performance gain when blitting with transparent Surfaces (on supported systems). #2019

  • @robertpfeiffer made it possible to use VSYNC in a normal (non-SCALED) pygame display setup, also added is_vsync, get_current_refresh_rate, get_desktop_refresh_rates functions. #1874

  • @ScriptLineStudios added pygame.transform.invert, which inverts the RGB color of each pixel in a Surface. #1911

  • @yunline added pygame.transform.box_blur and pygame.transform.gaussian_blur. #1836, #2026, #2028

  • @Starbuck5 and @ankith26 added a new module! pygame.system is for miscellaneous system information. Right now it has get_pref_path to create a persistent data directory and get_pref_locales to get system locale information. #1897

  • @MyreMylar accelerated the BLEND_PREMULTIPLIED blend mode using AVX2 instructions (2-6x faster). #5, #2005

  • @oddbookworm added a new copy-paste API in the scrap module, which is easier to use and more portable. #1984

  • @novialriptide added a Font.name attribute, to get the proper name of the font. #1971

  • @avaxar implemented swizzling for pygame.Color-- I.e. color.rgb, color.bgr, color.garb. #1935, #1994

  • @avaxar updated several object representations to better conform to Python standards. For example, pygame.Rect(1,2,3,4) is now represented as Rect(1, 2, 3, 4) instead of <rect(1, 2, 3, 4)>. #1995

  • @yunline added full support for keyword arguments in the image module. #2010

Bugfixes

Deprecations, Potential Breaking Changes, and Removals

  • Legacy pygame.scrap functions are now deprecated. Contributed by @oddbookworm. #1984

  • pygame.fastevent has been removed. Contributed by @gresm. #1966

  • pygame.mixer now raises a FileNotFoundError when the sound isn't found on the filesystem. Contributed by @Temmie3754. #2001

Docs, Examples, and Types

Cleanups and Robustness

Operations

New Contributors

Governance

Since last release, we're proud to welcome three new members of the project!
Congratulations to @yunline, @itzpr3d4t0r, and @dr0id.

We've also elected (among the contributors) a group of three contributors to the "steering council" -- responsible for releases and for resolving debates. The current steering council is @MyreMylar, @ankith26, and @Starbuck5. See https://github.com/pygame-community/pygame-ce/wiki/The-Steering-Council.

Full Changelog: 2.1.4...2.2.0