
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_FillRect => SDL_FillSurfaceRect
    * SDL_FillRects => SDL_FillSurfaceRects
    * SDL_FreeAudioStream => SDL_DestroyAudioStream
    * SDL_FreeFormat => SDL_DestroyPixelFormat
    * SDL_FreePalette => SDL_DestroyPalette
    * SDL_FreeSurface => SDL_DestroySurface
    * SDL_GetClipRect => SDL_GetSurfaceClipRect
    * SDL_GetColorKey => SDL_GetSurfaceColorKey
    * SDL_HasColorKey => SDL_SurfaceHasColorKey
    * SDL_HasSurfaceRLE => SDL_SurfaceHasRLE
    * 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_LowerBlit => SDL_BlitSurfaceUnchecked
    * SDL_LowerBlitScaled => SDL_BlitSurfaceUncheckedScaled
    * SDL_MasksToPixelFormatEnum => SDL_GetPixelFormatEnumForMasks
    * SDL_NewAudioStream => SDL_CreateAudioStream
    * SDL_NumJoysticks => SDL_GetNumJoysticks
    * SDL_NumSensors => SDL_GetNumSensors
    * SDL_PixelFormatEnumToMasks => SDL_GetMasksForPixelFormatEnum
    * SDL_RenderCopy => SDL_RenderTexture
    * SDL_RenderCopyEx => SDL_RenderTextureRotated
    * SDL_RenderCopyExF => SDL_RenderTextureRotatedF
    * SDL_RenderCopyF => SDL_RenderTextureF
    * SDL_RenderDrawLine => SDL_RenderLine
    * SDL_RenderDrawLineF => SDL_RenderLineF
    * SDL_RenderDrawLines => SDL_RenderLines
    * SDL_RenderDrawLinesF => SDL_RenderLinesF
    * SDL_RenderDrawPoint => SDL_RenderPoint
    * SDL_RenderDrawPointF => SDL_RenderPointF
    * SDL_RenderDrawPoints => SDL_RenderPoints
    * SDL_RenderDrawPointsF => SDL_RenderPointsF
    * SDL_RenderDrawRect => SDL_RenderRect
    * SDL_RenderDrawRectF => SDL_RenderRectF
    * SDL_RenderDrawRects => SDL_RenderRects
    * SDL_RenderDrawRectsF => SDL_RenderRectsF
    * SDL_RenderGetClipRect => SDL_GetRenderClipRect
    * SDL_RenderGetIntegerScale => SDL_GetRenderIntegerScale
    * SDL_RenderGetLogicalSize => SDL_GetRenderLogicalSize
    * SDL_RenderGetMetalCommandEncoder => SDL_GetRenderMetalCommandEncoder
    * SDL_RenderGetMetalLayer => SDL_GetRenderMetalLayer
    * SDL_RenderGetScale => SDL_GetRenderScale
    * SDL_RenderGetViewport => SDL_GetRenderViewport
    * SDL_RenderGetWindow => SDL_GetRenderWindow
    * SDL_RenderIsClipEnabled => SDL_IsRenderClipEnabled
    * SDL_RenderSetClipRect => SDL_SetRenderClipRect
    * SDL_RenderSetIntegerScale => SDL_SetRenderIntegerScale
    * SDL_RenderSetLogicalSize => SDL_SetRenderLogicalSize
    * SDL_RenderSetScale => SDL_SetRenderScale
    * SDL_RenderSetVSync => SDL_SetRenderVSync
    * SDL_RenderSetViewport => SDL_SetRenderViewport
    * SDL_RenderTargetSupported => SDL_IsRenderTargetSupported
    * SDL_SensorClose => SDL_CloseSensor
    * SDL_SensorFromInstanceID => SDL_GetSensorFromInstanceID
    * SDL_SensorGetData => SDL_GetSensorData
    * SDL_SensorGetDeviceInstanceID => SDL_GetSensorDeviceInstanceID
    * SDL_SensorGetDeviceName => SDL_GetSensorDeviceName
    * SDL_SensorGetDeviceNonPortableType => SDL_GetSensorDeviceNonPortableType
    * SDL_SensorGetDeviceType => SDL_GetSensorDeviceType
    * SDL_SensorGetInstanceID => SDL_GetSensorInstanceID
    * SDL_SensorGetName => SDL_GetSensorName
    * SDL_SensorGetNonPortableType => SDL_GetSensorNonPortableType
    * SDL_SensorGetType => SDL_GetSensorType
    * SDL_SensorOpen => SDL_OpenSensor
    * SDL_SensorUpdate => SDL_UpdateSensors
    * SDL_SetClipRect => SDL_SetSurfaceClipRect
    * SDL_SetColorKey => SDL_SetSurfaceColorKey
    * SDL_UpperBlit => SDL_BlitSurface
    * SDL_UpperBlitScaled => SDL_BlitSurfaceScaled
* 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
