v6.0.0
·
23 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Upgrade to raylib 6.0 and raygui 5. sola-raylib's major version tracks
raylib's, so 6.x binds raylib 6.0. See raylib's 6.0 release notes
for the full upstream story.
Breaking
- raylib 6.0 — upstream redesigned skeletal animation, fullscreen modes, the
build-config system, and more. Most safe wrappers are unchanged; the
exceptions are below. RaylibModel::bind_poseandbind_pose_mutnow returnOption<&[Transform]>
(wasOption<&Transform>). The underlying field is an array sized by
boneCount, so the old signature read garbage past the first bone.- Removed
RaylibMesh::indicies/indicies_mut. The typo'd aliases were
deprecated in 5.5.3 with a "removed in 6.0" note — useindices/
indices_mut. DrawModelPoints/DrawModelPointsExremoved — raylib 6.0 dropped these
from its public API.- Removed the rlImGui / imgui integration. The
imguifeature, the
raylib::imguimodule, theRayImGUITraitand friends, the rlImGui
submodule, and theimguiexample are all gone. sola-raylib is focused on
raylib + raygui; if you want imgui-in-raylib, use a community bridge crate or
roll a small integration crate againstsola-raylib-sys. - Removed the physac status row from the README. There was no actual physac
binding in the safe crate; the row was aspirational. Physac itself is a
separate raylib-extras library — a real binding would live in its own crate.
Added
New API wrappers for raylib 6.0 additions:
- Models:
update_model_animation_ex(animation blending). - Input:
get_key_name. - Hashing:
compute_sha256,compute_sha1,compute_md5,compute_crc32. - Shapes (
RaylibDraw):draw_line_dashed,draw_ellipse_v,
draw_ellipse_lines_v. - Text:
measure_text_codepoints. - Math:
Vector2::cross_product,Matrix::multiply_value,Matrix::compose. - Pixel helpers in
core::texture:get_pixel_colorandset_pixel_color
(take aPixelFormatenum and byte slice, validate slice length).
Fixed
RaylibMesh::tangents/tangents_mutreturn&[Vector4]/
&mut [Vector4](wasVector3). Raylib stores tangents as
float[4 * vertexCount](XYZW where W is the bitangent sign), but the
previous cast sliced 3 of every 4 floats and produced misaligned reads.
Covered by a new unit test inraylib/src/core/models.rs.- CMake
USE_WAYLANDflag updated toGLFW_BUILD_WAYLAND. Upstream renamed
the knob in 6.0; ourwaylandfeature was silently a no-op until this fix. - Removed two long-silent no-op CMake defines (
SUPPORT_BUSY_WAIT_LOOP=OFF,
SUPPORT_FILEFORMAT_JPG=ON). raylib 6.0 ignoresSUPPORT_*overrides unless
CUSTOMIZE_BUILD=ONis also set; experimentally turning that on caused
unresponsive windows (black screen + "window is not responding") on Linux/X11.
Keeping raylib's config.h defaults is the safe choice for 6.0.0.
custom_frame_control,noscreenshot, andnogiffeatures still activate
CUSTOMIZE_BUILD=ONlocally when enabled, so those paths keep working. - Audio:
Wave::export_as_code. Raw audio-thread processor hooks as
unsafe fns that takeextern "C" fn(*mut c_void, u32)pointers:
AudioStream::attach_audio_stream_processor/
detach_audio_stream_processor, and
RaylibAudio::attach_audio_mixed_processor/detach_audio_mixed_processor.
Ergonomic closure wrapping is future work; the raw pointer interface is honest
about the audio-thread risk.
New examples exercising the new surface: animation_blending, shapes_new,
borderless_fullscreen, pixel_color (HSV wheel painted via set_pixel_color,
read back under the cursor with get_pixel_color). The input example now also
displays get_key_name.
Other
raylib-sys/README.mdrewritten to reflect the current build-time bindgen
flow; the old doc described a workflow that no longer exists.DEVELOPING.mdgains a "Bumping raylib" checklist.- New opt-in feature flags for raylib 6.0's new platform backends. All three
are experimental upstream and may not work well yet. Raylib 6.0 shipped them
as new backends with known gaps. We expose the flags so you can opt in; what
actually renders or links is whatever upstream supports today.software_render: build raylib with the CPUrlswbackend
(OPENGL_VERSION=Software). rlsw is not compatible with the default GLFW
desktop backend per upstream (raylib#5664), so use it via
--features "sdl,software_render"on Linux/macOS (requires SDL2 dev
headers).just example-sw <name>andjust examples-swwire that combo
for you. Windows would need thercore_desktop_win32native backend, which
sola-raylib does not wire yet.platform_memory: build raylib with the headlessPLATFORM=Memorybackend.
The feature compiles the backend, but reading the framebuffer requires
rlsw.hAPIs (e.g.swGetColorBuffer) that are not yet wrapped in the
safe crate. Post-release work.platform_web_rgfw: use raylib's RGFW-based web backend
(PLATFORM=WebRGFW) when cross-compiling towasm32-unknown-emscripten. No
local demo path. Requires an emscripten build loop.
Dependencies
- Bumped
thiserrorfrom1.xto2.xin the public dep graph. Our public
Errortype still implementsstd::error::Error, so no API change for users.
Only matters if you pinthiserror = "1"elsewhere in yourCargo.toml;
cargo will resolve both versions side by side, or you can bump your own pin. - Dev-deps (
rand 0.8 → 0.10) and build-deps (cmake,cc,bindgenpatch
updates) refreshed to current versions. These are not in the downstream user's
dep graph. - Patch/minor refresh via
cargo updateacrosscfg-if,paste,seq-macro,
serde,serde_json,ringbuf.