# Announcing the SDL 3 official release!

**URL:** <https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149>\
**Category:** SDL Announcements\
**Created:** [January 21, 2025, 7:32pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149 "2025-01-21T19:32:32Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [January 21, 2025, 7:32pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/1 "2025-01-21T19:32:32Z")

</div>

SDL 3.0 is finally here!

> **[Release 3.2.0 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.0)**
>
> Announcing the SDL 3 official release!
> SDL 3.0 is finally here!
> 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 d...

We have many many people to thank on the road to get here, but I’d like to call out special thanks to:

- [@slouken](https://github.com/slouken) and [@icculus](https://github.com/icculus), lead developers
- [@flibitijibibo](https://github.com/flibitijibibo), [@thatcosmonaut](https://github.com/thatcosmonaut), and [@TheSpydog](https://github.com/TheSpydog), the GPU API team
- [@1bsyl](https://github.com/1bsyl), [@0x1F9F1](https://github.com/0x1F9F1), [@Kontrabant](https://github.com/Kontrabant), and [@Semphriss](https://github.com/Semphriss), for general development and major contributions
- [@madebr](https://github.com/madebr), our CMake wizard and build guru
- [@smcv](https://github.com/smcv), for words of wisdom and sanity checks
- [@sezero](https://github.com/sezero) and [@Sackzement](https://github.com/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](https://wiki.libsdl.org/SDL3/APIByCategory): We’ve spent a ton of effort writing and revising the API reference.
- [Example programs](https://github.com/libsdl-org/SDL/tree/main/examples) to get you started, [running in your web browser](https://examples.libsdl.org/)!
- 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.
- [Main Callbacks](https://wiki.libsdl.org/SDL3/README/main-functions#main-callbacks-in-sdl3): optionally run your program from callbacks instead of main().
- [GPU API](https://wiki.libsdl.org/SDL3/CategoryGPU): access to modern 3D rendering and GPU compute in a cross-platform way.
- [Dialog API](https://wiki.libsdl.org/SDL3/CategoryDialog): access to system file dialogs (file and folder selection UI for opening/saving).
- [Filesystem API](https://wiki.libsdl.org/SDL3/CategoryFilesystem): simple directory management and globbing, access to topic-specific user folders.
- [Storage API](https://wiki.libsdl.org/SDL3/CategoryStorage): Abstract interface to platform-specific storage.
- [Camera API](https://wiki.libsdl.org/SDL3/CategoryCamera): access to webcams.
- [Pen API](https://wiki.libsdl.org/SDL3/CategoryPen): access to pens (like Wacom tablets and Apple Pencil, etc).
- [Logical audio devices](https://wiki.libsdl.org/SDL3/SDL_OpenAudioDevice): different parts of an app can get their own unique audio device to use.
- [Audio streams](https://wiki.libsdl.org/SDL3/SDL_CreateAudioStream): handle buffering, converting, resampling, mixing, channel mapping, pitch, and gain. Bind to an audio device and go!
- [Default audio devices](https://wiki.libsdl.org/SDL3/SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK): SDL3 will automatically manage migrating to new physical hardware as devices are plugged in, ripped out, or changed.
- [Properties API](https://wiki.libsdl.org/SDL3/CategoryProperties): fast, flexible dictionaries of name/value pairs.
- [Process API](https://wiki.libsdl.org/SDL3/CategoryProcess): Spawn child processes and communicate with them in various ways.
- [Colorspace support](https://wiki.libsdl.org/SDL3/SDL_Colorspace): Surfaces and the renderer, etc, can manage multiple colorspaces.
- The Clipboard API [can support any data type](https://wiki.libsdl.org/SDL3/SDL_SetClipboardData) (SDL2 only handled text), and apps can provide data in multiple formats upon request in [a provided callback](https://wiki.libsdl.org/SDL3/SDL_ClipboardDataCallback).
- [Better keyboard input](https://wiki.libsdl.org/SDL3/BestKeyboardPractices), for all your keypress needs.
- [Customizable virtual keyboards](https://wiki.libsdl.org/SDL3/SDL_StartTextInputWithProperties) on iOS and Android.
- High DPI support is dramatically improved over SDL2.
- [App metadata API](https://wiki.libsdl.org/SDL3/SDL_SetAppMetadata) for letting SDL report things about your app correctly (like in the About dialog on macOS, etc).
- and much, much more.

Please let us know what you think, and report any issues on GitHub:

> **[libsdl-org/SDL](https://github.com/libsdl-org/SDL/issues)**
>
> Simple DirectMedia Layer. Contribute to libsdl-org/SDL development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![sjr](https://discourse.libsdl.org/user_avatar/discourse.libsdl.org/sjr/32/5749_2.png) [@sjr](https://discourse.libsdl.org/u/sjr)\
**Post date:** [January 22, 2025, 7:03am UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/2 "2025-01-22T07:03:39Z")

</div>

This is fantastic news! Congratulations to @slouken, @icculus, and everyone else!

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [February 2, 2025, 1:39am UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/3 "2025-02-02T01:39:42Z")

</div>

Our first SDL3 update has been released!

> **[Release 3.2.2 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.2)**
>
> This is a stable bugfix release, with the following changes:
> 
> Fixed mouse motion while the mouse is grabbed on Linux
> Fixed audio gain not applying in some cases
> Fixed a potential crash when applyin...

We’re happy, this has been a very smooth release and this update is small with only a few important bug fixes.

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [February 7, 2025, 12:38am UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/4 "2025-02-07T00:38:53Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.4 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.4)**
>
> This is a stable bugfix release, with the following changes:
> 
> Fixed decoding 4-bit RLE encoded BMP files
> Fixed setting the position of X11 windows before they're shown
> Fixed D-Pad not working when ...

---

<div class="post-metadata">

**Author:** ![Mathias](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/m/bbe5ce/32.png) [@Mathias](https://discourse.libsdl.org/u/Mathias)\
**Post date:** [February 7, 2025, 4:39pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/5 "2025-02-07T16:39:00Z")

</div>

> Fixed setting the position of X11 windows before they’re shown

I just tried it with 3.2.4 and the developer version. In both cases the window pops up briefly in a different location before moving.  
Tested with Linux Mint 64bit and X11.

```auto
    SDL_init(SDL_INIT_VIDEO);
    win := SDL_CreateWindow('SDL3 Window', 640, 480, SDL_WINDOW_RESIZABLE);
    SDL_SetWindowPosition(win, 500, 500);    
    SDL_Log('Version: %s', SDL_GetRevision);    

```

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [February 7, 2025, 5:18pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/6 "2025-02-07T17:18:51Z")

</div>

The default state for newly created windows is shown, so it’s showing it with an initial position and then you’re moving it. If you want to create it hidden, add SDL\_WINDOW\_HIDDEN to your creation flags.

---

<div class="post-metadata">

**Author:** ![Mathias](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/m/bbe5ce/32.png) [@Mathias](https://discourse.libsdl.org/u/Mathias)\
**Post date:** [February 7, 2025, 6:21pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/7 "2025-02-07T18:21:16Z")

</div>

> The default state for newly created windows is shown, so it’s showing it with an initial position and then you’re moving it. If you want to create it hidden, add SDL\_WINDOW\_HIDDEN to your creation flags.

I’ve tried it with Hidden, but it still pops up briefly. If I add `SDL_Delay`, the window still pops up briefly in the wrong place, albeit delayed by a second.

```auto
    SDL_init(SDL_INIT_VIDEO);
    win := SDL_CreateWindow('SDL3 Window', 640, 480, SDL_WINDOW_RESIZABLE or SDL_WINDOW_HIDDEN);
    SDL_SetWindowPosition(win, 500, 500);
    SDL_Delay(1000);
    SDL_ShowWindow(win);
    SDL_Log('Version: %s', SDL_GetRevision);  

```

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [February 7, 2025, 10:07pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/8 "2025-02-07T22:07:41Z")

</div>

Go ahead and enter a bug report:

> **[libsdl-org/SDL](https://github.com/libsdl-org/SDL/issues)**
>
> Simple Directmedia Layer. Contribute to libsdl-org/SDL development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![Mathias](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/m/bbe5ce/32.png) [@Mathias](https://discourse.libsdl.org/u/Mathias)\
**Post date:** [February 8, 2025, 7:58am UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/9 "2025-02-08T07:58:55Z")

</div>

> Go ahead and enter a bug report:

> <https://github.com/libsdl-org/SDL/issues/12220>
>
> In the following test program, the window pops up briefly at the default locatio…n before jumping to the position specified with \`SDL\_SetWindowPosition\`. I only added the delay as a test to see if that was the cause.
> 
> \`\`\`c
> // gcc main.c -o main -lSDL3
> 
> \#include \<SDL3/SDL.h\>
> 
> int main(int argc, char \*argv\[\])
> {
> int quit = 0;
> SDL\_Window \*win = SDL\_CreateWindow("SDL3 Window", 640, 480, SDL\_WINDOW\_RESIZABLE | SDL\_WINDOW\_HIDDEN);
> SDL\_SetWindowPosition(win, 500, 500);
> SDL\_Delay(1000); // with test
> SDL\_ShowWindow(win);
> SDL\_Log("Version: %s", SDL\_GetRevision());  
> SDL\_Renderer \*renderer = SDL\_CreateRenderer(win, NULL);
> 
> while (!quit) {
> SDL\_Event ev;
> while (SDL\_PollEvent(&ev) != 0) {
> switch(ev.type) {
> case SDL\_EVENT\_QUIT:
> quit = 1;
> break;
> }
> }
> SDL\_SetRenderDrawColor(renderer, 20, 0, 0, 255);
> SDL\_RenderClear(renderer);
> 
> SDL\_RenderPresent(renderer);
> }
> 
> SDL\_DestroyRenderer(renderer);
> SDL\_DestroyWindow(win);
> SDL\_Quit();
> return 0;
> }
> \`\`\`

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [March 2, 2025, 3:28am UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/10 "2025-03-02T03:28:19Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.6 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.6)**
>
> This is a stable bugfix release, with the following changes:
> 
> Added support for Motion JPEG camera capture
> Allow 2D render targets to use logical presentation
> Ensure all drawing is completed before...

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [March 5, 2025, 4:01am UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/11 "2025-03-05T04:01:06Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.8 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.8)**
>
> This is a stable bugfix release, with the following changes:
> 
> Fixed restoring the desktop mode on macOS and X11
> Fixed being unable to get message box fonts on some Linux systems
> Fixed a potential c...

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [March 31, 2025, 8:52pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/12 "2025-03-31T20:52:08Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.10 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.10)**
>
> This is a stable bugfix release, with the following changes:
> 
> Added support for SDL\_PIXELFORMAT\_MJPG to SDL\_DuplicateSurface()
> Added SIMD blitters for 8888 to 8888 swizzled format conversion
> Return...

---

<div class="post-metadata">

**Author:** ![kayin](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/k/f08c70/32.png) [@kayin](https://discourse.libsdl.org/u/kayin)\
**Post date:** [April 20, 2025, 5:18pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/13 "2025-04-20T17:18:27Z")

</div>

Hey I just wanted to say thanks to all the SDL developers for this release.

I’ve been working on a game with SDL2 for almost a year now. Recently switched my rendering code from SDL Renderer to OpenGL, and when I did it created a pretty nasty fullscreen bug that happened only on some machines. Couldn’t figure it out for the life of me, so I figured I’d try and see if SDL3 has the same problem.

Migrating to SDL3 not only fixed my issue, but was also very easy to do. The new API changes are great, and I’ve noticed an improvement to my game’s startup speed (loading textures / fonts and packing them into a texture atlas is faster now).

So again, thanks for the hard work and for keeping SDL alive.

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [April 21, 2025, 7:08pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/14 "2025-04-21T19:08:18Z")

</div>

You’re welcome! Thanks for the kind words! 🙂

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [May 4, 2025, 5:55pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/15 "2025-05-04T17:55:40Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.12 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.12)**
>
> This is a stable bugfix release, with the following changes:
> 
> Fixed crash if SDL\_BlitSurfaceScaled() is used with a surface that has no pixels
> Removed timeout in SDL\_RunOnMainThread()
> Allow renderi...

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [May 14, 2025, 6:12pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/16 "2025-05-14T18:12:42Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.14 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.14)**
>
> This is a stable bugfix release, with the following changes:
> 
> Fixed crash querying the name of logical audio devices
> Fixed rare crash when rumbling controllers on Windows
> Fixed TLS related black sc...

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [June 2, 2025, 10:56pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/17 "2025-06-02T22:56:31Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.16 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.16)**
>
> This is a stable bugfix release, with the following changes:
> 
> Fixed a rare crash in SDL\_WaitEvent()
> Fixed entering fullscreen mode on some X11 window managers
> Fixed mouse click coordinates on macOS...

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [July 14, 2025, 6:46pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/18 "2025-07-14T18:46:35Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.18 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.18)**
>
> This is a stable bugfix release, with the following changes:
> 
> Added SDL\_PROP\_WINDOW\_CREATE\_CONSTRAIN\_POPUP\_BOOLEAN to support non-constrained and non-grabbing popups
> Fixed a crash in SDL\_GetAudioDe...

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [August 4, 2025, 6:52pm UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/19 "2025-08-04T18:52:22Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.20 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.20)**
>
> This is a stable bugfix release, with the following changes:
> 
> Fixed a crash when passing large invalid coordinates to SDL\_BlitSurfaceScaled()
> Fixed doubled mouse wheel events on X11
> Fixed doubled S...

---

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [September 2, 2025, 2:12am UTC](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149/20 "2025-09-02T02:12:10Z")

</div>

A minor update with bug fixes has been released:

> **[Release 3.2.22 · libsdl-org/SDL](https://github.com/libsdl-org/SDL/releases/tag/release-3.2.22)**
>
> This is a stable bugfix release, with the following changes:
> 
> Fixed fullscreen transition edge cases on Windows and macOS
> Fixed the dock occasionally showing on macOS when launching an SDL app
> Upda...

[Next page](https://discourse.libsdl.org/t/announcing-the-sdl-3-official-release/57149.md?page=2)
