Releases: libsdl-org/SDL
2.30.10
This is a stable bugfix release, with the following changes:
- Improved the performance of whole surface fill operations
- Fixed an assertion when connecting/disconnecting over RDP
- Switched the default audio driver on Android to OpenSLES
- Added support for mouse wheel and extended buttons on PS Vita
- Fixed a rare crash on KMSDRM
2.30.9
This is a stable bugfix release, with the following changes:
- Fixed audio issues on Android 15
- Fixed rare audio distortion and crash when audio devices are changed on Windows
- Fixed the PS5 controller face buttons on Amazon Fire TV
- Fixed detecting the Steam Virtual Gamepad on macOS
- Added support for wired XBox controllers on macOS 15.0 Sequoia
- Added support for the Steam Virtual Gamepad on macOS Sequoia
- Fixed the Steam Virtual Gamepad from showing up when games aren't running under Steam
- Fixed flicker when entering/exiting fullscreen or moving the window between scaled and non-scaled displays under Wayland.
- Fixes for data addresses above 2gb on Emscripten
- Fixed horizontal mousewheel scale on Emscripten
3.1.6
This is an update to the SDL Stable ABI Preview.
As promised, this update maintains ABI compatibility with 3.1.3, and has lots of bug fixes as we head towards 3.2.0 release. In addition, this update adds the following functions:
- SDL_CalculateGPUTextureFormatSize
- SDL_CancelGPUCommandBuffer
- SDL_DelayPrecise
- SDL_GetSandbox
- SDL_RenderDebugText
- SDL_StepBackUTF8
Cheers!
3.1.3
Announcing the SDL 3.1.3 Stable ABI Preview!
We have lots of bugs to fix before the 3.2.0 stable release, but SDL 3.0 has been battle tested by millions of people in DOTA, CS2 and Steam, and is ready for your eyes!
We have many many people to thank on the road to get here, but I'd like to call out special thanks to:
- @slouken and @icculus, lead developers
- @flibitijibibo, @thatcosmonaut, and @TheSpydog, the GPU API team
- @1bsyl, @0x1F9F1, @Kontrabant, and @Semphriss, for general development and major contributions
- @madebr, our CMake wizard and build guru
- @smcv, for words of wisdom and sanity checks
- @sezero and @Sackzement, for dotting all our i's and crossing all our t's
... and literally hundreds of other people who have contributed feedback, pull requests, and bug reports, helping make SDL what it is today.
If you're migrating from SDL2, we've put a comprehensive list of changes and migration tips here:
https://github.com/libsdl-org/SDL/blob/main/docs/README-migration.md
Here are some of the highlights of what's new in SDL 3.0:
- Extremely good documentation: We've spent a ton of effort writing and revising the API reference.
- Example programs to get you started, running in your web browser!
- More consistent API naming conventions. Everything is named consistently across the API now, instead of different subsystems taking different approaches. Also, we've tended toward more descriptive names for things in SDL3.
- GPU API: access to modern 3D rendering and GPU compute in a cross-platform way.
- Dialog API: access to system file dialogs (file and folder selection UI for opening/saving).
- Filesystem API: simple directory management and globbing, access to topic-specific user folders.
- Storage API: Abstract interface to platform-specific storage.
- Camera API: access to webcams.
- Main Callbacks: optionally run your program from callbacks instead of main().
- Pen API: access to pens (like Wacom tablets and Apple Pencil, etc).
- Logical audio devices: different parts of an app can get their own unique audio device to use.
- Audio streams: handle buffering, converting, resampling, mixing, channel mapping, pitch, and gain. Bind to an audio device and go!
- Default audio devices: SDL3 will automatically manage migrating to new physical hardware as devices are plugged in, ripped out, or changed.
- Properties API: fast, flexible dictionaries of name/value pairs.
- Process API: Spawn child processes and communicate with them in various ways.
- Colorspace support: Surfaces and the renderer, etc, can manage multiple colorspaces.
- The Clipboard API can support any data type (SDL2 only handled text), and apps can provide data in multiple formats upon request in a provided callback.
- Better keyboard input, for all your keypress needs.
- Customizable virtual keyboards on iOS and Android.
- High DPI support is dramatically improved over SDL2.
- App metadata API for letting SDL report things about your app correctly (like in the About dialog on macOS, etc).
- Read/write thread locks, to let multiple threads access rarely-changing data in parallel.
- Init State to help with multiple threads that might need to initialize something on-demand without racing.
Please let us know what you think, and report any issues on GitHub:
https://github.com/libsdl-org/SDL/issues
2.30.8
This is a stable bugfix release, with the following changes:
- Fixed a crash in XInput code at startup
- Fixed flooding the OS with I/O when a PS4/PS5 controller is disconnected
- Added SDL_VIDEO_DOUBLE_BUFFER support to the Wayland backend
- SDL_WINDOWEVENT_EXPOSED is sent appropriately when using Wayland
- Fixed hang at startup in audio code when the application has large stack usage on Linux
- Fixed initializing KMSDRM on older Linux systems
- The pre-built SDL2.dll no longer depends on ucrtbase.dll
2.30.7
This is a stable bugfix release, with the following changes:
- Added support for the Retro-bit Controller in PS3 mode
- Fixed the cursor becoming visible when using relative mode under XWayland
- Fixed DRM initialization failure on some Linux systems
- Fixed a crash when the current mouse capture window is destroyed
2.30.6
This is a stable bugfix release, with the following changes:
- Improved detection of Nintendo Switch Pro controller report mode
- Fixed a rare crash when a controller is disconnected
- Fixed creating a framebuffer with KMSDRM on some systems
2.30.5
This is a stable bugfix release, with the following changes:
- Respect SDL_HINT_RENDER_DRIVER when creating an accelerated window surface
- Clean up any accelerated renderer in SDL_DestroyWindowSurface()
- Disable low level USB controller support on Android by default (can be enabled by setting "SDL_ENV.SDL_JOYSTICK_HIDAPI" metadata to "1" in AndroidManifest.xml)
- Fixed USB permissions dialog on Android 14
- Fixed controller mapping matching when one entry has a CRC specified and another doesn't
- Enable joystick support on FreeBSD when building using CMake
- Reduced input latency when using an fcitx IME on Linux
- Fixed graphical corruption on Raspberry Pi
- Fixed crash when using an unstable sort function in SDL_qsort (you shouldn't do this, but at least it won't crash)
2.30.4
This is a stable bugfix release, with the following changes:
- Android rotation will respect user rotation lock preferences
- Fixed spurious Left-Ctrl key input when the Right Alt key (AltGr) is pressed on Windows
- Added support for the Saitek Cyborg V.3 Rumble Pad in PS3 mode
- Added support for the Razer Kitsune in PS5 mode
- Added Linux bindings for the Qanba Drone 2 Arcade Joystick
- Leave Nintendo Online controllers in simple report mode so they work with DirectInput games
- Enable using libusb for GameCube controllers when available
2.30.3
This is a stable bugfix release, with the following changes:
- Fixed Win+V handling (pasting from clipboard history) on Windows
- Fixed Caps Lock and Backspace key mapping for the Colemak keyboard layout on Windows
- Fixed mouse warp on XWayland
- Reduced startup time when scanning for game controllers on Linux
- Fixed building with C89 compilers
- Fixed building with the GDK SDK on Windows