@ -229,3 +229,22 @@ It has been a long year of hard work to make raylib a solid technology to develo
notes on raylib 3.0
-------------------
After **10 months of intense development**, new raylib version is ready. Despite primary intended as a minor release, the [CHANGELIST](CHANGELOG) has grown so big and the library has changed so much internally that it finally became a major release. Library **internal ABI** has reveived a big redesign and review, targeting portability, integration with other platforms and making it a perfect option for other progamming [language bindings](BINDINGS.md). Welcome to **raylib 3.0**.
All **global variables** from the multiple raylib modules have been moved to a **global context state**, it has several benefits, first readability, memory management, it makes it easy to implement **hot-reloading** mechanisms for raylib.
All **memory allocations** on raylib and its dependencies have been moved to `RL_MALLOC`, `RL_FREE` and similar macros. Now the users can hook their own memory allocations mechanism having more control over memory allocated and used internally by the library. Additionally it makes it easier to port the library to embedded devices where memory control is critical.
All **I/O file accesses** from raylib are being moved to **memory data access**, now all I/O file access is centralized into just four functions: `LoadFileData()`, `SaveFileData()`, `LoadFileText()`, `SaveFileText()`. Users can just update those functions to any I/O file system. This change makes it easier to integrate raylib with **Virtual File Systems** or custom I/O file implementations.
All **raylib data structures** have been reviewed and optimized for pass-by-value usage. One of raylib distinctive design decisions is that most of its functions receive and return data by value. This design makes raylib really simple for newcomers, avoiding pointers and allowing complete access to all structures data in a simple way but data is copied on stack every function call, that copy could be costly so all raylib data structures have been optimized to **stay under 64 bytes** and optimize function calls.
`raudio` module has been internally reviewed to accomodate the new `Music` structure (converted from previous pointer format) and the module has been adapted to the highly improved [`miniaudio v0.10`](https://github.com/dr-soft/miniaudio).
`text` module reviewed to improve fonts generation and text management functions... -WIP-
Multiple new examples added and categorized examples table...
GitHub Actions CI implemented for Windows, Linux and macOS...