# raylib 5.0 — raylib v5.0 - Product: raylib (https://whatsnew.fyi/product/raylib) - Vendor: raysan5 - Date: 2023-11-18 - Version: 5.0 - Original notes: https://github.com/raysan5/raylib/releases/tag/5.0 - Permalink: https://whatsnew.fyi/product/raylib/releases/5.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add 35 new functions to raylib API - **added** — Add splines drawing and evaluation API supporting Linear, Basis, Catmull-Rom, Quadratic Bezier, and Cubic Bezier types - **added** — Add rprand pseudo-random number generator module implementing Xoshiro128** algorithm combined with SplitMix64 - **added** — Add SDL2 platform backend as an alternative to GLFW for desktop builds - **added** — Add Nintendo Switch platform backend support - **changed** — Redesign rcore module with platform-split architecture to improve platform maintenance and simplify addition of new platforms - **changed** — Review and redesign 60 functions in raylib API ![raylib50_banner_10th_anniversary_github](https://github.com/raysan5/raylib/assets/5766837/f71081d5-aeeb-4dff-8663-fe73f7b2831d) It's been **7 months** since latest raylib release and **10 years** since raylib 1.0 was officially released... what an adventure! In the last 10 years raylib has improved a lot, new functions have been added, many new features and improvements implemented, up to **500 contributors** have helped to shape the library as it is today. `raylib 5.0` is the final result of all this incredible amount of work and dedication. Here it is the summary with the key features and additions of this NEW major version of raylib. Some numbers for this release: - **+200** closed issues (for a TOTAL of **+1540**!) - **+550** commits since previous RELEASE (for a TOTAL of **+6950**!) - **+35** functions ADDED to raylib API (for a TOTAL of **552**!) - **+60** functions REVIEWED/REDESIGNED - **+80** new contributors (for a TOTAL of **+500**!) Highlights for `raylib 5.0`: - **`rcore` module platform-split**: Probably the biggest raylib redesign in the last 10 years. raylib started as a library targeting 3 desktop platforms: `Windows`, `Linux` and `macOS` (thanks to `GLFW` underlying library) but with the years support for several new platforms has been added (`Android`, `Web`, `Rapsberry Pi`, `RPI native`...); lot of the platform code was shared so the logic was all together on `rcore.c` module, separated by compilation flags. This approach was very handy but also made it very difficult to support new platforms and specially painful for contributors not familiar with the module, navigating +8000 lines of code in a single file. A big redesign was really needed but the amount of work required was humungus and quite scary for a solo-developer like me, moreover considering that everything was working and the chances to break things were really high. Fortunately, some contributors were ready for the task (@ubkp, @michaelfiber, @Bigfoot71) and thanks to their initiative and super-hard work, the `rcore` [platform split](https://github.com/raysan5/raylib/blob/master/src/platforms) has been possible! This new raylib architecture greatly improves the platforms maintenance but also greatly simplifies the addition of new platforms. A [`platforms/rcore_template.c`](https://github.com/raysan5/raylib/blob/master/src/platforms/rcore_template.c) file is provided with the required structure and functions to be filled for the addition of new platforms, actually it has been simplified to mostly filling some pre-defined functions: `InitPlatform()`, `ClosePlatform`, `PollInputEvents`... Undoubtely, **this redesign opens the doors to a new era for raylib**, letting the users to plug new platforms as desired. - **`NEW` Platform backend supported: SDL**: Thanks to the new `rcore` platform-split, the addition of new platforms/backends to raylib has been greatly simplified. As a proof of concept, [`SDL2`](https://libsdl.org/) platform backend has been added to raylib as an aternative for `GLFW` library for desktop builds: [`platforms/rcore_desktop_sdl`](https://github.com/raysan5/raylib/blob/master/src/platforms/rcore_desktop_sdl.c). Lot of work has been put to provide exactly the same features as the other platforms and carefully test the new implementation. Now `SDL2` fans can use this new backend, just providing the required include libraries on compilation and linkage (not included in raylib, like `GLFW`). `SDL` backend support also **eases the process of supporting a wider range of platforms** that already support `SDL`. - **`NEW` Platform backend supported: Nintendo Switch (closed source)**: The addition of the `SDL` backend was quite a challenge but to really verify the robustness and ease of the new platform plugin system, adding support for a console was a more demanding adventure. Surprisingly, only two days of work were required to add support for `Nintendo Switch` to raylib! Implementation result showed a _[Truncated at 4000 characters — full notes: https://github.com/raysan5/raylib/releases/tag/5.0]_