Skip to content
Choose a tag to compare

v0.8.0: Spring 2020 Release

@AstraLuma AstraLuma released this
Choose a tag to compare

This release does only two things: dramatically optimizes event dispatch and replaces PyGame with PySDL2.

First, the simple one: event dispatch performance was dramatically optimized, because the performance of the previous method was just bad.

The big thing is that PursuedPyBear no longer depends on PyGame and uses PySDL2 instead. This was done because PyGame has never supported Python 3.8 in a final release, despite 3.8 being released in October, 2019. We are now using PySDL2 instead. This should require no changes from our uses, although Linux uses will require additional steps to install the SDL libraries (Debian: libsdl2-2.0-0 libsdl2-mixer-2.0-0 libsdl2-image-2.0-0 libsdl2-gfx-1.0-0).

Additionally, a pass was made at improving the docs: Double checking the accuracy of existing documentation, adding detailed documentation to ppb.engine.GameEngine and adding our first discussion pages. One discussing the design and constraints of the Asset system and another outlining the principles of ppb as a project.

We anticipate this release to have no impact on the vast majority of users, and minimal impact on the rest.


  • Python 3.8 is now supported
  • Function that can be called by __del__() to release resources held. (#387)
  • Sounds now supports .wav, AIFF, VOC, OGG (Vorbis & Opus), MP3, and FLAC, as well as potentially more depending on the system configuration. (#387)
  • Documentation pages. (#416, #375, #423)


  • The initial scene now gets its SceneStarted event (rolled in to #387, 6e96280)


  • BadEventHandlerException was moved from ppb.eventlib to ppb.errors. (#402)
  • Documentation updates (#404)
  • Various performance improvements. (#402, #415)


  • ppb.eventlib, EventMixin, and __event__(). Everything they used to do has been inlined into the Engine. (#402)


  • The release process was changed to be more automatic with significantly fewer human steps. (#380)
  • One of the visual tests wasn't working. It was an error with the test, now fixed. (#434)