PackageTrack
Sign in Get early access

glutin

Cross-platform OpenGL context provider.

0.32.3 30M downloads/mo #1665 most downloaded on crates.io rust-windowing/glutin

What this package is like to depend on

Last release 1 years ago

30 Apr 2025

Ships fairly regularly

a new release about every 2 months

Some releases are documented

notes for 44 of 123 stable releases

5 versions withdrawn

withdrawn after publishing

12 years old

139 releases · first in 2014

0 releases in the last 12 months

see the full history below

Release timeline

139 releases · Dec 2014 to Apr 2025
2015 2017 2019 2021 2023 2025
Release Pre-release Withdrawn

Releases

latest 60 of 139
  1. 0.32.3 30 Apr 2025
    Release notes
    • Bump MSRV from 1.70 to 1.71.
    • Updated objc2 dependency to v0.6.
    Open source →
    Release notes
    • Bump MSRV from 1.70 to 1.71.
    • Updated objc2 dependency to v0.6.
    Open source →
  2. 0.32.2 12 Jan 2025
    Release notes
    • Added PossiblyCurrentContext::make_not_current_in_place(&self) for when Send capability of NotCurrentContext is not required.
    • Added NotCurrentContext::make_current_surfaceless(self) and
      PossiblyCurrentContext::make_current_surfaceless(&self) in the Cgl
      implementation to allow the use of surfaceless contexts on MacOS.
    • Added NotCurrentContext::make_current_surfaceless(self) and
      PossiblyCurrentContext::make_current_surfaceless(&self) in the Glx
      implementation to allow the use of surfaceless contexts with GLX.
    • Added NotCurrentContext::make_current_surfaceless(self) and
      PossiblyCurrentContext::make_current_surfaceless(&self) in the Wgl
      implementation to allow the use of surfaceless contexts with WGL.
    • Added workaround for EGL drivers reporting EGL_KHR_platform_gbm without EGL 1.5 client.
    • Added GlContext::priority/ContextAttributesBuilder::with_priority to get/set context priority.
    Open source →
    Release notes
    • Added PossiblyCurrentContext::make_not_current_in_place(&self) for when Send capability of NotCurrentContext is not required.
    • Added NotCurrentContext::make_current_surfaceless(self) and PossiblyCurrentContext::make_current_surfaceless(&self) in the Cgl implementation to allow the use of surfaceless contexts on MacOS.
    • Added NotCurrentContext::make_current_surfaceless(self) and PossiblyCurrentContext::make_current_surfaceless(&self) in the Glx implementation to allow the use of surfaceless contexts with GLX.
    • Added NotCurrentContext::make_current_surfaceless(self) and PossiblyCurrentContext::make_current_surfaceless(&self) in the Wgl implementation to allow the use of surfaceless contexts with WGL.
    • Added workaround for EGL drivers reporting EGL_KHR_platform_gbm without EGL 1.5 client.
    • Added GlContext::priority/ContextAttributesBuilder::with_priority to get/set context priority.
    Open source →
  3. 0.32.1 11 Sep 2024
    Release notes
    • Fixed EGL's Device::query_devices() being too strict about required extensions.
    • Fixed crash in EglGetProcAddress on Win32-x86 platform due to wrong calling convention.
    • Fixed EGL's Display::device() always returning an error due to invalid pointer-argument passing inside.
    • Fixed EGL's Display::new() making an EGLDisplay::Khr when the EGL version for the display is 1.4 or lower.
    • Added Device::drm_device_node_path() and Device::drm_render_device_node_path() getters to EGL via EGL_EXT_device_drm.
    • Added support for DrmDisplayHandle in EGL's Display::with_device() using EGL_DRM_MASTER_FD_EXT from EGL_EXT_device_drm.
    • Properly set up OpenGL-specific stuff on the NSView, instead of relying on Winit to do it.
    Open source →
    Release notes
    • Fixed EGL's Device::query_devices() being too strict about required extensions.
    • Fixed crash in EglGetProcAddress on Win32-x86 platform due to wrong calling convention.
    • Fixed EGL's Display::device() always returning an error due to invalid pointer-argument passing inside.
    • Fixed EGL's Display::new() making an EGLDisplay::Khr when the EGL version for the display is 1.4 or lower.
    • Added Device::drm_device_node_path() and Device::drm_render_device_node_path() getters to EGL via EGL_EXT_device_drm.
    • Added support for DrmDisplayHandle in EGL's Display::with_device() using EGL_DRM_MASTER_FD_EXT from EGL_EXT_device_drm.
    • Properly set up OpenGL-specific stuff on the NSView, instead of relying on Winit to do it.
    • Added OpenHarmony platform support with EGL.
    • Added support for Display::create_pbuffer_surface() in WGL via WGL_ARB_pbuffer.
    Open source →
  4. 0.32.0 08 Jun 2024
    Release notes
    • Breaking: updated raw-window-handle dependency to 0.6.
    • Bump MSRV from 1.65 to 1.70.
    • Bump windows-sys from 0.48.0 to 0.52.0.
    • Expose Egl and Glx raw API functions on Egl and Glx displays.
    • Add GLUTIN_WGL_OPENGL_DLL environment variable to change OpenGL provider name with WGL.
    Open source →
    Release notes
    • Breaking: updated raw-window-handle dependency to 0.6.
    • Bump MSRV from 1.65 to 1.70.
    • Bump windows-sys from 0.48.0 to 0.52.0.
    • Expose Egl and Glx raw API functions on Egl and Glx displays.
    • Add GLUTIN_WGL_OPENGL_DLL environment variable to change OpenGL provider name with WGL.
    Open source →
  5. 0.31.3 12 Feb 2024
    Release notes
    • Change Surface to be Send. This makes it consistent with the context, so now they are both Send but not Sync.
    Open source →
    Release notes
    • Change Surface to be Send. This makes it consistent with the context, so now they are both Send but not Sync.
    Open source →
  6. 0.31.2 22 Dec 2023
    Release notes
    • Fixed EGL not setting context version with EGL versions before 1.5 and missing context ext.
    Open source →
    Release notes
    • Fixed EGL not setting context version with EGL versions before 1.5 and missing context ext.
    Open source →
  7. 0.31.1 29 Oct 2023
    Release notes
    • Fixed CGLContextObj having an invalid encoding on newer macOS versions.
    Open source →
    Release notes
    • Fixed CGLContextObj having an invalid encoding on newer macOS versions.
    Open source →
  8. 0.31.0 21 Oct 2023
    Release notes
    • Bump MSRV from 1.60 to 1.65.
    • Breaking: bitflags which is used as a part of public API was updated to 2.0.
    • Breaking: .*SurfaceAccessor traits got removed; their methods now on respective .*GlContext traits instead.
    • Breaking: GlContext trait is now a part of the prelude.
    • Automatically cleanup the EGLDisplay when EGL_KHR_display_reference is present.
    • Add api::egl::Display::terminate to terminate the display when glutin doesn't manage it.
    • Fixed handling of Robustness::NoError and debug attribute when building context.
    • Robustness::NoError not being properly enabled with GLX/WGL.
    Open source →
    Release notes
    • Bump MSRV from 1.60 to 1.65.
    • Breaking: bitflags which is used as a part of public API was updated to 2.0.
    • Breaking: .*SurfaceAccessor traits got removed; their methods now on respective .*GlContext traits instead.
    • Breaking: GlContext trait is now a part of the prelude.
    • Automatically cleanup the EGLDisplay when EGL_KHR_display_reference is present.
    • Add api::egl::Display::terminate to terminate the display when glutin doesn't manage it.
    • Fixed handling of Robustness::NoError and debug attribute when building context.
    • Robustness::NoError not being properly enabled with GLX/WGL.
    Open source →
  9. 0.30.10 06 Aug 2023
    Release notes
    • Add X11VisualInfo::visual_id to get XID of the visual.
    • Added support for EGL on Windows using Angle. This assumes libEGL.dll/libGLESv2.dll present.
    • EGL's Display::create_pbuffer_surface() no longer sets the invalid RENDER_BUFFER attribute.
    Open source →
  10. 0.30.9 16 Jun 2023
    Release notes
    • Fixed lock on SwapBuffers with some GLX drivers.
    • Fixed EGL's Surface::is_single_buffered being inversed.
    Open source →
  11. 0.30.8 14 May 2023
    Release notes
    • Fixed EGL dereferencing raw window handles on everything but X11 in legacy Window and Pixmap surface creation.
    • On GLX, fixed startup failure when passing default Flush with KHR_context_flush_control.
    • Behavior change: the Config's Api now has platform specific default instead of being unspecified.
    Open source →
  12. 0.30.7 16 Mar 2023
    Release notes
    • Altered specification for objc2 crate to pull patch update.
    Open source →
  13. 0.30.6 12 Feb 2023
    Release notes
    • Fixed handling of *_base extensions with EGL.
    Open source →
  14. 0.30.5 11 Feb 2023
    Release notes
    • Fixed EGL/GLX display initialization when the provided raw-window-handle has an unknown visual_id.
    • Fixed EGL always returning None for x11_visual().
    • Fixed GLX error handling assuming that XError's will arrive like they should on X11.
    • Fixed EGL window/pixmap creation when using legacy path.
    Open source →
  15. 0.30.4 07 Feb 2023
    Release notes
    • Fixed EGL display initialization with XcbDisplayHandle.
    • Fixed EGL/GLX Surface::width returning the height instead of the width.
    • On GLX, fixed handling of errors not directly requested by glutin.
    • Added GlConfig::hardware_accelerated to check if the config is hardware accelerated.
    • Added GlContext::context_api to get the ContextApi used by the context.
    • Added missing implementations of Surface::{width,height} for WGL/CGL
    • Fixed crash when accessing context from the off-thread on macOS.
    • Clarified that make_{,not}_current(), GlSurface::width(), GlSurface::height(), and GlSurface::resize() could block on macOS.
    Open source →
  16. 0.30.3 07 Dec 2022
    Release notes
    • Fixed wrong amount of rects committed in Surface::swap_buffers_with_damage with EGL.
    • Added missing Eq, PartialEq, and Hash impls for surface::Rect.
    Open source →
  17. 0.30.2 26 Nov 2022
    Release notes
    • Fixed robust context creation with EGL.
    • Moved to stable version of wayland-sys.
    • Allow offline renderers with CGL.
    • Fixed an error when compiling the EGL backend with only one of Wayland and X11 enabled.
    Open source →
  18. 0.30.1 12 Nov 2022
    Release notes
    • Added new glutin-winit crate to help bootstrapping new glutin with winit.
    • Added EGLDevice wrappers for EGL.
    • Added EGL dependent api to make a context current without a surface.
    • Added supports_transparency on GlConfig.
    • On GLX, try all extensions when setting vsync.
    • On WGL, fixed that Surface::swap_buffers takes longer with every call caused by frequent calls of the win32 function HDC GetDC(HWND hWnd).
    Open source →
  19. 0.30.0 26 Oct 2022
    Release notes
    • This version of glutin has been rewritten from the ground and no longer depends on winit, the raw-window-handle is now used instead of it.
    • The Api is now built around Display, Surface, Config, and Surface. For more info see crate documentation and examples.
    • Breaking: Bump MSRV from 1.57 to 1.60.
    • The ios support was removed for the lack of maintenance for now. In case there's a need for it, contributions are welcome.
    • The context creation is no longer limited to winit's supported platforms.
    • The underlying Api providers are publicly exposed now, so glutin could be used with just e.g. EGL.
    • Fixed soundness issues with Surface MT safety, since before EGLSurface could be sent to a different thread, which is not safe.
    • Fallback to Surface::swap_buffers when Surface::swap_buffers_with_damage is not supported on EGL.
    Open source →
  20. 0.30.0-beta.3 23 Oct 2022 pre-release

    Nothing published for this version

  21. 0.30.0-beta.2 03 Sep 2022 pre-release

    Nothing published for this version

  22. 0.30.0-beta.1 03 Sep 2022 pre-release withdrawn

    Nothing published for this version

  23. 0.29.1 10 Aug 2022
    Release notes
    • Fix build failures when building from crates.io
    Open source →
  24. 0.29.0 30 Jul 2022
    Release notes
    • Fix crash when creating OpenGLES context without explicit version.
    • Add buffer_age method on WindowedContext.
    • Return an Err instead of panicking when surfaceless GLX context creation fails on Linux.
    • Fix compilation on Android:
      • Switch from StaticStructGenerator to StructGenerator to dynamically load symbols.
      • Replace android_glue dependency with raw-window-handle, and remove broken lifecycle event handling.
      • Glutin can now be used on Android, however, the application must ensure it only creates the Context following a winit Event::Resumed event, and destroys the Context in response to a Event::Suspended event.
    • Updated winit dependency to 0.27.0. See winit's CHANGELOG for more info.
    • On Windows, build_raw_context now uses isize for hwnd to follow winit change.
    Open source →
  25. 0.28.0 02 Dec 2021
    Release notes
    • On Windows, fixed a panic for headless contexts because of active drag-and-drop (OleInitialize failed! Result was: RPC_E_CHANGED_MODE)
    • Updated winit dependency to 0.26.0. See winit's CHANGELOG for more info.
    • Remove emscripten support leftover.
    Open source →
  26. 0.27.0 22 Jun 2021
    Release notes
    Open source →
  27. 0.26.0 10 Dec 2020
    Release notes
    Open source →
    Release notes

    ea1c031

    This commit was created on GitHub.com and signed with GitHub’s verified signature . The key has expired.

    GPG key ID: 4AEE18F83AFDEB23 Expired

    Verified Learn about vigilant mode .

    • Update raw-window-handle to v0.4 . This is not a breaking change, we still implement HasRawWindowHandle from v0.3 , see rust-windowing/raw-window-handle#74 . Note that you might have to run cargo update -p raw-window-handle after upgrading.

    • On X11, bump mio to 0.8.

    • On Android, fixed WindowExtAndroid::config initially returning an empty Configuration .

    • On Android, fixed Window::scale_factor and MonitorHandle::scale_factor initially always returning 1.0.

    • On X11, select an appropriate visual for transparency if is requested

    • On Wayland and X11, fix diagonal window resize cursor orientation.

    • On macOS, drop the event callback before exiting.

    • On Android, implement Window::request_redraw

    • Breaking: On Web, remove the stdweb backend.

    • Added Window::focus_window to bring the window to the front and set input focus.

    • On Wayland and X11, implement is_maximized method on Window .

    • On Windows, prevent ghost window from showing up in the taskbar after either several hours of use or restarting explorer.exe .

    • On macOS, fix issue where ReceivedCharacter was not being emitted during some key repeat events.

    • On Wayland, load cursor icons hand2 and hand1 for CursorIcon::Hand .

    • Breaking: On Wayland, Theme trait and its support types are dropped.

    • On Wayland, bump smithay-client-toolkit to 0.15.1.

    • On Wayland, implement request_user_attention with xdg_activation_v1 .

    • On X11, emit missing WindowEvent::ScaleFactorChanged when the only monitor gets reconnected.

    • On X11, if RANDR based scale factor is higher than 20 reset it to 1

    • On Wayland, add an enabled-by-default feature called wayland-dlopen so users can opt out of using dlopen to load system libraries.

    • Breaking: On Android, bump ndk and ndk-glue to 0.5.

    • On Windows, increase wait timer resolution for more accurate timing when using WaitUntil .

    • On macOS, fix native file dialogs hanging the event loop.

    • On Wayland, implement a workaround for wrong configure size when using xdg_decoration in kwin_wayland

    • On macOS, fix an issue that prevented the menu bar from showing in borderless fullscreen mode.

    • On X11, EINTR while polling for events no longer causes a panic. Instead it will be treated as a spurious wakeup.

    Open source →
  28. 0.25.1 09 Oct 2020
    Release notes
    • X11 and Wayland are now optional features (enabled by default)
    Open source →
  29. 0.25.0 02 Oct 2020
    Release notes
    • Updated winit dependency to 0.23.0. See winit's CHANGELOG for more info.
    • Avoid loading libEGL.dll from PATH on Windows.
    Open source →
  30. 0.24.1 30 May 2020
    Release notes
    • On X11, Fixed unnecessary instantiation of GLX/EGL
    Open source →
  31. 0.24.0 11 Mar 2020
    Release notes
    Open source →
  32. 0.23.0 07 Feb 2020
    Release notes
    • Updated winit dependency to 0.21.0. See winit's CHANGELOG for more info.
    • Removed broken CI for the armv7-apple-ios target.
    Open source →
  33. 0.22.1 29 Jan 2020
    Release notes
    • Fixed incorrectly documented default value for ContextBuilder::with_srgb
    Open source →
  34. 0.22.0 07 Jan 2020
    Release notes
    Open source →
  35. 0.22.0-alpha6 05 Jan 2020 pre-release
    Release notes
    • Fixed dependencies so wrong winit version is not used.
    • On X11, got rid of mistaken XRenderFindVisualFormat call so that glutin doesn't ignore configs that lack a XRenderPictFormat.
    • On iOS, fixed not linking against OpenGLES.framework.
    • On X11, fixed VSync not being disabled when requested.
    Open source →
  36. 0.22.0-alpha5 15 Nov 2019 pre-release
    Release notes
    • Fixed build issue.
    Open source →
  37. 0.22.0-alpha4 12 Nov 2019 pre-release
    Release notes
    • Update winit dependency to 0.20.0-alpha4. See winit's CHANGELOG for more info.
    • Added an xcode example for building for iOS.
    • Made using sRGB the default.
    • MacOSX's raw_handle trait method now returns the CGLContext object.
    Open source →
  38. 0.22.0-alpha3 16 Aug 2019 pre-release
    Release notes
    • Switched from needing a EventLoop to a EventLoopWindowTarget
    Open source →
  39. 0.22.0-alpha2 15 Aug 2019 pre-release
    Release notes
    • Fixed attribute handling for sRGB in WGL.
    • Fixed VSync being always enabled on EGL.
    Open source →
  40. 0.22.0-alpha1 21 Jun 2019 pre-release
    Release notes
    Open source →
  41. 0.21.2 29 Nov 2019

    Nothing published for this version

  42. 0.21.1 27 Aug 2019

    Nothing published for this version

  43. 0.21.0 21 Apr 2019
    Release notes
    • Bumped dependencies, fixed docs.
    Open source →
  44. 0.21.0-rc3 14 Apr 2019 pre-release
    Release notes
    • Bumped dependencies.
    Open source →
  45. 0.21.0-rc2 09 Apr 2019 pre-release
    Release notes
    • Breaking: Removed DisplayLost variant to ContextError.
    • Breaking: Renamed NotCurrentContext to NotCurrent.
    • Breaking: Renamed PossiblyCurrentContext to PossiblyCurrent.
    • Added treat_as_current function.
    Open source →
  46. 0.21.0-rc1 08 Apr 2019 pre-release
    Release notes
    • Breaking: Replaced CreationErrorPair enum variant with CreationErrors.
    • Added Clone to ContextBuilder.
    • Added headless example.
    • Removed internal code relating to libcaca.
    • Implemented Debug on all public facing types.
    • Dropping contexts on platforms using egl and/or glx no longer resets the current context, if the context dropped wasn't the current context.
    • Added context sharing support to MacOS.
    • Breaking: Removed ContextTrait.
    • Breaking: Renamed OsMesaContextExt to HeadlessContextExt. Added functions for using egl-surfaceless.
    • Breaking: Changed WindowedContext and RawContext into typedefs of ContextWrapper.
    • Breaking: Removed new_windowed and new_headless from WindowedContext and Context, respectively.
    • Breaking: Added two new types, NotCurrentContext and PossiblyCurrentContext, which RawContext, WindowedContext, ContextBuilder and Context are now generic over.
    • Added {make,treat_as}_not_current function to {Raw,Windowed,}Context.
    • We now load libGL.so instead of libGLX.so.
    • Breaking: Added DisplayLost variant to ContextError.
    • Fixed bug where we drop the hidden window belonging to a headless context on on X11 and/or Wayland before the actual context.
    • "Fixed" bug where we will close EGLDisplays while they are still in use by others. Angry and/or salty rant can be found in glutin/src/api/egl/mod.rs, you can't miss it.
    • Breaking: WindowedContexts now deref to Context, not Window. Please use .window() to access the window.
    Open source →
  47. 0.20.1 08 Aug 2019
    Release notes
    • Backport: We now load libGL.so instead of libGLX.so.
    Open source →
  48. 0.20.0 10 Mar 2019
    Release notes
    • We no longer load libEGL.so and libGL.so multiple times.
    • Fixes Context::is_current incorrectly returning false.
    • Made ContextBuilder's pf_reqs public.
    • Breaking: Renamed GlContext{,Ext} to ContextTrait{,Ext}.
    • Breaking: Renamed GlWindow to WindowedContext.
    • Implemented context sharing support for Windows and Linux.
    • Added support for contexts made from raw parts for Windows and Linux.
    • Breaking: Removed shareable_with_windowed_contexts. Now you must build OsMesa contexts via a separate extension.
    • Added ContextBuilder::build_{windowed,headless} methods.
    • Breaking: Renamed Context::new to Context::new_headless. new_headless now accepts dimensions for the off-screen surface backing it.
    • Breaking: Renamed GlWindow::new to WindowedContext::new_windowed.
    • On X11 and Wayland, you can now use shared contexts, however, one limitation of the Wayland backend is that all shared contexts must use the same events pool as each other.
    • Added context sharing support to windows.
    • Improved docs.
    • Refactored code to be more consistent/cleaner. Ran rustfmt on everything.
    • Added NetBSD support.
    • Breaking: Removed new_shared function from Context and GlWindow, in favor of new.
    • Added build method to ContextBuilder.
    • Added get_egl_display method to GlContextExt trait and its implementation for platforms.
    • Removed minimum supported Rust version guarantee.
    • NoBackendAvailable is now Sync, as a result CreationError is also Sync.
    • Update winit dependency to 0.19.0. See winit's CHANGELOG for more info.
    Open source →
  49. 0.19.0 10 Nov 2018
    Release notes
    • Breaking: The entire API for headless contexts has been removed. Please instead use Context::new() when trying to make a context without a visible window. Also removed headless feature.
    • Breaking: Types implementing the GlContext trait must now be sized.
    • Breaking: Added new CreationErrorPair enum variant to enum CreationError.
    • Remove requirement for EGL dev packages on Wayland.
    • Update winit dependency to 0.18.0. See winit's CHANGELOG for more info.
    Open source →
  50. 0.18.0 03 Aug 2018
    Release notes
    • cocoa and core-graphics updates.
    • Breaking: Added OsError variant to ContextError.
    • Improved glX error reporting.
    • The iOS backend no longer fails to compile... again (added iOS testing on CI to prevent further issues).
    • Update winit dependency to 0.17.0. See winit's CHANGELOG for more info.
    Open source →
  51. 0.17.0 28 Jun 2018
    Release notes
    • Fix regression that prevented automatic graphics switching in macOS (#980).
    • Add ContextBuilder::with_double_buffer function.
    • Add ContextBuilder::with_hardware_acceleration function.
    • Work around a presumed Android emulator bug that would cause context creation to return CreationError::OpenGlVersionNotSupported in some configurations (#1036).
    • Update winit dependency to 0.16.0. See winit's CHANGELOG for more info.
    • The iOS backend no longer fails to compile.
    Open source →
  52. 0.16.0 28 May 2018
    Release notes
    Open source →
  53. 0.15.0 03 May 2018
    Release notes
    Open source →
  54. 0.14.0 11 Apr 2018
    Release notes
    • Update winit dependency to 0.12.0. See winit's CHANGELOG for more info.
    • Update Wayland backend to not use deprecated get_inner_size_points method.
    Open source →
  55. 0.13.1 08 Mar 2018
    Release notes
    • Fix Android activity life cycle.
    • Update winit dependency to 0.11.2. See winit's CHANGELOG for more info.
    Open source →
  56. 0.13.0 28 Feb 2018
    Release notes
    Open source →
  57. 0.12.3 28 Feb 2018 withdrawn

    Nothing published for this version

  58. 0.12.2 12 Feb 2018
    Release notes
    • Don't use yanked version of winit.
    Open source →
  59. 0.12.1 06 Feb 2018
    Release notes
    • Add support for winapi 0.3 (#975).
    • Fix macOS to return compatibility profile if applicable (#977).
    • Update gl_generator and macOS dependencies.
    Open source →
  60. 0.12.0 28 Dec 2017

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive