Raylib-py

Latest version: v5.0.0

Safety actively analyzes 623983 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

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 an outstanding level of simplicity, with a **self-contained module** (`rcore_swith.cpp`) supporting graphics and inputs. Unfortunately this module can not be open-sourced due to licensing restrictions.

- **`NEW` Splines drawing and evaluation API**: A complete set of functions has been added to [draw](https://github.com/raysan5/raylib/blob/master/src/raylib.h#L1258) and [evaluate](https://github.com/raysan5/raylib/blob/master/src/raylib.h#L1270) different types of splines: `Linear`, `Basis`, `Catmull-Rom`, `Quadratic Bezier` and `Cubic Bezier`. Splines are extremely useful for game development (describe paths, control NPC movement...) but they can also be very useful on tools development (node-conections, elements-movement, 3d modelling, animations...). This was the missing feature on the raylib [`rshapes`](https://github.com/raysan5/raylib/blob/master/src/rshapes.h) module to make it complete! Note that `rshapes` module can also be used independently of raylib just providing the **only 6 functions required for vertex definition and drawing**.

- **`NEW` Pseudo-random numbers generator: rprand**: After several years of users asking for this missing piece, a brand new pseudo-random generator module has been added to raylib. [`rprand`](https://github.com/raysan5/raylib/blob/master/src/external/rprand.h) implements the `Xoshiro128**` algorithm combined with `SplitMix64`, specially suited for **fast software pseudo-random numbers generation**. The module also implies some useful functions to generate non-repetitive random numbers sequences, functionality exposed by raylib. usage of this module can be controlled by a compilation flag, in case the default libc `rand()` function was preferred.

- **`NEW` Automation Events System API**: This new system was first added in `raylib 4.0` as an experimental feature but it was a bit clumsy and there was no API exposed to users. For the new `raylib 5.0` the system has been redesigned and [proper API](https://github.com/raysan5/raylib/blob/master/src/raylib.h#L1135) added for the users. With this new events automation system, users can **record input events for later replay**, very useful feature for testing automation, tutorials generation, assisted game playing, in-game cinematics, speedruns saving or even AI assited game playing!

- **`NEW` [`raygui 4.0`](https://github.com/raysan5/raygui)**: The **official raylib immediate-mode gui library** designed for tools development has been updated to a new version, aligned with raylib 5.0. This new version is a complete redesign of raygui to unify all controls structure and usage, now all controls have the same function signature!. `raygui` has been battle-tested with the development of +12 published tools in the last few years. The tools can be seen and used for free in the [raylib technologies tools page](https://raylibtech.itch.io/). Worth mentioning that several of those **tools have been open sourced** for anyone to use, compile, contribute or learn how the code works.

- **`NEW` raylib web examples functionality**: Beside the addition of several new examples, the web examples functionality has been improved. Examples have been organized by [complexity level](https://www.raylib.com/examples.html), marked with one star for simple examples and up to 4 stars for more complex ones. A new option has been added to web to allow to **filter examples by function-name** usage, to ease the learning process when looking for an usage example of some function. Finally, **open-graph metadata** information has been added to all examples individual webpages, improving a the visuals and information when sharing those webpages on social networks, sharing the example screenshot and details.

As always, those are only some highlights of the new `raylib 5.0` but there is many more improvements! Support for 16-bit HDR images/textures, SVG loading and scaling support, new OpenGL ES 3.0 graphic backend, new image gradient generators, sound alias loading, improved 3d models loading, multiple optimizations, new bindings, CodeQL integration and much more!

Make sure to check raylib [CHANGELOG]([CHANGELOG](https://github.com/raysan5/raylib/blob/master/CHANGELOG)) for a detailed list of changes!

Undoubtely, this is the **biggest raylib update in 10 years**. Many new features and improvements with a special focus on maintainabiliy and long-term sustainability. **Undoubtely, this is the raylib of the future**.

**Enjoy programming!** :)


changelog
---------

Current Release: raylib 5.0 (18 November 2023)

-------------------------------------------------------------------------
Release: raylib 5.0 - 10th Anniversary Edition (18 November 2023)
-------------------------------------------------------------------------
KEY CHANGES:
- REDESIGNED: rcore module platform-split, by ubkp, michaelfiber, Bigfoot71, raysan5
- ADDED: New platform backend supported: SDL
- ADDED: New platform backend supported: Nintendo Switch (closed source)
- ADDED: New Splines drawing and evaluation API
- ADDED: New pseudo-random numbers generator: rprand
- ADDED: Automation Events System API
- UPDATED: raygui 4.0: New version of this immediate-mode gui system for tools development with raylib

Detailed changes:
[rcore] ADDED: RAYLIB_VERSION_* values to raylib.h (2856) by RobLoach
[rcore] ADDED: IsKeyPressedRepeat() on PLATFORM_DESKTOP (3245) by actondev
[rcore] ADDED: SetWindowTitle() for PLATFORM_WEB (3222) by VitusVeit
[rcore] ADDED: FLAG_WINDOW_RESIZABLE for web (3305) by Peter0x44
[rcore] ADDED: SetWindowMaxSize() for desktop and web (3309) by ubkp
[rcore] ADDED: SetMouseCursor() for PLATFORM_WEB (3414) by BeardedBread
[rcore] ADDED: LoadRandomSequence()/UnloadRandomSequence() by raysan5
[rcore] REMOVED: PLATFORM_RPI (3232) by michaelfiber
[rcore] REVIEWED: GetFileLength(), added comment (3262) by raysan5
[rcore] REVIEWED: Default shaders precission issue on PLATFORM_WEB (3261) by branc116
[rcore] REVIEWED: IsKey*() key validation checks (3256) by n77y
[rcore] REVIEWED: SetClipboardText() for PLATFORM_WEB (3257) by ubkp
[rcore] REVIEWED: Check if Ctrl modifier is among the currently set modifiers (3230) by mohad12211
[rcore] REVIEWED: Android app black screen when reopening by Bigfoot71
[rcore] REVIEWED: Warnings when casting int to floats (3218) by JeffM2501
[rcore] REVIEWED: GetCurrentMonitor() detection inconsistency issue (3215) by ubkp
[rcore] REVIEWED: SetWindowMonitor() to no longer force fullscreen (3209) by ubkp
[rcore] REVIEWED: Fix mouse wheel not working in PLATFORM_RPI or PLATFORM_DRM (3193) by ubkp
[rcore] REVIEWED: GetMonitorName() description (3184) (3189) by danilwhale
[rcore] REVIEWED: BeginScissorMode(), identify rendering to texture (3510) by gulrak
[rcore] REVIEWED: Window flags order (3114) by lesleyrs
[rcore] REVIEWED: Full movement for right analog stick (3095) by PixelPhobicGames
[rcore] REVIEWED: Fix Android app freeze after calling CloseWindow() (3067) by Bigfoot71
[rcore] REVIEWED: Lazy loading of default font used on image drawing (no InitWindow) by raysan5
[rcore] REVIEWED: Minor tweaks to raylib events automation system raysan5
[rcore] REVIEWED: GetCurrentMonitor() bugfix (3058) by hamyyy
[rcore] REVIEWED: Update CORE.Input.Touch.pointCount (3024) by raysan5
[rcore] REVIEWED: Mouse offset and scaling must be considered also on web!
[rcore] REVIEWED: CompressData(), possible stack overflow
[rcore] REVIEWED: GetWorldToScreenEx() (3351) by Brian-ED
[rcore] REVIEWED: Fix GetMouseDelta() issue for Android (3404) by Bigfoot71
[rcore] REVIEWED: GetFPS(), reset FPS averages when window is inited (3445) by JeffM2501
[rcore] REVIEWED: GetCurrentMonitor(), check window center position by M374LX
[rcore] REVIEWED: GetRender*() issue on macOS highDPI (3367) by raysan5
[rcore] REVIEWED: ScanDirectoryFiles*(), paths building slashes sides (3507)
[rlgl] ADDED: Experimental support for OpenGL ES 3.0 by raysan5
[rlgl] ADDED: Support 16-Bit HDR textures (3220) by Not-Nik
[rlgl] ADDED: rlEnablePointMode() (3490) by JettMonstersGoBoom
[rlgl] ADDED: rlBlitFramebuffer(), required for deferred render
[rlgl] REVIEWED: LoadModel(), removed cube fallback mechanism (3459)
[rlgl] REVIEWED: Improved support for ES3/WebGL2 (3107) by chemaguerra
[rlgl] REVIEWED: OpenGL 2.1 half floats support as part of an extension by Not-Nik
[rlgl] REVIEWED: Avoid shader attribute not found log by raysan5
[rlgl] REVIEWED: Avoid tracelog about not found uniforms (3003) by raysan5
[rlgl] REVIEWED: rLoadTexture() UBSAN complaints 1891 (3321) by Codom
[rlgl] REVIEWED: glInternalFormat as unsigned int
[rlgl] REVIEWED: OpenGL ES 3.0 support
[rshapes] ADDED: Spline drawing functions by raysan5
[rshapes] ADDED: GetSplinePoint*() functions for spline evaluation by raysan5
[rshapes] ADDED: DrawCircleLinesV() for consistency (3452) by Peter0x44
[rshapes] REVIEWED: DrawSplineCatmullRom() by raysan5
[rshapes] REVIEWED: Minor fix in DrawLineBezier* (3006) by eternalStudent
[rshapes] REVIEWED: GetCollisionRec(), more performant (3052) by manuel5975p
[rshapes] REVIEWED: Fix off-by-one error in CheckCollisionPointRec() (3022) by dbechrd
[rtextures] ADDED: Basic SVG loading support (2738) by bXi
[rtextures] ADDED: Support 16-Bit HDR textures (3220) by Not-Nik
[rtextures] ADDED: ExportImageToMemory() by raysan5
[rtextures] ADDED: ImageRotate() (3078) by danemadsen
[rtextures] ADDED: GenImageGradientSquare() (3077) by danemadsen
[rtextures] ADDED: GenImageLinearGradient() by danemadsen
[rtextures] REMOVED: GenImageGradientH() and GenImageGradientV() by danemadsen
[rtextures] REVIEWED: LoadImageSvg() by raysan5
[rtextures] REVIEWED: Uninitialized thread-locals in stbi (3282) (3283) by jbarthelmes
[rtextures] REVIEWED: ImageDrawRectangleRec(), validate drawing inside bounds by JeffM2501
[rtextures] REVIEWED: LoadTextureCubemap() for manual layouts (3204) by Not-Nik
[rtextures] REVIEWED: Optimization of ImageDrawRectangleRec() (3185) by smalltimewizard
[rtextures] REVIEWED: ImageRotate() formatting by raysan5
[rtextures] REVIEWED: GenImagePerlinNoise(), clamp values (3071) by raysan5
[rtextures] REVIEWED: Packing logic error in GenImageFontAtlas() (2979) by hanaxar
[rtextures] REVIEWED: Calculate exact image size in GenImageFontAtlas() (2963) by hanaxar
[rtextures] REVIEWED: ImageDrawRectangleRec() (3027) by raysan5
[rtextures] REVIEWED: ImageDraw() source clipping when drawing beyond top left (3306) by RobLoach
[rtextures] REVIEWED: UnloadRenderTexture(), additional checks
[rtextures] REVIEWED: Fixed compressed DDS texture loading issues (3483) by JaanDev
[rtext] ADDED: Font altas white rectangle and flag SUPPORT_FONT_ATLAS_WHITE_REC by raysan5
[rtext] ADDED: SetTextLineSpacing() to define line breaks text drawing spacing by raysan5
[rtext] RENAMED: LoadFont*() parameter names for consistency and coherence by raysan5
[rtext] REVIEWED: GetCodepointCount(), ignore unused return value of GetCodepointNext by ashn-dot-dev
[rtext] REVIEWED: TextFormat() warn user if buffer overflow occured (3399) by Murlocohol
[rtext] REVIEWED: TextFormat(), added "..." for truncation (3366) by raysan5
[rtext] REVIEWED: GetGlyphIndex() (3000) by raysan5
[rtext] REVIEWED: GetCodepointNext() to return default value by chocolate42
[rtext] REVIEWED: TextToPascal() issue when first char is uppercase
[rmodels] ADDED: ModelAnimation.name field, initially with GLTF animation names by alfredbaudisch
[rmodels] REDESIGNED: LoadOBJ(), avoid mesh splitting by materials, fix (3398) by raysan5
[rmodels] REVIEWED: Support .vox model files version 200 (3097) by Bigfoot71
[rmodels] REVIEWED: Materials loading (3126) raysan5
[rmodels] REVIEWED: DrawBillboardPro() to allow source of negative size (3197) by bohonghuang
[rmodels] REVIEWED: glTF loading segfault in animNormals memcpy by charles-l
[rmodels] REVIEWED: LoadModelAnimationsGLTF(), free fileData after use (3065) by crynux
[rmodels] REVIEWED: GenMeshCubicmap(), correction of values (3032) by Bigfoot71
[rmodels] REVIEWED: DrawMesh() to avoid UBSAN complaining (1891)
[rmodels] REVIEWED: GenMeshPlane() when resX != resZ (3425) by neyrox, s-yablonskiy
[rmodels] REVIEWED: GetModelBoundingBox() (3485)
[raudio] ADDED: LoadSoundAlias() by JeffM2501
[raudio] ADDED: Missing structure on standalone mode (3160) by raysan5
[raudio] ADDED: GetMasterVolume() (3434) by rexim
[raudio] REVIEWED: Comments about sample format to AttachAudioStreamProcessor() (3188) by AlbertoGP
[raudio] REVIEWED: Documented buffer format for audio processors (3186) by AlbertoGP
[raudio] REVIEWED: ExportWaveAsCode() file saving by RadsammyT
[raudio] REVIEWED: Fix warning on discarded const qualifier (2967) by RobLoach
[raudio] REVIEWED: Move mutex initialization before ma_device_start() (3325) by Bigfoot71
[raudio] REVIEWED: Fix UpdateSound() parameter name (3405) by KislyjKisel
[raudio] REVIEWED: Fix QOA seeking (3494) by veins1
[rcamera] REVIEWED: File-macros for consistency (3161) by raysan5
[rcamera] REVIEWED: Support analog stick camera controls (3066) by PixelPhobicGames
[rcamera] REVIEWED: CameraMoveToTarget(), ensure distance is greater than 0 (3031) by kolunmi
[rcamera] REVIEWED: Exposing rcamera functions to the dll (3355) by JeffM2501
[raymath] ADDED: Vector3Projection() and Vector3Rejection() (3263) by Dial0
[raymath] ADDED: EPSILON macro to each function requiring it (3330) by Brian-ED
[raymath] REVIEWED: Usage of 'sinf()' and 'cosf()' to be correct (3181) by RokasPuzonas
[raymath] REVIEWED: Slightly optimized Vector3Normalize() (2982) by RicoP
[raymath] REVIEWED: Comment to clarify raymath semantics by raysan5
[raymath] REVIEWED: Comment about Matrix conventions by raysan5
[raymath] REVIEWED: Vector2Angle() and Vector2LineAngle() (3396) by Murlocohol
[rgestures] REVIEWED: Optimize and simplify the gesture system (3190) by ubkp
[rgestures] REVIEWED: GESTURE_DRAG and GESTURE_SWIPE_* issues (mostly) for web (3183) by ubkp
[rgestures] REVIEWED: Touch pointCount for web (3163) by ubkp
[rgestures] REVIEWED: IsGestureDetected() parameter type
[utils] ADDED: Security checks to file reading (memory allocations) by raysan5
[utils] REVIEWED: LoadFileData() potential issues with dataSize
[examples] ADDED: shaders_lightmap (3043) by nullstare
[examples] ADDED: core_2d_camera_split_screen (3298) by gabrielssanches
[examples] ADDED: LoadSoundAlias() usage example (3223) by JeffM2501
[examples] ADDED: textures_tiling (3353) by luis605
[examples] ADDED: shader_deferred_render (3496) by 27justin
[examples] RENAMED: 2d_camera examples for consistency
[examples] REVIEWED: Text examples SetTextLineSpacing() to multiline examples by raysan5
[examples] REVIEWED: examples/shapes/shapes_collision_area.c help instructions (3279) by asdqwe
[examples] REVIEWED: examples/shaders/shaders_texture_outline.c help instructions (3278) by asdqwe
[examples] REVIEWED: examples/others/easings_testbed.c help instructions and small twe… by asdqwe
[examples] REVIEWED: example/audio/audio_module_player.c help instructions and small b… by asdqwe
[examples] REVIEWED: example/models/models_loading_m3d.c controls (3269) by asdqwe
[examples] REVIEWED: example/models/models_loading_gltf.c controls (3268) by asdqwe
[examples] REVIEWED: text_unicode.c example crashing (3250) by ubkp
[examples] REVIEWED: rlgl_standalone.c compilation issue (3242) by ubkp
[examples] REVIEWED: core_input_gestures for Web (3172) by ubkp
[examples] REVIEWED: core_input_gamepad (3110) by iacore
[examples] REVIEWED: examples using raygui to raygui 4.0 by raysan5
[examples] REVIEWED: Julia set shader example (3467) by joshcol9232
[build] ADDED: CMake option for SUPPORT_CUSTOM_FRAME_CONTROL (3221) by ubkp
[build] ADDED: New BORDERLESS_WINDOWED_MODE for PLATFORM_DESKTOP (3216) by ubkp
[build] ADDED: New examples to VS2022 solution by raysan5
[build] REVIEWED: Updated Makefile and Makefile.Web, include new examples
[build] REVIEWED: Fix CMake extraneous -lglfw (3266) by iacore
[build] REVIEWED: Add missing cmake options (3267) by asdqwe
[build] REVIEWED: Match CMakeOptions.txt options default values (3258) by asdqwe
[build] REVIEWED: Add build.zig options for individual modules (3254) by actondev
[build] REVIEWED: build.zig to work with cross-compiling (3225) by yujiri8
[build] REVIEWED: Makefile build on PLATFORM_ANDROID, soname (3211) by ndytts
[build] REVIEWED: src/Makefile, fix misleading indentation (3202) by ashn-dot-dev
[build] REVIEWED: build.zig: Support for building with PLAFORM_DRM (3191) by jakubvf
[build] REVIEWED: Update CMakeOptions.txt by raysan5
[build] REVIEWED: fix: cmake option "OPENGL_VERSION" doesn't work (3170) by royqh1979
[build] REVIEWED: Add error if raylib.h is included in a C++98 program (3093) by Peter0x44
[build] REVIEWED: Cross compilation for PLATFORM_DRM (3091) by TheLastBilly
[build] REVIEWED: build.zigm fixed cross-compiling from Linux (3090)by yujiri8
[build] REVIEWED: Enhanced cmake part for OpenBSD (3086) by rayit
[build] REVIEWED: Fixed compile on OpenBSD (3085)by rayit
[build] REVIEWED: CMake project example: fix a couple of typos (3014) by benjamin-thomas
[build] REVIEWED: Fix warnings in raylib for MSVC (3004) by JeffM2501
[build] REVIEWED: Update cmake example project (3062) by lesleyrs
[build] REVIEWED: Update build.zig be be able to build with current zig master (3064) by ryupold
[build] REVIEWED: VSCode project template (3048) by Shoozza
[build] REVIEWED: Fixed broken build.zig files. Now works with latest stable compiler (… by Gamer-Kold
[build] REVIEWED: Fix missing symbol when rglfw.c on BSD platforms (2968) by Koromix
[build] REVIEWED: Update Makefile comment to indicate arm64 as a supported Linux deskto… ashn-dot-dev
[build] REVIEWED: Update Makefile : clean raygui.c & physac.c (3296) by SuperUserNameMan
[build] REVIEWED: Update webassembly.yml and linux.yml
[build] REVIEWED: Update zig build system to zig version 0.11.0 (3393) by purple4pur
[build] REVIEWED: Fix for latest zig master (3037) by star-tek-mb
[build] REVIEWED: Examples Makefile to use Makefile.Web when building for web (3449) by keithstellyes
[build] REVIEWED: build.zig updates for 0.11.0 release. (3501) by cabarger
[build] REVIEWED: Support OpenGL ES 3.0 building on Web platform
[build] REVIEWED: Fix warnings in Visual Studio (3512) by JeffM2501
[build] REVIEWED: OpenGL ES 3.0 flags on CMakeOptions (3514) by awfulcooking
[bindings] ADDED: fortran-raylib
[bindings] ADDED: raylib-raku to bindings (3299) by vushu
[bindings] ADDED: claw-raylib to BINDINGS.md (3310) by bohonghuang
[bindings] ADDED: vaiorabbit/raylib-bindings (3318) by wilsonsilva
[bindings] ADDED: TurboRaylib (3317) by turborium
[bindings] ADDED: raylib-ffi to bindings list (3164) by ewpratten
[bindings] ADDED: raylib-pkpy-bindings (3361) by blueloveTH
[bindings] ADDED: Raylib.lean to BINDINGS.md (3409) by KislyjKisel
[bindings] UPDATED: BINDINGS.md (3217) by joseph-montanez
[bindings] UPDATED: BINDINGS.md to include rayjs (3212) by mode777
[bindings] UPDATED: latest h-raylib version (3166) by Anut-py
[bindings] UPDATED: bindbd-raylib3 to raylib 4.5 (3157) by o3o
[bindings] UPDATED: Janet bindings supported version update (3083)by archydragon
[bindings] UPDATED: BINDINGS.md (raylib-py -> 4.5) (2992) by overdev
[bindings] UPDATED: BINDINGS.md (raylib-lua -> 4.5) (2989) by TSnake41
[bindings] UPDATED: raylib-d binding version to 4.5 (2988) by schveiguy
[bindings] UPDATED: raylib-freebasic to 4.5 (2986) by WIITD
[bindings] UPDATED: BINDINGS.md (2983) by jarroddavis68
[bindings] UPDATED: BINDINGS.md for raylib Odin 4.5 (2981) by gingerBill
[bindings] UPDATED: BINDINGS.md (2980) by GuvaCode
[bindings] UPDATED: BINDINGS.md (3002) by fubark
[bindings] UPDATED: BINDINGS.md (3053) by JupiterRider
[bindings] UPDATED: BINDINGS.md (3050) by Its-Kenta
[bindings] UPDATED: CL bindings version (3049) by shelvick
[bindings] UPDATED: BINDINGS.md (3026) by ChrisDill
[bindings] UPDATED: BINDINGS.md (3023) by sDos280
[bindings] UPDATED: BINDINGS.md (3017) by Soutaisei
[bindings] UPDATED: Various versions to 4.5 (2974) by RobLoach
[bindings] UPDATED: raylib.zig version to 4.5 (2971) by ryupold
[bindings] UPDATED: h-raylib version (2970) by Anut-py
[bindings] UPDATED: Factor's raylib binding to v4.5 (3350) by WraithGlade
[bindings] UPDATED: raylib-ocaml bindings to 4.5 version (3322) by tjammer
[bindings] UPDATED: Jaylib binding (3508) by glowiak
[external] UPDATED: sdefl and sinfl DEFLATE compression libraries by raysan5
[external] UPDATED: miniaudio v0.11.12 --> v0.11.19 by raysan5
[external] UPDATED: rl_gputex.h compressed images loading library by raysan5
[external] UPDATED: Replaced stb_image_resize.c by stb_image_resize2.h (3403) by BabakSamimi
[external] UPDATED: qoi and qoa libraries
[external] UPDATED: stb libraries (required ones)
[external] UPDATED: cgltf and m3d libraries
[external] REVIEWED: msf_gif.h, some warnings
[external] REVIEWED: sinfl external library to avoid ASAN complaints (3349) by raysan5
[misc] ADDED: New task point to issue template about checking the wiki (3169) by ubkp
[misc] ADDED: CodeQL for static code analysis (3476) by b4yuan
[misc] REVIEWED: Update FAQ.md by raysan5
[misc] REVIEWED: Potential code issues reported by CodeQL (3476)
[misc] REVIEWED: Fix a link in the FAQ (3082)by jasonliang-dev
[misc] REVIEWED: New file formats to FAQ (3079) by Luramoth
[misc] REVIEWED: Make assets loading extension case insensitive 3008 by raysan5
[misc] REVIEWED: Updated web shells open-graph info by raysan5

-------------------------------------------------------------------------
Release: raylib 4.5 (18 March 2023)
-------------------------------------------------------------------------
KEY CHANGES:
- ADDED: Improved ANGLE support on Desktop platforms
- ADDED: rcamera module, simpler and more extendable
- ADDED: Support for M3D models and M3D/GLTF animations
- ADDED: Support QOA audio format (import/export)
- ADDED: rl_gputex module for compressed textures loading
- REDESIGNED: rlgl module for automatic render-batch limits checking
- REDESIGNED: rshapes module to minimize the rlgl dependency

Detailed changes:
[core] ADDED: RAYLIB_VERSION_* values to raylib.h (2856) by RobLoach
[core] ADDED: Basic gamepad support for Android (2709) by deniska
[core] ADDED: Support CAPS/NUM lock keys registering if locked
[core] ADDED: _GNU_SOURCE define on Linux (2729)
[core] ADDED: SetWindowIcons() to set multiple icon image sizes
[core] `WARNING`: RENAMED: Exported raylib version symbol to raylib_version 2671
[core] REMOVED: Touch points on touch up events on Android (2711) by deniska
[core] REVIEWED: Window position setup on InitWindow() (2732) by RandomErrorMessage
[core] REVIEWED: Touchscreen input related functions on Android (2702) by deniska
[core] REVIEWED: Viewport scaling on Android after context rebind (2703) by deniska
[core] REVIEWED: ScanDirectoryFilesRecursively() (2704)
[core] REVIEWED: Gamepad mappings with latest gamecontrollerdb (2725)
[core] REVIEWED: Monitor order check on app initialization
[core] REVIEWED: Application monitor when opening (2728, 2731) by RandomErrorMessage
[core] REVIEWED: Gestures module to use GetTime() if available (2733) by RobLoach
[core] REVIEWED: Resolve GLFW3 some symbols re-definition of windows.h in glfw3native (2643) by daipom
[core] REVIEWED: OpenURL(), string buffer too short sometimes
[core] REVIEWED: GetRandomValue() range limit warning (2800) by Pere001
[core] REVIEWED: UnloadDirectoryFiles()
[core] REVIEWED: GetKeyPressed(), out of range issue (2814) by daipom
[core] REVIEWED: GetTime(), renamed variable 'time' to 'nanoSeconds' (2816) by jtainer
[core] REVIEWED: LoadShaderFromMemory(), issue with shader linkage
[core] REVIEWED: Avoid possible gamepad index as -1 (2839)
[core] REVIEWED: SetShaderValue*(), avoid setup uniforms for invalid locations
[core] REVIEWED: GetClipboardText() on PLATFORM_WEB, permissions issues
[core] REVIEWED: Initial window position for display-sized fullscreen (2742) by daipom
[core] REVIEWED: Sticky touches input (2857) by ImazighenGhost
[core] REVIEWED: Enable GetWindowHandle() on macOS (2915) by Not-Nik
[core] REVIEWED: Window position always inits centered in current monitor
[core] REVIEWED: IsWindowFocused() to consider Android App state (2935)
[core] REVIEWED: GetMonitorWidth() and GetMonitorHeight() (2934)
[core] REVIEWED: GetWindowHandle() to return Linux window (2938)
[core] REVIEWED: WindowDropCallback(), additional security check (2943)
[core] REVIEWED: Security checks for emscripten_run_script() (2954)
[utils] REVIEWED: TraceLog() message size limit overflow
[rcamera] REDESIGNED: New implementation from scratch (2563) by Crydsch
[rcamera] REVIEWED: Make orbital camera work as expected (2926) by JeffM2501
[rcamera] REVIEWED: Multiple reviews on the new implementation
[rcamera] ADDED: UpdateCameraPro(), supporting custom user inputs
[rlgl] ADDED: OpenGL ES 2.0 support on PLATFORM_DESKTOP (2840) by wtnbgo
[rlgl] ADDED: Separate blending modes for color and alpha, BLEND_CUSTOM_SEPARATE (2741)
[rlgl] ADDED: rlSetBlendFactorsSeparate and custom blend mode modification checks (2741) by pure01fx
[rlgl] ADDED: RL_TEXTURE_MIPMAP_BIAS_RATIO support to `rlTextureParameters()` for OpenGL 3.3 2674
[rlgl] ADDED: rlCubemapParameters() (2862) by GithubPrankster
[rlgl] ADDED: rlSetCullFace() (2797) by jtainer
[rlgl] REMOVED: Mipmaps software generation for OpenGL 1.1
[rlgl] REVIEWED: Check for extensions before enabling them (2706) by Not-Nik
[rlgl] REVIEWED: SSBO usage to avoid long long data types
[rlgl] REVIEWED: Enable DXT compression on __APPLE__ targets (2694) by Not-Nik
[rlgl] REVIEWED: enums exposed and description comments
[rlgl] REVIEWED: rlBindImageTexture(), correct data types (2808) by planetis-m
[rlgl] REVIEWED: rlMultMatrixf(), use const pointer (2807) by planetis-m
[rlgl] REVIEWED: Expose OpenGL blending mode factors and functions/equations
[rlgl] REVIEWED: rLoadTextureDepth(), issue with depth textures on WebGL (2824)
[rlgl] REVIEWED: rlUnloadFramebuffer() (2937)
[raymath] ADDED: Vector2LineAngle() (2887)
[raymath] REVIEWED: Vector2Angle() (2829, 2832) by AlxHnr, planetis-m
[shapes] ADDED: CheckCollisionPointPoly() (2685) by acejacek
[shapes] REVIEWED: DrawPixel*(), use RL_QUADS/RL_TRIANGLES (2750) by hatkidchan
[shapes] REVIEWED: DrawLineBezier*(), fix bezier line breaking (2735, 2767) by nobytesgiven
[textures] ADDED: ColorBrightness()
[textures] ADDED: ColorTint()
[textures] ADDED: ColorContrast()
[textures] ADDED: Support for PNM images (.ppm, .pgm)
[textures] ADDED: GenImagePerlinNoise()
[textures] ADDED: GenImageText(), generate grayscale image from text byte data
[textures] ADDED: ImageDrawCircleLines(), ImageDrawCircleLinesV() (2713) by RobLoach
[textures] ADDED: ImageBlurGaussian() (2770) by nobytesgiven
[textures] REVIEWED: Image fileformat support: PIC, PNM
[textures] REVIEWED: ImageTextEx() and ImageDrawTextEx() scaling (2756) by hatkidchan
[textures] `WARNING`: REMOVED: DrawTextureQuad()
[textures] `WARNING`: REMOVED: DrawTexturePoly(), function moved to example: `textures_polygon`
[textures] `WARNING`: REMOVED: DrawTextureTiled(),function implementation moved to the textures_tiled.c
[text] ADDED: GetCodepointPrevious()
[text] ADDED: UnloadUTF8(), aligned with LoadUTF8()
[text] `WARNING`: RENAMED: TextCodepointsToUTF8() to LoadUTF8()
[text] `WARNING`: RENAMED: GetCodepoint() -> GetCodepointNext()
[text] REDESIGNED: GetCodepointNext()
[text] REVIEWED: MeasureTextEx(), avoid crash on bad data
[text] REVIEWED: UnloadFontData(), avoid crash on invalid font data
[models] ADDED: Support M3D model file format (meshes and materials) (2648) by bztsrc
[models] ADDED: Support for M3D animations (2648) by bztsrc
[models] ADDED: GLTF animation support (2844) by charles-l
[models] ADDED: DrawCapsule() and DrawCapsuleWires() (2761) by IanBand
[models] ADDED: LoadMaterials(), MTL files loading, same code as OBJ loader (2872) by JeffM2501
[models] `WARNING`: REMOVED: UnloadModelKeepMeshes()
[models] `WARNING`: REMOVED: DrawCubeTexture(), DrawCubeTextureRec(), functions moved to new example: `models_draw_cube_texture`
[models] REVIEWED: DrawMesh(), using SHADER_LOC_COLOR_SPECULAR as a material map (2908) by haved
[models] REVIEWED: LoadM3D() vertex color support (2878) by GithubPrankster, bztsrc
[models] REVIEWED: GenMeshHeightmap() (2716)
[models] REVIEWED: LoadIQM() (2676)
[models] REVIEWED: Simplify .vox signature check (2752) by CrezyDud
[models] REVIEWED: LoadIQM(), support bone names loading if available (2882) by PencilAmazing
[models] REVIEWED: GenMeshTangents(), avoid crash on missing texcoords data (2927)
[audio] ADDED: Full support for QOA audio file format
[audio] ADDED: Mixed audio processor (2929) by hatkidchan
[audio] ADDED: IsWaveReady()`, IsSoundReady(), IsMusicReady() (2892) by RobLoach
[audio] `WARNING`: REMOVED: Multichannel audio API: PlaySoundMulti(), StopSoundMulti()
[audio] REVIEWED: Clear PCM buffer state when closing audio device (2736) by veins1
[audio] REVIEWED: Android backend selected (2118, 2875) by planetis-m
[audio] REVIEWED: Change default threading model for COM objects in miniaudio
[multi] ADDED: IsShaderReady(), IsImageReady(), IsFontReady() (2892) by RobLoach
[multi] ADDED: IsModelReady(), IsMaterialReady(), IsTextureReady(), IsRenderTextureReady() (2895) by RobLoach
[multi] REVIEWED: Multiple code/comment typos by sDos280
[multi] REVIEWED: Grammar mistakes and typos (2914) by stickM4N
[multi] REVIEWED: Use TRACELOG() macro instead of TraceLog() in internal modules (2881) by RobLoach
[examples] ADDED: textures_textured_curve (2821) by JeffM2501
[examples] ADDED: models_draw_cube_texture
[examples] ADDED: models_loading_m3d (2648) by bztsrc
[examples] ADDED: shaders_write_depth (2836) by BugraAlptekinSari
[examples] ADDED: shaders_hybrid_render (2919) by BugraAlptekinSari
[examples] REMOVED: audio_multichannel_sound
[examples] RENAMED: Several shaders for naming consistency (2707)
[examples] RENAMED: lighting_instanced.fs to lighting_instancing.fs (glsl100) (2805) by gtrxAC
[examples] REVIEWED: core_custom_logging.c (2692) by hartmannathan
[examples] REVIEWED: core_camera_2d_platformer (2687) by skylar779
[examples] REVIEWED: core_input_gamepad.c (2903) by planetis-m
[examples] REVIEWED: core_custom_frame_control
[examples] REVIEWED: core_drop_files (2943)
[examples] REVIEWED: text_rectangle_bounds (2746) by SzieberthAdam
[examples] REVIEWED: textures_image_processing, added gaussian blurring (2775) by nobytesgiven
[examples] REVIEWED: models_billboard, highlighting rotation and draw order (2779) by nobytesgiven
[examples] REVIEWED: core_loading_thread, join thread on completion (2845) by planetis-m
[examples] REVIEWED: models_loading_gltf
[examples] REVIEWED: Shader lighting.fs for GLSL120 (2651)
[examples] REVIEWED: text_codepoints_loading.c
[parser] REVIEWED: raylib-parser Makefile (2765) by Peter0x44
[build] ADDED: Packaging for distros with deb-based and rpm-based packages (2877) by KOLANICH
[build] ADDED: Linkage library -latomic on Linux (only required for ARM32)
[build] ADDED: Required frameworks on macOS (2793) by SpexGuy
[build] ADDED: WASM support for Zig build (2901) by Not-Nik
[build] ADDED: New raylib examples as VS2022 project (to raylib solution)
[build] REVIEWED: config.h format and inconsistencies
[build] REVIEWED: Zig build to latest master, avoid deprecated functions (2910) by star-tek-mb
[build] REVIEWED: CMake project template to easily target raylib version (2700) by RobLoach
[build] REVIEWED: PATH for PLATFORM_WEB target (2647) by futureapricot
[build] REVIEWED: build.zig to let user decide how to set build mode and linker fixes by InKryption
[build] REVIEWED: Deprecation error on Android API higher than 23 (2778) by anggape
[build] REVIEWED: Android x86 Architecture name (2783) by IsaacTCB
[build] REVIEWED: examples/build.zig for the latest Zig version (2786) by RomanAkberov
[utils] REVIEWED: ExportDataAsCode() data types (2787) by RGDTAB
[build] REVIEWED: Makefile emscripten path (2785) by Julianiolo
[build] REVIEWED: Several compilation warnings (for strict rules)
[build] REVIEWED: All github workflows using deprecated actions
[build] REVIEWED: CMake when compiling for web (2820) by object71
[build] REVIEWED: DLL build on Windows (2951) by Skaytacium
[build] REVIEWED: Avoid MSVC warnings in raylib project (2871) by JeffM2501
[build] REVIEWED: Paths in .bat files to build examples (2870) by masoudd
[build] REVIEWED: CMake, use GLVND for old cmake versions (2826) by simendsjo
[build] REVIEWED: Makefile, multiple tweaks
[build] REVIEWED: CI action: linux_examples.yml
[build] REVIEWED: CI action: cmake.yml
[bindings] ADDED: h-raylib (Haskell) by Anut-py
[bindings] ADDED: raylib-c3 (C3) by Its-Kenta
[bindings] ADDED: raylib-umka (Umka) by RobLoach
[bindings] ADDED: chez-raylib (Chez Scheme) by Yunoinsky
[bindings] ADDED: raylib-python-ctypes (Python) by sDos280
[bindings] ADDED: claylib (Common Lisp) by shelvick
[bindings] ADDED: raylib-vapi (Vala) by lxmcf
[bindings] ADDED: TurboRaylib (Object Pascal) by turborium
[bindings] ADDED: Kaylib (Kotlin/Native) by Its-Kenta
[bindings] ADDED: Raylib-Nelua (Nelua) by Its-Kenta
[bindings] ADDED: Cyber (Cyber) by fubark
[bindings] ADDED: raylib-sunder (Sunder) by ashn-dot-dev
[bindings] ADDED: raylib BQN (2962) by Brian-ED
[misc] REVIEWED: Update external libraries to latest versions

-------------------------------------------------------------------------
Release: raylib 4.2 (11 August 2022)
-------------------------------------------------------------------------
KEY CHANGES:
- REMOVED: extras libraries (raygui, physac, rrem, reasings, raudio.h) moved to independent separate repos
- UPDATED: examples: Added creation and update raylib versions and assigned **DIFFICULTY LEVELS**!
- rres 1.0: A custom resource-processing and packaging file format, including tooling and raylib integration examples
- raygui 3.2: New version of the immediate-mode gui system for tools development with raylib
- raylib_parser: Multiple improvements of the raylib parser to automatize bindings generation
- ADDED: New file system API: Reviewed to be more aligned with raylib conventions and one advance function added
- ADDED: New audio stream processors API (_experimental_): Allowing to add custom audio stream data processors using callbacks

Detailed changes:
[multi] ADDED: Frequently Asked Questions (FAQ.md)
[multi] REVIEWED: Multiple trace log messages
[multi] REVIEWED: Avoid some float to double promotions
[multi] REVIEWED: Some functions input parametes that should be const
[multi] REVIEWED: Variables initialization, all variables are initialized on declaration
[multi] REVIEWED: Static array buffers are always re-initialized with memset()
[multi] `WARNING`: RENAMED: Some function input parameters from "length" to "size"
[core] ADDED: GetApplicatonDirectory() (2256, 2285, 2290) by JeffM2501
[core] ADDED: raylibVersion symbol, it could be required by some bindings (2190)
[core] ADDED: SetWindowOpacity() (2254) by tusharsingh09
[core] ADDED: GetRenderWidth() and GetRenderHeight() by ArnaudValensi
[core] ADDED: EnableEventWaiting() and DisableEventWaiting()
[core] ADDED: GetFileLength()
[core] ADDED: Modules info at initialization
[core] ADDED: Support clipboard copy/paste on web
[core] ADDED: Support OpenURL() on Android platform (2396) by futureapricot
[core] ADDED: Support MOUSE_PASSTHROUGH (2516)
[core] ADDED: GetMouseWheelMoveV() (2517) by schveiguy
[core] `WARNING`: REMOVED: LoadStorageValue() / SaveStorageValue(), moved to example
[core] `WARNING`: RENAMED: GetDirectoryFiles() to LoadDirectoryFiles()
[core] `WARNING`: RENAMED: `ClearDroppedFiles()` to `UnloadDroppedFiles()`
[core] `WARNING`: RENAMED: GetDroppedFiles() to LoadDroppedFiles()
[core] `WARNING`: RENAMED: `ClearDirectoryFiles()` to `UnloadDirectoryFiles()`
[core] `WARNING`: REDESIGNED: WaitTime() argument from milliseconds to seconds (2506) by flashback-fx
[core] REVIEWED: GetMonitorWidth()/GetMonitorHeight() by gulrak
[core] REVIEWED: GetDirectoryFiles(), maximum files allocation (2126) by ampers0x26
[core] REVIEWED: Expose MAX_KEYBOARD_KEYS and MAX_MOUSE_BUTTONS (2127)
[core] REVIEWED: ExportMesh() (2138)
[core] REVIEWED: Fullscreen switch on PLATFORM_WEB
[core] REVIEWED: GetMouseWheelMove(), fixed bug
[core] REVIEWED: GetApplicationDirectory() on macOS (2304)
[core] REVIEWED: ToggleFullscreen()
[core] REVIEWED: Initialize/reset CORE.inputs global state (2360)
[core] REVIEWED: MouseScrollCallback() (2371)
[core] REVIEWED: SwapScreenBuffers() for PLATFORM_DRM
[core] REVIEWED: WaitTime(), fix regression causing video stuttering (2503) by flashback-fx
[core] REVIEWED: Mouse device support on PLATFORM_DRM (2381)
[core] REVIEWED: Support OpenBSD timming functions
[core] REVIEWED: Improved boolean definitions (2485) by noodlecollie
[core] REVIEWED: TakeScreenshot(), use GetWindowScaleDPI() to calculate size in screenshot/recording (2446) by gulrak
[core] REVIEWED: Remove fps requirement for drm connector selection (2468) by Crydsch
[core] REVIEWED: IsFileExtension() (2530)
[camera] REVIEWED: Some camera improvements (2563)
[rlgl] ADDED: Premultiplied alpha blend mode (2342) by megagrump
[rlgl] REVIEWED: VR rendering not taking render target size into account (2424) by FireFlyForLife
[rlgl] REVIEWED: Set rlgl internal framebuffer (2420)
[rlgl] REVIEWED: rlGetCompressedFormatName()
[rlgl] REVIEWED: Display OpenGL 4.3 capabilities with a compile flag (2124) by GithubPrankster
[rlgl] REVIEWED: rlUpdateTexture()
[rlgl] REVIEWED: Minimize buffer overflow probability
[rlgl] REVIEWED: Fix scissor mode on macOS (2170) by ArnaudValensi
[rlgl] REVIEWED: Clear SSBO buffers on loading (2185)
[rlgl] REVIEWED: rlLoadShaderCode(), improved shader loading code
[rlgl] REVIEWED: Comment notes about custom blend modes (2260) by glorantq
[rlgl] REVIEWED: rlGenTextureMipmaps()
[rlgl] REVIEWED: rlTextureParameters()
[raymath] ADDED: Wrap() (2522) by Tekkitslime
[raymath] ADDED: Vector2Transform()
[raymath] ADDED: Vector2DistanceSqr() (2376) by AnilBK
[raymath] ADDED: Vector3DistanceSqr() (2376) by AnilBK
[raymath] ADDED: Vector2ClampValue(), Vector3ClampValue() (2428) by saccharineboi
[raymath] ADDED: Vector3RotateByAxisAngle() (2590) by Crydsch
[raymath] `WARNING`: REDESIGNED: Vector2Angle() returns radians instead of degrees (2193) by schveiguy
[raymath] `WARNING`: REMOVED: MatrixNormalize() (2412)
[raymath] REVIEWED: Fix inverse length in Vector2Normalize() (2189) by HarriP
[raymath] REVIEWED: Vector2Angle() not working as expected (2196) by jdeokkim
[raymath] REVIEWED: Vector2Angle() and Vector3Angle() (2203) by trikko
[raymath] REVIEWED: QuaternionInvert(), code simplified (2324) by megagrump
[raymath] REVIEWED: QuaternionScale() (2419) by tana
[raymath] REVIEWED: Vector2Rotate(), optimized (2340) by jdeokkim
[raymath] REVIEWED: QuaternionFromMatrix(), QuaternionEquals() (2591) by kirigirihitomi
[raymath] REVIEWED: MatrixRotate*() (2595, 2599) by GoodNike
[shapes] REVIEWED: CheckCollision*() consistency
[shapes] REVIEWED: DrawRectanglePro(), support TRIANGLES drawing
[textures] ADDED: Support for QOI image format
[textures] REVIEWED: ImageColorTint(), GetImageColor(), ImageDrawRectangleRec(), optimized functions (2429) by AnilBK
[textures] REVIEWED: LoadTextureFromImage(), allow texture loading with no data transfer
[textures] REVIEWED: ImageDraw(), comment to note that f32bit is not supported (2222)
[textures] REVIEWED: DrawTextureNPatch(), avoid batch overflow (2401) by JeffM2501
[textures] REVIEWED: DrawTextureTiled() (2173)
[textures] REVIEWED: GenImageCellular() (2178)
[textures] REVIEWED: LoadTextureCubemap() (2223, 2224)
[textures] REVIEWED: Export format for float 32bit
[textures] REVIEWED: ExportImage(), support export ".jpeg" files
[textures] REVIEWED: ColorAlphaBlend() (2524) by royqh1979
[textures] REVIEWED: ImageResize() (2572)
[textures] REVIEWED: ImageFromImage() (2594) by wiertek
[text] ADDED: ExportFontAsCode()
[text] ADDED: DrawTextCodepoints() (2308) by siddharthroy12
[text] REVIEWED: TextIsEqual(), protect from NULLs (2121) by lukekras
[text] REVIEWED: LoadFontEx(), comment to specify how to get the default character set (2221) by JeffM2501
[text] REVIEWED: GenImageFontAtlas(), increase atlas size guesstimate by megagrump
[text] REVIEWED: GetCodepoint() (2201)
[text] REVIEWED: GenImageFontAtlas() (2556)
[text] REVIEWED: ExportFontAsCode() to use given font padding (2525) by TheTophatDemon
[models] ADDED: Reference code to load bones id and weight data for animations
[models] `WARNING`: REMOVED: GetRayCollisionModel() (2405)
[models] REMOVED: GenMeshBinormals()
[models] REVIEWED: External library: vox_loader.h, 64bit issue (2186)
[models] REVIEWED: Material color loading when no texture material is available (2298) by royqh1979
[models] REVIEWED: Fix Undefined Symbol _ftelli64 in cgltf (2319) by audinue
[models] REVIEWED: LoadGLTF(), fix memory leak (2441, 2442) by leomonta
[models] REVIEWED: DrawTriangle3D() batch limits check (2489)
[models] REVIEWED: DrawBillboardPro() (2494)
[models] REVIEWED: DrawMesh*() issue (2211)
[models] REVIEWED: ExportMesh() (2220)
[models] REVIEWED: GenMeshCylinder() (2225)
[audio] `WARNING`: ADDED: rAudioProcessor pointer to AudioStream struct (used by Sound and Music structs)
[audio] ADDED: SetSoundPan(), SetMusicPan(), SetAudioStreamPan(), panning support (2205) by ptarabbia
[audio] ADDED: Audio stream input callback (2212) by ptarabbia
[audio] ADDED: Audio stream processors support (2212) by ptarabbia
[audio] REVIEWED: GetMusicTimePlayed(), incorrect value after the stream restarted for XM audio (2092 2215) by ptarabbia
[audio] REVIEWED: Turn on interpolation for XM playback (2216) by ptarabbia
[audio] REVIEWED: Fix crash with delay example (2472) by ptarabbia
[audio] REVIEWED: PlaySoundMulti() (2231)
[audio] REVIEWED: ExportWaveAsCode()
[audio] REVIEWED: UpdateMusicStream(), reduce dynamic allocations (2532) by dbechrd
[audio] REVIEWED: UpdateMusicStream() to support proper stream looping (2579) by veins1
[utils] ADDED: ExportDataAsCode()
[utils] REVIEWED: Force flush stdout after trace messages (2465) by nagy
[easings] ADDED: Function descriptions (2471) by RobLoach
[camera] REVIEWED: Fix free camera panning in the wrong direction (2347) by DavidLyhedDanielsson
[examples] ADDED: core_window_should_close
[examples] ADDED: core_2d_camera_mouse_zoom (2583) by JeffM2501
[examples] ADDED: shapes_top_down_lights (2199) by JeffM2501
[examples] ADDED: textures_fog_of_war
[examples] ADDED: textures_gif_player
[examples] ADDED: text_codepoints_loading
[examples] ADDED: audio_stream_effects
[examples] REMOVED: core_quat_conversion, not working properly
[examples] REMOVED: raudio_standalone, moved to raudio repo
[examples] RENAMED: textures_rectangle -> textures_sprite_anim
[examples] REVIEWED: core_input_gamepad, improve joystick visualisation (2390) by kristianlm
[examples] REVIEWED: textures_draw_tiled
[examples] REVIEWED: shaders_mesh_instancing, free allocated matrices (2425) by AnilBK
[examples] REVIEWED: shaders_raymarching
[examples] REVIEWED: audio_raw_stream (2205) by ptarabbia
[examples] REVIEWED: audio_music_stream
[examples] REVIEWED: shaders_mesh_instancing, simplified
[examples] REVIEWED: shaders_basic_lighting, rlights.h simplified
[examples] REVIEWED: All examples descriptions, included creation/update raylib versions
[parser] ADDED: Defines to parser (2269) by iskolbin
[parser] ADDED: Aliases to parser (2444) by lazaray
[parser] ADDED: Parse struct descriptions (2214) by eutro
[parser] ADDED: Parse enum descriptions and value descriptions (2208) by eutro
[parser] ADDED: Lua output format for parser by iskolbin
[parser] ADDED: Makefile for raylib_parser by iskolbin
[parser] ADDED: Support for truncating parser input (2464) by lazaray
[parser] ADDED: Support for calculated defines to parser (2463) by lazaray
[parser] REVIEWED: Update parser files (2125) by catmanl
[parser] REVIEWED: Fix memory leak in parser (2136) by ronnieholm
[parser] REVIEWED: EscapeBackslashes()
[parser] REVIEWED: Parser improvements (2461 2462) by lazaray
[bindings] ADDED: License details for BINDINGS
[bindings] ADDED: dart-raylib (2149) by wolfenrain
[bindings] ADDED: raylib-cslo (2169) by jasonswearingen
[bindings] ADDED: raylib-d (2194) by schveiguy
[bindings] ADDED: raylib-guile (2202) by petelliott
[bindings] ADDED: raylib-scopes (2238) by salotz
[bindings] ADDED: naylib (Nim) (2386) by planetis-m
[bindings] ADDED: raylib.jl (Julia) (2403) by irishgreencitrus
[bindings] ADDED: raylib.zig (2449) by ryupold
[bindings] ADDED: racket-raylib (2454) by eutro
[bindings] ADDED: raylibr (2611) by ramiromagno
[bindings] ADDED: Raylib.4.0.Pascal (2617) by sysrpl
[bindings] REVIEWED: Multiple bindings updated to raylib 4.0
[build] ADDED: VS2022 project
[build] ADDED: Support macOS by zig build system (2175)
[build] ADDED: Support custom modules selection on compilation
[build] ADDED: Minimal web shell for WebAssembly compilation
[build] ADDED: BSD support for zig builds (2332) by zigster64
[build] ADDED: Repology badge (2367) by jubalh
[build] ADDED: Support DLL compilation with TCC compiler (2569) by audinue
[build] ADDED: Missing examples to VS2022 examples solution
[build] REMOVED: VS2019 project (unmaintained)
[build] REMOVED: SUPPORT_MOUSE_CURSOR_POINT config option
[build] REVIEWED: Fixed RPi make install (2217) by wereii
[build] REVIEWED: Fix build results path on Linux and RPi (2218) by wereii
[build] REVIEWED: Makefiles debug flag
[build] REVIEWED: Fixed cross-compilation from x86-64 to RPi (2233) by pitpit
[build] REVIEWED: All Makefiles, simplified
[build] REVIEWED: All Makefiles, improve organization
[build] REVIEWED: All Makefiles, support CUSTOM_CFLAGS
[build] REVIEWED: Fixed compiling for Android using CMake (2270) by hero2002
[build] REVIEWED: Make zig build functionality available to zig programs (2271) by Not-Nik
[build] REVIEWED: Update CMake project template with docs and web (2274) by RobLoach
[build] REVIEWED: Update VSCode project to work with latest makefile and web (2296) by phil-shenk
[build] REVIEWED: Support audio examples compilation with external glfw (2329) by locriacyber
[build] REVIEWED: Fix "make clean" target failing when shell is not cmd (2338) by Peter0x44
[build] REVIEWED: Makefile linkage -latomic, required by miniaudio on ARM 32bit 2452
[build] REVIEWED: Update raylib-config.cmake (2374) by marcogmaia
[build] REVIEWED: Simplify build.zig to not require user to specify raylib path (2383) by Hejsil
[build] REVIEWED: Fix OpenGL 4.3 graphics option in CMake (2427) by GoldenThumbs
[extras] `WARNING`: REMOVED: physac from raylib sources/examples, use github.com/raysan5/physac
[extras] `WARNING`: REMOVED: raygui from raylib/src/extras, use github.com/raysan5/raygui
[extras] `WARNING`: REMOVED: rmem from raylib/src/extras, moved to github.com/raylib-extras/rmem
[extras] `WARNING`: REMOVED: easings from raylib/src/extras, moved to github.com/raylib-extras/reasings
[extras] `WARNING`: REMOVED: raudio.h from raylib/src, moved to github.com/raysan5/raudio
[misc] REVIEWED: Update some external libraries to latest versions

-------------------------------------------------------------------------
Release: raylib 4.0 - 8th Anniversary Edition (05 November 2021)
-------------------------------------------------------------------------
KEY CHANGES:
- Naming consistency and coherency: Complete review of the library: syntax, naming, comments, decriptions, logs...
- Event Automation System: Support for input events recording and automatic re-playing, useful for automated testing and more!
- Custom game-loop control: Intended for advance users that want to control the events polling and the timming mechanisms
- rlgl 4.0: Completely decoupling from platform layer and raylib, intended for standalone usage as single-file header-only
- raymath 1.5: Complete review following new conventions, to make it more portable and self-contained
- raygui 3.0: Complete review and official new release, more portable and self-contained, intended for tools development
- raylib_parser: New tool to parse raylib.h and extract all required info into custom output formats (TXT, XML, JSON...)
- Zig and Odin official support

Detailed changes:
[core] ADDED: Support canvas resizing on web (1840) by skylersaleh
[core] ADDED: GetMouseDelta() (1832) by adricoin2010
[core] ADDED: Support additional mouse buttons (1753) by lambertwang
[core] ADDED: SetRandomSeed() (1994) by TommiSinivuo
[core] ADDED: GetTouchPointId() 1972
[core] ADDED: EncodeDataBase64() and DecodeDataBase64()
[core] REMOVED: PLATFORM_UWP, difficult to maintain
[core] REMOVED: IsGamepadName()
[core] RENAMED: SwapBuffers() to SwapScreenBuffer()
[core] RENAMED: Wait() to WaitTime()
[core] RENAMED: RayHitInfo to RayCollision (1781)
[core] RENAMED: GetRayCollisionGround() to GetRayCollisionQuad() (1781)
[core] REVIEWED: Support mouse wheel on x-axis (1948)
[core] REVIEWED: DisableCursor() on web by registering an empty mouse click event function in emscripten (1900) by grenappels
[core] REVIEWED: LoadShader() and default locations and descriptions
[core] REVIEWED: LoadShaderFromMemory() (1851) by Ruminant
[core] REVIEWED: WaitTime(), avoid global variables dependency to make the function is self-contained (1841)
[core] REVIEWED: SetWindowSize() to work on web (1847) by nikki93
[core] REVIEWED: Raspberry RPI/DRM keyboard blocking render loop (1879) luizpestana
[core] REVIEWED: Android multi-touch (1869) by humbe
[core] REVIEWED: Implemented GetGamepadName() for emscripten by nbarkhina
[core] REVIEWED: HighDPI support (1987) by ArnaudValensi
[core] REVIEWED: KeyCallback(), register keys independently of the actions
[rlgl] ADDED: GRAPHIC_API_OPENGL_43
[rlgl] ADDED: rlUpdateVertexBufferElements() (1915)
[rlgl] ADDED: rlActiveDrawBuffers() (1911)
[rlgl] ADDED: rlEnableColorBlend()/rlDisableColorBlend()
[rlgl] ADDED: rlGetPixelFormatName()
[rlgl] REVIEWED: rlUpdateVertexBuffer (1914) by 630Studios
[rlgl] REVIEWED: rlDrawVertexArrayElements() (1891)
[rlgl] REVIEWED: Wrong normal matrix calculation (1870)
[raymath] ADDED: Vector3Angle()
[raymath] REVIEWED: QuaternionFromAxisAngle() (1892)
[raymath] REVIEWED: QuaternionToMatrix() returning transposed result. (1793) by object71
[shapes] ADDED: RenderPolyLinesEx() (1758) by lambertwang
[shapes] ADDED: DrawSplineBezierCubic() (2021) by SAOMDVN
[textures] ADDED: GetImageColor() 2024
[textures] REMOVED: GenImagePerlinNoise()
[textures] RENAMED: GetTextureData() to LoadImageFromTexture()
[textures] RENAMED: GetScreenData() to LoadImageFromScreen()
[textures] REVIEWED: ExportImage() to use SaveFileData() (1779)
[textures] REVIEWED: LoadImageAnim() 2005
[text] ADDED: Security check in case of not valid font
[text] ADDED: `GetGlyphInfo()` to get glyph info for a specific codepoint
[text] ADDED: `GetGlyphAtlasRec()` to get glyph rectangle within the generated font atlas
[text] ADDED: DrawTextPro() with text rotation support, WARNING: DrawTextPro() requires including `rlgl.h`, before it was only dependant on `textures` module.
[text] ADDED: UnloadCodepoints() to safely free loaded codepoints
[text] REMOVED: DrawTextRec() and DrawTextRecEx(), moved to example, those functions could be very specific depending on user needs so it's better to give the user the full source in case of special requirements instead of allowing a function with +10 input parameters.
[text] RENAMED: struct `CharInfo` to `GlyphInfo`, actually that's the correct naming for the data contained. It contains the character glyph metrics and the glyph image; in the past it also contained rectangle within the font atlas but that data has been moved to `Font` struct directly, so, `GlyphInfo` is a more correct name.
[text] RENAMED: `CodepointToUtf8()` to `CodepointToUTF8()`, capitalization of UTF-8 is the correct form, it would also require de hyphen but it can be omitted in this case.
[text] RENAMED: `TextToUtf8()` to `TextCodepointsToUTF8` for consistency and more detail on the functionality.
[text] RENAMED: GetCodepoints() to LoadCodepoints(), now codepoint array data is loaded dynamically instead of reusing a limited static buffer.
[text] RENAMED: GetNextCodepoint() to GetCodepoint()
[models] ADDED: MagikaVoxel VOX models loading
[models] ADDED: GenMeshCone() (1903)
[models] ADDED: GetModelBoundingBox()
[models] ADDED: DrawBillboardPro() (1759) by nobytesgiven
[models] ADDED: DrawCubeTextureRec() (2001) by tdgroot
[models] ADDED: DrawCylinderEx() and DrawCylinderWiresEx() (2049) by Horrowind
[models] REMOVED: DrawBillboardEx()
[models] RENAMED: MeshBoundingBox() to GetMeshBoundingBox()
[models] RENAMED: MeshTangents() to GenMeshTangents()
[models] RENAMED: MeshBinormals() to GenMeshBinormals()
[models] REVIEWED: GenMeshTangents() (1877) by 630Studios
[models] REVIEWED: CheckCollisionBoxSphere() by Crydsch
[models] REVIEWED: GetRayCollisionQuad() by Crydsch
[models] REVIEWED: LoadGLTF(), fixed missing transformations and nonroot skinning by MrDiver
[models] REVIEWED: LoadGLTF(), rewriten from scratch, removed animations support (broken)
[models] REVIEWED: Decouple DrawMesh() and DrawMeshInstanced() (1958)
[models] REVIEWED: Support vertex color attribute for GLTF and IQM (1790) by object71
[models] REVIEWED: DrawBillboardPro() (1941) by GithubPrankster
[models] REDESIGNED: Major review of glTF loading functionality (1849) by object71
[audio] ADDED: SeekMusicStream() (2006) by GithubPrankster
[audio] REMOVED: GetAudioStreamBufferSizeDefault()
[audio] RENAMED: InitAudioStream() to LoadAudioStream()
[audio] RENAMED: CloseAudioStream() to UnloadAudioStream()
[audio] RENAMED: IsMusicPlaying() to IsMusicStreamPlaying()
[audio] REVIEWED: ExportWaveAsCode()
[audio] REDESIGNED: Use frameCount on audio instead of sampleCount
[utils] REVIEWED: exit() on LOG_FATAL instead of LOG_ERROR (1796)
[examples] ADDED: core_custom_frame_control
[examples] ADDED: core_basic_screen_manager
[examples] ADDED: core_split_screen (1806) by JeffM2501
[examples] ADDED: core_smooth_pixelperfect (1771) by NotManyIdeasDev
[examples] ADDED: shaders_texture_outline (1883) by GoldenThumbs
[examples] ADDED: models_loading_vox (1940) by procfxgen
[examples] ADDED: rlgl_compute_shader by TSnake41 (2088)
[examples] REMOVED: models_material_pbr
[examples] REMOVED: models_gltf_animation
[examples] REVIEWED: core_3d_picking
[examples] REVIEWED: core_input_mouse
[examples] REVIEWED: core_vr_simulator, RenderTexture usage
[examples] REVIEWED: core_window_letterbox, RenderTexture usage
[examples] REVIEWED: shapes_basic_shapes
[examples] REVIEWED: shapes_logo_raylib_anim
[examples] REVIEWED: textures_to_image
[examples] REVIEWED: text_rectangle_bounds
[examples] REVIEWED: text_unicode
[examples] REVIEWED: text_draw_3d
[examples] REVIEWED: models_loading
[examples] REVIEWED: models_skybox (1792) (1778)
[examples] REVIEWED: models_mesh_picking
[examples] REVIEWED: models_yaw_pitch_roll
[examples] REVIEWED: models_rlgl_solar_system
[examples] REVIEWED: shaders_custom_uniform, RenderTexture usage
[examples] REVIEWED: shaders_eratosthenes, RenderTexture usage
[examples] REVIEWED: shaders_julia_set, RenderTexture usage
[examples] REVIEWED: shaders_postprocessing, RenderTexture usage
[examples] REVIEWED: shaders_basic_lighting, simplified (1865)
[examples] REVIEWED: audio_raw_stream.c
[examples] REVIEWED: raudio_standalone
[examples] REVIEWED: raylib_opengl_interop
[examples] REVIEWED: rlgl_standalone.c
[examples] REVIEWED: Resources licenses
[examples] REVIEWED: models resources reorganization
[templates] REMOVED: Moved to a separate repo: https://github.com/raysan5/raylib-game-template
[build] ADDED: Zig build file (2014) by TommiSinivuo
[build] ADDED: Android VS2019 solution (2013) by Kronka
[build] REMOVED: VS2017 project, outdated
[build] RENAMED: All raylib modules prefixed with 'r' (core -> rcore)
[build] RENAMED: SUPPORT_MOUSE_CURSOR_NATIVE to SUPPORT_MOUSE_CURSOR_POINT
[build] REVIEWED: examples/examples_template.c
[build] REVIEWED: Makefile to latest Emscripten SDK r23
[build] REVIEWED: Makefile for latest Android NDK r32 LTS
[build] REVIEWED: raylib resource files
[build] Moved some extra raylib libraries to /extras/ directory
[*] UPDATED: Multiple bindings to latest version
[*] UPDATED: Most external libraries to latest versions (except GLFW)
[*] Multiple code improvements and fixes by multiple contributors!

-------------------------------------------------------------------------
Release: raylib 3.7 (26 April 2021)
-------------------------------------------------------------------------
KEY CHANGES:
- [rlgl] REDESIGNED: Greater abstraction level, some functionality moved to core module
- [rlgl] REVIEWED: Instancing and stereo rendering
- [core] REDESIGNED: VR simulator, fbo/shader exposed to user
- [utils] ADDED: File access callbacks system
- [models] ADDED: glTF animations support (1551) by object71
- [audio] ADDED: Music streaming support from memory (1606) by nezvers
- [*] RENAMED: enum types and enum values for consistency

Detailed changes:
[core] ADDED: LoadVrStereoConfig()
[core] ADDED: UnloadVrStereoConfig()
[core] ADDED: BeginVrStereoMode()
[core] ADDED: EndVrStereoMode()
[core] ADDED: GetCurrentMonitor() (1485) by object71
[core] ADDED: SetGamepadMappings() (1506)
[core] RENAMED: struct Camera: camera.type to camera.projection
[core] RENAMED: LoadShaderCode() to LoadShaderFromMemory() (1690)
[core] RENAMED: SetMatrixProjection() to rlSetMatrixProjection()
[core] RENAMED: SetMatrixModelview() to rlSetMatrixModelview()
[core] RENAMED: GetMatrixModelview() to rlGetMatrixModelview()
[core] RENAMED: GetMatrixProjection() to rlGetMatrixProjection()
[core] RENAMED: GetShaderDefault() to rlGetShaderDefault()
[core] RENAMED: GetTextureDefault() to rlGetTextureDefault()
[core] REMOVED: GetShapesTexture()
[core] REMOVED: GetShapesTextureRec()
[core] REMOVED: GetMouseCursor()
[core] REMOVED: SetTraceLogExit()
[core] REVIEWED: GetFileName() and GetDirectoryPath() (1534) by gilzoide
[core] REVIEWED: Wait() to support FreeBSD (1618)
[core] REVIEWED: HighDPI support on macOS retina (1510)
[core] REDESIGNED: GetFileExtension(), includes the .dot
[core] REDESIGNED: IsFileExtension(), includes the .dot
[core] REDESIGNED: Compresion API to use sdefl/sinfl libs
[rlgl] ADDED: SUPPORT_GL_DETAILS_INFO config flag
[rlgl] REMOVED: GenTexture*() functions (721)
[rlgl] REVIEWED: rlLoadShaderDefault()
[rlgl] REDESIGNED: rlLoadExtensions(), more details exposed
[raymath] REVIEWED: QuaternionFromEuler() (1651)
[raymath] REVIEWED: MatrixRotateZYX() (1642)
[shapes] ADDED: DrawSplineBezierQuad() (1468) by epsilon-phase
[shapes] ADDED: CheckCollisionLines()
[shapes] ADDED: CheckCollisionPointLine() by mkupiec1
[shapes] REVIEWED: CheckCollisionPointTriangle() by mkupiec1
[shapes] REDESIGNED: SetShapesTexture()
[shapes] REDESIGNED: DrawCircleSector(), to use float params
[shapes] REDESIGNED: DrawCircleSectorLines(), to use float params
[shapes] REDESIGNED: DrawRing(), to use float params
[shapes] REDESIGNED: DrawRingLines(), to use float params
[textures] ADDED: DrawTexturePoly() and example (1677) by chriscamacho
[textures] ADDED: UnloadImageColors() for allocs consistency
[textures] RENAMED: GetImageData() to LoadImageColors()
[textures] REVIEWED: ImageClearBackground() and ImageDrawRectangleRec() (1487) by JeffM2501
[textures] REVIEWED: DrawTexturePro() and DrawRectanglePro() transformations (1632) by ChrisDill
[text] REDESIGNED: DrawFPS()
[models] ADDED: UploadMesh() (1529)
[models] ADDED: UpdateMeshBuffer()
[models] ADDED: DrawMesh()
[models] ADDED: DrawMeshInstanced()
[models] ADDED: UnloadModelAnimations() (1648) by object71
[models] REMOVED: DrawGizmo()
[models] REMOVED: LoadMeshes()
[models] REMOVED: MeshNormalsSmooth()
[models] REVIEWED: DrawLine3D() (1643)
[audio] REVIEWED: Multichannel sound system (1548)
[audio] REVIEWED: jar_xm library (1701) by jmorel33
[utils] ADDED: SetLoadFileDataCallback()
[utils] ADDED: SetSaveFileDataCallback()
[utils] ADDED: SetLoadFileTextCallback()
[utils] ADDED: SetSaveFileTextCallback()
[examples] ADDED: text_draw_3d (1689) by Demizdor
[examples] ADDED: textures_poly (1677) by chriscamacho
[examples] ADDED: models_gltf_model (1551) by object71
[examples] RENAMED: shaders_rlgl_mesh_instanced to shaders_mesh_intancing
[examples] REDESIGNED: shaders_rlgl_mesh_instanced by moliad
[examples] REDESIGNED: core_vr_simulator
[examples] REDESIGNED: models_yaw_pitch_roll
[build] ADDED: Config flag: SUPPORT_STANDARD_FILEIO
[build] ADDED: Config flag: SUPPORT_WINMM_HIGHRES_TIMER (1641)
[build] ADDED: Config flag: SUPPORT_GL_DETAILS_INFO
[build] ADDED: Examples projects to VS2019 solution
[build] REVIEWED: Makefile to support PLATFORM_RPI (1580)
[build] REVIEWED: Multiple typecast warnings by JeffM2501
[build] REDESIGNED: VS2019 project build paths
[build] REDESIGNED: CMake build system by object71
[*] RENAMED: Several functions parameters for consistency
[*] UPDATED: Multiple bindings to latest version
[*] UPDATED: All external libraries to latest versions
[*] Multiple code improvements and fixes by multiple contributors!

-------------------------------------------------------------------------
Release: raylib 3.5 - 7th Anniversary Edition (25 December 2020)
-------------------------------------------------------------------------
KEY CHANGES:
- [core] ADDED: PLATFORM_DRM to support RPI4 and other devices (1388) by kernelkinetic
- [core] REDESIGNED: Window states management system through FLAGS
- [rlgl] ADDED: RenderBatch type and related functions to allow custom batching (internal only)
- [rlgl] REDESIGNED: Framebuffers API to support multiple attachment types (721)
- [textures] REDESIGNED: Image*() functions, big performance improvements (software rendering)
- [*] REVIEWED: Multiple functions to replace file accesses by memory accesses
- [*] ADDED: GitHub Actions CI to support multiple raylib build configurations

Detailed changes:
[core] ADDED: SetWindowState() / ClearWindowState() -> New flags added!
[core] ADDED: IsWindowFocused()
[core] ADDED: GetWindowScaleDPI()
[core] ADDED: GetMonitorRefreshRate() (1289) by Shylie
[core] ADDED: IsCursorOnScreen() (1262) by ChrisDill
[core] ADDED: SetMouseCursor() and GetMouseCursor() for standard Desktop cursors (1407) by chances
[core] REMOVED: struct RenderTexture2D: depthTexture variable
[core] REMOVED: HideWindow() / UnhideWindow() -> Use SetWindowState()
[core] REMOVED: DecorateWindow() / UndecorateWindow() -> Use SetWindowState()
[core] RENAMED: GetExtension() to GetFileExtension()
[core] REVIEWED: Several structs to reduce size and padding
[core] REVIEWED: struct Texture maps to Texture2D and TextureCubemap
[core] REVIEWED: ToggleFullscreen() (1287)
[core] REVIEWED: InitWindow(), support empty title for window (1323)
[core] REVIEWED: RPI: Mouse movements are bound to the screen resolution (1392) (1410) by kernelkinetic
[core] REVIEWED: GetPrevDirectoryPath() fixes on Unix-like systems (1246) by ivan-cx
[core] REPLACED: rgif.h by msf_gif.h for automatic gif recording
[core] REDESIGNED: GetMouseWheelMove() to return float movement for precise scrolling (1397) by Doy-lee
[core] REDESIGNED: GetKeyPressed(), and added GetCharPressed() (1336)
[core] UWP rework with improvements (1231) by Rover656
[core] Gamepad axis bug fixes and improvement (1228) by mmalecot
[core] Updated joystick mappings with latest version of gamecontrollerdb (1381) by coderoth
[rlgl] Corrected issue with OpenGL 1.1 support
[rlgl] ADDED: rlDrawMeshInstanced() (1318) by seanpringle
[rlgl] ADDED: rlCheckErrors (1321) by seanpringle
[rlgl] ADDED: BLEND_SET blending mode (1251) by RandomErrorMessage
[rlgl] ADDED: rlSetLineWidth(), rlGetLineWidth(), rlEnableSmoothLines(), rlDisableSmoothLines() (1457) by JeffM2501
[rlgl] RENAMED: rlUnproject() to Vector3Unproject() [raymath]
[rlgl] REVIEWED: Replace rlglDraw() calls by DrawRenderBatch() internal calls
[rlgl] REVIEWED: GenTextureCubemap(), use rlgl functionality only
[rlgl] REVIEWED: rlFramebufferAttach() to support texture layers
[rlgl] REVIEWED: GenDrawCube() and GenDrawQuad()
[rlgl] REVIEWED: Issues with vertex batch overflow (1223)
[rlgl] REVIEWED: rlUpdateTexture(), issue with offsets
[rlgl] REDESIGNED: GenTexture*() to use the new fbo API (721)
[raymath] ADDED: Normalize() and Remap() functions (1247) by NoorWachid
[raymath] ADDED: Vector2Reflect() (1400) by daniel-junior-dube
[raymath] ADDED: Vector2LengthSqr() and Vector3LengthSqr() (1248) by ThePituLegend
[raymath] ADDED: Vector2MoveTowards() function (1233) by anatagawa
[raymath] REVIEWED: Some functions consistency (1197) by Not-Nik
[raymath] REVIEWED: QuaternionFromVector3ToVector3() (1263) by jvocaturo
[raymath] REVIEWED: MatrixLookAt(), optimized (1442) by RandomErrorMessage
[shapes] ADDED: CheckCollisionLines(), by Elkantor
[text] Avoid [textures] functions dependencies
[text] ADDED: Config flag: SUPPORT_TEXT_MANIPULATION
[text] ADDED: LoadFontFromMemory() (TTF only) (1327)
[text] ADDED: UnloadFontData()
[text] RENAMED: FormatText() -> TextFormat()
[text] REVIEWED: Font struct, added charsPadding (1432)
[text] REVIEWED: TextJoin()
[text] REVIEWED: TextReplace() (1172)
[text] REVIEWED: LoadBMFont() to load data from memory (1232)
[text] REVIEWED: GenImageFontAtlas(), fixed offset (1171)
[text] REDESIGNED: LoadFontData(), reviewed input parameters
[text] REDESIGNED: LoadFontDefault(), some code simplifications
[text] REDESIGNED: LoadFontFromImage(), avoid LoadImageEx()
[text] REDESIGNED: LoadFontData(), avoid GenImageColor(), ImageFormat()
[text] REDESIGNED: LoadBMFont(), avoid ImageCopy(), ImageFormat(), ImageAlphaMask()
[textures] Move Color functions from [core] to [textures] module
[textures] ADDED: ColorAlphaBlend()
[textures] ADDED: GetPixelColor()
[textures] ADDED: SetPixelColor()
[textures] ADDED: LoadImageFromMemory() (1327)
[textures] ADDED: LoadImageAnim() to load animated sequence of images
[textures] ADDED: DrawTextureTiled() (1291) - Demizdor
[textures] ADDED: UpdateTextureRec()
[textures] ADDED: UnloadImageColors(), UnloadImagePalette(), UnloadWaveSamples()
[textures] REMOVED: Config flag: SUPPORT_IMAGE_DRAWING
[textures] REMOVED: LoadImageEx()
[textures] REMOVED: LoadImagePro()
[textures] REMOVED: GetImageDataNormalized(), not exposed in the API
[textures] RENAMED: ImageExtractPalette() to GetImagePalette()
[textures] RENAMED: Fade() to ColorAlpha(), added define for compatibility
[textures] RENAMED: GetImageData() -> LoadImageColors()
[textures] RENAMED: GetImagePalette() -> LoadImagePalette()
[textures] RENAMED: GetWaveData() -> LoadWaveSamples()
[textures] REVIEWED: GetPixelDataSize() to consider compressed data properly
[textures] REVIEWED: GetTextureData(), allow retrieving 32bit float data
[textures] REVIEWED: ImageDrawText*() params order
[textures] REVIEWED: ColorAlphaBlend(), support tint color
[textures] REVIEWED: ColorAlphaBlend(), integers-version, optimized (1218)
[textures] REVIEWED: ImageDraw(), consider negative source offset properly (1283)
[textures] REVIEWED: ImageDraw(), optimizations test (1218)
[textures] REVIEWED: ImageResizeCanvas(), optimization (1218)
[textures] REVIEWED: ExportImage(), optimized
[textures] REVIEWED: ImageAlphaPremultiply(), optimization
[textures] REVIEWED: ImageAlphaClear(), minor optimization
[textures] REVIEWED: ImageToPOT(), renamed parameter
[textures] REVIEWED: ImageCrop() (1218)
[textures] REVIEWED: ImageToPOT() (1218)
[textures] REVIEWED: ImageAlphaCrop() (1218)
[textures] REVIEWED: ExportImage(), optimized (1218)
[textures] REDESIGNED: ImageCrop(), optimized (1218)
[textures] REDESIGNED: ImageRotateCCW(), optimized (1218)
[textures] REDESIGNED: ImageRotateCW(), optimized (1218)
[textures] REDESIGNED: ImageFlipHorizontal(), optimized (1218)
[textures] REDESIGNED: ImageFlipVertical(), optimized (1218)
[textures] REDESIGNED: ImageResizeCanvas(), optimized (1218)
[textures] REDESIGNED: ImageDrawPixel(), optimized
[textures] REDESIGNED: ImageDrawLine(), optimized
[textures] REDESIGNED: ImageDraw(), optimized (1218)
[textures] REDESIGNED: ImageResize(), optimized (1218)
[textures] REDESIGNED: ImageFromImage(), optimized (1218)
[textures] REDESIGNED: ImageDraw(), optimization (1218)
[textures] REDESIGNED: ImageAlphaClear(), optimized (1218)
[textures] REDESIGNED: ExportImageAsCode() to use memory buffer (1232)
[textures] REDESIGNED: ColorFromHSV()
[models] ADDED: DrawTriangle3D() and DrawTriangleStrip3D()
[models] ADDED: UnloadModelKeepMeshes()
[models] REVIEWED: LoadModel(), avoid loading texcoords and normals from model if not existent
[models] REVIEWED: GenMeshCubicmap(), added comments and simplification
[models] REVIEWED: GenMeshCubicmap(), fixed generated normals (1244) by GoldenThumbs
[models] REVIEWED: GenMeshPoly(), fixed buffer overflow (1269) by frithrah
[models] REVIEWED: LoadOBJ(): Allow for multiple materials in obj files (1408) by chriscamacho and codifies
[models] REVIEWED: LoadIQM() materials loading (1227) by sikor666
[models] REVIEWED: LoadGLTF() to read from memory buffer
[models] REVIEWED: UpdateMesh(), fix extra memory allocated when updating color buffer (1271) by 4yn
[models] REVIEWED: MeshNormalsSmooth() (1317) by seanpringle
[models] REVIEWED: DrawGrid() (1417)
[models] REDESIGNED: ExportMesh() to use memory buffer (1232)
[models] REDESIGNED: LoadIQM() and LoadModelAnimations() to use memory buffers
[audio] ADDED: LoadWaveFromMemory() (1327)
[audio] REMOVED: SetMusicLoopCount()
[audio] REVIEWED: Several functions, sampleCount vs frameCount (1423)
[audio] REVIEWED: SaveWAV() to use memory write insted of file
[audio] REVIEWED: LoadMusicStream(), support WAV music streaming (1198)
[audio] REVIEWED: Support multiple WAV sampleSize for MusicStream (1340)
[audio] REVIEWED: SetAudioBufferPitch()
[audio] REDESIGNED: Audio looping system
[audio] REDESIGNED: LoadSound(): Use memory loading (WAV, OGG, MP3, FLAC) (1312)
[audio] REDESIGNED: ExportWaveAsCode() to use memory buffers
[utils] ADDED: MemAlloc() / MemFree() (1440)
[utils] ADDED: UnloadFileData() / UnloadFileText()
[utils] REVIEWED: android_fopen() to support SDCard access
[utils] REDESIGNED: SaveFile*() functions to expose file access results (1420)
[rmem] REVIEWED: MemPool and other allocators optimization (1211) by assyrianic
[examples] ADDED: core/core_window_flags
[examples] ADDED: core/core_quat_conversion by chriscamacho and codifies
[examples] ADDED: textures/textures_blend_modes (1261) by accidentalrebel
[examples] ADDED: textures/textures_draw_tiled (1291) by Demizdor
[examples] ADDED: shaders/shaders_hot_reloading (1198)
[examples] ADDED: shaders/shaders_rlgl_mesh_instanced (1318) by seanpringle
[examples] ADDED: shaders/shaders_multi_sampler2d
[examples] ADDED: others/embedded_files_loading
[examples] REVIEWED: textures/textures_raw_data (1286)
[examples] REVIEWED: textures/textures_sprite_explosion, replace resources
[examples] REVIEWED: textures/textures_particles_blending, replace resources
[examples] REVIEWED: textures/textures_image_processing, support mouse
[examples] REVIEWED: models/models_skybox to work on OpenGL ES 2.0
[examples] REVIEWED: audio/resources, use open license resources
[examples] REVIEWED: others/raudio_standalone.c
[build] ADDED: New config.h configuration options exposing multiple define values
[build] REMOVED: ANGLE VS2017 template project
[build] REVIEWED: All MSVC compile warnings
[build] Updated Makefile for web (1332) by rfaile313
[build] Updated build pipelines to use latest emscripten and Android NDK
[build] Updated emscriptem build script to generate .a on WebAssembly
[build] Updated Android build for Linux, supporting ANDROID_NDK at compile time by branlix3000
[build] Updated VSCode project template tasks
[build] Updated VS2017.UWP project template by Rover656
[build] Updated Android build pipeline
[build] REMOVED: AppVeyor and Travis CI build systems
[*] Moved raysan5/raylib/games to independent repo: raysan5/raylib-games
[*] Replaced several examples resources with more open licensed alternatives
[*] Updated BINDINGS.md with NEW bindings and added raylib version binding!
[*] Updated all external libraries to latest versions
[*] Multiple code improvements and small fixes

-----------------------------------------------
Release: raylib 3.0 (01 April 2020)
-----------------------------------------------
KEY CHANGES:
- Global context states used on all modules.
- Custom memory allocators for all modules and dependencies.
- Centralized file access system and memory data loading.
- Structures reviewed to reduce size and always be used as pass-by-value.
- Tracelog messages completely reviewed and categorized.
- raudio module reviewed to accomodate new Music struct and new miniaudio.
- text module reviewed to improve fonts generation and text management functions.
- Multiple new examples added and categorized examples table.
- GitHub Actions CI implemented for Windows, Linux and macOS.

Detailed changes:
[build] ADDED: VS2017.ANGLE project, by msmshazan
[build] ADDED: VS2017 project support for x64 platform configuration
[build] ADDED: Makefile for Android building on macOS, by Yunoinsky
[build] ADDED: Makefile for Android building on Linux, by pamarcos
[build] REMOVED: VS2015 project
[build] REVIEWED: VSCode project
[build] REVIEWED: Makefile build system
[build] REVIEWED: Android building, by NimbusFox
[build] REVIEWED: Compilation with CLion IDE, by Rover656
[build] REVIEWED: Generation of web examples, by pamarcos
[build] REVIEWED: Makefiles path to 'shell.html', by niorad
[build] REVIEWED: VS2017 64bit compilation issues, by spec-chum
[build] REVIEWED: Multiple fixes on projects building, by ChrisDill, JuDelCo, electronstudio
[core] ADDED: Support touch/mouse indistinctly
[core] ADDED: FLAG_WINDOW_ALWAYS_RUN to avoid pause on minimize
[core] ADDED: Config flag SUPPORT_HALFBUSY_WAIT_LOOP
[core] ADDED: RPI mouse cursor point support on native mode
[core] ADDED: GetWorldToScreen2D()- Get screen space position for a 2d camera world space position, by arvyy
[core] ADDED: GetScreenToWorld2D() - Get world space position for a 2d camera screen space position, by arvyy
[core] ADDED: GetWorldToScreenEx() - Get size position for a 3d world space position
[core] ADDED: DirectoryExists() - Check if a directory path exists
[core] ADDED: GetPrevDirectoryPath() - Get previous directory path for a given path
[core] ADDED: CompressData() - Compress data (DEFLATE algorythm)
[core] ADDED: DecompressData() - Decompress data (DEFLATE algorythm)
[core] ADDED: GetWindowPosition() - Get window position XY on monitor
[core] ADDED: LoadFileData() - Load file data as byte array (read)
[core] ADDED: SaveFileData() - Save data to file from byte array (write)
[core] ADDED: LoadFileText() - Load text data from file (read), returns a '\0' terminated string
[core] ADDED: SaveFileText() - Save text data to file (write), string must be '\0' terminated
[core] REMOVED: Show raylib logo at initialization
[core] REVIEWED: GetFileName(), security checks
[core] REVIEWED: LoadStorageValue(), by danimartin82
[core] REVIEWED: SaveStorageValue(), by danimartin82
[core] REVIEWED: IsMouseButtonReleased(), when press/release events come too fast, by oswjk
[core] REVIEWED: SetWindowMonitor(), by DropsOfSerenity
[core] REVIEWED: IsFileExtension() to be case-insensitive
[core] REVIEWED: IsFileExtension() when checking no-extension files
[core] REVIEWED: Default font scale filter for HighDPI mode
[core] REVIEWED: Touch input scaling for PLATFORM_WEB
[core] REVIEWED: RPI input system, by DarkElvenAngel
[core] REVIEWED: RPI input threads issues
[core] REVIEWED: OpenGL extensions loading and freeing
[core] REVIEWED: GetDirectoryPath()
[core] REVIEWED: Camera2D behavior, by arvyy
[core] REVIEWED: OpenGL ES 2.0 extensions check
[rlgl] ADDED: Flags to allow frustrum culling near/far distance configuration at compile time
[rlgl] ADDED: Flags to sllow MAX_BATCH_BUFFERING config at compile time
[rlgl] ADDED: GetMatrixProjection(), by chriscamacho
[rlgl] ADDED: rlUpdateMeshAt() - Update vertex or index data on GPU, at index, by brankoku
[rlgl] REVIEWED: Vertex padding not zeroed for quads, by kawa-yoiko
[rlgl] REVIEWED: Read texture data as RGBA from FBO on GLES 2.0
[rlgl] REVIEWED: LoadShaderCode() for const correctness, by heretique
[rlgl] REVIEWED: rlLoadTexture()
[rlgl] REVIEWED: rlReadTexturePixels()
[rlgl] REVIEWED: rlUpdateMesh() to supports updating indices, by brankoku
[rlgl] REVIEWED: GenTextureCubemap(), renamed parameters for consistency
[rlgl] REVIEWED: HDR pixels loading
[raymath] ADDED: MatrixRotateXYZ(), by chriscamacho
[raymath] RENAMED: Vector3Multiply() to Vector3Scale()
[camera] REVIEWED: Free camera pitch, by chriscamacho
[camera] REVIEWED: Camera not working properly at z-align, by Ushio
[shapes] ADDED: DrawTriangleStrip() - Draw a triangle strip defined by points
[shapes] ADDED: DrawEllipse() - Draw ellipse
[shapes] ADDED: DrawEllipseLines() - Draw ellipse outline
[shapes] ADDED: DrawPolyLines() - Draw a polygon outline of n sides
[shapes] REVIEWED: DrawPoly() shape rendering, by AlexHCC
[textures] ADDED: LoadAnimatedGIF() - Load animated GIF file
[textures] ADDED: GetImageAlphaBorder() - Get image alpha border rectangle
[textures] ADDED: ImageFromImage() - Create an image from another image piece
[textures] ADDED: ImageClearBackground(), by iamsouravgupta
[textures] ADDED: ImageDrawPixel(), by iamsouravgupta
[textures] ADDED: ImageDrawCircle(), by iamsouravgupta
[textures] ADDED: ImageDrawLineEx(), by iamsouravgupta
[textures] ADDED: ImageDrawPixelV(), by RobLoach
[textures] ADDED: ImageDrawCircleV(), by RobLoach
[textures] ADDED: ImageDrawLineV(), by RobLoach
[textures] ADDED: ImageDrawRectangleV(), by RobLoach
[textures] ADDED: ImageDrawRectangleRec(), by RobLoach
[textures] REVIEWED: ImageDrawPixel(), by RobLoach
[textures] REVIEWED: ImageDrawLine(), by RobLoach
[textures] REVIEWED: ImageDrawCircle(), by RobLoach
[textures] REVIEWED: ImageDrawRectangle(), by RobLoach
[textures] REVIEWED: ImageDraw(), now it supports color tint parameter
[textures] REVIEWED: ImageResizeCanvas()
[textures] REVIEWED: ImageCrop() with security checks
[textures] REVIEWED: ImageAlphaMask()
[textures] REVIEWED: ImageDrawRectangleLines()
[textures] REVIEWED: GetImageData()
[text] ADDED: TextCopy() - Copy one string to another, returns bytes copied
[text] ADDED: GetCodepoints() - Get all codepoints in a string
[text] ADDED: CodepointToUtf8() - Encode codepoint into utf8 text
[text] ADDED: DrawTextCodepoint() - Draw one character (codepoint)
[text] RENAMED: LoadDefaultFont() -> LoadFontDefault()
[text] RENAMED: TextCountCodepoints() -> GetCodepointsCount()
[text] REVIEWED: TextFormat(), to support caching, by brankoku
[text] REVIEWED: LoadFontData(), generate empty image for space character
[text] REVIEWED: TextSplit()
[text] REVIEWED: TextToInteger()
[text] REVIEWED: GetNextCodepoint(), renamed parameters for clarity
[text] REVIEWED: GenImageFontAtlas(), improved atlas size computing
[text] REDESIGNED: struct Font, character rectangles have been moved out from CharInfo to Font
[text] REDESIGNED: struct CharInfo, now includes directly an Image of the glyph
[text] REDESIGNED: GenImageFontAtlas(), additional recs parameter added
[text] REDESIGNED: ImageTextEx(), to avoid font retrieval from GPU
[models] ADDED: Support rlPushMatrix() and rlPopMatrix() on mesh drawing
[models] ADDED: DrawPoint3D() - Draw a point in 3D space, actually a small line, by ProfJski
[models] ADDED: Multi texture support for materials in GLTF format, by Gamerfiend, chriscamacho
[models] REVIEWED: LoadGLTF(), fixed memory leak, by jubalh
[models] REVIEWED: LoadIQM(), support multiple animations loading, by culacant
[models] REVIEWED: GetCollisionRayModel(), to avoid pointers
[models] REVIEWED: CheckCollisionRay*(), parameters renamed
[models] REVIEWED: UnloadMesh(), to avoid pointers
[models] REVIEWED: LoadModel(), memory initialization
[models] REVIEWED: UpdateModelAnimation(), added security checks
[models] REVIEWED: Multiple fixes on models loading, by jubalh
[models] REVIEWED: Normals updated when using animated meshes, by las3rlars
[models] REVIEWED: Compilation when the SUPPORT_MESH_GENERATION not set, by Elkantor
[raudio] ADDED: Multi-channel audio playing, by chriscamacho
[raudio] REMOVED: LoadWaveEx()
[raudio] RENAMED: IsAudioBufferProcessed() to IsAudioStreamProcessed()
[raudio] REVIEWED: Ensure .xm playback starts in the right place, by illegalinstruction
[raudio] REVIEWED: Fix short non-looping sounds, by jbosh
[raudio] REVIEWED: Modules playing time to full length
[raudio] REDESIGNED: Replaced Music pointer by struct
[raudio] REDESIGNED: Removed sampleLeft from Music struct
[examples] ADDED: core_scissor_test, by ChrisDill
[examples] ADDED: core_2d_camera_platformer, by arvyy
[examples] ADDED: textures_mouse_painting, by ChrisDill
[examples] ADDED: models_waving_cubes, by codecat
[examples] ADDED: models_solar_system, by aldrinmartoq
[examples] ADDED: shaders_fog, by chriscamacho
[examples] ADDED: shaders_texture_waves, by Anata
[examples] ADDED: shaders_basic_lighting, by chriscamacho
[examples] ADDED: shaders_simple_mask, by chriscamacho
[examples] ADDED: audio_multichannel_sound, by chriscamacho
[examples] ADDED: shaders_spotlight, by chriscamacho
[examples] RENAMED: text_sprite_font > text_font_spritefont
[examples] RENAMED: text_ttf_loading > text_font_filters
[examples] RENAMED: text_bmfont_ttf > text_font_loading
[examples] REMOVED: models_obj_viewer
[examples] REMOVED: models_solar_system
[examples] REVIEWED: models_obj_loading > models_loading
[examples] REVIEWED: models_materials_pbr, shader issues
[examples] REVIEWED: core_window_letterbox, detailed explanation, by jotac0
[examples] REVIEWED: core_window_letterbox, virtual mouse, by anatagawa
[games] ADDED: GGJ2020 game - RE-PAIR
[*] Misc fixes and tweaks, by yaram, oraoto, zatherz, piecedigital, Shylie
[*] Update ALL supported projects (Notepad++, VS2017)
[*] Update ALL external libraries to latest versions (29.Jan.2020)
[*] Update ALL examples and games
[*] Update BINDINGS list

-----------------------------------------------
Release: raylib 2.5 (May 2019)
-----------------------------------------------
KEY CHANGES:
- [core] Redesigned Gamepad mechanism, now common to all platforms and gamepads
- [core] HighDPI monitors support with automatic content scaling
- [rlgl] Complete module redesign to use one single internal buffer
- [rlgl] VR system redesign to allow custom device parameters and distortion shader
- [shapes] New drawing shapes available: CircleSector, Ring and RectangleRounded
- [text] New text management API (multiple functions)
- [text] Full Unicode support (utf8 text)
- [textures] Cubemap textures support
- [textures] Quad and N-Patch drawing
- [models] Skeletal model animation support
- [models] Support multiple meshes per model
- [models] Support glTF model loading

Detailed changes:
[build] REVIEWED: Default raylib and examples Makefile
[build] REVIEWED: Notepad++ NppExec scripts
[build] REVIEWED: VS2015 and VS2017 projects
[build] REVIEWED: Android APK build pipeline
[core] Converted most defined values as enum values
[core] Complete redesign of RPI input system to use evdev events
[core] ADDED: IsWindowResized() - Check if window has been resized
[core] ADDED: IsWindowHidden() - Check if window is currently hidden
[core] ADDED: UnhideWindow() - Show the window
[core] ADDED: HideWindow() - Hide the window
[core] ADDED: GetWindowHandle() - Get native window handle
[core] ADDED: GetMonitorCount() - Get number of connected monitors
[core] ADDED: GetMonitorWidth() - Get primary monitor width
[core] ADDED: GetMonitorHeight() - Get primary monitor height
[core] ADDED: GetMonitorPhysicalWidth() - Get primary monitor physical width in millimetres
[core] ADDED: GetMonitorPhysicalHeight() - Get primary monitor physical height in millimetres
[core] ADDED: GetMonitorName() - Get the human-readable, UTF-8 encoded name of the primary monitor
[core] ADDED: GetClipboardText() - Get clipboard text content
[core] ADDED: SetClipboardText() - Set clipboard text content
[core] ADDED: ColorFromHSV() - Returns a Color from HSV values
[core] ADDED: FileExists() - Check if file exists
[core] ADDED: GetFileNameWithoutExt() - Get filename string without extension (memory should be freed)
[core] ADDED: GetDirectoryFiles() - Get filenames in a directory path (memory should be freed)
[core] ADDED: ClearDirectoryFiles() - Clear directory files paths buffers (free memory)
[core] ADDED: OpenURL() - Open URL with default system browser (if available)
[core] ADDED: SetMouseOffset() - Set mouse offset
[core] ADDED: SetMouseScale() - Set mouse scaling
[core] REMOVED: ShowLogo() - Activate raylib logo at startup (can be done with flags)
[shapes] ADDED: DrawCircleSector() - Draw a piece of a circle
[shapes] ADDED: DrawCircleSectorLines() - Draw circle sector outline
[shapes] ADDED: DrawRing() - Draw ring
[shapes] ADDED: DrawRingLines() - Draw ring outline
[shapes] ADDED: DrawRectangleRounded() - Draw rectangle with rounded edges
[shapes] ADDED: DrawRectangleRoundedLines() - Draw rectangle with rounded edges outline
[shapes] ADDED: SetShapesTexture() - Define default texture used to draw shapes
[textures] REVIEWED: ExportImage() - Reorder function parameters
[textures] REVIEWED: ImageDrawRectangle() - Remove unneeded parameter
[textures] ADDED: ExportImageAsCode() - Export image as code file defining an array of bytes
[textures] ADDED: LoadTextureCubemap() - Load cubemap from image, multiple image cubemap layouts supported
[textures] ADDED: ImageExtractPalette() - Extract color palette from image to maximum size (memory should be freed)
[textures] ADDED: ImageDrawRectangleLines() - Draw rectangle lines within an image
[textures] ADDED: DrawTextureQuad() - Draw texture quad with tiling and offset parameters
[textures] ADDED: DrawTextureNPatch() - Draws a texture (or part of it) that stretches or shrinks nicely
[models] REVIEWED: LoadMesh() -> LoadMeshes() - Support multiple meshes loading
[models] REVIEWED: LoadMaterial() -> LoadMaterials() - Support multiple materials loading
[models] REVIEWED: ExportMesh() - Reorder parameters
[models] ADDED: DrawCubeWiresV() - Draw cube wires (Vector version)
[models] ADDED: GenMeshPoly() - Generate polygonal mesh
[models] ADDED: SetMaterialTexture() - Set texture for a material map type (MAP_DIFFUSE, MAP_SPECULAR...)
[models] ADDED: SetModelMeshMaterial() - Set material for a mesh
[models] ADDED: LoadModelAnimations() - Load model animations from file
[models] ADDED: UpdateModelAnimation() - Update model animation pose
[models] ADDED: UnloadModelAnimation() - Unload animation data
[models] ADDED: IsModelAnimationValid() - Check model animation skeleton match
[rlgl] Improved internal batching mechanism (multibuffering support, triangle texcoords...)
[rlgl] REVIEWED: rlPushMatrix()/rlPopMatrix() - Now works like OpenGL 1.1
[rlgl] REVIEWED: SetShaderValue() - More generic, now requires uniform type
[rlgl] REMOVED: SetShaderValuei() - Can be acoomplished with new SetShaderValue()
[rlgl] ADDED: SetShaderValueV() - Set shader uniform value vector
[rlgl] ADDED: SetShaderValueTexture() - Set shader uniform value for texture
[rlgl] ADDED: BeginScissorMode() - Begin scissor mode (define screen area for following drawing)
[rlgl] ADDED: EndScissorMode() - End scissor mode
[rlgl] ADDED: SetVrConfiguration() - Set stereo rendering configuration parameters
[rlgl] REVIEWED: InitVrSimulator() - No input parameter required, use SetVrConfiguration()
[text] REVIEWED: LoadFontEx() - Reorder function parameters
[text] REVIEWED: LoadFontData() - Reorder function parameters
[text] REVIEWED: GenImageFontAtlas() - Reorder function parameters
[text] RENAMED: FormatText() -> TextFormat()
[text] RENAMED: SubText() -> TextSubtext()
[text] ADDED: LoadFontFromImage() - Load font from Image (XNA style)
[text] ADDED: DrawTextRec() - Draw text using font inside rectangle limits
[text] ADDED: DrawTextRecEx() - Draw text using font inside rectangle limits with support for text selection
[text] ADDED: TextIsEqual() - Check if two text string are equal
[text] ADDED: TextLength() - Get text length, checks for '\0' ending
[text] ADDED: TextReplace() - Replace text string (memory should be freed!)
[text] ADDED: TextInsert() - Insert text in a position (memory should be freed!)
[text] ADDED: TextJoin() - Join text strings with delimiter
[text] ADDED: TextSplit() - Split text into multiple strings
[text] ADDED: TextAppend() - Append text at specific position and move cursor!
[text] ADDED: TextFindIndex() - Find first text occurrence within a string
[text] ADDED: TextToUpper() - Get upper case version of provided string
[text] ADDED: TextToLower() - Get lower case version of provided string
[text] ADDED: TextToPascal() - Get Pascal case notation version of provided string
[text] ADDED: TextToInteger() - Get integer value from text (negative values not supported)
[raudio] ADDED: ExportWave() - Export wave data to file
[raudio] ADDED: ExportWaveAsCode() - Export wave sample data to code (.h)
[raudio] ADDED: IsAudioStreamPlaying() - Check if audio stream is playing
[raudio] ADDED: SetAudioStreamVolume() - Set volume for audio stream (1.0 is max level)
[raudio] ADDED: SetAudioStreamPitch() - Set pitch for audio stream (1.0 is base level)
[examples] Complete review of full examples collection, many additions
[examples] ADDED: core_custom_logging - Custom trace log system
[examples] ADDED: core_input_multitouch - Multitouch input example
[examples] ADDED: core_window_letterbox - Window adapted to screen
[examples] ADDED: core_loading_thread - Data loading in second thread
[examples] REVIEWED: core_input_gamepad - Adapted to new gamepad system
[examples] REVIEWED: core_vr_simulator - HMD device parameters and distortion shader should be provided
[examples] ADDED: core_window_scale_letterbox - Windows resizing and letterbox content
[examples] ADDED: shapes_rectangle_scaling_mouse - Scale a rectangle with mouse
[examples] ADDED: shapes_draw_circle_sector - Circle sector drawing
[examples] ADDED: shapes_draw_ring - Ring drawing
[examples] ADDED: shapes_draw_rectangle_rounded - Rounded rectangle drawing
[examples] ADDED: shapes_bouncing_ball - Ball bouncing in the screen
[examples] ADDED: shapes_collision_area - Collision detection and drawing
[examples] ADDED: shapes_following_eyes - Some maths on eyes and mouse
[examples] ADDED: shapes_easings_ball_anim - Ball animation
[examples] ADDED: shapes_easings_box_anim - Box animation
[examples] ADDED: shapes_easings_rectangle_array - Rectangles animation
[examples] REVIEWED: shapes_colors_palette - Reviewed color selection and text displaying
[examples] ADDED: textures_background_scrolling - Scrolling and parallaz background effect
[examples] ADDED: textures_image_npatch - Drawing N-Patch based boxes
[examples] ADDED: textures_sprite_button - Sprite button with sound
[examples] ADDED: textures_sprite_explosion - Sprite explosion with sound
[examples] ADDED: textures_bunnymark - Benchmarking test
[examples] ADDED: text_draw_inside_rectangle - Drawing text inside a delimited rectangle box
[examples] ADDED: text_unicode - Multiple languages text drawing
[examples] ADDED: text_rectangle_bound - Fit text inside a rectangle
[examples] REVIEWED: text_bmfont_ttf - Simplified example
[examples] ADDED: models_animation - Animated models loading and animation playing
[examples] ADDED: models_obj_viewer - Draw and drop models viewer
[examples] ADDED: models_rlgl_solar_system - Solar system simulation using rlgl functionality
[examples] ADDED: models_first_person_maze - 3D maze fps
[examples] ADDED: shaders_palette_switch - Switching color palette on shader
[examples] ADDED: shaders_raymarching - Raymarching shader
[examples] ADDED: shaders_texture_drawing - Texture drawing on GPU
[examples] ADDED: shaders_texture_waves - Texture waves on shader
[examples] ADDED: shaders_julia_set - Julia set fractals
[examples] ADDED: shaders_eratosthenes - Prime number visualization shader
[examples] REVIEWED: audio_raw_stream - Mostly rewritten
[games] ADDED: GGJ19 game - Cat vs Roomba
[*] Updated external libraries to latest version
[*] Multiple bugs corrected (check github issues)

-----------------------------------------------
Release: raylib 2.0 (July 2018)
-----------------------------------------------
KEY CHANGES:
- Removed external dependencies (GLFW3 and OpenAL)
- Complete redesign of audio module to use miniaudio library
- Support AppVeyor and Travis CI (continuous integration) building
- Reviewed raymath.h for better consistency and performance (inlining)
- Refactor all define SUPPORT_* into a single config.h
- Support TCC compiler (32bit and 64bit)

Detailed changes:
[build] REMOVED: GitHub develop branch
[build] REMOVED: External dependencies GLFW and OpenAL
[build] ADDED: Android 64bit ARM support
[build] ADDED: FreeBSD, OpenBSD, NetBSD, Dragon Fly OS support
[build] ADDED: Universal Windows Platform (UWP) support
[build] ADDED: Wayland Linux desktop support
[build] ADDED: AppVeyor CI for automatic Windows builds
[build] ADDED: Travis CI for automatic Linux/macOS builds
[build] ADDED: rglfw (GLFW3 module) to avoid external dependency
[build] ADDED: VS2017 UWP project
[build] ADDED: Builder project template
[build] ADDED: Compiler memory sanitizer for better debug
[build] ADDED: CMake package target and CI auto-deploy tags
[build] ADDED: DEBUG library building support
[build] ADDED: Notepad++ NppExec scripts
[build] REVIEWED: VS2015 and VS2017 projects
[build] REVIEWED: Android APK build pipeline
[core] REVIEWED: Window creation hints to support transparent windows
[core] Unified InitWindow() between platforms
[core] Export Android main entry point
[core] RENAMED: Begin3dMode() to BeginMode3D()
[core] RENAMED: End3dMode() to EndMode3D()
[core] RENAMED: Begin2dMode() to BeginMode2D()
[core] RENAMED: End2dMode() to EndMode2D()
[core] RENAMED: struct Camera to Camera3D
[core] RENAMED: struct SpriteFont to Font -> plus all required functions!
[core] RENAMED: enum TextureFormat to PixelFormat
[core] REVIEWED: Rectangle params int to float
[core] REVIEWED: timing system for macOS
[core] REMOVED: ColorToFloat()
[core] ADDED: GetCurrentTime() on macOS
[core] ADDED: GetTime()
[core] ADDED: struct Vector4
[core] ADDED: SetTraceLog() to define trace log messages type
[core] ADDED: GetFileName() to get filename from path string
[core] ADDED: ColorToHSV()
[core] ADDED: ColorNormalize()
[core] ADDED: SetWindowSize() to scale Windows in runtime
[core] ADDED: SetMouseScale() to scale mouse input
[core] ADDED: key definitions - KEY_GRAVE, KEY_SLASH, KEY_BACKSLASH
[core] RENAMED: GetHexValue() to ColorToInt()
[core] REVIEWED: Fade()
[core] REVIEWED: InitWindow() to avoid void pointer (safety)
[core] Support camera 3d orthographic projection mode
[shapes] ADDED: DrawRectangleLinesEx()
[textures] Improved pixel formats support (32bit channels)

4.5

- **`NEW` Improved ANGLE support on Desktop platforms**: Support for OpenGL ES 2.0 on Desktop platforms (Windows, Linux, macOS) has been reviewed by wtnbgo GitHub user. Now raylib can be compiled on desktop for OpenGL ES 2.0 and linked against [`ANGLE`](https://github.com/google/angle). This _small_ addition open the door to building raylib for all **ANGLE supported backends: Direct3D 11, Vulkan and Metal**. Please note that this new feature is still experimental and requires further testing!

- **`NEW` Camera module**: A brand new implementation from scratch for `rcamera` module, contributed by Crydsch GitHub user! **New camera system is simpler, more flexible, more granular and more extendable**. Specific camera math transformations (movement/rotation) have been moved to individual functions, exposing them to users if required. Global state has been removed from the module and standalone usage has been greatly improved; now `rcamera.h` single-file header-only library can be used externally, independently of raylib. A new `UpdateCameraPro()` function has been added to address input-dependency of `UpdateCamera()`, now advance users have **full control over camera inputs and movement/rotation speeds**!

- **`NEW` Support for M3D models and M3D/GLTF animations**: 3d models animations support has been a limited aspect of raylib for long time, some versions ago IQM animations were supported but raylib 4.5 also adds support for the brand new [M3D file format](https://bztsrc.gitlab.io/model3d/), including animations and the long expected support for **GLTF animations**! The new M3D file format is **simple, portable, feature complete, extensible and open source**. It also provides a complete set of tools to export/visualize M3D models from/to Blender! Now raylib supports up to **3 model file-formats with animations**: `IQM`, `GLTF` and `M3D`.

- **`NEW` Support QOA audio format (import/export)**: Just a couple of months ago the new [QOA file format](https://qoaformat.org/) was published, a very simple, portable and open source quite-ok-audio file format. raylib already supports it, added to `raudio` module and including audio loading from file, loading from memory, streaming from file, streaming from memory and **exporting to QOA** audio format. **Because simplicity really matters to raylib!**

- **`NEW` Module for compressed textures loading**: [`rl_gputex`](https://github.com/raysan5/raylib/blob/master/src/external/rl_gputex.h), a portable single-file header-only small library to load compressed texture file-formats (DDS, PKM, KTX, PVR, ASTC). Provided functionality is not new to raylib but it was part of the raylib `rtextures` module, now it has been moved into a separate self-contained library, **improving portability**. Note that this module is only intended to **load compressed data from files, ready to be uploaded to GPU**, no compression/decompression functionality is provided. This change is a first step towards a better modularization of raylib library.

- **Reviewed `rlgl` module for automatic limits checking**: Again, [`rlgl`](https://github.com/raysan5/raylib/blob/master/src/rlgl.h) has been reviewed to simplify usage. Now users do not need to worry about reaching the internal render-batch limits when they send their triangles to draw 2d/3d, `rlgl` manages it automatically! This change allows a **great simplification for other modules** like `rshapes`, `rtextures` and `rmodels` that do not need to worry about bufffer overflows and can just define as many vertex as desired!

- **Reviewed `rshapes` module to minimize the rlgl dependency**: Now `rshapes` 2d shapes drawing functions **only depend on 6 low-level functions**: `rlBegin()`, `rlEnd()`, `rlVertex3f()`, `rlTexCoord2f()`, `rlNormal3f()`, `rlSetTexture()`. With only those pseudo-OpenGl 1.1 minimal functionality, everything can be drawn! This improvement converts `rshapes` module in a **self-contained, portable shapes-drawing library that can be used independently of raylib**, as far as entry points for those 6 functions are provided by the user. It even allows to be used for software rendering, with the proper backend!

- **Added data structures validation functions**: Multiple functions have been added by RobLoach GitHub user to ease the validation of raylib data structures: `IsImageReady()`, `IsTextureReady()`, `IsSoundReady()`... Now users have a simple mechanism to **make sure data has been correctly loaded**, instead of checking internal structure values by themselfs.

As usual, those are only some highlights but there is much more! New image generators, new color transformation functionality, improved blending support for color/alpha, etc... Make sure to check raylib [CHANGELOG]([CHANGELOG](https://github.com/raysan5/raylib/blob/master/CHANGELOG)) for a detailed list of changes! Please, note that all breaking changes have been flagged with a `WARNING` in the CHANGELOG, specially useful for binding creators!

**raylib keeps improving one more version** with a special focus on maintainability and sustainability. Always working towards making the library more **simple and easy-to-use**.

Let's keep **enjoying games/tools/graphics programming!** :)

4.2

- **raylib extra libraries cleanup**: raylib has been on diet and all the _extra_ libraries included on previous releases have been removed from raylib. Now raylib only includes the original **7** raylib modules: `rcore`, `rlgl`, `rshapes`, `rtextures`, `rtext`, `rmodels` and `raudio`. But no worries, _extra_ libraries have not been deleted, they have been moved to their own repos for better maintainability and more focus on its functionality. The libraries moved out from raylib repo are: [`raygui`](https://github.com/raysan5/raygui), [`physac`](https://github.com/raysan5/physac), [`rmem`](https://github.com/raylib-extras/rmem), [`reasings`](https://github.com/raylib-extras/reasings) and [`raudio`](https://github.com/raysan5/raudio) (standalone mode). On that same line, a new **amazing GitHub group:** [`raylib-extras`](https://github.com/raylib-extras) has been created by JeffM2501 to contain raylib extra libraries as well as other raylib add-ons provided by the community. Jeff has done an amazing work on that line, providing multiple libraries and examples for raylib, like [custom first-person and third person camera systems](https://github.com/raylib-extras/extras-c/tree/main/cameras), [Dear ImGui raylib integration](https://github.com/raylib-extras/rlImGui), [multiple specific examples](https://github.com/raylib-extras/examples-c) and even a complete [RPG Game Example](https://github.com/raylib-extras/RPGExample)! Great work Jeff! :D

- **raylib examples review**: The +120 raylib examples have been reviewed to add clearer information about when the were first created (raylib version used) and when they were updated for the last time. But the greatest improvement for users has been the **addition of an estimated difficulty level** for every example, [web has been updated accordingly](https://www.raylib.com/examples.html) to reflect those difficulty levels. Now examples are classified with **1 to 4 stars** depending on difficulty to help users with their learning process. Personally, I think this "small" addition could be a game-changer to better guide new users on the library adoption! Additionally, this new raylib release includes 7 new examples; the most interesting one: [`text_codepoints_loading`](https://www.raylib.com/examples/text/loader.html?name=text_codepoints_loading) that illustrates how to load and draw custom codepoints from a font file, very useful for Asian languages.

- [**`rres 1.0`**](https://github.com/raysan5/rres): New `rres` **resources packaging file-format**, including a [`rres-raylib`](https://github.com/raysan5/rres/blob/master/src/rres-raylib.h) library implementation and [`rrespacker`](https://raylibtech.itch.io/rrespacker) tool. `rres` file format has been [under development for +8 years](https://github.com/raysan5/rres#design-history) and it was originally created to be part of raylib. It was highly inspired by _XNA XNB_ resources file format but design has changed a lot along the years. This first release of the format specs is engine-agnostic and has been designed to be portable to any engine, including lots of professional features like data processing, compression and encryption.

- [**`raygui 3.2`**](https://github.com/raysan5/raygui): The **official raylib immediate-mode gui library** designed for tools development has been updated to a new version aligned with raylib 4.2. Multiple controls have been reviewed for library consistency, now all controls follow a similar function signature. It has been battle-tested with the development of +8 published tools in the last months. The tools can be seen and used for free in the [raylib technologies tools page](https://raylibtech.itch.io/). Worth mentioning that several of those **tools have been open sourced** for anyone to use, compile, contribute or learn how the code works.

- [**`raylib_parser`**](https://github.com/raysan5/raylib/tree/master/parser): Multiple contributors **using the tool to automatize bindings creation** have contributed with improvements of this **tool to parse `raylib.h`** (and other raylib-style headers) to tokenize its enums, structs and functions. Processed data can be exported to custom file formats (i.e XML, JSON, LUA) for bindings generation or even docs generation if required.

- **New file system API**: Current API has been redesigned to be more comprehensive and better aligned with raylib naming conventions, two new functions are provided `LoadDirectoryFiles()`/`LoadDirectoryFilesEx()` to load a `FilePathList` for provided path, supporting extension filtering and recursive directory scan. `LoadDroppedFiles()` has been renamed to better reflect its internal functionality. Now, all raylib functions that start with `Load*()` allocate memory internally and a equivalent `Unload*()` function is defined to take care of that memory internally when not required any more!

- **New audio stream processors API** (_experimental_): Now real-time audio stream data processors can be added using callbacks to played Music. It allows users to create custom effects for audio like delays of low-pass-filtering (example provided). The new API uses a callback system and it's still _ highly experimental_, it differs from the usual level of complexity that provides raylib and it is intended for advance users. It could change in the future but, actually, `raudio` module is in the spotlight for future updates; [miniaudio](https://github.com/mackron/miniaudio) implements a new higher-level API that can be useful in the future for raylib.

As always, there are more improvements than the key features listed, make sure to check raylib [CHANGELOG](CHANGELOG) for the detailed list of changes; for this release a `WARNING` flag has been added to all the changes that could affect bindings or productivity code. **raylib keeps improving one more version** and a special focus on maintainability has been put on the library for the future. Specific/advance functionality will be provided through **raylib-extras** repos and raylib main repo devlelopment will be focused on what made raylib popular: being a simple and easy-to-use library to **enjoy videogames programming**.

**Enjoy gamedev/tools/graphics programming!** :)

4.0

- **Naming consistency and coherency**: `raylib` API has been completely reviewed to be consistent on naming conventions for data structures and functions, comments and descriptions have been reviewed, also the syntax of many symbols for consistency; some functions and structs have been renamed (i.e. `struct CharInfo` to `struct GlyphInfo`). Output log messages have been also improved to show more info to the users. Several articles have been writen in this process: [raylib_syntax analysis](https://github.com/raysan5/raylib/wiki/raylib-syntax-analysis) and [raylib API usage analysis](https://gist.github.com/raysan5/7c0c9fff1b6c19af24bb4a51b7383f1e). In general, a big polishment of the library to make it more consistent and coherent.

- **Event Automation System**: This new _experimental_ feature has been added for future usage, it allows to **record input events and re-play them automatically**. This feature could be very useful to automatize examples testing but also for tutorials with assited game playing, in-game cinematics, speedruns, AI playing and more! Note this feature is still experimental.

- **Custom game-loop control**: As requested by some advance users, **the game-loop control can be exposed** compiling raylib with the config flag: `SUPPORT_CUSTOM_FRAME_CONTROL`. It's intended for advance users that want to control the events polling and also the timming mechanisms of their games.

- [**`rlgl 4.0`**](https://github.com/raysan5/raylib/blob/master/src/rlgl.h): This module has been completely **decoupled from platform layer** and raylib, now `rlgl` single-file header-only library only depends on the multiple OpenGL backends supported, even the dependency on `raymath` has been removed. Additionally, **support for OpenGL 4.3** has been added, supporting compute shaders and Shader Storage Buffer Objects (SSBO). Now `rlgl` can be used as a complete standalone portable library to wrap several OpenGL version and providing **a simple and easy-to-use pseudo-OpenGL immediate-mode API**.

- [**`raymath 1.5`**](https://github.com/raysan5/raylib/blob/master/src/raymath.h): This module has been reviewed and some new conventions have been adopted to make it **more portable and self-contained**:
- Functions are self-contained, no function use other raymath function inside, required code is directly re-implemented
- Functions input parameters are always received by value
- Functions use always a "result" variable for return
- Angles are always in radians (`DEG2RAD`/`RAD2DEG` macros provided for convenience)

- [**`raygui 3.0`**](https://github.com/raysan5/raygui): The **official raylib immediate-mode gui library** (included in `raylib/src/extras`) has been updated to a new version, embedding the icons collection and adding mulstiple improvements. It has been simplified and constrained for a better focus on its task: provide a simple and easy-to-use immediate-mode-gui library for small tools development.

- [**`raylib_parser`**](https://github.com/raysan5/raylib/tree/master/parser): Added **new tool to parse `raylib.h`** and tokenize its enums, structs and functions, extracting all required info (name, params, descriptions...) into custom output formats (TXT, XML, JSON...) for further processing. This tool is specially useful to **automatize bindings generation**. Hopefully, this tool will make life easier to binding creators to update their bindings for raylib 4.0 or adding new ones!

- **Zig and Odin official support for raylib**: Those two new amazing programming languages are officially supporting raylib, `Zig` lists raylib as an [official example for C interoperatibility](https://ziglang.org/learn/samples/#c-interoperability) and Odin [officially supports raylib as a vendor library](https://github.com/odin-lang/Odin/tree/master/vendor/raylib). Both languages also have several bingings to raylib. Additionally, Zig build system supported has been added to compile raylib library and examples.

Those are some of the key features for this new release but actually there is way more! **Support for `VOX` ([MagikaVoxel](https://ephtracy.github.io/)) 3d model format** has been added, **new [raylib_game_template](https://github.com/raysan5/raylib-game-template)** repo shared, **new `EncodeDataBase64()` and `DecodeDataBase64()` functions** added, **improved HiDPI support**, new `DrawTextPro()` with support for text rotations, completely **reviewed `glTF` models loading**, added **`SeekMusicStream()` for music seeking**, many new examples and +20 examples reviewed... **hundreds of improvements and bug fixes**! Make sure to check [CHANGELOG](CHANGELOG) for a detailed list of changes!

Undoubtely, **this is the best raylib ever**. Enjoy gamedev/tools/graphics programming! :)

3.7

- **REDESIGNED: `rlgl` module for greater abstraction level**. This suppose an **important change in raylib architecture**, now `rlgl` functionality is self-contained in the module and used by higher-level layers (specially by `core` module), those upper layers are the ones that expose functionality to the main API when required, for example the `Shaders`, `Mesh` and `Materials` functionality. Multiple `rlgl` functions have been renamed for consistency, in this case, following the `rl*()` prefix convention. Functions have also been reorganized internally by categories and `GenTexture*()` functions have been removed from the library and moved to [`models_material_pbr`](https://github.com/raysan5/raylib/blob/master/examples/models/models_material_pbr.c) example.

- **REDESIGNED: VR simulator and stereo rendering mechanism**. A **brand new API** has been added, more comprehensive and better integrated with raylib, the **new stereo rendering** can be combined with `RenderTexture` and `Shader` API allowing the user to **manage fbo and distortion shader directly**. Also, the new rendering mechanism supports **instancing on stereo rendering**! Check the updated [`core_vr_simulator`](https://github.com/raysan5/raylib/blob/master/examples/core/core_vr_simulator.c) example for reference!

- **ADDED: New file access callbacks system**. Several new callback functions have been added to the API to allow custom file loaders. A [nice example](https://github.com/RobLoach/raylib-physfs) it's the **raylib integration with a virtual file system** [PhysFS](https://icculus.org/physfs/).

- **ADDED: glTF animations support**. glTF is the preferred models file format to be used with raylib and along the addition of a models animation API on latest raylib versions, now animations support for glTF format has come to raylib, thanks for this great contribution to [Hristo Stamenov](object71)

- **ADDED: Music streaming support from memory**. raylib has been adding the `Load*FromMemory()` option to all its supported file formats but **music streaming** was not supported yet... until now. Thanks to this great contribution by [Agnis "NeZvērs" Aldiņš](nezvers), now raylib supports music streamming from memory data for all supported file formats: WAV, OGG, MP3, FLAC, XM and MOD.

- **RENAMED: enums values for consistency**. Most raylib enums names and values names have been renamed for consistency, now all value names start with the type of data they represent. It increases clarity and readability when using those values and also **improves overall library consistency**.

Beside those key changes, many functions have been reviewed with improvements and bug fixes, many of them contributed by the community! Thanks! And again, this release sets a **new milestone for raylib library**. Make sure to check [CHANGELOG](CHANGELOG) for detailed list of changes! Hope you enjoy this new raylib installment!

Happy **gamedev/tools/graphics** programming! :)

notes on raylib 4.0 - 8th Anniversary Edition
---------------------------------------------

It's been about 6 months since last raylib release and it's been **8 years since I started with this project**, what an adventure! It's time for a new release: `raylib 4.0`, **the biggest release ever** and an inflexion point for the library. Many hours have been put in this release to make it special, **many library details have been polished**: syntax, naming conventions, code comments, functions descriptions, log outputs... Almost all the issues have been closed (only 3 remain open at the moment of this writing) and some amazing new features have been added. I expect this **`raylib 4.0`** to be a long term version (LTS), stable and complete enough for any new graphic/game/tool application development.

Let's start with some numbers:

- **+130** closed issues (for a TOTAL of **+1030**!)
- **+550** commits since previous RELEASE
- **+20** functions ADDED to raylib API
- **+60** functions ADDED to rlgl API
- **+40** functions RENAMED/REVIEWED/REDESIGNED
- **+60** new contributors (for a TOTAL of **+275**!)

3.2

[stb] Updated to latest headers versions
[GLAD] Converted to header only library and simplified to only used extensions
[*] Reorganize library folders: external libs moved to src/external folder
[*] Reorganize src folder for Android library
[*] Review external dependencies usage
[*] Improved Linux and OSX build systems
[*] Lots of tweaks and bugs corrected all around

-----------------------------------------------
Release: raylib 1.4.0 (22 February 2016)
-----------------------------------------------
NOTE:
This version supposed another big improvement for raylib, including new modules and new features.
More than 30 new functions have been added to previous raylib version.
Around 8 new examples and +10 new game samples have been added.

BIG changes:
[textures] IMAGE MANIPULATION: Functions to crop, resize, colorize, flip, dither and even draw image-to-image or text-to-image.
[text] SPRITEFONT SUPPORT: Added support for AngelCode fonts (.fnt) and TrueType fonts (.ttf).
[gestures] REDESIGN: Gestures system simplified and prepared to process generic touch events, including mouse events (multiplatform).
[physac] NEW MODULE: Basic 2D physics support, use colliders and rigidbodies; apply forces to physic objects.

other changes:

[rlgl] Removed GLEW library dependency, now using GLAD
[rlgl] Implemented alternative to glGetTexImage() on OpenGL ES
[rlgl] Using depth data on batch drawing
[rlgl] Reviewed glReadPixels() function
[core][rlgl] Reviewed raycast system, now 3D picking works
[core] Android: Reviewed Android App cycle, paused if inactive
[shaders] Implemented Blinn-Phong lighting shading model
[textures] Implemented Floyd-Steinberg dithering - ImageDither()
[text] Added line-break support to DrawText()
[text] Added TrueType Fonts support (using stb_truetype)
[models] Implement function: CalculateBoundingBox(Mesh mesh)
[models] Added functions to check Ray collisions
[models] Improve map resolution control on LoadHeightmap()
[camera] Corrected small-glitch on zoom-in with mouse-wheel
[gestures] Implemented SetGesturesEnabled() to enable only some gestures
[gestures] Implemented GetElapsedTime() on Windows system
[gestures] Support mouse gestures for desktop platforms
[raymath] Complete review of the module and converted to header-only
[easings] Added new module for easing animations
[stb] Updated to latest headers versions
[*] Lots of tweaks around

-----------------------------------------------
Release: raylib 1.3.0 (01 September 2015)
-----------------------------------------------
NOTE:
This version supposed a big boost for raylib, new modules have been added with lots of features.
Most of the modules have been completely reviewed to accomodate to the new features.
Over 50 new functions have been added to previous raylib version.
Most of the examples have been redone and +10 new advanced examples have been added.

BIG changes:
[rlgl] SHADERS: Support for model shaders and postprocessing shaders (multiple functions)
[textures] FORMATS: Support for multiple internal formats, including compressed formats
[camera] NEW MODULE: Set of cameras for 3d view: Free, Orbital, 1st person, 3rd person
[gestures] NEW MODULE: Gestures system for Android and HTML5 platforms
[raygui] NEW MODULE: Set of IMGUI elements for tools development (experimental)

other changes:

[rlgl] Added check for OpenGL supported extensions
[rlgl] Added function SetBlenMode() to select some predefined blending modes
[core] Added support for drop&drag of external files into running program
[core] Added functions ShowCursor(), HideCursor(), IsCursorHidden()
[core] Renamed function SetFlags() to SetConfigFlags()
[shapes] Simplified some functions to improve performance
[textures] Review of Image struct to support multiple data formats
[textures] Added function LoadImageEx()
[textures] Added function LoadImageRaw()
[textures] Added function LoadTextureEx()
[textures] Simplified function parameters LoadTextureFromImage()
[textures] Added function GetImageData()
[textures] Added function GetTextureData()
[textures] Renamed function ConvertToPOT() to ImageConvertToPOT()
[textures] Added function ImageConvertFormat()
[textures] Added function GenTextureMipmaps()
[text] Added support for Latin-1 Extended characters for default font
[text] Redesigned SpriteFont struct, replaced Character struct by Rectangle
[text] Removed function GetFontBaseSize(), use directly spriteFont.size
[models] Review of struct: Model (added shaders support)
[models] Added 3d collision functions (sphere vs sphere vs box vs box)
[models] Added function DrawCubeTexture()
[models] Added function DrawQuad()
[models] Added function DrawRay()
[models] Simplified function DrawPlane()
[models] Removed function DrawPlaneEx()
[models] Simplified function DrawGizmo()
[models] Removed function DrawGizmoEx()
[models] Added function LoadModelEx()
[models] Review of function LoadCubicMap()
[models] Added function ResolveCollisionCubicmap()
[audio] Decopupled from raylib, now this module can be used as standalone
[audio] Added function UpdateMusicStream()
[raymath] Complete review of the module
[stb] Updated to latest headers versions
[*] Lots of tweaks around

-----------------------------------------------
Release: raylib 1.2.2 (31 December 2014)
-----------------------------------------------
[*] Added support for HTML5 compiling (emscripten, asm.js)
[core] Corrected bug on input handling (keyboard and mouse)
[textures] Renamed function CreateTexture() to LoadTextureFromImage()
[textures] Added function ConvertToPOT()
[rlgl] Added support for color tint on models on GL 3.3+ and ES2
[rlgl] Added support for normals on models
[models] Corrected bug on DrawBillboard()
[models] Corrected bug on DrawHeightmap()
[models] Renamed LoadCubesmap() to LoadCubicmap()
[audio] Added function LoadSoundFromWave()
[makefile] Added support for Linux and OSX compiling
[stb] Updated to latest headers versions
[*] Lots of tweaks around

---------------------------------------------------------------
Update: raylib 1.2.1 (17 October 2014) (Small Fixes Update)
---------------------------------------------------------------
[core] Added function SetupFlags() to preconfigure raylib Window
[core] Corrected bug on fullscreen mode
[rlgl] rlglDrawmodel() - Added rotation on Y axis
[text] MeasureTextEx() - Corrected bug on measures for default font

-----------------------------------------------
Release: raylib 1.2 (16 September 2014)
-----------------------------------------------
NOTE:
This version supposed a complete redesign of the [core] module to support Android and Raspberry Pi.
Multiples modules have also been tweaked to accomodate to the new platforms, specially [rlgl]

[core] Added multiple platforms support: Android and Raspberry Pi
[core] InitWindow() - Complete rewrite and split for Android
[core] InitDisplay() - Internal function added to calculate proper display size
[core] InitGraphics() - Internal function where OpenGL graphics are initialized
[core] Complete refactoring of input functions to accomodate to new platforms
[core] Mouse and Keyboard raw data reading functions added for Raspberry Pi
[core] GetTouchX(), GetTouchY() - Added for Android
[core] Added Android callbacks to process inputs and Android activity commands
[rlgl] Adjusted buffers depending on platform
[rlgl] Added security check in case deployed vertex excess buffer size
[rlgl] Adjusted indices type depending on GL version (int or short)
[rlgl] Fallback to VBOs only usage if VAOs not supported on ES2
[rlgl] rlglLoadModel() stores vbo ids on new Model struct
[textures] Added support for PKM files (ETC1, ETC2 compression support)
[shapes] DrawRectangleV() - Modified, depending on OGL version uses TRIANGLES or QUADS
[text] LoadSpriteFont() - Modified to use LoadImage()
[models] Minor changes on models loading to accomodate to new Model struct
[audio] PauseMusicStream(), ResumeMusicStream() - Added
[audio] Reduced music buffer size to avoid stalls on Raspberry Pi
[src] Added makefile for Windows and RPI
[src] Added resources file (raylib icon and executable info)
[examples] Added makefile for Windows and RPI
[examples] Renamed and merged with test examples for coherence with module names
[templates] Added multiple templates to be use as a base-code for games

-----------------------------------------------
Release: raylib 1.1.1 (22 July 2014)
-----------------------------------------------
[core] ShowLogo() - To enable raylib logo animation at startup
[core] Corrected bug with window resizing
[rlgl] Redefined colors arrays to use byte instead of float
[rlgl] Removed double buffer system (no performance improvement)
[rlgl] rlglDraw() - Reorganized buffers drawing order
[rlgl] Corrected bug on screen resizing
[shapes] DrawRectangle() - Use QUADS instead of TRIANGLES
[models] DrawSphereWires() - Corrected some issues
[models] LoadOBJ() - Redesigned to support multiple meshes
[models] LoadCubesMap() - Loading a map as cubes (by pixel color)
[textures] Added security check if file doesn't exist
[text] Corrected bug on SpriteFont loading
[examples] Corrected some 3d examples
[test] Added cubesmap loading test

-----------------------------------------------
Release: raylib 1.1.0 (19 April 2014)
-----------------------------------------------
NOTE:
This version supposed a complete internal redesign of the library to support OpenGL 3.3+ and OpenGL ES 2.0.
New module [rlgl] has been added to 'translate' immediate mode style functions (i.e. rlVertex3f()) to GL 1.1, 3.3+ or ES2.
Another new module [raymath] has also been added with lot of useful 3D math vector-matrix-quaternion functions.

[rlgl] New module, abstracts OpenGL rendering (multiple versions support)
[raymath] New module, useful 3D math vector-matrix-quaternion functions
[core] Adapt all OpenGL code (initialization, drawing) to use [rlgl]
[shapes] Rewrite all shapes drawing functions to use [rlgl]
[textures] Adapt texture GPU loading to use [rlgl]
[textures] Added support for DDS images (compressed and uncompressed)
[textures] CreateTexture() - Redesigned to add mipmap automatic generation
[textures] DrawTexturePro() - Redesigned and corrected bugs
[models] Rewrite all 3d-shapes drawing functions to use [rlgl]
[models] Adapt model loading and drawing to use [rlgl]
[models] Model struct updated to include texture id
[models] SetModelTexture() - Added, link a texture to a model
[models] DrawModelEx() - Redesigned with extended parameters
[audio] Added music streaming support (OGG files)
[audio] Added support for OGG files as Sound
[audio] PlayMusicStream() - Added, open a new music stream and play it
[audio] StopMusicStream() - Added, stop music stream playing and close stream
[audio] PauseMusicStream() - Added, pause music stream playing
[audio] MusicIsPlaying() - Added, to check if music is playing
[audio] SetMusicVolume() - Added, set volume for music
[audio] GetMusicTimeLength() - Added, get current music time length (in seconds)
[audio] GetMusicTimePlayed() - Added, get current music time played (in seconds)
[utils] Added log tracing functionality - TraceLog(), TraceLogOpen(), TraceLogClose()
[*] Log tracing messages all around the code

-----------------------------------------------
Release: raylib 1.0.6 (16 March 2014)
-----------------------------------------------
[core] Removed unused lighting-system code
[core] Removed SetPerspective() function, calculated directly
[core] Unload and reload default font on fullscreen toggle
[core] Corrected bug gamepad buttons checking if no gamepad available
[texture] DrawTextureV() - Added, to draw using Vector2 for position
[texture] LoadTexture() - Redesigned, now uses LoadImage() + CreateTexture()
[text] FormatText() - Corrected memory leak bug
[models] Added Matrix struct and related functions
[models] DrawBillboard() - Reviewed, now it works!
[models] DrawBillboardRec() - Reviewed, now it works!
[tests] Added folder with multiple tests for new functions

-----------------------------------------------
Update: raylib 1.0.5 (28 January 2014)
-----------------------------------------------
[audio] LoadSound() - Corrected a bug, WAV file was not closed!
[core] GetMouseWheelMove() - Added, check mouse wheel Y movement
[texture] CreateTexture2D() renamed to CreateTexture()
[models] LoadHeightmap() - Added, Heightmap can be loaded as a Model
[tool] rREM updated, now supports (partially) drag and drop of files

-----------------------------------------------
Release: raylib 1.0.4 (23 January 2014)
-----------------------------------------------
[tool] Published a first alpha version of rREM tool (raylib Resource Embedder)
[core] GetRandomValue() - Bug corrected, now works right
[core] Fade() - Added, fades a color to an alpha percentadge
[core] WriteBitmap() - Moved to new module: utils.c, not used anymore
[core] TakeScreenshot() - Now uses WritePNG() (utils.c)
[utils] New module created with utility functions
[utils] WritePNG() - Write a PNG file (used by TakeScreenshot() on core)
[utils] DecompressData() - Added, used for rRES resource data decompresion
[textures] LoadImageFromRES() - Added, load an image from a rRES resource file
[textures] LoadTextureFromRES() - Added, load a texture from a rRES resource file
[audio] LoadSoundFromRES() - Added, load a sound from a rRES resource file
[audio] IsPlaying() - Added, check if a sound is currently playing
[audio] SetVolume() - Added, set the volume for a sound
[audio] SetPitch() - Added, set the pitch for a sound
[examples] ex06a_color_select completed
[examples] ex06b_logo_anim completed
[examples] ex06c_font select completed

-----------------------------------------------
Release: raylib 1.0.3 (19 December 2013)
-----------------------------------------------
[fonts] Added 8 rBMF free fonts to be used on projects!
[text] LoadSpriteFont() - Now supports rBMF file loading (raylib Bitmap Font)
[examples] ex05a_sprite_fonts completed
[examples] ex05b_rbmf_fonts completed
[core] InitWindowEx() - InitWindow with extended parameters, resizing option and custom cursor!
[core] GetRandomValue() - Added, returns a random value within a range (int)
[core] SetExitKey() - Added, sets a key to exit program (default is ESC)
[core] Custom cursor not drawn when mouse out of screen
[shapes] CheckCollisionPointRec() - Added, check collision between point and rectangle
[shapes] CheckCollisionPointCircle() - Added, check collision between point and circle
[shapes] CheckCollisionPointTriangle() - Added, check collision between point and triangle
[shapes] DrawPoly() - Added, draw regular polygons of n sides, rotation can be defined!

-----------------------------------------------
Release: raylib 1.0.2 (1 December 2013)
-----------------------------------------------
[text] GetDefaultFont() - Added, get default SpriteFont to be used on DrawTextEx()
[shapes] CheckCollisionRecs() - Added, check collision between rectangles
[shapes] CheckCollisionCircles() - Added, check collision between circles
[shapes] CheckCollisionCircleRec() - Added, check collision circle-rectangle
[shapes] GetCollisionRec() - Added, get collision rectangle
[textures] CreateTexture2D() - Added, create Texture2D from Image data
[audio] Fixed WAV loading function, now audio works!

-----------------------------------------------
Update: raylib 1.0.1 (28 November 2013)
-----------------------------------------------
[text] DrawText() - Removed spacing parameter
[text] MeasureText() - Removed spacing parameter
[text] DrawFps() - Renamed to DrawFPS() for coherence with similar function
[core] IsKeyPressed() - Change functionality, check if key pressed once
[core] IsKeyDown() - Added, check if key is being pressed
[core] IsKeyReleased() - Change functionality, check if key released once
[core] IsKeyUp() - Added, check if key is being NOT pressed
[core] IsMouseButtonDown() - Added, check if mouse button is being pressed
[core] IsMouseButtonPressed() - Change functionality, check if mouse button pressed once
[core] IsMouseButtonUp() - Added, check if mouse button is NOT being pressed
[core] IsMouseButtonReleased() - Change functionality, check if mouse button released once
[textures] DrawTexturePro() - Added, texture drawing with 'pro' parameters
[examples] Function changes applied to ALL examples

-----------------------------------------------
Release: raylib 1.0.0 (18 November 2013)
-----------------------------------------------
* Initial version
* 6 Modules provided:
- core: basic window/context creation functions, input management, timing functions
- shapes: basic shapes drawing functions
- textures: image data loading and conversion to OpenGL textures
- text: text drawing, sprite fonts loading, default font loading
- models: basic 3d shapes drawing, OBJ models loading and drawing
- audio: audio device initialization, WAV files loading and playing

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.