Releases: Latias94/dear-imgui-rs
v0.15.0
Breaking Changes
- Safe handles and RAII tokens now clean up through the context that created them. This makes it supported to keep multiple ImGui, ImPlot, ImPlot3D, ImNodes, or ImGuizmo contexts alive and switch between them without stack cleanup, drawing, or post-frame queries accidentally targeting the wrong current context.
Ui::push_font_with_size(...)now returnsFontStackToken. Keep the token alive for the font scope and let it drop to pop the font. Fixes #31, thanks @spindlymist.- Obsolete public manual pop/end helpers for stack scopes were removed. Use the returned RAII tokens instead.
- ImPlot item submission now takes the owner
&PlotUi, for exampleLinePlot::new(...).plot(&plot_ui)andPlotBuilder::new(...).build(&plot_ui). Other context-dependent ImPlot APIs such asSubplotGrid::begin(...),MultiAxisPlot::begin(...), andLegendManager::{setup, begin_custom}(...)now take&PlotUitoo. - ImPlot and ImPlot3D style helpers moved onto
PlotUi/Plot3DUi. Useplot_ui.push_style_*,plot_ui.push_colormap_*,plot_ui.with_next_plot_item_array_style(...),plot_ui.with_next_plot3d_item_array_style(...), and thePlot3DUinext-style setters instead of safe free functions. dear-imnodesremoved deprecated post-frame query methods from activeNodeEditorhandles. Calllet post = editor.end();and then querypost.selected_nodes(),post.is_link_created(),post.clear_selection(), and the otherPostEditorhelpers.
Added
- Added the
multi_context_switchexample showing how integrations can keep multiple contexts alive and switch between them withContext::suspend()/SuspendedContext::activate().
Fixed
- Destroying the current ImPlot or ImPlot3D context now clears the corresponding global current-context pointer instead of restoring a dangling pointer to the destroyed context.
dear-imgui-bevynow keeps the scheduled ImGui frame open across Bevy systems untilImguiEndFrame, avoiding premature frame closure before platform feedback and rendering systems run.
v0.14.1
Added
- Add shared native dependency discovery helpers for build scripts, with pkg-config and vcpkg backends for FreeType and SDL3 header lookup.
- Add Windows CI coverage for vcpkg-only native dependency discovery.
Fixed
dear-imgui-sys/freetypenow fails fast when FreeType cannot be found instead of silently compiling without the FreeType rasterizer. Fixes #30, thanks @spindlymist.dear-imgui-sysanddear-imgui-sdl3now fall back to vcpkg on Windows MSVC targets when pkg-config cannot provide FreeType or SDL3 header metadata.
v0.14.0
Added
- Added experimental
dear-imgui-bevysupport for Bevy0.19.0-rc.2, including primary-window overlays, docking, WGPU rendering, Bevy texture interop, and preview-grade native multi-viewport support. - Added Bevy examples that cover a minimal overlay, plugin-style app integration, a docked game-engine editor surface, and ecosystem demos for ImPlot, ImNodes, and ImGuizmo.
Bevy Examples
| Example | Source | Run command |
|---|---|---|
simple |
examples/basic/simple.rs |
cargo run -p dear-imgui-bevy --features render --example simple |
app_integration |
examples/app/app_integration.rs |
cargo run -p dear-imgui-bevy --features render --example app_integration |
game_engine |
examples/game_engine/game_engine.rs |
cargo run -p dear-imgui-bevy --features render --example game_engine |
game_engine with multi-viewport |
examples/game_engine/game_engine.rs |
cargo run -p dear-imgui-bevy --features render,multi-viewport --example game_engine |
ecosystem |
examples/ecosystem/ecosystem.rs |
cargo run -p dear-imgui-bevy --features render --example ecosystem |
bevy_plot_controls |
examples/ecosystem/bevy_plot_controls.rs |
cargo run -p dear-imgui-bevy --features render --example bevy_plot_controls |
Screenshots
Fixed
dear-imgui-bevynow ensures window swapchain images are touched before present, avoiding Vulkan validation errors when Bevy performs an initial or warmup present.- Existing renderer backend multi-viewport paths are safer when multiple backends or contexts are involved: WGPU and Ash now ignore foreign
RendererUserDatapointers, and Glow clears renderer-owned multi-viewport state when a renderer is destroyed. - Glow texture updates now reuse the GL texture already registered for an existing
TextureIdand apply the same RGBA expansion path forAlpha8uploads.
v0.13.0
This release upgrades the Dear ImGui stack, removes the normal-build dependency
on LLVM/libclang, adds native imgui-node-editor bindings, and continues the
safe API hardening work started in the previous releases. The detailed
v0.12.0..HEAD history is grouped below by user-visible effect rather than by
individual validation commit.
Highlights
- Upgrade the core stack to Dear ImGui v1.92.8 (docking) and refresh the
extension sys crates against the same baseline. - Normal source builds now use checked-in pregenerated bindings by default.
LLVM/libclang is only needed when explicitly regenerating bindings with
DEAR_IMGUI_RS_REGEN_BINDINGS=1 --features bindgen. - Add native-only
dear-node-editor/dear-node-editor-syssupport backed by
cimnodes_editor/imgui-node-editor, including examples modeled after the
upstream basic-interaction and blueprints-style demos. - Add the stack layout compatibility path required by node-editor blueprints and
expose safebegin_horizontal,begin_vertical, andspringhelpers. - Harden the safe API across texture ownership, input text buffers, draw-list
cloning, table/docking/widget preconditions, callback lifetimes, and
multi-context ownership. - Fix multi-context and multi-viewport backend paths so Winit/WGPU/Glow/Ash
state, callbacks, and teardown target the intended ImGui context.
Breaking Changes
- Core (
dear-imgui-rs)- User texture registration now tracks
OwnedTextureDatalifetimes from the
safe API. RawTextureDataregistration moved to explicitunsaferaw
helpers. - Font atlas/config loader setters require
&'static FontLoader, and
FontConfig::glyph_exclude_ranges(...)now accepts inclusive(start, end)
ranges matching Dear ImGui's upstream contract. - Infallible
TextureIdconversions intousizeor raw pointers were
removed. Usetry_as_usize(),try_as_ptr(), ortry_as_mut_ptr(). - The duplicate read-only draw-list snapshot types in
drawwere removed;
use the unifiedrenderdraw-data types instead. WindowFlags::DOCK_NODE_HOSTwas removed because Dear ImGui treats it as an
internalBegin/NewFrameflag.TextCallbackDatais now bound to the input-text callback frame lifetime so
callback handlers cannot retain it after Dear ImGui returns.PlatformIoaggregate-return callbacks now use out-parameters, and typed
callback setters must be installed on the active context'sPlatformIo.
Cross-context installation panics instead of splitting the C callback table
from Rust callback storage.Viewport::flags()/set_flags(...)now use typedViewportFlags.
Backend code that must manipulate raw bits should useraw_flags()or
unsafe set_raw_flags_unchecked(...).WindowClassnow carries typed viewport, tab item, dock node, and platform
icon fields. Struct literals should add the new fields or switch to
WindowClass::new/Default.set_item_key_owner{,_with_flags}now returns Dear ImGui's ownership-request
result, matching Dear ImGui v1.92.8.DrawCmdgainedSetSamplerLinearandSetSamplerNearest; exhaustive
draw-command matches must handle the new variants.
- User texture registration now tracks
- Core (
dear-imgui-sys)- Stop exposing cimgui's
ImGuiPlatformIO_Set_Platform_GetWindowPosand
ImGuiPlatformIO_Set_Platform_GetWindowSizehelpers from generated bindings.
Use the repository-owned*_OutParamwrappers instead; they do not consume
BackendLanguageUserData.
- Stop exposing cimgui's
- Backends
- Change
dear-imgui-winit::multi_viewport::shutdown_multi_viewport_support
to take&mut Context, matching the renderer backends and making shutdown
target an explicit ImGui context.
- Change
- Extensions
- Change
dear-implot::PlotContext::current()to an explicitunsafe
non-owning wrapper. Code that owns an ImPlot context should use
PlotContext::create(...); callers that borrow a raw current context must
acknowledge the raw lifetime and ownership contract. - Change
dear-implotAPIs that accept arbitrary ImPlot axes to use typed
Axis/YAxisvalues instead of rawi32indices. Raw-axis calls remain
available through explicitunsafe *_uncheckedescape hatches.
- Change
Added
- Extensions
- Add native-only
dear-node-editoranddear-node-editor-syssupport backed
bycimnodes_editor/imgui-node-editor. - Add safe node-editor APIs for editor contexts, typed config/style values,
node/pin/link scopes, create/delete sessions, selection mutation, queries,
selection/action-context counts, group hints, node background draw lists,
shortcut toggles, styled create/reject feedback, and RAII-scoped editor
suspension. - Add
node_editor_basic, a compact Winit + WGPU example modeled after the
upstream basic-interaction example. - Add
node_editor_showcase, a blueprints-style Winit + WGPU example using
the stack layout helpers and a RustBlueprintNodeBuilder. - Expose new ImGuizmo handle/move-type queries and custom grid/axis drawing
helpers throughMoveType,GizmoUi::active_handle_type,
hovered_handle_type,active_move_type,hovered_move_type,
draw_axes,draw_grid_custom, anddraw_grid_custom_color.
- Add native-only
- Core (
dear-imgui-sys)- Add the native stack layout compatibility layer required by the node-editor
blueprints example, including repository-owneddear_imgui_stack_*C ABI
symbols and build-timeItemSize()/ItemAdd()hooks in the generated
imgui.cppbuild copy.
- Add the native stack layout compatibility layer required by the node-editor
- Core (
dear-imgui-rs)- Add stack layout helpers used by the node-editor blueprints showcase:
begin_horizontal,begin_vertical, andspring. - Add RAII-scoped helpers for button-repeat and draw-list texture stacks:
Ui::push_button_repeat_token,Ui::with_button_repeat,
DrawListMut::push_texture_token, andDrawListMut::with_texture. - Expose Dear ImGui v1.92.8 style additions:
StyleColor::CheckboxSelectedBg,StyleVar::DragDropTargetRounding,
Style::drag_drop_target_rounding,drag_drop_target_border_size,
drag_drop_target_padding, andcolor_marker_size. - Expose additional
Styleaccessors andStyleVarvariants for scrollbar
padding, image borders, tab sizing/borders, angled table headers, tree-line
styling, separator text styling, and docking separator size. - Expose Dear ImGui v1.92.8 draw-list helpers
DrawListMut::add_line_hand
DrawListMut::add_line_v. - Expose raw
PlatformIoaccessors for standard draw callbacks:
DrawCallback_ResetRenderState,DrawCallback_SetSamplerLinear, and
DrawCallback_SetSamplerNearest.
- Add stack layout helpers used by the node-editor blueprints showcase:
Changed
- Workspace
- Refresh
dear-implot-sys,dear-implot3d-sys,dear-imnodes-sys,
dear-imguizmo-sys,dear-imguizmo-quat-sys, and
dear-imgui-test-engine-syssubmodules and pregenerated native/WASM
bindings against the Dear ImGui v1.92.8 stack.
- Refresh
- Core (
dear-imgui-rs)- Upgrade the core Dear ImGui/cimgui baseline to Dear ImGui v1.92.8 (docking).
- Store typed
PlatformIocallbacks per activeImGuiContextinstead of in
process-wide Rust slots, while preserving thedear-imgui-sys
out-parameter shim path for aggregate-return callbacks. - Track
DrawListMutborrows per rawImDrawList*on the current thread
instead of using process-wide locks, and resolve background/foreground draw
lists against the main viewport. - Make
DrawListMut::clone_output()returnrender::OwnedDrawList.
- Core (
dear-imgui-sys)- Use checked-in pregenerated bindings by default for normal source builds, so
users can build without installing LLVM/libclang unless they explicitly
regenerate bindings. Fixes #28, thanks @dtugend. - Make the
bindgenbuild dependency optional behind abindgenfeature.
Binding regeneration now requires bothDEAR_IMGUI_RS_REGEN_BINDINGS=1and
--features bindgen. - Compile the stack layout compatibility hooks by default for normal native
builds, and reject older prebuilts unless their manifest declares
features=stack-layout.
- Use checked-in pregenerated bindings by default for normal source builds, so
- Extensions
- Use checked-in pregenerated bindings by default for extension
*-sysnormal
builds, and make theirbindgenbuild dependencies optional behind
bindgenfeatures. - Clarify
dear-imguizmo-quatglobal static setting semantics and add
GizmoQuatSettings/GizmoQuatSettingsTokenfor temporary restoration of
getter-backed sensitivity, scale, flip, and reverse settings.
- Use checked-in pregenerated bindings by default for extension
- Backends
- Register Dear ImGui v1.92.8 standard reset/sampler draw callbacks in the
WGPU and Glow renderers. WGPU now keeps both linear and nearest sampler bind
groups; Glow switches texture filtering when sampler callbacks are
encountered. - Route Winit multi-viewport aggregate-return callbacks through the
out-parameter shim path and bind setup, event routing, shutdown, and callback
cleanup to the providedContext.
- Register Dear ImGui v1.92.8 standard reset/sampler draw callbacks in the
Fixed
- Core (
dear-imgui-rs)- Expand FFI precondition validation across textures, fonts, draw lists,
tables, legacy columns, docking, windows, child windows, widgets, popups,
combos, tabs, color editors, sliders, drags, scalar arrays, drag/drop
payloads, IO values, style values, hover/focus flags, viewport flags, and
runtime geometry. Invalid values are rejected in safe Rust before reaching
Dear ImGui assertions or unchecked indexing paths. - Expose child-window builder, token, and
ChildFlagsthrough public
dear_imgui_rs::*paths soUi::child_window(...).child_flags(...)is
usable from downstream crates. Fixes #29, thanks @CoffeeCatRailway. - Add missing public
ConfigFlags,BackendFlags, andTreeNodeFlagsbits,
includingConfigFlags::NO_KEYBOARD,
`BackendFl...
- Expand FFI precondition validation across textures, fonts, draw lists,
v0.12.0
This release removes the last invalid Condition value from the safe API and splits several overly broad flag sets into type-safe options so Dear ImGui's runtime assertions can no longer be triggered from normal Rust code. It also aligns the unified release train to 0.12.0 across the workspace.
Highlights
- Remove
Condition::Neverand make APIs that previously accepted invalid or overloaded condition/flag values use explicit option types instead. - Split the combo, table, color, tab, popup, multi-select, shortcut routing, drag/drop, and drag/slider APIs so mutually exclusive Dear ImGui choices cannot be combined accidentally.
- Update
dear-imgui-reflectso numeric widget helpers route slider and drag flags through the correct safe wrapper types.
Breaking Changes
- Core (
dear-imgui-rs)- Remove
Condition::Never. - Change
Window::content_size(...)to accept only the size vector. - Replace several public flag arguments with explicit option types or narrower flag sets:
DragDropPayloadCond,ShortcutFlags,ShortcutOptions,ShortcutRoute,NextItemShortcutFlags,NextItemShortcutOptions,ItemKeyOwnerFlags,DragFlags,ComboBoxOptions,TableOptions,TableColumnWidth,TableColumnIndent,TableColumnStateFlags,ColorEditOptions,ColorPickerOptions,ColorButtonOptions,TabBarOptions,TabItemOptions,PopupContextOptions,MultiSelectOptions,MultiSelectBoxSelect,MultiSelectScopeKind,DrawCornerFlags, andPolylineFlags. - Update builder/setup structs to store typed options directly, including
ComboBox::options,TableColumnSetup::width, andTableColumnSetup::indent. - Remove the ambiguous
TableColumnSetup::init_width_or_weight()helper in favor offixed_width()andstretch_weight().
- Remove
- Extensions
dear-imgui-reflect: numericwrap_aroundnow applies to drag widgets only.
Migration Guide
- Replace
Condition::Neverwith the nearest valid intent, usuallyCondition::Always,Condition::Once, orCondition::FirstUseEver. - For one-choice flag domains, move the choice into the dedicated option type instead of OR-ing unrelated bits together.
// before
// ui.shortcut_with_flags(chord, ShortcutFlags::REPEAT | ShortcutFlags::ROUTE_GLOBAL);
//
// after
ui.shortcut_with_flags(
chord,
ShortcutOptions::new()
.flags(ShortcutFlags::REPEAT)
.route(ShortcutRoute::Global(ShortcutGlobalRouteFlags::NONE)),
);- Update code that passed mixed flag domains to the new typed options instead of OR-ing everything into one flag value. The main new types are
ShortcutOptions,ShortcutRoute,TableColumnIndent,MultiSelectClickPolicy,MultiSelectBoxSelect,MultiSelectScopeKind,DrawCornerFlags, andPolylineFlags. - For rounded rectangles and image corners, use
DrawCornerFlags. For closed paths, setPolylineBuilder::closed(true)or passPolylineFlagsonly to polyline/path APIs. - For table columns, move width and indentation into the typed helpers instead of encoding them into
TableColumnFlags.
// before
// ui.table_setup_column("Name", TableColumnFlags::INDENT_ENABLE, Some(140.0), 0);
//
// after
ui.table_setup_column_with_indent(
"Name",
TableColumnFlags::NONE,
Some(TableColumnWidth::Fixed(140.0)),
Some(TableColumnIndent::Enable),
0,
);- Replace
TableColumnSetup::init_width_or_weight()withfixed_width()orstretch_weight(), and move indentation toTableColumnSetup::indent(...)orindent_enabled(...). - When touching shortcut routing or multi-select, split the former combined flags into the dedicated option types before passing them into the API.
Changed
- Backends
- Update the default WGPU 29 dependency family to
29.0.3, SDL3 bindings tosdl30.18.3/sdl3-sys0.6.5+SDL-3.4.8, and the WASM binding stack towasm-bindgen0.2.121/web-sysandjs-sys0.3.98. - Re-export the selected WGPU crate as
dear_imgui_wgpu::wgpuso tests and downstream integrations can name the exact WGPU major chosen bydear-imgui-wgpu's feature flags.
- Update the default WGPU 29 dependency family to
Fixed
- Core (
dear-imgui-rs)- Fixes #27, thanks @belst. Remove the invalid
Condition::Nevervalue that could reach Dear ImGui's assertion paths, and tighten the APIs that previously exposed unsupported condition values in helper builders. - Split tab bar fitting policy, table column indent policy, context popup mouse button, and multi-select click/box/scope policies out of their corresponding public flag sets so normal Rust code cannot combine invalid single-choice flag values or request
NavWrapXoutside Dear ImGui's supported window scope. - Split shortcut routing policy out of
ShortcutFlagsandNextItemShortcutFlags, and type global-only routing modifiers separately, so normal Rust code cannot combine route modes that Dear ImGui rejects. - Split rectangle corner rounding and polyline/path-stroke flags into
DrawCornerFlagsandPolylineFlags, soImDrawFlags_Closedcan no longer be passed to rounded rectangle APIs that reject it.
- Fixes #27, thanks @belst. Remove the invalid
- Extensions
dear-imgui-reflect: route slider and drag numeric flags through distinct helper methods so the derived widgets no longer emit invalid flag combinations for Dear ImGui.
v0.11.0
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/cimplot3dsubmodules with regenerated native + WASM bindings. - Introduce the repository-owned
dear-imgui-sys::backend_shimsurface 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 AndroidNativeActivity+ EGL / GLES integration shapes. - Simplify release operations by moving
dear-imgui-build-supportonto the unified
0.11.0train and removing therelease-plzworkflow 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}behindbackend-shim-*feature gates.
Consumers using the old low-level sys surface must migrate to the new repository-owned shim ABI.
- Replace the provisional
- Extensions
dear-imnodes: remove the deprecatedEditorContextmethods that relied on the global current ImNodes context, as well asEditorContext::create/try_create. UseContext::{create_editor_context,try_create_editor_context}andContext::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 updatedMultiSelectFlagsnames/compatibility aliases for the upstreamSelectOnAutorename.
- Expose the new Dear ImGui v1.92.7 surface in the safe API with
- Core (
dear-imgui-sys)- Extend that backend shim surface with feature-gated
backend_shim::sdlrenderer3support for Dear ImGui's official SDLRenderer3 backend, including SDL3 header discovery for both system-provided SDL3 installs andsdl3-sysbuild-from-source outputs (PR #24, thanks @flowkclav).
- Extend that backend shim surface with feature-gated
- Extensions
dear-implot: add safePlotUi::plot_polygon()/PlotBuilder::polygon()wrappers for upstreamPlotPolygon, plus the newPolygonFlags.dear-implot: add unified ImPlot v0.18 spec-backed item styling helpers across allImPlotSpec-backed plot builders viaPlotItemStyle/PlotItemStyled, including direct builder methods such aswith_line_color,with_fill_alpha,with_marker, andwith_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: addPieChartFlags::NO_SLICE_BORDERplus closure-scopedPlotItemArrayStyle/with_next_plot_item_array_style(...)helpers for the new upstream per-indexImPlotSpecarrays (LineColors,FillColors,MarkerSizes,MarkerLineColors,MarkerFillColors) without introducing dangling pointer hazards into the safe API.dear-implot3d: add unifiedImPlot3DSpec-backed item styling helpers across spec-backed plot builders viaPlot3DItemStyle/Plot3DItemStyled, covering bothplots::*items andPlot3DUibuilders such assurface_f32(),image_by_axes(), andmesh(). Also exposeMarker3D::Autoso the safe API can round-trip ImPlot3D's default automatic marker selection.dear-implot3d: add typedPlot3DColorElementvalues for style colors, including the new axis background slots, plus closure-scopedPlot3DItemArrayStyle/with_next_plot3d_item_array_style(...)helpers for the new upstream per-indexImPlot3DSpecarrays.dear-implot3d: wireItem3DFlagsinto spec-backed plot wrappers/builders viawith_item_flags(...), so commonNO_LEGEND/NO_FITflags can now be composed from the safe API instead of remaining a defined-but-unreachable flag set.
- Backends
dear-imgui-sdl3: add optionalsdlrenderer3-renderersupport and wrapper APIs for the official SDL3 + SDLRenderer3 path, includinginit_for_canvas/canvas_new_frame/canvas_render/shutdown_for_canvas.
- Examples
- Add a standalone repository-local
examples-android/dear-imgui-android-smokeAndroid template that demonstrates the low-leveldear-imgui-rs+dear-imgui-sysroute without introducing a new published crate or changing the workspace's default build matrix. - Add minimal
cargo-apk2packaging metadata to the Android smoke template and verify that it can produce a signed debugNativeActivityAPK foraarch64-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-smokeexample that demonstrates adear-imgui-winit + dear-imgui-wgpuiOS 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-smokeexample that demonstrates adear-imgui-sdl3 + dear-imgui-wgpuiOS integration shape, including a checked-in Xcode host stub and an SDL3 framework helper that can consume app-owned framework artifacts or buildSDL3.frameworkfrom the upstreamsdl3-srcsource tree. - Add an
sdl3_sdlrendererexample plus thesdl3-sdlrenderer3example feature for Dear ImGui on SDL3 + SDL_Renderer.
- Add a standalone repository-local
Changed
- Core (
dear-imgui-sys)- Upgrade vendored
cimguidocking_interto Dear ImGui v1.92.7 and regenerate native + import-style WASM bindings.
- Upgrade vendored
- Core (
dear-imgui-rs)- Keep backend shim feature gates in
dear-imgui-sysonly; the safe crate does not re-export backend-specific toggles until it owns corresponding safe wrappers.
- Keep backend shim feature gates in
- Extensions
dear-implot-sys/dear-implot3d-sys: refresh the vendoredcimplot/cimplot3dsubmodules and regenerate native + WASM bindings.dear-implot/dear-implot3d: initialize the new upstreamImPlotSpec/ImPlot3DSpecarray fields in the safe wrapper defaults so spec-backed plots remain ABI-correct after the latestcimplot/cimplot3dupdates.dear-implot3d: adapt the safemesh()wrapper to the new typedImPlot3D_PlotMesh_*Ptrentry points while preserving the existing Rust-facing API shape.dear-implot: standardize plot-item styling soLinePlot,ScatterPlot,BarPlot,HistogramPlot,HeatmapPlot,ErrorBarsPlot,ShadedPlot,StairsPlot,StemPlot,TextPlot, and otherImPlotSpec-based builders now share the same styling surface instead of mixing per-type convenience methods with raw style-object-only paths.dear-implot: letShadedBetweenPlotconfigureoffset/stridelike other spec-backed line-style builders, and remove an outdated comment that still described the old pre-wrapper state.
- Core (
dear-imgui-sys)- Link
GLESv3for the Android OpenGL3 backend shim so downstream AndroidNativeActivitybinaries can load successfully before the application creates its own EGL / GLES context. - Expand the crate and module documentation around
backend_shimso the repository-owned shim ABI, Android low-level route, and ownership split with application packaging are explicit in the main docs.
- Link
- 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 forwgpuv29, makewgpu-29the default backend path, and keepwgpu-28/wgpu-27as explicit compatibility features.dear-imgui-sdl3: keep SDL3-specific wrapper/build ownership in the backend crate, but route the optional official OpenGL3 renderer path throughdear-imgui-sys::backend_shim::opengl3instead of compiling a second local OpenGL3 shim layer.dear-imgui-sdl3: stop forcingsdl3/build-from-sourceon Android from the backend crate itself. Android SDL3 acquisition now remains application-owned: consumers may either provideSDL3_INCLUDE_DIRor opt intosdl3/build-from-sourcein their own dependency graph.dear-imgui-sdl3: on Apple targets, keep SDL3 acquisition application-owned instead of forcingsdl3/build-from-sourcefrom 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-smokefrom 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 rundemos inexamples/, and keep iOS/Android smoke templates in top-levelexamples-ios//examples-android/folders because they require host projects, packaging steps, or mobile-specific tooling.
- Upgrade
- Docs
- Add Apple integration notes that expl...
v0.10.4
Deprecated
- Extensions
dear-imnodes:EditorContext::*methods that rely on the global current ImNodes context are deprecated and will be removed in0.11.0. UseContext::bind_editor(&EditorContext)instead.dear-imnodes:EditorContext::create/try_createare deprecated and will be removed in0.11.0. UseContext::{create_editor_context,try_create_editor_context}instead.
Changed
- Core (
dear-imgui-rs)- Widgets: split
widget::inputinto focused submodules for text callbacks and numeric builders without intended public API changes. - Platform: split platform_io into focused submodules for viewport wrappers and callback trampolines without intended public API changes.
- Widgets: split
Fixed
- Core (
dear-imgui-rs)- Fonts: keep
FontAtlas::set_texture_id()aligned with the managedImTextureDatapath so the atlasTexRefcontinues to track backend-driven texture ID updates instead of degrading to a legacy ID-only reference.
- Fonts: keep
- Backends
dear-imgui-glow: harden the modern texture update path by keeping the fallback font-atlas texture in sync with managed atlas create/update/destroy requests.dear-imgui-glow: align texture destroy handling with other renderers by settingWantDestroyNextFramebefore marking managed textures asDestroyed.dear-imgui-glow: refactor sub-rectangle RGBA conversion into a reusable helper and add regression tests mirroring thedear-imgui-wgpucoverage forRGBA32/Alpha8uploads.dear-imgui-glow: fix external-context rendering sorender_with_context()now uses the caller-provided GL context for managed texture create/update/destroy requests fromDrawData::textures()instead of failing when the renderer does not own the context. Fixes #22, thanks @CoffeeCatRailway.dear-imgui-glow: addregister_texture_with_context()/update_texture_with_context()helpers plus a runnable external-context regression example covering the create/update/destroy flow.dear-imgui-wgpu: stop tracking a separate renderer-side font atlas ID cache in the fallback path; legacy fallback uploads now check the atlasTexRefplus live texture-manager state directly, keeping modern managed textures as the source of truth.
v0.10.3
v0.10.2
Deprecated
- Extensions
dear-imnodes:EditorContext::*methods that rely on the global current ImNodes context are deprecated and will be removed in0.11.0. UseContext::bind_editor(&EditorContext)instead.dear-imnodes:EditorContext::create/try_createare deprecated and will be removed in0.11.0. UseContext::{create_editor_context,try_create_editor_context}instead.
Added
- Core (
dear-imgui-rs)Context::alive_token()/ContextAliveToken: allow extension crates to detect if an ImGui context has been dropped (helps avoid calling FFI with danglingImGuiContext*).
Fixed
- Extensions
dear-imnodes: fix potential use-after-free hazards by scoping editor post-frame handles and style tokens to the active editor/frame lifetime.dear-imnodes: ensure minimap callbacks remain alive for the full editor frame.dear-imnodes: harden context binding (ImGui/ImNodes/editor) for editor operations and token drops.dear-imnodes: guard ImGui context rebinding against dropped contexts (panic instead of UB on misuse).dear-imnodes: validate raw style-var indices inpush_style_var_*helpers to avoid out-of-bounds access in release builds.dear-imnodes: fiximnodes_basiccontext menu crash (Fixes #19).dear-implot: harden ImGui context binding and guard context drop order hazards viaContextAliveToken(panic or best-effort leak instead of UB).dear-implot3d: guard context drop order hazards viaContextAliveToken(best-effort leak instead of UB).dear-imgui-test-engine: record bound ImGui context liveness viaContextAliveTokenand guard shutdown/drop order hazards (panic or best-effort leak instead of UB).
v0.10.1
Added
- Extensions
dear-imgui-test-engine/dear-imgui-test-engine-sys: Dear ImGui Test Engine support (PR #17, thanks @honeyspoon).


