
This is a list of major changes in SDL's version history.

---------------------------------------------------------------------------
3.2.0:
---------------------------------------------------------------------------

General:
* SDL headers should now be included as `#include <SDL3/SDL.h>`
* M_PI is no longer defined in SDL_stdinc.h, now the symbols SDL_PI_D (double) and SDL_PI_F (float) are available
* SDL_GetWindowWMInfo() returns a standard int result code instead of SDL_bool, and takes SDL_SYSWM_CURRENT_VERSION as a new third parameter
* The preprocessor symbol __MACOSX__ has been renamed __MACOS__
* The preprocessor symbol __IPHONEOS__ has been renamed __IOS__
* The following macros have been renamed:
    * RW_SEEK_CUR -> SDL_RW_SEEK_CUR
    * RW_SEEK_END -> SDL_RW_SEEK_END
    * RW_SEEK_SET -> SDL_RW_SEEK_SET
* SDL_FreeWAV has been removed and calls can be replaced with SDL_free
* The following functions have been renamed:
    * SDL_AllocFormat => SDL_CreatePixelFormat
    * SDL_AllocPalette => SDL_CreatePalette
    * SDL_AudioStreamAvailable => SDL_GetAudioStreamAvailable
    * SDL_AudioStreamClear => SDL_ClearAudioStream
    * SDL_AudioStreamFlush => SDL_FlushAudioStream
    * SDL_AudioStreamGet => SDL_GetAudioStreamData
    * SDL_AudioStreamPut => SDL_PutAudioStreamData
    * SDL_FreeAudioStream => SDL_DestroyAudioStream
    * SDL_FreeFormat => SDL_DestroyPixelFormat
    * SDL_FreePalette => SDL_DestroyPalette
    * SDL_JoystickAttachVirtual => SDL_AttachVirtualJoystick
    * SDL_JoystickAttachVirtualEx => SDL_AttachVirtualJoystickEx
    * SDL_JoystickClose => SDL_CloseJoystick
    * SDL_JoystickCurrentPowerLevel => SDL_GetJoystickPowerLevel
    * SDL_JoystickDetachVirtual => SDL_DetachVirtualJoystick
    * SDL_JoystickEventState => SDL_GetJoystickEventState
    * SDL_JoystickFromInstanceID => SDL_GetJoystickFromInstanceID
    * SDL_JoystickFromPlayerIndex => SDL_GetJoystickFromPlayerIndex
    * SDL_JoystickGetAttached => SDL_IsJoystickConnected
    * SDL_JoystickGetAxis => SDL_GetJoystickAxis
    * SDL_JoystickGetAxisInitialState => SDL_GetJoystickAxisInitialState
    * SDL_JoystickGetButton => SDL_GetJoystickButton
    * SDL_JoystickGetDeviceGUID => SDL_GetJoystickDeviceGUID
    * SDL_JoystickGetDeviceInstanceID => SDL_GetJoystickDeviceInstanceID
    * SDL_JoystickGetDevicePlayerIndex => SDL_GetJoystickDevicePlayerIndex
    * SDL_JoystickGetDeviceProduct => SDL_GetJoystickDeviceProduct
    * SDL_JoystickGetDeviceProductVersion => SDL_GetJoystickDeviceProductVersion
    * SDL_JoystickGetDeviceType => SDL_GetJoystickDeviceType
    * SDL_JoystickGetDeviceVendor => SDL_GetJoystickDeviceVendor
    * SDL_JoystickGetFirmwareVersion => SDL_GetJoystickFirmwareVersion
    * SDL_JoystickGetGUID => SDL_GetJoystickGUID
    * SDL_JoystickGetGUIDFromString => SDL_GetJoystickGUIDFromString
    * SDL_JoystickGetGUIDString => SDL_GetJoystickGUIDString
    * SDL_JoystickGetHat => SDL_GetJoystickHat
    * SDL_JoystickGetPlayerIndex => SDL_GetJoystickPlayerIndex
    * SDL_JoystickGetProduct => SDL_GetJoystickProduct
    * SDL_JoystickGetProductVersion => SDL_GetJoystickProductVersion
    * SDL_JoystickGetSerial => SDL_GetJoystickSerial
    * SDL_JoystickGetType => SDL_GetJoystickType
    * SDL_JoystickGetVendor => SDL_GetJoystickVendor
    * SDL_JoystickInstanceID => SDL_GetJoystickInstanceID
    * SDL_JoystickIsVirtual => SDL_IsJoystickVirtual
    * SDL_JoystickName => SDL_GetJoystickName
    * SDL_JoystickNameForIndex => SDL_GetJoystickNameForIndex
    * SDL_JoystickNumAxes => SDL_GetNumJoystickAxes
    * SDL_JoystickNumButtons => SDL_GetNumJoystickButtons
    * SDL_JoystickNumHats => SDL_GetNumJoystickHats
    * SDL_JoystickOpen => SDL_OpenJoystick
    * SDL_JoystickPath => SDL_GetJoystickPath
    * SDL_JoystickPathForIndex => SDL_GetJoystickPathForIndex
    * SDL_JoystickRumble => SDL_RumbleJoystick
    * SDL_JoystickRumbleTriggers => SDL_RumbleJoystickTriggers
    * SDL_JoystickSendEffect => SDL_SendJoystickEffect
    * SDL_JoystickSetLED => SDL_SetJoystickLED
    * SDL_JoystickSetPlayerIndex => SDL_SetJoystickPlayerIndex
    * SDL_JoystickSetVirtualAxis => SDL_SetJoystickVirtualAxis
    * SDL_JoystickSetVirtualButton => SDL_SetJoystickVirtualButton
    * SDL_JoystickSetVirtualHat => SDL_SetJoystickVirtualHat
    * SDL_JoystickUpdate => SDL_UpdateJoysticks
    * SDL_MasksToPixelFormatEnum => SDL_GetPixelFormatEnumForMasks
    * SDL_NewAudioStream => SDL_CreateAudioStream
    * SDL_NumJoysticks => SDL_GetNumJoysticks
    * SDL_PixelFormatEnumToMasks => SDL_GetMasksForPixelFormatEnum
* Removed the following functions from the API, see docs/README-migration.md for details:
    * SDL_AudioInit()
    * SDL_AudioQuit()
    * SDL_CalculateGammaRamp()
    * SDL_CreateRGBSurface()
    * SDL_CreateRGBSurfaceFrom()
    * SDL_CreateRGBSurfaceWithFormat()
    * SDL_CreateRGBSurfaceWithFormatFrom()
    * SDL_GameControllerGetSensorDataWithTimestamp()
    * SDL_GetRevisionNumber()
    * SDL_GetWindowBrightness()
    * SDL_GetWindowGammaRamp()
    * SDL_RWFromFP()
    * SDL_SensorGetDataWithTimestamp()
    * SDL_SetWindowBrightness()
    * SDL_SetWindowGammaRamp()
    * SDL_VideoInit()
    * SDL_VideoQuit()
* Removed the following hints from the API, see docs/README-migration.md for details:
    * SDL_HINT_IDLE_TIMER_DISABLED
    * SDL_HINT_VIDEO_X11_FORCE_EGL
    * SDL_HINT_VIDEO_X11_XINERAMA
    * SDL_HINT_VIDEO_X11_XVIDMODE
* Renamed hints 'SDL_HINT_VIDEODRIVER' and 'SDL_HINT_AUDIODRIVER' to 'SDL_HINT_VIDEO_DRIVER' and 'SDL_HINT_AUDIO_DRIVER'
* Renamed environment variables 'SDL_VIDEODRIVER' and 'SDL_AUDIODRIVER' to 'SDL_VIDEO_DRIVER' and 'SDL_AUDIO_DRIVER'
* SDL_stdinc.h no longer includes stdio.h, stdlib.h, etc., it only provides the SDL C runtime functionality
* Added SDL_CreateSurface() and SDL_CreateSurfaceFrom() which replace the SDL_CreateRGBSurface*(), and can also be used to create YUV surfaces
* Removed unused 'flags' parameter from SDL_ConvertSurface and SDL_ConvertSurfaceFormat
* Removed 'SDL_GL_CONTEXT_EGL' from OpenGL configuration attributes
* SDL_GetTicks() now returns a 64-bit value and the tick values should be directly compared instead of using the SDL_TICKS_PASSED macro
* Added SDL_GetTicksNS() to return the number of nanoseconds since the SDL library initialized
* Added SDL_DelayNS() to specify a delay in nanoseconds, to the highest precision the system will support
* The timestamp member of the SDL_Event structure is now in nanoseconds, filled in with the time the event was generated, or the time it was queued if that's not available
* The `SDL_DISPLAYEVENT_*` and `SDL_WINDOWEVENT_*` events have been moved to top level events
* Intrinsic headers are no longer included in the public SDL headers
* The following enums have been renamed:
    * KMOD_ALT => SDL_KMOD_ALT
    * KMOD_CAPS => SDL_KMOD_CAPS
    * KMOD_CTRL => SDL_KMOD_CTRL
    * KMOD_GUI => SDL_KMOD_GUI
    * KMOD_LALT => SDL_KMOD_LALT
    * KMOD_LCTRL => SDL_KMOD_LCTRL
    * KMOD_LGUI => SDL_KMOD_LGUI
    * KMOD_LSHIFT => SDL_KMOD_LSHIFT
    * KMOD_MODE => SDL_KMOD_MODE
    * KMOD_NONE => SDL_KMOD_NONE
    * KMOD_NUM => SDL_KMOD_NUM
    * KMOD_RALT => SDL_KMOD_RALT
    * KMOD_RCTRL => SDL_KMOD_RCTRL
    * KMOD_RESERVED => SDL_KMOD_RESERVED
    * KMOD_RGUI => SDL_KMOD_RGUI
    * KMOD_RSHIFT => SDL_KMOD_RSHIFT
    * KMOD_SCROLL => SDL_KMOD_SCROLL
    * KMOD_SHIFT => SDL_KMOD_SHIFT
