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.
Added:
* Python 3.8 is now supported
* `Asset.free()`: Function that can be called by `__del__()` to release resources held. (387)
* Sounds now supports `.wav`, AIFF, VOC, OGG/Vorbis, MP3, and FLAC, as well as potentially more depending on the system configuration. (387)
* Documentation pages. (416, 375, 423)
Fixed:
* The initial scene now gets its `SceneStarted` event (rolled in to 387, 6e96280685d1ab2668f900d0c3374ef650380de1)
* One of the visual tests wasn't working. It was an error with the test, now fixed. (434)
* Sound volume controls require integers, we now cast the value you provide to an integer. (427)
Changed:
* `BadEventHandlerException` was moved from `ppb.eventlib` to `ppb.errors`. (402)
* Documentation updates (404)
* Various performance improvements. (402, 415)
Removed:
* `ppb.eventlib`, `EventMixin`, and `__event__()`. Everything they used to do has been inlined into the Engine. (402)
Internal:
* The release process was changed to be more automatic with significantly fewer human steps. (380)