Allegro changelog for 5.2.x series
Changes from 5.2.11.2 to 5.2.11.3 (February 2026)
Changes from 5.2.11.1 to 5.2.11.2 (January 2026)
Changes from 5.2.11 to 5.2.11.1 (November 2025)
Changes from 5.2.10.1 to 5.2.11 (November 2025)
Changes from 5.2.10 to 5.2.10.1 (December 2024)
Changes from 5.2.9.1 to 5.2.10 (November 2024)
Changes from 5.2.9 to 5.2.9.1 (January 2024)
Changes from 5.2.8 to 5.2.9 (November 2023)
Changes from 5.2.7 to 5.2.8 (June 2022)
Changes from 5.2.6 to 5.2.7 (March 2021)
Changes from 5.2.5 to 5.2.6 (February 2020)
Changes from 5.2.4 to 5.2.5 (February 2019)
Changes from 5.2.3 to 5.2.4 (February 2018)
Changes from 5.2.2 to 5.2.3 (October 2017)
Changes from 5.2.1.1 to 5.2.2 (December 2016)
Changes from 5.2.1 to 5.2.1.1 (August 2016)
Changes from 5.2.0 to 5.2.1 (July 2016)
Changes from 5.1.13.1 to 5.2.0 (April 2016)
Allegro changelog for 5.2.x series
**********************************

These lists serve as summaries; the full histories are in the git
repository.

Changes from 5.2.11.2 to 5.2.11.3 (February 2026)
*************************************************

Core:

   • Fix a backwards incompatible change to ALLEGRO_JOYSTICK_STATE
     (#1718) (SiegeLord)

Changes from 5.2.11.1 to 5.2.11.2 (January 2026)
************************************************

Windows:

   • Prefer ‘_fseeki64’ and ‘_ftelli64’ if available (Andrew McRae)

Primitives addon

   • Re-export ‘al_draw_soft_line’ (#1691) (SiegeLord)
   • Initialize an uninitialized variable (Hannes Pabst)
   • Re-enable pre-compiled shaders for D3D9X to avoid a dll dependency
     (#1694) (SiegeLord).
   • Revert the primitives state setup/revert back to the old primitives
     addon logic (SiegeLord).

Examples

   • Fix ‘ex_prim_wrap’ (SiegeLord)

Changes from 5.2.11 to 5.2.11.1 (November 2025)
***********************************************

Primitives addon

   • Fix segfault when resizing display (SiegeLord)
   • Fix linking issue on Windows (#1691) (SiegeLord)

Examples

   • Fix ‘ex_prim_wrap’ (SiegeLord)

Changes from 5.2.10.1 to 5.2.11 (November 2025)
***********************************************

Core

   • Remove tabs and trailing spaces from source files (SiegeLord)
   • Disable DebugOutputString on windows for logs by default (#1548)
     (SiegeLord)
   • Fixed initialization of the resize event thread when calling
     ‘al_init’ after ‘al_uninstall_system’ (Kevin Wellwood)
   • Add "gamepad" support.  This uses the community sourced SDL
     controller database.  See ex_joystick_events for how to use this.
     (SiegeLord)
   • Fix assorted issues with joystick hotplugging (SiegeLord)
   • Add locks to avoid stale clipboard text (#1629) (Steve Fosdick)
   • Reset the ‘GL_UNPACK_ROW_LENGTH’ after unlocking certain bitmaps
     (SiegeLord, Alan_Roxdale)

MacOS

   • Use a faster method of scrolling to the bottom for MacOS text logs
     (#1610) (SiegeLord)
   • Fix static linking (SiegeLord)
   • Fix ‘al_set_mouse_xy’ on high resolution MacOS displays (SiegeLord)
   • Add partial support for OpenGL 3 displays.  Bitmap drawing works,
     but primitives addon does not (j-w-c-b)
   • Fix Segfault with Japanese keyboards (John Wood)
   • Remove the native MacOS image loader, it had too many limitations
     (#1531) (SiegeLord)

Windows

   • Handle DSERR_NODRIVER when reporting error in DirectSound driver
     (Andrew Kravchuk)
   • Don't set WM_EX_TOPMOST for Direct3D FULLSCREEN windows (SiegeLord)
   • Make Python binding work on Windows (Mikhail Titov)

Linux

   • Fixed memory leak (Helodity)
   • Fix crash when using the LC_CTYPE=eo.ut8 on X11 (#1651) (SiegeLord)
   • Improve behavior when the display is disconnected (SiegeLord)

TTF addon

   • Add color emoji support (Elias Pschernig)

Audio addon

   • Fix a race between detaching instances from mixers and reading from
     them (SiegeLord)

Image addon

   • Fix loading of padded PCX files (Mikhail Titov)

Video addon

   • Add ‘al_open_video_f’ (jarroddavis68)

Primitives addon

   • Move the most of the implementation into the core.  This should be
     feature-neutral, but will enable future unification (#1003)
     (SiegeLord)
   • Populate the UV coordinates for the vertices in many high-level
     primitives which enables some shader effects.  See ‘ex_prim’
     example for how this looks.  (Helodity, SiegeLord)

Documentation

   • Document ‘ALLEGRO_MOUSE_STATE.display’ (j-w-c-b)
   • Remove GETTER/SETTER from generated docs (j-w-c-b)
   • Fix the the return value of ‘al_insert_menu_item’ (#1648)
     (SiegeLord)

Build system

   • CMake improvements (Cristian Le)
   • Export build tree with CMake to ease debugging (Mikhail Titov)
   • Allow using SIMD instruction sets besides SSE (Mikhail Titov)
   • Check vcpkg locations for dependencies (Mikhail Titov)
   • Assorted CI improvements (SiegeLord, Mikhail Titov)

Examples

   • ‘ex_joystick_hotplugging’ is now more exciting (SiegeLord)

Changes from 5.2.10 to 5.2.10.1 (December 2024)
***********************************************

MacOS

   • Fix some corner cases in the new keyboard input system (SiegeLord)
   • Fix version-based conditional compilation (Rhys-T)

Packaging

   • Fix the package script to check for makeinfo, this prevents
     malformed source achives from being created (as happened in 5.2.10)
     (SiegeLord)

Changes from 5.2.9.1 to 5.2.10 (November 2024)
**********************************************

Core

   • Add a compatibility config option, ‘keyboard_version=xx.yy.zz’ as
     well as the same but with ‘joystick_version’ if it is necessary to
     restore the old behavior.  This enables us to fix bugs with the
     input system, while providing a mechanism to restore old buggy
     behavior temporarily (SiegeLord)

   • Assorted timer improvements (Connor Clark)

   • Optimize inverse transformations.  (SiegeLord)

   • Fix the handling of the new window title in ‘ALLEGRO_STATE’ (#1562)
     (Alexandre Martins)

   • Add ‘ALLEGRO_TRACE_LEVEL’ environment variable.  This makes it
     easier to enable logging on release builds.  (SiegeLord)

   • Add ‘al_ref_info’ to convert ‘ALLEGRO_USTR_INFO’ to ‘ALLEGRO_USTR’
     (SiegeLord)

   • Add ‘al_get_display_adapter’ (#1578) (SiegeLord)

   • Add ‘al_get_render_state’ (Mark Oates)

MacOS

   • Don't use usage numbers as joystick button ids on OSX. (#1527)
     (SiegeLord)

   • Enable deadkey handling on MacOS (SiegeLord).

   • Map numpad delete to ‘ALLEGRO_KEY_PAD_DELETE’ and the weird ISO
     section key to ‘ALLEGRO_KEY_BACKSLASH2’ (#1523) (SiegeLord)

Windows

   • Fix key events when using modifiers (#1430, #1504) (SiegeLord)

   • Fix undesirable deadzone when using analog joysticks (geecab)

   • Use the correct monitor when restoring fullscreen window when using
     OpenGL (SiegeLord)

   • Fix ‘ALLEGRO_FULLSCREEN_WINDOW’ not working in certain conditions
     (SiegeLord)

Linux

   • Fix joystick initialization when overriding IO (#1572) (Alexandre
     Martins)

   • Make sure the bitmap for the initial icon is created as a memory
     bitmap (#1571) (SiegeLord)

Android

   • Add more joystick buttons (#1482) (Alexandre Martins)

   • Fix corruption of bitmaps created with the
     ‘ALLEGRO_NO_PRESERVE_TEXTURE’ flag when the application loses focus
     (#1492) (Alexandre Martins)

   • Fix a concurrency issue related to ‘al_acknowledge_drawing_halt’
     (Alexandre Martins)

   • Add ‘al_android_open_fd’ (Alexandre Martins)

   • Assorted improvements (Alexandre Martins)

iPhone:

   • Fix build (Todd Cope)

Audio addon:

   • Add MacOS support for listing output devices (Aldrik Ramaekers)

Acodec addon:

   • Prefill ‘ALLEGRO_AUDIO_STREAM’s with data (SiegeLord)

   • Add OpenMPT support.  This is meant to replace DUMB, as DUMB is not
     maintained.  You can use the compatibility config option
     ‘acodec_prefer_dumb’ to temporarily make DUMB the preferred handler
     for module files, if Allegro is built with both DUMB and OpenMPT.
     Some modules may sound different under OpenMPT. (SiegeLord)

Native dialog addon:

   • Add Android support (Alexandre Martins)

   • Auto-scroll the native textlog on MacOS (SiegeLord)

   • Fix monospace fonts on MacOS in the native textlog (SiegeLord)

   • Improve the patterns arg in ‘al_create_native_file_dialog’
     (SiegeLord)

        • Support for multiple pattern sets (Windows/Linux)
        • Supports for custom pattern set descriptions (Windows/Linux)
        • Support for MIME types on MacOS
        • Remove the implicit catch-all pattern on Windows (the "All
          files _._"), it was inconsistent with other platforms.
        • Make MacOS do a better job at extracting the file extension
        • Improve documentation overall

Video addon:

   • Make ‘al_is_video_playing’ return false before ‘al_start_video’
     (SiegeLord)

   • Make ‘ALLEGRO_VIDEO’ work with the automatic destruction system
     (SiegeLord)

Build system:

   • Reproducible build support (Andreas Rönnquist)

   • Fix multiarch install location (Andreas Rönnquist)

Examples:

   • Remove VLAs to improve Visual Studio support (Jeff Linahan,
     SiegeLord)

   • Fix opaque black background pixels in explosion sprites in the
     Shooter demo (tstoeter)

Changes from 5.2.9 to 5.2.9.1 (January 2024)
********************************************

Linux:

   • Fix a regression where toggling fullscreen window when menus are
     used stopped working (SiegeLord)

Changes from 5.2.8 to 5.2.9 (November 2023)
*******************************************

Android:

   • Fix back button/gesture (alemart)

   • Implement ‘al_get_joystick_name’ (alemart)

   • Great many assorted fixes (alemart)

Audio:

   • Add ‘al_get_mixer_has_attached’ and ‘al_get_voice_has_attached’
     (TRDario)

   • Fix ‘al_set_audio_stream_playmode’ return value and interaction
     with looping audio streams (Cody Licorish)

   • Send PulseAudio silence if the attached mixer is stopped
     (SiegeLord)

Acodec:

   • voc memory leak fixes (TRDario)

   • Fix internal looping for mod files (SiegeLord)

Build system:

   • Add a target for copying examples, letting you build the demo
     without the examples (SiegeLord).

   • Improve CMake scripts (Gilad Reich)

   • Support the newer WebP library which is split into two (SiegeLord).

Core:

   • Add ‘al_can_set_keyboard_leds’ and
     ‘al_can_get_mouse_cursor_position’ (TRDario)

   • Allow outputting logs to STDOUT via ALLEGRO_TRACE environment
     variable (SiegeLord)

   • Add ‘al_get_current_shader’ (TRDario)

   • Add ‘al_get_window_borders’ for Windows and Linux (Elias Pschernig
     + SiegeLord)

TTF:

   • Fixes for ‘al_get_glyph_width’, ‘al_get_glyph_al_get_glyph’ when
     interacting with zero-width/zero-height glyphs (Connor Clark)

MacOS:

   • Don't close submenus on click (Todd Cope)

   • Fix disabling menu items (Todd Cope)

   • Add support for filtering by file extensions in the native file
     dialog (Todd Cope)

   • Textlog improvements (Connor Clark)

   • Fix improper display boundary for cursors (Connor Clark)

   • Make ‘al_get_joystick_name’ return the name of the joystick (Todd
     Cope)

   • Fix off-by-one error for hat switches (Connor Clark)

   • Add a workaround for live resizing not working.  Enable it via
     ‘[osx] allow_live_resize = false’ in ‘allegro5.cfg’ and then listen
     and respect ‘ALLEGRO_EVENT_DISPLAY_HALT/RESUME_DRAWING’ events
     (#1350) (SiegeLord + Elias Pschernig)

Linux:

   • Fix fullscreen window creation (#1349) (SiegeLord)

   • Fix some X11 + fullscreen window interaction (#1358) (SiegeLord)

   • Allow setting higher quality icons (SiegeLord + Trent Gamblin)

   • Improve ‘DISPLAY_SWITCH_IN/OUT’ events (#1390, #1367) (SiegeLord)

   • Work on improving Window positioning (Elias Pschernig)

   • Fix creating an initially maximized window (SiegeLord)

   • Enable toggling and setting maximized/frameless modes when menus
     are used (SiegeLord)

   • Fix popup menu (#1280) (SiegeLord)

   • Make AltGr (right Alt) toggle the ‘ALLEGRO_KEYMOD_ALTGR’ modifier
     (SiegeLord)

Windows:

   • Fix drawable area mouse hiding state being out of sync (#1388)
     (SiegeLord)

   • Fix some oddities with Shift + Alt on Windows (#1348)

   • Work on improving Window positioning (SiegeLord)

   • Make native file dialog respect the initial directory when
     ‘ALLEGRO_FILECHOOSER_FOLDER’ is set (José Carlos HR)

   • Fix the client area changing size on Windows when restoring a
     window (#1433) (SiegeLord)

   • Fix crashes with menus and Windows (#1381) (SiegeLord)

   • Fix keyboard modifier keys + char events (#1504, #1430) (SiegeLord)

SDL:

   • Fix touch ids (Sebastian Krzyszkowiak)

   • Fix ‘al_get_mouse_state’ crash (Elias Pschernig)

   • Implement ‘al_create_mouse_cursor’ (Connor Clark)

   • Implement ‘al_get_monitor_dpi’ (Elias Pschernig)

Documentation:

   • Assorted clarifications and improvements (various)

Changes from 5.2.7 to 5.2.8 (June 2022)
***************************************

The main developers this time were: SiegeLord, Elias Pschernig,
Sebastian Krzyszkowiak, Julian Smythe.

Build system:

   • Add a configuration summary.  Currently this mostly reports the
     addon features.

   • Fix build failure with sanitizers enabled.

   • Remove ‘-Wdeclaration-after-statement’, MSVC had support for this
     for a while now.

   • Bump minimum CMake version to 3.0.

Core:

   • Add ‘al_fopen_slice’ mode to prevent seek on close (Karl
     Robillard).

   • Allow configuring bitmap wrapping via ‘al_set_new_bitmap_wrap’.

Graphics:

   • Reject creating bitmaps with negative width or height (Peter Hull).

   • Add a minimal shader implementation for GLSL. Minimal shader
     supports fewer features, but is faster (Issue #1120).  Select it
     via the ‘_MINIMAL’ suffix to the shader platforms.

Emscripten:

   • Improve emscripten instructions for building demos (Connor Clark).

   • Fix usage of SDL_Init for emscripten (Issue #1322) (Connor Clark).

OSX:

   • Fix a few thread-related crashes.

   • Don't use ‘-flat_namespace’ in ‘LINK_FLAGS’ (danielnachun).

   • Make ‘al_get/set_window_position’ work on Retina displays

Windows:

   • Fix flickering when creating multisampling displays under DirectX.

   • Fix multisampling selection on Windows with OpenGL.

   • Fixed a bug which freezes and crashes the window in Windows OpenGL
     (HerrNamenlos123).

   • Allow specifying shader model 3_0 for HLSL shaders (Issue #1154).

SDL:

   • Ignore touch events from indirect touch devices.

   • Use ‘SDL_PeepEvents’ for event handling, to improve performance.

   • Improve joysticks support (Issue #1326) (Connor Clark).

   • Fix mouse axis setter (Connor Clark).

Linux:

   • Use ‘clock_gettime’ with ‘CLOCK_MONOTONIC’ instead of
     ‘gettimeofday’ (check-switch-26).

Android:

   • Update Gradle to 5.0.

Audio addon:

   • Add ‘ALLEGRO_PLAYMODE_LOOP_ONCE’ (Issue #1309).

   • Add ‘al_play_audio_stream’, a 'simple' API endpoint for audio
     stream playback.

Acodec addon:

   • Fix Vorbis/Opus support under MSVC + Clang.

   • Add audio identification / ‘al_identify_sample’.

   • Use regular seeking for Ogg streams.  The old one did cross-fades,
     causing unexpected behavior in certain cases (Issue #1310).

   • Enable looping for modules.

Audio addon:

   • Allow identifying and listing audio devices via new API:
     ‘al_get_num_audio_output_devices’, ‘al_get_audio_output_device’,
     ‘al_get_audio_device_name’ (Aldrik Ramaekers).

Color addon:

   • Add linear and oklab color spaces to the color addon.

Font addon:

   • Fix declaration of al_draw_multiline_textf() as a PRINTFUNC
     (check-switch-26).

Image addon:

   • Prevent RLE data in corrupt ‘.tga’ from overflowing the buffer
     (Peter Hull).

   • PCX loader validation (Peter Hull).

   • Windows BMP - Make more robust to crashing (Peter Hull).

   • Fix DDS compressed image loading when image dimensions are not
     multiple of block size (check-switch-26).

Native Dialog addon:

   • Fix native dialogs addon compatibility with older GTK+ versions
     (Andrew Kravchuk).

TTF addon:

   • Fixed TTF rendering when using transforms (check-switch-26).

PhysFS addon:

   • Fix incorrect error handling in ‘PHYSFS_close’ (j-w-c-b).

Video addon:

   • Allow identifying video files via a magic number, exposed via
     ‘al_identify_video’ (Issue #1262).

   • Fix ‘al_is_video_addon_initalized’ (Jayson).

Documentation:

   • Document some reasonable defaults for
     ‘al_create_mixer’/‘al_create_voice’.

   • Refactor the audio docs to highlight the simple API better.

Misc:

   • Fix a few data race issues, in an effort to fix ex_threads crashes
     on Linux.

Examples:

   • Allow exiting from ‘ex_audio_timer’ (BillKek)

   • Add the Allegro 4 "shooter" demo.

   • Fix ‘ex_threads’ crash under D3D.

   • Add ‘ex_audio_devices’.

   • Update ‘ex_palette’ to build with Emscripten (Issue #1318).

   • Improve ‘ex_stream_seek’.

   • Improve ‘ex_windows’.

Changes from 5.2.6 to 5.2.7 (March 2021)
****************************************

The main developers this time were: SiegeLord, Peter Hull, Elias
Pschernig, Aldrik Ramaekers, Andreas Rönnquist.

Build system:

   • Allow generating projects with a suffix (lorry-lee).

   • Fix build under Clang-CL in Visual Studio.

Core:

   • Avoid some undefined behavior errors.

   • Return key modifiers in ‘ALLEGRO_EVENT_KEY_UP’ and
     ‘ALLEGRO_EVENT_KEY_DOWN’.

   • Allow calling ‘al_map_*’ color functions before Allegro is
     initialized.

   • Allow minimum bitmap size to be something other than 16 on
     non-Android platforms (controlled via ‘allegro5.cfg’).

   • Add ‘al_get_monitor_refresh_rate’ (only implemented on Windows for
     now).

Graphics:

   • Fix ‘ALLEGRO_KEEP_INDEX’ flag for bitmaps.

   • Add ‘ALLEGRO_OPENGL_CORE_PROFILE’ display flag.

Emscripten:

   • The experimental Emscripten support (via the SDL backend) is now
     documented in ‘README_sdl.txt’.

OSX:

   • Move more Cocoa operations to the main thread.

   • Explicitly link CoreVideo to fix the static build.

Windows:

   • Issue #1125: Speed up OpenGL extension detection (Tobias Scheuer).

   • Use Unicode APIs when enumerating joysticks.

   • Use ‘WM_DEVICECHANGE’ rather than polling to detect joystick
     hotlugging, reducing input drops and lags (Todd Cope).

   • Fix joystick polling period.

   • Restore WinXP compatibility by using slightly older API when
     loading shared libraries (Julian Smythe).

   • Fix build with HLSL disabled (Julian Smythe).

   • Raise DirectInput ‘MAX_JOYSTICKS’ to 32 and ‘DEVICE_BUFFER_SIZE’ to
     128.

SDL:

   • Issue #1224: Fix bug in SDL voice driver.

Audio addon:

   • Allows playing sounds in reverse by specifying a negative speed.

Acodec addon:

   • Fix edge-case looping in Ogg Vorbis stream (Cody Licorish)

Audio addon:

   • Use more sensible values for PulseAudio's playback buffer,
     potentially resolving some crashes and high CPU usage.

Native Dialog Addon:

   • Migrate from GTK2 to GTK3.  Sadly, we lose menu icons as GTK3
     dropped support for them.

TTF addon:

   • Allow initializing TTF addon before the Font addon.

   • Shut-down the TTF addon automatically in ‘al_uninstall_system’.

PhysFS addon:

   • Fix handling of native path separators.

   • Stop using deprecated PhysFS API.

Primitives addon:

   • Fix segfault in ‘al_draw_ribbon’ when ‘num_segments > 128’ (Rodolfo
     Borges).

   • Issue 1215: Correctly handle small scales when determining
     subdivision level for high level primitives (Robin Heydon).

Documentation:

   • Fix LaTeX errors in the generation of the reference manual PDF.

   • Add links to examples into the reference manual.

   • Allow pressing 'S' to focus the search bar in the docs.

   • Assorted documentation improvements.

Misc:

   • Add a security policy and an associated private security mailing
     list - allegro-security@lists.liballeg.org.

   • Add Emscripten-powered examples to
     https://liballeg.org/examples_demos.html.

Examples:

   • ‘ex_audio_simple’ now displays instructions and supports
     bidirectional looping.

   • Add default files to some audio examples.

Changes from 5.2.5 to 5.2.6 (February 2020)
*******************************************

The main developers this time were: SiegeLord, Peter Hull, Karthik Kumar
Viswanathan, Elias Pschernig, Sebastian Krzyszkowiak, Doug Thompson,
PmProg, RmBeer.

Core:

   • Fix timestamps being clamped to ints on touch inputs with X11.

   • Fix al_utf8_width argument type mismatch on platforms where
     ‘sizeof(int) != 4’.

   • Fix building for GNU/Linux without GNU extensions enabled

   • Some refactoring to simplify adding new drivers.

Graphics:

   • Fix for OpenGL version selection and reporting on Windows and X
     (Edgar Reynaldo).

   • Report OpenGL version in display options on Android, iOS and
     Raspberry Pi.

   • Fix creation of the bitmap depth buffer for non-square bitmaps
     (Kevin Wellwood).

   • Fix ‘ALLEGRO_ALPHA_TEST_VALUE’ not being interpreted correctly.

   • Fix reported bitshifts for ‘ARGB_4444’ and ‘RGBA_4444’ pixel
     formats.

   • Fix alpha test with the GLSL version.

Android:

   • Do not build Android examples outside of Android.

   • Use the cmake toolchain provided by the Android NDK.

   • Use FLAG_KEEP_SCREEN_ON instead of a wakelock for screensaver
     inhibition.

   • Use DisplayListener to listen to orientation changes.

   • Implement ‘ALLEGRO_FRAMELESS’ on Android.  This hides the
     navigation buttons and the bar on top.

Linux:

   • Fix ‘al_inhibit_screensaver’ function.

OSX:

   • Ensure system calls happen on the main thread.

   • Make things work on Catalina.

Hurd:

   • Fix pthreads (Andreas Rönnquist).

Windows:

   • Implement Windows version check using non-deprecated functions.

   • Abstract UNICODE vs ANSI string handling, switch to using UNICODE
     by default.

   • Enable debug window for ‘DEBUGMODE’ on Windows.

SDL:

   • Fix requesting GLES profile on GL Allegro.

   • Add audio recorder implementation.

   • Don't link with dl, it's unnecessary.

Addons:

   • Add a whole bunch of ‘al_is_*_initialized’ functions (Mark Oates).

Acodec addon:

   • Add MP3 support via the MiniMP3 library.

Audio addon:

   • Allow calling ‘al_destroy_audio_recorder’ on NULL.

   • Fix some stream garbage audio issues for high playback speeds.

Image addon:

   • Add support for FreeImage library.

   • Always prefer non-system image loaders.

Python wrapper:

   • Fix a number of bugs (zachs18 and others).

Misc:

   • Add an ‘.editorconfig’ file.

   • Convert our internal Python scripts to Python 3.

Examples:

   • ‘ex_draw_bitmap’ - Add more options.

Changes from 5.2.4 to 5.2.5 (February 2019)
*******************************************

The main developers this time were: Sebastian Krzyszkowiak, SiegeLord,
Elias Pschernig, Bruce Pascoe, Aldrik Ramaekers, Firat Salgur.

Core:

   • Try to identify bitmap format for unknown extensions.

   • Add some missing OpenGL 4.3 functions.

   • Add ‘al_create_thread_with_stacksize’ to create threads with a
     custom stack size.  (Aldrik Ramaekers)

   • Add ‘al_get_system_id’ function, letting you disambiguate platforms
     at runtime.

Graphics:

   • Add ‘al_get_monitor_dpi’ to query the DPI of a monitor.

   • Add new API for making blender a bitmap-local state (like
     transformations), which can simplify some code.  See
     ‘al_set_bitmap_blender’ and the related APIs.  Also see the
     ‘ex_blend_target’ example.

   • Added ‘al_transpose_transform’.  This is useful for rotation
     transformations.

   • Rework internal GLES support for better portability.

   • Don't force POT bitmaps on GLES.

   • Fix repeated bitmap locking on OpenGL.

Android:

   • Various documentation and other improvements (Christian Mauduit).

   • Fix OpenGL version reporting after display creation.

iOS:

   • Fix OpenGL version reporting after display creation.

Linux:

   • Improve linux joystick detections.

   • Fix a number of memory leaks/crashes in the audio addon when using
     pulseaudio/alsa.  (Julian Smythe)

   • Fix compilation with Mesa 18.2.5 and later.

   • Fix OpenGL version reporting after display creation (Edgar
     Reynaldo).

   • Fix requesting specific OpenGL versions via display options (Edgar
     Reynaldo).

OSX:

   • Make ‘al_get_monitor_info’ return the correct values for Retina
     displays.

   • Fix vsync on OSX 10.14+.

RaspberryPi:

   • Fix OpenGL version reporting after display creation.

Windows:

   • Fix toggling of menu checkboxes by id.

   • Fix ‘al_draw_indexed_primitive’ while using Direct3D.

   • Fix crash when passing ‘NULL’ display to
     ‘al_show_native_file_dialog’ while using
     ‘ALLEGRO_FILECHOOSER_FOLDER’.

   • Fix OpenGL version reporting after display creation (Edgar
     Reynaldo).

   • Fix requesting specific OpenGL versions via display options (Edgar
     Reynaldo).

SDL:

   • Sebastian Krzyszkowiak has spent a lot of effort to making the SDL
     backend usable as a nearly fully featured Allegro backend.  You can
     use it on platforms native Allegro implementations do not support
     (such as emscripten, etc.).

Addons:

   • Better logging when failing to load a resource.

   • Fix a memory leak when destroying a mixer with attached streams.

   • Fix a memory leak in the audio destroying a mixer with attached
     streams.

Acodec addon:

   • Allow modules to loop properly when the user hasn't specified loop
     points.  (Todd Cope)

Audio addon:

   • Better support for big endian.  (Douglas Mencken)

TTF addon:

   • Added support of HarfBuzz in FreeType (Arves100).

Documentation:

   • Source links now point to the correct commit on GitHub.

   • General improvements and clarifications.

Examples:

   • Add ‘ex_blend_target’.

Changes from 5.2.3 to 5.2.4 (February 2018)
*******************************************

The main developers this time were: Sebastian Krzyszkowiak, Elias
Pschernig, SiegeLord

Core:

   • Fix errors when reading/writing 0 byte buffers (Bruce Pascoe).

   • Re-initialize TLS when Allegro is installed (Issue #865).

   • Add ‘al_transform_coordinates_4d’.

   • Don't initialize the trace mutex multiple times (Issue #874).

   • Fix 3D (non-projection) transforms with ‘al_hold_bitmap_drawing’.

Raspberry Pi port:

   • Fix compilation on RPI.

Android port:

   • Remove limit on the working directory length.

   • Fix ‘ALLEGRO_MAXIMIZED’ flag.

   • Fix build with older Android NDKs.

   • Remove ‘glClear’ hack for Android 2.1.

Linux port:

   • Make compositor bypass configurable in X11, and bypass only when
     fullscreen by default.

OSX port:

   • Fix a few OSX retina scaling issues (Issue #851).

Audio addon:

   • Fix ALSA lag.

   • Add an option to use the desktop window when initializing
     DirectSound (Issue #877).

Font addon:

   • Add support for bmfont format.

Native dialog addon:

   • Resize the display on Windows when hiding/showing the menu (Issue
     #860).

   • Detect when ‘al_popup_menu’ fails to actually work under GTK (Issue
     #808).

   • Don't clear the top-level menu when destroying the popup menu.

Build system:

   • Don't link in libm on MSVC for DUMB (Issue #847).

   • Don't use the LOCATION property (Issue #847).

   • Don't use SYSTEM for DirectX includes.

   • Add hints for mingw-w64 path locations for DirectX includes/libs.

Python binding:

   • Fix the Python code-generation scripts to run under Python 2.

Lua binding:

   • Add script to generate LuaJIT C API for Allegro 5 (BQ).

Documentation:

   • Many improvements (Andreas Rönnquist, others)

Examples:

   • Add a texture to the skybox in ‘ex_camera’.

Changes from 5.2.2 to 5.2.3 (October 2017)
******************************************

The main developers this time were: Elias Pschernig, SiegeLord,
Sebastian Krzyszkowiak, Vitaliy V. Tokarev, Simon Naarmann, Bruno Félix
Rezende Ribeiro, Trent Gamblin).

Core:

   • Add ‘al_path_ustr’ (Bruce Pascoe).

   • Handle NULL sections more gracefully with the config API.

   • Add missing ‘glStencilMaskSeparate prototype’ (Aaron Bolyard).

   • Add ‘al_clear_keyboard_state’.

   • Don't add blank lines before config sections when writing them out.

   • Fix ‘fs_stdio_read_directory’ appending an extra slash.

   • Fix ‘al_set_window_constraints’ when the flag ALLEGRO_MAXIMIZED is
     set.

   • Fix ‘al_set_clipping_rectangle’ when out-of-bounds (Bruce Pascoe).

   • Enable blocked locking of S3TC formats unconditionally.

Raspberry Pi port:

   • Set default file interface when attempting to read
     /boot/config.txt.

Android port:

   • Replace the old build system that used deprecated tools with a new
     Gradle-based system.

   • Work around crashes on some Androids when an FBO is bound during
     ‘egl_SwapBuffers’.

   • Fix LocalRef leak when opening files using APK interface.

   • Remove -Wno-psabi switches from Toolchain-android.cmake.

Linux port:

   • Make three finger salute and LED toggle configurable.

   • Fix KEY_CHAR events under X11 with compose key enabled.

   • Fix clearing the ‘ALLEGRO_MAXIMIZED’ flag under X11.

   • Add ‘al_x_set_initial_icon’.

   • Free wm_hints in ‘set_initial_icon’.

   • Read Allegro system config from ~/.allegro5rc on Unix.

Windows port:

   • Make bitmap contents persist again after device loss.

   • Add large file support for MSVC.

   • Only test cooperative lavel if device is known to be lost.

   • Don't leak the ‘D3DEffect’ when attaching multiple sources.

   • Fix ‘al_get_monitor_info’ (Tobias Scheuer).

OSX port:

   • Various fixes for OSX 10.6.

   • Fix some Bluetooth mice on OS X (Tom Bass).

   • Fixed deprecation warning when starting OSX console app (Tom Bass).

   • Fix OSX magic main with the LTO switch (Evert Glebbeek).

Audio addon:

   • Allow setting the buffer size for ALSA.

   • Don't apply gain twice for sample instances and streams when pan is
     not ‘ALLEGRO_PAN_NONE’.

   • Disallow attaching mixers with different channel configurations.

   • Add ‘al_set_sample_instance_channel_matrix’ and
     ‘al_set_audio_stream_channel_matrix’.

   • Don't free the extra pointer in DirectSound if voice fails to play
     for some reason.

   • Add ‘al_lock_sample_id’ and ‘al_unlock_sample_id’.

   • For OpenAL, detach from buffers before deleting.

   • Return true when seeking mod audio streams.

Acodec addon:

   • Free audio stream buffer in flac_stream_close.

   • Add DUMB 2.0 support.

Color addon:

   • Add XYZ, xyY, Lab and LCH color spaces.

   • Remove "purwablue" named color, add "rebeccablue".

Native dialog addon:

   • Improve save dialogs under GTK driver.

   • Improved path behavior in GTK native file dialog ([bk]door.maus).

   • Enable ‘ALLEGRO_FILECHOOSER_FOLDER’ On Linux (Todd Cope).

   • Use unique ids to identify menu items internally, fixing their
     event sources.

   • Make the native message box return 2 on Windows when cancel is
     pressed.

Image addon:

   • Set compression level to ‘Z_DEFAULT_COMPRESSION’ in png saver by
     default.

   • Make PNG, JPEG compression level configurable.

   • Make PNG gamma value configurable.

   • Add WebP support with libwebp.

Video addon:

   • Allow calling ‘al_init_video_addon’ after ‘al_shutdown_video_addon’
     was called.

Build system:

   • Detect and link optional FreeType dependencies.

   • Add a CMake option to prefer static dependencies.

   • Fix SDL platform build.

Python binding:

   • Fix some corrupted regexps in the generation script (verderten).

Documentation:

   • Lots of improvements as usual (Edgar Reynaldo, Mark Oates, twobit).

Examples:

   • Fix various issues with ‘ex_curl’.

   • Fix memory leak in ‘ex_audio_simple’ (Rm Beer).

Changes from 5.2.1.1 to 5.2.2 (December 2016)
*********************************************

The main developers this time were: Trent Gamblin, SiegeLord, Elias
Pschernig.

Core:

   • Don't accumulate time in the timer while it is stopped.

   • Use dynamic OpenGL ES checks, so binaries produced on newer
     platforms don't crash on older ones.

   • Destabilize the OpenGL extensions API (BREAKING CHANGE!).

Raspberry Pi port:

   • Add various optimizations.

   • Fix ‘al_set_mouse_xy’ under X.

Android port:

   • Fix buffer overrun and memory leak in the clipboard support.

   • Add WANT_GLES3 to disable some of the newer features on platforms
     where they aren't supported.

   • Fix build in Android versions below 3.1.

   • Fix a crash when activity is destroyed/paused.

   • Allow building for android mips, arm64 and mips64.

   • Add ‘al_android_get_jni_env’ and ‘al_android_get_activity’ utility
     functions.

   • Update manifest files for newer Android versions.

Windows port:

   • Handle keyboard input properly when Ctrl is pressed (Tobias
     Scheuer).

Hurd port:

   • Define a fallback PATH_MAX (Andreas Rönnquist).

OSX port:

   • Clear window to black when going in/out of fullscreen.

   • Fix window centering when going out of FULLSCREEN_WINDOW mode.

   • Fix OSX 10.12 build.

   • Allow 32 bit builds on OSX (MarcusCalhoun-Lopez).

Build system:

   • Fix issues with building on GCC6 on Windows.

   • Fix source directory littering while configuring the Android build.

Python binding:

   • Add support Python 3 (Gabriel Queiroz).

Documentation:

   • Document the behavior of ‘al_set_target_bitmap’ with respect to
     transformations (Edgar Reynaldo).

   • Fix typo in ‘al_use_transform’ docs (Ryan Roden-Corrent).

Examples:

   • Add kerning to the ‘al_get_glyph’ example in ex_ttf.

   • Various fixes in ex_camera (Erich Erstu).

Changes from 5.2.1 to 5.2.1.1 (August 2016)
*******************************************

The main developers this time were: Trent Gamblin, SiegeLord.

Core:

   • Enforce backwards compatibility in the version check, rather than
     erroneously allowing forwards compatiblity.

   • Temporarily remove new extensions in ALLEGRO_OGL_EXT_LIST as that
     broke ABI compatibility.

OSX port:

   • Temporarily revert changes in joystick detection, as it did not
     interact well with some joysticks.

Windows port:

   • Fix the clear display to black right away to avoid an ugly white
     flash change.

Changes from 5.2.0 to 5.2.1 (July 2016)
***************************************

The main developers this time were: Elias Pschernig, Trent Gamblin,
SiegeLord, Ryan Roden-Corrent, Boris Carvajal and Peter Hull.

Core:

   • Optimize bitmap holding a bit (Bruce Pascoe).

   • Add ‘al_get/set_depth/samples’ (OpenGL only for now).

   • Optimize destruction performance when you have thousands of objects
     (e.g. sub-bitmaps).

   • Use low floating point precision for the OpenGL fragment shaders,
     which helps performance a lot on mobile platforms.

   • Don't stop and join the timer thread when stopping the last timer
     (prevents unnecessary delay in this situation on some platforms).

   • Add ‘al_backup_dirty_bitmap’ and ‘al_backup_dirty_bitmaps’ to more
     finely control when bitmap context backup is performed.

Android port:

   • Fix Android app issues when woken up during sleep.

   • Specify the Android toolchain file on the command line now.
     ANDROID_NDK_TOOLCHAIN_ROOT now has to be specified in an
     environment variable.

OSX port:

   • Improve joystick enumeration (Todd Cope).

   • Make ‘al_set_new_window_title’ work correctly.

   • Don't send duplicate mouse move events.

   • Fix mouse warping behavior.

   • Exit fullscreen mode if ALLEGRO_FULLSCREEN_WINDOW is set when
     destroying a display (otherwise if you destroy and recreate display
     without terminating the program, a white window kicks around).

iOS port:

   • Make it compile again.

   • Don't backup textures as it is unnecessary.

   • Update minimum iOS to version to 6.1.

   • Disable the native png loader in favor of libpng, as it is broken
     on Apple's end.

   • Create library when creating the archive.

Windows port:

   • Fix the D3D target bitmap bug.

   • Clear display to black right away to avoid an ugly white flash.

Raspberry Pi port:

   • Fix system cursor support.

Linux port:

   • Make ‘al_set_new_window_title’ work correctly.

Build system:

   • Use PROJECT_SOURCE_DIR and PROJECT_BINARY_DIR instead of
     CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR. This lets you use Allegro as
     a sub-project in your CMake project.

   • Fix GDIPlus finding in cmake-gui (Bruce Pascoe).

   • Add .gitignore and ignore build/ dir (Mark Oates).

   • Fix building examples with non-Allegro dependencies with the
     monolith build.

Documentation:

   • Various documentation updates (Daniel Johnson and others).

Other:

   • Add more ‘#include’ statements in Allegro headers, so it's easier
     to use them in isolation (Jordan Woehr).

   • Allow marking tests as being hardware only.

   • Prefix some private Allegro macros and types to not pollute the
     namespace.

   • Make set_shader_uniform api const-correct (Bruce Pascoe).

Audio addon:

   • Adjust loop end position when calling
     ‘al_set_sample_instance_length’.

Acodec addon:

   • Allow file-backed audio streams to be restarted after they finish.

   • Add Opus codec support.

Image addon:

   • Fail gracefully if not built with PNG/JPG loaders.

Native dialog addon:

Font addon:

   • Make ‘al_get_text_dimensions’ and ‘al_get_glyph_dimensions’ return
     exact bounding boxes (koro).

   • Add ‘ALLEGRO_GLYPH’ structure and ‘al_get_glyph’, allowing for some
     additional optimization when drawing fonts.

Examples:

   • Add more controls to ‘ex_audio_props’.

   • Add an example of using Enet with Allegro.

Changes from 5.1.13.1 to 5.2.0 (April 2016)
*******************************************

The main developers this time were: SiegeLord, Polybios, Mark Oates,
Elias Pschernig and Jonathan Seeley.

Core:

   • Add ‘al_is_event_source_registered’ (koro).

   • Make destructors log messages more meaningful.

   • Mouse emulation API for touch devices is now unstable.

   • Rename ‘al_convert_bitmaps’ to ‘al_convert_memory_bitmaps’.

Input:

   • Haptic API is now unstable.

Android port:

   • Fixed bogus display destruction on Android which previously caused
     zombie states.

OSX port:

   • Fix OSX mouse state position scaling.

   • Fix other various scaling issues.

   • Make toggling ALLEGRO_FRAMELESS work.

   • Fix an issue where fullscreen windows would occasionally leave
     empty space for the titlebar.

   • Fix incorrect debug assert in the audio addon.

Windows port:

   • Make Allegro apps DPI-aware by default, which means that they won't
     be scaled by the OS.

   • Fix compilation for the CPU detection code on some compilers.

   • Don't sync the D3D bitmap when locking with WRITE_ONLY.

   • Remove dsound.dll runtime loading.

   • Don't link xinput and d3dx9 libraries (they are still required at
     runtime though if you're using the relevant features).

   • Fix a bug where al_wait_for_event_timed can block despite 0 timeout
     (Aldo Nunez).

Build system:

   • Install PDB files when building with MSVC.

Documentation:

   • Fix source links for API entries with multi-line prototypes.

   • Make the readme look prettier on GitHub.

   • Tons of assorted documentation improvements, especially for the
     audio addon.

Other:

   • Add a stability system where some unstable APIs need to be opted
     into by defining ‘ALLEGRO_UNSTABLE’ before including Allegro
     headers.

Audio addon:

   • Fix sporadic deadlocks

   • Recorder API is now unstable.

Native dialog addon:

   • ‘al_toggle_menu_item_flags’ is now unstable.

TTF addon:

   • Add an option to pre-cache the glyphs, useful for platforms where
     the current algorithm is buggy (typically some Android devices).

Video addon:

   • Temporarily remove FFmpeg backend, as it was too buggy, didn't
     build and was too hard to fix.

Examples:

   • Make ‘ex_vsync’ less likely cause a seizure.

   • Make ‘ex_draw_bitmap’ and ‘ex_touch_input’ switch in/out on
     Android.

   • Add documentation to ‘ex_bitmap’ (Daniel Johnson).

   • Improve ‘ex_logo’ text entry experience.

