Skip to content

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 07 Apr 03:47
· 315 commits to main since this release

Upgrade to Dear ImGui v1.92.7 (docking branch) via cimgui docking_inter, refresh cimplot / cimplot3d, regenerate native + import-style WASM bindings, and expand the safe Rust API around the latest ImPlot / ImPlot3D spec-based item styling.
This release also formalizes the repository-owned backend_shim surface in dear-imgui-sys, adds repository-local iOS / Android smoke examples, and simplifies publishing around the Python release scripts.

Highlights

  • Upgrade the core stack to Dear ImGui v1.92.7 and refresh the vendored
    cimgui / cimplot / cimplot3d submodules with regenerated native + WASM bindings.
  • Introduce the repository-owned dear-imgui-sys::backend_shim surface for official backend glue,
    including new SDLRenderer3 support and clearer low-level backend ownership.
  • Expand the ImPlot / ImPlot3D safe APIs around spec-backed item styling,
    per-index array styling, color enums, and the remaining builder gaps.
  • Add repository-local iOS and Android smoke examples covering
    dear-imgui-winit + dear-imgui-wgpu, dear-imgui-sdl3 + dear-imgui-wgpu,
    and low-level Android NativeActivity + EGL / GLES integration shapes.
  • Simplify release operations by moving dear-imgui-build-support onto the unified
    0.11.0 train and removing the release-plz workflow in favor of the Python publishing scripts.

Breaking Changes

  • Core (dear-imgui-sys)
    • Replace the provisional raw_backend::{win32, dx11, android, opengl3} surface with
      backend_shim::{win32, dx11, android, opengl3} behind backend-shim-* feature gates.
      Consumers using the old low-level sys surface must migrate to the new repository-owned shim ABI.
  • Extensions
    • dear-imnodes: remove the deprecated EditorContext methods that relied on the global current ImNodes context, as well as EditorContext::create/try_create. Use Context::{create_editor_context,try_create_editor_context} and Context::bind_editor(&editor) instead.

Added

  • Core (dear-imgui-rs)
    • Expose the new Dear ImGui v1.92.7 surface in the safe API with Ui::tree_node_get_open(), Viewport::debug_name(), StyleVar::SeparatorSize, ButtonFlags::ALLOW_OVERLAP, and updated MultiSelectFlags names/compatibility aliases for the upstream SelectOnAuto rename.
  • Core (dear-imgui-sys)
    • Extend that backend shim surface with feature-gated backend_shim::sdlrenderer3 support for Dear ImGui's official SDLRenderer3 backend, including SDL3 header discovery for both system-provided SDL3 installs and sdl3-sys build-from-source outputs (PR #24, thanks @flowkclav).
  • Extensions
    • dear-implot: add safe PlotUi::plot_polygon() / PlotBuilder::polygon() wrappers for upstream PlotPolygon, plus the new PolygonFlags.
    • dear-implot: add unified ImPlot v0.18 spec-backed item styling helpers across all ImPlotSpec-backed plot builders via PlotItemStyle / PlotItemStyled, including direct builder methods such as with_line_color, with_fill_alpha, with_marker, and with_size. This closes the high-level Rust API gap where plot item color/alpha styling was available in the C bindings but not exposed consistently by the safe layer (addresses #26, thanks @sstscrypto).
    • dear-implot: add PieChartFlags::NO_SLICE_BORDER plus closure-scoped PlotItemArrayStyle / with_next_plot_item_array_style(...) helpers for the new upstream per-index ImPlotSpec arrays (LineColors, FillColors, MarkerSizes, MarkerLineColors, MarkerFillColors) without introducing dangling pointer hazards into the safe API.
    • dear-implot3d: add unified ImPlot3DSpec-backed item styling helpers across spec-backed plot builders via Plot3DItemStyle / Plot3DItemStyled, covering both plots::* items and Plot3DUi builders such as surface_f32(), image_by_axes(), and mesh(). Also expose Marker3D::Auto so the safe API can round-trip ImPlot3D's default automatic marker selection.
    • dear-implot3d: add typed Plot3DColorElement values for style colors, including the new axis background slots, plus closure-scoped Plot3DItemArrayStyle / with_next_plot3d_item_array_style(...) helpers for the new upstream per-index ImPlot3DSpec arrays.
    • dear-implot3d: wire Item3DFlags into spec-backed plot wrappers/builders via with_item_flags(...), so common NO_LEGEND / NO_FIT flags can now be composed from the safe API instead of remaining a defined-but-unreachable flag set.
  • Backends
    • dear-imgui-sdl3: add optional sdlrenderer3-renderer support and wrapper APIs for the official SDL3 + SDLRenderer3 path, including init_for_canvas / canvas_new_frame / canvas_render / shutdown_for_canvas.
  • Examples
    • Add a standalone repository-local examples-android/dear-imgui-android-smoke Android template that demonstrates the low-level dear-imgui-rs + dear-imgui-sys route without introducing a new published crate or changing the workspace's default build matrix.
    • Add minimal cargo-apk2 packaging metadata to the Android smoke template and verify that it can produce a signed debug NativeActivity APK for aarch64-linux-android.
    • Add a repository-local APK packaging helper for the Android smoke template and document release signing plus per-ABI APK packaging while keeping the checked-in smoke path single-ABI and repository-local.
    • Add a standalone repository-local examples-ios/dear-imgui-ios-smoke example that demonstrates a dear-imgui-winit + dear-imgui-wgpu iOS integration shape, including XCFramework packaging helpers and a checked-in Xcode host stub for simulator/device validation.
    • Add a standalone repository-local examples-ios/dear-imgui-ios-sdl3-smoke example that demonstrates a dear-imgui-sdl3 + dear-imgui-wgpu iOS integration shape, including a checked-in Xcode host stub and an SDL3 framework helper that can consume app-owned framework artifacts or build SDL3.framework from the upstream sdl3-src source tree.
    • Add an sdl3_sdlrenderer example plus the sdl3-sdlrenderer3 example feature for Dear ImGui on SDL3 + SDL_Renderer.

Changed

  • Core (dear-imgui-sys)
    • Upgrade vendored cimgui docking_inter to Dear ImGui v1.92.7 and regenerate native + import-style WASM bindings.
  • Core (dear-imgui-rs)
    • Keep backend shim feature gates in dear-imgui-sys only; the safe crate does not re-export backend-specific toggles until it owns corresponding safe wrappers.
  • Extensions
    • dear-implot-sys / dear-implot3d-sys: refresh the vendored cimplot / cimplot3d submodules and regenerate native + WASM bindings.
    • dear-implot / dear-implot3d: initialize the new upstream ImPlotSpec / ImPlot3DSpec array fields in the safe wrapper defaults so spec-backed plots remain ABI-correct after the latest cimplot / cimplot3d updates.
    • dear-implot3d: adapt the safe mesh() wrapper to the new typed ImPlot3D_PlotMesh_*Ptr entry points while preserving the existing Rust-facing API shape.
    • dear-implot: standardize plot-item styling so LinePlot, ScatterPlot, BarPlot, HistogramPlot, HeatmapPlot, ErrorBarsPlot, ShadedPlot, StairsPlot, StemPlot, TextPlot, and other ImPlotSpec-based builders now share the same styling surface instead of mixing per-type convenience methods with raw style-object-only paths.
    • dear-implot: let ShadedBetweenPlot configure offset / stride like other spec-backed line-style builders, and remove an outdated comment that still described the old pre-wrapper state.
  • Core (dear-imgui-sys)
    • Link GLESv3 for the Android OpenGL3 backend shim so downstream Android NativeActivity binaries can load successfully before the application creates its own EGL / GLES context.
    • Expand the crate and module documentation around backend_shim so the repository-owned shim ABI, Android low-level route, and ownership split with application packaging are explicit in the main docs.
  • Backends
    • Re-verify the existing backend crates against the Dear ImGui v1.92.7 / cimgui refresh. No additional backend API surface changes were required for this upstream bump.
    • dear-imgui-wgpu: add feature-gated support for wgpu v29, make wgpu-29 the default backend path, and keep wgpu-28 / wgpu-27 as explicit compatibility features.
    • dear-imgui-sdl3: keep SDL3-specific wrapper/build ownership in the backend crate, but route the optional official OpenGL3 renderer path through dear-imgui-sys::backend_shim::opengl3 instead of compiling a second local OpenGL3 shim layer.
    • dear-imgui-sdl3: stop forcing sdl3/build-from-source on Android from the backend crate itself. Android SDL3 acquisition now remains application-owned: consumers may either provide SDL3_INCLUDE_DIR or opt into sdl3/build-from-source in their own dependency graph.
    • dear-imgui-sdl3: on Apple targets, keep SDL3 acquisition application-owned instead of forcing sdl3/build-from-source from the backend/examples crates. macOS continues to use the system/Homebrew SDL3 path, while iOS is now documented as an app-owned framework or app-owned build-from-source route.
  • Examples
    • Upgrade examples-android/dear-imgui-android-smoke from a startup-only smoke path to a minimal NativeActivity + EGL / GLES3 render loop that displays Dear ImGui windows on-device while preserving app-owned Android packaging and lifecycle glue, without turning the template into a published runtime crate.
    • Switch the Android smoke APK helper from a Windows-only PowerShell script to a cross-platform Python script, and tune the README screenshot presentation for GitHub rendering.
    • Document the Apple example split explicitly: keep desktop/native cargo run demos in examples/, and keep iOS/Android smoke templates in top-level examples-ios/ / examples-android/ folders because they require host projects, packaging steps, or mobile-specific tooling.
  • Docs
    • Add Apple integration notes that explain how to use the repository-owned iOS examples as reference/teaching material without presenting them as a turn-key mobile runtime layer.
    • Add platform notes and README navigation for the new iOS/Android smoke templates, including a checked-in iOS Simulator screenshot for the SDL3 iOS smoke path.
  • Tooling
    • Remove the release-plz release path and keep the repository's Python publishing scripts as the single source of truth for release automation and publish order.
    • Fix the dear-imgui-test-engine-sys pregenerated-bindings path handling so the standard bindings refresh flow works from the workspace root, and align the repository's imgui_test_engine update defaults with upstream main.

Fixed

  • Core (dear-imgui-rs)
    • Implement the previously placeholder Ui::set_window_font_scale() wrapper on top of Dear ImGui's exposed internal window/font-size state, so legacy per-window font scaling now works from the safe API instead of remaining a no-op.
    • Implement Ui::is_any_column_resizing() by reading the current window's legacy columns state, so it no longer always reports false.
    • Route PlatformIo::{set_platform_get_window_pos*,set_platform_get_window_size*} through cimgui's compatibility helpers instead of installing direct ImVec2-returning function pointers, fixing the ABI mismatch on platforms where those ImGuiPlatformIO callback slots are not C-compatible.
    • Add the missing Context::platform_io() shared accessor plus the remaining small PlatformIo / Viewport wrapper gaps around handler clearing, window DPI / changed-viewport callbacks, viewport centers, and raw platform handles, so this multi-viewport surface no longer forces callers down to sys for those basic operations.
  • Extensions
    • dear-implot: wire ErrorBarsPlot::horizontal() to ImPlotErrorBarsFlags_Horizontal, add matching horizontal() plus with_offset() / with_stride() on AsymmetricErrorBarsPlot, and route simple line/scatter/shaded/stairs/stems builders through the existing single-array ImPlot C bindings instead of allocating temporary X-coordinate buffers.
    • dear-implot: finish aligning the remaining Simple*Plot builders with their full-builder counterparts by threading through the relevant plot/item flags on simple line/scatter/stem/shaded/error-bar/bar-group helpers as well.
    • dear-file-browser: keep the built-in view/column controls aligned with thumbnail backend availability, so the standard toolbar, IGFD-style chrome, and Columns... popup no longer offer thumbnail-only toggles when no thumbnail backend is attached.
    • dear-imgui-test-engine-sys: refresh the vendored imgui_test_engine submodule to the latest upstream main compatible with the Dear ImGui v1.92.7 upgrade and regenerate pregenerated bindings.

CI

  • Add an apple-mobile-check job that validates the documented iOS integration surface with cargo check sentinels for device and simulator targets, including the repository-local iOS smoke templates.
  • Align publish/package verification with the new dear-imgui-build-support dependency ordering: package the helper crate first and use cargo package --list for the pre-release dear-imgui-sys smoke check so CI can validate package contents before the helper crate is indexed on crates.io.

Dependencies

  • Workspace
    • Upgrade direct dependency baselines to bitflags 2.11, winit 0.30.13, glow 0.17, wasm-bindgen 0.2.117, and bytemuck 1.25.
    • Upgrade dear-imgui-ash's optional gpu-allocator integration to 0.28.
    • Upgrade ancillary direct dependencies including ureq 3.3 and regex 1.12 where used in workspace tooling/extensions.
    • Move dear-imgui-build-support into the unified 0.11.0 release train and update all *-sys crates to depend on 0.11.
    • Bump the default wgpu baseline to v29.