This is the complete log of user-visible changes for each version since the
project started. For a task oriented view of changes and additions in recent
versions, see the release notes.
Version 3.4
Released on
Added GLFW_PLATFORM init hint for runtime platform selection (#1958)
Added GLFW_ANY_PLATFORM, GLFW_PLATFORM_WIN32, GLFW_PLATFORM_COCOA,
GLFW_PLATFORM_WAYLAND, GLFW_PLATFORM_X11 and GLFW_PLATFORM_NULL symbols to
specify the desired platform (#1958)
Added glfwGetPlatform function to query what platform was selected (#1655,#1958)
Added glfwPlatformSupported function to query if a platform is supported
(#1655,#1958)
Added glfwInitAllocator for setting a custom memory allocator (#544,#1628,#1947)
Added GLFWallocator struct and GLFWallocatefun, GLFWreallocatefun and
GLFWdeallocatefun types (#544,#1628,#1947)
Added glfwGetWindowTitle function for querying window title (#1448,#1909,#2482)
Added glfwInitVulkanLoader for using a non-default Vulkan loader (#1374,#1890)
Added GLFW_RESIZE_NWSE_CURSOR, GLFW_RESIZE_NESW_CURSOR,
GLFW_RESIZE_ALL_CURSOR and GLFW_NOT_ALLOWED_CURSOR cursor shapes (#427)
Added GLFW_RESIZE_EW_CURSOR alias for GLFW_HRESIZE_CURSOR (#427)
Added GLFW_RESIZE_NS_CURSOR alias for GLFW_VRESIZE_CURSOR (#427)
Added GLFW_POINTING_HAND_CURSOR alias for GLFW_HAND_CURSOR (#427)
Added GLFW_MOUSE_PASSTHROUGH window hint for letting mouse input pass
through the window (#1236,#1568)
Added GLFW_CURSOR_CAPTURED cursor mode to confine the cursor to the window
content area (#58)
Added GLFW_POSITION_X and GLFW_POSITION_Y window hints for initial position
(#1603,#1747)
Added GLFW_SCALE_FRAMEBUFFER window hint for Wayland and macOS scaling (#2457)
Added GLFW_ANY_POSITION hint value for letting the window manager choose (#1603,#1747)
Added GLFW_PLATFORM_UNAVAILABLE error for platform detection failures (#1958)
Added GLFW_FEATURE_UNAVAILABLE error for platform limitations (#1692)
Added GLFW_FEATURE_UNIMPLEMENTED error for incomplete backends (#1692)
Added GLFW_WAYLAND_APP_ID window hint string for Wayland app_id selection
(#2121,#2122)
Added GLFW_ANGLE_PLATFORM_TYPE init hint and GLFW_ANGLE_PLATFORM_TYPE_*
values to select ANGLE backend (#1380)
Added GLFW_X11_XCB_VULKAN_SURFACE init hint for selecting X11 Vulkan
surface extension (#1793)
Added GLFW_WIN32_KEYBOARD_MENU window hint for enabling access to the window menu
Added GLFW_WIN32_SHOWDEFAULT window hint for applying the parent process
show command (#2359)
Added GLFW_NATIVE_INCLUDE_NONE for disabling inclusion of native headers (#1348)
Added GLFW_BUILD_WIN32 CMake option for enabling Win32 support (#1958)
Added GLFW_BUILD_COCOA CMake option for enabling Cocoa support (#1958)
Added GLFW_BUILD_X11 CMake option for enabling X11 support (#1958)
Added GLFW_LIBRARY_TYPE CMake variable for overriding the library type
(#279,#1307,#1497,#1574,#1928)
Added support for XDG_SESSION_TYPE environment variable
Added GLFW_PKG_CONFIG_REQUIRES_PRIVATE and GLFW_PKG_CONFIG_LIBS_PRIVATE CMake
variables exposing pkg-config dependencies (#1307)
Made joystick subsystem initialize at first use (#1284,#1646)
Made GLFW_DOUBLEBUFFER a read-only window attribute
Made Wayland the preferred platform over X11 if both are available (#2035)
Updated the minimum required CMake version to 3.4
Updated gamepad mappings from upstream
Renamed GLFW_USE_WAYLAND CMake option to GLFW_BUILD_WAYLAND (#1958)
Disabled tests and examples by default when built as a CMake subdirectory
Removed GLFW_USE_OSMESA CMake option enabling the Null platform (#1958)
Removed CMake generated configuration header
Bugfix: glfwGetVideoMode returned an invalid mode on error (#1292)
[Win32] Added a version info resource to the GLFW DLL
[Win32] Made hidden helper window use its own window class
[Win32] Bugfix: The foreground lock timeout was overridden, ignoring the user
[Cocoa] Added glfwGetCocoaView native access function (#2235)
[Cocoa] Moved main menu creation to GLFW initialization time (#1649)
[Cocoa] Bugfix: Touching event queue from secondary thread before main thread
would abort (#1649)
[Wayland] Added support for glfwRequestWindowAttention (#2287)
[Wayland] Added support for glfwFocusWindow
[Wayland] Added support for GLFW_RESIZABLE (#2203)
[Wayland] Added support for fractional scaling of window contents
[Wayland] Added dynamic loading of all Wayland libraries
[Wayland] Bugfix: CLOCK_MONOTONIC was not correctly enabled
[Wayland] Bugfix: GLFW_HOVERED was true when the cursor was over any
fallback window decoration
[Wayland] Bugfix: Fallback decorations allowed resizing to invalid size
(#2204)
[X11] Bugfix: Termination would segfault if the IM had been destroyed
[X11] Bugfix: Any IM started after initialization would not be detected
[Linux] Bugfix: Joystick evdev fds remained open in forks (#2446)
[POSIX] Removed use of deprecated function gettimeofday
[POSIX] Bugfix: CLOCK_MONOTONIC was not correctly tested for or enabled
[WGL] Disabled the DWM swap interval hack for Windows 8 and later (#1072)
[NSGL] Removed enforcement of forward-compatible flag for core contexts
[NSGL] Bugfix: A core profile OpenGL context was returned if 3.2+
compatibility profile was requested
[EGL] Added platform selection via the EGL_EXT_platform_base extension
(#442)
[EGL] Added ANGLE backend selection via EGL_ANGLE_platform_angle extension
(#1380)
Version 3.3.10
Released on
Bugfix: glfwGetKeyName emitted GLFW_INVALID_VALUE for scancodes with no
key token (#1785,#2214)
[Wayland] Bugfix: Terminating the library before showing a window could segfault
[Wayland] Bugfix: Compilation failed on FreeBSD (#2445)
[Linux] Bugfix: `regfree´ was called on invalid data (#2464)
[WGL] Bugfix: Context creation failed in Parallels VM (#2191,#2406,#2467)
Version 3.3.9
Released on
Bugfix: glfwGetKeyScancode returned 0 on error when initialized instead of -1
Bugfix: Failure to make a newly created context current could cause segfault (#2327)
[Win32] Fix pkg-config for dynamic library on Windows (#2386, #2420)
[Win32] Bugfix: glfwWaitEventsTimeout did not return for some sent messages (#2408)
[Win32] Bugfix: XInput could reportedly provide invalid DPad bit masks (#2291)
[Cocoa] Bugfix: Compilation failed on OS X 10.8 due to unconditional use of 10.9+
symbols (#2161)
[Cocoa] Bugfix: Full screen windows were resizable by the user (#2377,#2405)
[Cocoa] Bugfix: Full screen windows were miniaturized when clicked on macOS
10.15 (#2377,#2405)
[Cocoa] Bugfix: Querying joystick elements could reportedly segfault on macOS
13 Ventura (#2320)
[Cocoa] Bugfix: Print Screen key was not correctly reported (#1786,#2169)
[Wayland] Added improved fallback window decorations via libdecor (#1639,#1693)
[Wayland] Bugfix: Connecting a mouse after glfwInit would segfault (#1450)
[Wayland] Disabled alpha channel for opaque windows on systems lacking
EGL_EXT_present_opaque (#1895)
[Wayland] Bugfix: Buffer would overrun when storing received drag offer (#2225)
[Wayland] Bugfix: Joysticks connected after glfwInit were not detected (#2198)
Added GLFW_TRANSPARENT_FRAMEBUFFER window hint and attribute for controlling
per-pixel framebuffer transparency (#197,#663,#715,#723,#1078)
Added GLFW_HOVERED window attribute for polling cursor hover state (#1166)
Added GLFW_CENTER_CURSOR window hint for controlling cursor centering
(#749,#842)
Added GLFW_FOCUS_ON_SHOW window hint and attribute to control input focus
on calling show window (#1189)
Added GLFW_SCALE_TO_MONITOR window hint for automatic window resizing
(#676,#1115)
Added GLFW_JOYSTICK_HAT_BUTTONS init hint (#889)
Added GLFW_LOCK_KEY_MODS input mode and GLFW_MOD_*_LOCK mod bits (#946)
Added GLFW_RAW_MOUSE_MOTION input mode for selecting raw motion input
(#125,#1400,#1401)
Added macOS specific GLFW_COCOA_RETINA_FRAMEBUFFER window hint
Added macOS specific GLFW_COCOA_FRAME_NAME window hint (#195)
Added macOS specific GLFW_COCOA_GRAPHICS_SWITCHING window hint (#377,#935)
Added macOS specific GLFW_COCOA_CHDIR_RESOURCES init hint
Added macOS specific GLFW_COCOA_MENUBAR init hint
Added X11 specific GLFW_X11_CLASS_NAME and GLFW_X11_INSTANCE_NAME window
hints (#893,#1139)
Added GLFW_INCLUDE_ES32 for including the OpenGL ES 3.2 header
Added GLFW_OSMESA_CONTEXT_API for creating OpenGL contexts with OSMesa (#281)
Added GenerateMappings.cmake script for updating gamepad mappings
Made glfwCreateWindowSurface emit an error when the window has a context
(#1194,#1205)
Deprecated window parameter of clipboard string functions
Deprecated charmods callback
Removed GLFW_USE_RETINA compile-time option
Removed GLFW_USE_CHDIR compile-time option
Removed GLFW_USE_MENUBAR compile-time option
Removed requirement of at least one window for glfwWaitEvents and
glfwPostEmptyEvent (#1317)
Removed all dependencies on the Vulkan SDK
Bugfix: Calling glfwMaximizeWindow on a full screen window was not ignored
Bugfix: GLFW_INCLUDE_VULKAN could not be combined with the corresponding
OpenGL and OpenGL ES header macros
Bugfix: glfwGetInstanceProcAddress returned NULL for
vkGetInstanceProcAddr when _GLFW_VULKAN_STATIC was enabled
Bugfix: Invalid library paths were used in test and example CMake files (#930)
Bugfix: The scancode for synthetic key release events was always zero
Bugfix: The generated Doxyfile did not handle paths with spaces (#1081)
Bugfix: The gamma ramp generated by glfwSetGamma did not use the monitor
ramp size (#1387,#1388)
[Win32] Added system error strings to relevant GLFW error descriptions (#733)
[Win32] Removed XInput circular deadzone from joystick axis data (#1045)
[Win32] Bugfix: Undecorated windows could not be iconified by the user (#861)
[Win32] Bugfix: Deadzone logic could underflow with some controllers (#910)
[Win32] Bugfix: glfwVulkanSupported emitted an error on systems with
a loader but no ICD (#916)
[Win32] Bugfix: Non-iconified full sreeen windows did not prevent screen
blanking or password enabled screensavers (#851)
[Win32] Bugfix: Mouse capture logic lost secondary release messages (#954)
[Win32] Bugfix: Monitors with no display devices were not enumerated (#960)
[Win32] Bugfix: Monitor events were not emitted (#784)
[Win32] Bugfix: The DLL was installed to the wrong directory on Cygwin (#1035)
[Win32] Bugfix: Normalization of axis data via XInput was incorrect (#1045)
[Win32] Bugfix: glfw3native.h would undefine a foreign APIENTRY (#1062)
[Win32] Bugfix: Disabled cursor mode prevented use of caption buttons
(#650,#1071)
[Win32] Bugfix: Returned key names did not match other platforms (#943)
[Win32] Bugfix: Undecorated windows did not maximize to workarea (#899)
[Win32] Bugfix: Window was resized twice when entering full screen (#1085)
[Win32] Bugfix: The HID device notification was not unregistered (#1170)
[Win32] Bugfix: glfwCreateWindow activated window even with GLFW_FOCUSED
hint set to false (#1179,#1180)
[Win32] Bugfix: The keypad equals key was reported as GLFW_KEY_UNKNOWN
(#1315,#1316)
[Win32] Bugfix: A title bar would be drawn over undecorated windows in some
circumstances (#1383)
[Win32] Bugfix: Standard cursors were not per-monitor DPI aware (#1431)
[X11] Replaced _GLFW_HAS_XF86VM compile-time option with dynamic loading
[X11] Bugfix: glfwGetVideoMode would segfault on Cygwin/X
[X11] Bugfix: Dynamic X11 library loading did not use full sonames (#941)
[X11] Bugfix: Window creation on 64-bit would read past top of stack (#951)
[X11] Bugfix: XDND support had multiple non-conformance issues (#968)
[X11] Bugfix: The RandR monitor path was disabled despite working RandR (#972)
[X11] Bugfix: IM-duplicated key events would leak at low polling rates (#747)
[X11] Bugfix: Gamma ramp setting via RandR did not validate ramp size
[X11] Bugfix: Key name string encoding depended on current locale (#981,#983)
[X11] Bugfix: Incremental reading of selections was not supported (#275)
[X11] Bugfix: Selection I/O reported but did not support COMPOUND_TEXT
[X11] Bugfix: Latin-1 text read from selections was not converted to UTF-8
[X11] Bugfix: NVidia EGL would segfault if unloaded before closing the display
[X11] Bugfix: Checking window maximized attrib could crash some WMs (#1356)
[X11] Bugfix: Update cursor position on enter event (#1366)
[X11] Bugfix: glfwSetWindowMonitor did not update hints when resizing
non-user-resizable windows
[X11] Bugfix: glfwSetWindowMonitor did not flush output buffer in some cases
[X11] Bugfix: glfwSetWindowMonitor did not update the EWMH state of hidden
windows (#1358)
[Linux] Added workaround for missing SYN_DROPPED in pre-2.6.39 kernel
headers (#1196)
[Linux] Moved to evdev for joystick input (#906,#1005)
[Linux] Bugfix: Event processing did not detect joystick disconnection (#932)
[Linux] Bugfix: The joystick device path could be truncated (#1025)
[Linux] Bugfix: glfwInit would fail if inotify creation failed (#833)
[Linux] Bugfix: strdup was used without any required feature macro (#1055)
[Cocoa] Added support for Vulkan window surface creation via
MoltenVK (#870)
[Cocoa] Added support for loading a MainMenu.nib when available
[Cocoa] Disabled automatic window tabbing for created windows (#1250)
[Cocoa] Bugfix: Disabling window aspect ratio would assert (#852)
[Cocoa] Bugfix: Window creation failed to set first responder (#876,#883)
[Cocoa] Bugfix: Removed use of deprecated CGDisplayIOServicePort function
(#165,#192,#508,#511)
[Cocoa] Bugfix: Disabled use of deprecated CGDisplayModeCopyPixelEncoding
function on macOS 10.12+
[Cocoa] Bugfix: Running in AppSandbox would emit warnings (#816,#882)
[Cocoa] Bugfix: Windows created after the first were not cascaded (#195)
[Cocoa] Bugfix: Leaving video mode with glfwSetWindowMonitor would set
incorrect position and size (#748)
[Cocoa] Bugfix: Iconified full screen windows could not be restored (#848)
[Cocoa] Bugfix: Value range was ignored for joystick hats and buttons (#888)
[Cocoa] Bugfix: Full screen framebuffer was incorrectly sized for some video
modes (#682)
[Cocoa] Bugfix: A string object for IME was updated non-idiomatically (#1050)
[Cocoa] Bugfix: A hidden or disabled cursor would become visible when a user
notification was shown (#971,#1028)
[Cocoa] Bugfix: Some characters did not repeat due to Press and Hold (#1010)
[Cocoa] Bugfix: Window title was lost when full screen or undecorated (#1082)
[Cocoa] Bugfix: Window was resized twice when entering full screen (#1085)
[Cocoa] Bugfix: Duplicate size events were not filtered (#1085)
[Cocoa] Bugfix: Event polling did not initialize AppKit if necessary (#1218)
[Cocoa] Bugfix: OpenGL rendering was not visible before resize on early macOS
10.14 (#1334,#1346)
[Cocoa] Bugfix: Caps Lock did not generate any key events (#1368,#1373)
[Cocoa] Bugfix: Some buttons for some joysticks were ignored (#1385)
[Cocoa] Bugfix: Analog joystick buttons were not translated correctly (#1385)
[Cocoa] Bugfix: OpenGL swap interval was ignored for occluded windows (#680)
[Cocoa] Bugfix: OpenGL swap interval was ignored on early macOS 10.14
(#1337,#1417,#1435)
[Cocoa] Bugfix: The y-coordinate was incorrect for glfwGetCursorPos and
glfwSetCursorPos (#1461)
[WGL] Added support for WGL_EXT_colorspace for OpenGL ES contexts
[WGL] Added support for WGL_ARB_create_context_no_error
[GLX] Added support for GLX_ARB_create_context_no_error
[GLX] Bugfix: Context creation could segfault if no GLXFBConfigs were
available (#1040)
[EGL] Added support for EGL_KHR_get_all_proc_addresses (#871)
[EGL] Added support for EGL_KHR_context_flush_control
[EGL] Bugfix: The test for EGL_RGB_BUFFER was invalid
Version 3.2.1
Released on
Added on-demand loading of Vulkan and context creation API libraries
Added _GLFW_VULKAN_STATIC build macro to make the library use the Vulkan
loader linked statically into the application (#820)
Bugfix: Single compilation unit builds failed due to naming conflicts (#783)
Bugfix: The range checks for glfwSetCursorPos used the wrong minimum (#773)
Bugfix: Defining GLFW_INCLUDE_VULKAN when compiling the library did not
fail with the expected error message (#823)
Bugfix: Inherited value of CMAKE_MODULE_PATH was clobbered (#822)
[Win32] Bugfix: glfwSetClipboardString created an unnecessary intermediate
copy of the string
[Win32] Bugfix: Examples failed to build on Visual C++ 2010 due to C99 in
linmath.h (#785)
[Win32] Bugfix: The first shown window ignored the GLFW_MAXIMIZED hint
when the process was provided a STARTUPINFO (#780)
[Cocoa] Bugfix: Event processing would segfault on some machines due to
a previous distributed notification listener not being fully
removed (#817,#826)
[Cocoa] Bugfix: Some include statements were duplicated (#838)
[X11] Bugfix: Window size limits were ignored if the minimum or maximum size
was set to GLFW_DONT_CARE (#805)
[X11] Bugfix: Input focus was set before window was visible, causing
BadMatch on some non-reparenting WMs (#789,#798)
[X11] Bugfix: glfwGetWindowPos and glfwSetWindowPos operated on the
window frame instead of the client area (#800)
[WGL] Added reporting of errors from WGL_ARB_create_context extension
[GLX] Bugfix: Dynamically loaded entry points were not verified
[EGL] Added lib prefix matching between EGL and OpenGL ES library binaries
[EGL] Bugfix: Dynamically loaded entry points were not verified
Version 3.2
Released on
Added glfwVulkanSupported, glfwGetRequiredInstanceExtensions,
glfwGetInstanceProcAddress, glfwGetPhysicalDevicePresentationSupport and
glfwCreateWindowSurface for platform independent Vulkan support
Added glfwSetWindowMonitor for switching between windowed and full screen
modes and updating the monitor and desired video mode of full screen windows
Added glfwMaximizeWindow and GLFW_MAXIMIZED for window maximization
Added glfwFocusWindow for giving windows input focus
Added glfwSetWindowSizeLimits and glfwSetWindowAspectRatio for setting
absolute and relative window size limits
Added glfwGetKeyName for querying the layout-specific name of printable
keys
Added glfwWaitEventsTimeout for waiting for events for a set amount of time
Added glfwSetWindowIcon for setting the icon of a window
Added glfwGetTimerValue and glfwGetTimerFrequency for raw timer access
Added glfwSetJoystickCallback and GLFWjoystickfun for joystick connection
and disconnection events
Added GLFW_NO_API for creating window without contexts
Added GLFW_INCLUDE_VULKAN for including the Vulkan header
Added GLFW_CONTEXT_CREATION_API, GLFW_NATIVE_CONTEXT_API and
GLFW_EGL_CONTEXT_API for run-time context creation API selection
Added GLFW_CONTEXT_NO_ERROR context hint for GL_KHR_no_error support
Added GLFW_TRUE and GLFW_FALSE as client API independent boolean values
Added icons to examples on Windows and OS X
Relaxed rules for native access header macros
Removed dependency on external OpenGL or OpenGL ES headers
Merged all cursor test programs into the cursor program
Removed all mention of GLU in examples, build files and package dependencies
Bugfix: Initialization failed on headless systems
Bugfix: The cached current context could get out of sync
Bugfix: glfwIconifyWindow did not restore the original video mode for full
screen windows created with GLFW_AUTO_ICONIFY
[Win32] Renamed hybrid GPU override compile-time option to
_GLFW_USE_HYBRID_HPG and added support for AMD PowerXpress systems
[Win32] Bugfix: glfwGetVideoModes included unusable modes on some systems
[Win32] Bugfix: glfwWaitEvents would return directly for focused windows in
disabled cursor mode
[Cocoa] Bugfix: The cached NSScreen for a monitor could get out of sync
[Cocoa] Bugfix: The GLFW_AUTO_ICONIFY window hint was ignored
[Cocoa] Bugfix: Resizing a window to its minimum size would segfault
[Cocoa] Bugfix: Creating or showing a window would make its context current
[Cocoa] Bugfix: Joysticks connected after glfwInit were not detected
[Cocoa] Bugfix: Cursor creation failed unless a window had been created.
[Cocoa] Bugfix: Window refresh events were not generated by iconification or
restoration
[Cocoa] Bugfix: The primary monitor would get reported as disconnected when
entering full screen on a dual-GPU machine with automatic
graphics switching
[Cocoa] Bugfix: The original video modes were not restored when the
application was hidden
[X11] Bugfix: glfwInit would segfault on systems without RandR
[X11] Bugfix: The response to _NET_WM_PING was sent to the wrong window
[X11] Bugfix: Character input via XIM did not work in many cases
[X11] Bugfix: No fallback existed for missing _NET_ACTIVE_WINDOW support
[X11] Bugfix: Some significant window focus events were ignored
[X11] Bugfix: The GLFW_AUTO_ICONIFY window hint was ignored
[X11] Bugfix: The original video mode was not restored on iconification of
full screen windows
[X11] Bugfix: GLFW_ARROW_CURSOR selected the wrong cursor image
[X11] Bugfix: The GLFW_DECORATED hint was not ignored for full screen
[X11] Bugfix: glfwWaitEvents did not handle EINTR for select
[X11] Bugfix: glfwWaitEvents could return when no events were available
[X11] Bugfix: XkbGetKeyboard fails on XWayland
[X11] Bugfix: Character input did not work correctly for non-UTF-8 locales
[X11] Bugfix: Long input sequences generated by IMEs were discarded
[Cocoa] Bugfix: NSHighResolutionCapable was not enabled for test and
example programs
[Cocoa] Bugfix: glfwSetWindowSize did not change the video mode for full
screen windows
[X11] Added support for Cygwin-X
[X11] Made XInput2 optional at compile-time
[X11] Made Xxf86vm optional at compile-time
[X11] Bugfix: Moved _NET_REQUEST_FRAME_EXTENTS request to
glfwGetWindowFrameSize and added protocol-breaking timeout
as a workaround for broken support in Unity, Fluxbox and Xfwm
[X11] Bugfix: Mouse button GLFW_MOUSE_BUTTON_4 was never used
[X11] Bugfix: glfwTerminate could close an unrelated file descriptor
[X11] Bugfix: Some WMs (KWM, Fluxbox) did not respect cursor redefinition
[WGL] Bugfix: The context flags debug bit was not set for OpenGL ES
[GLX] Bugfix: The context flags debug bit was not set for OpenGL ES
[EGL] Bugfix: The context flags debug bit was not set for OpenGL ES
Version 3.1
Released on
Added GLFWcursor custom system cursor handle
Added glfwCreateCursor, glfwCreateStandardCursor, glfwDestroyCursor and
glfwSetCursor for managing system cursor images
Added GLFWimage struct for passing 32-bit RGBA images
Added monitor and adapter identifier access to native API
Added glfwSetDropCallback and GLFWdropfun for receiving dropped files
Added glfwPostEmptyEvent for allowing secondary threads to cause
glfwWaitEvents to return
Added empty test program for verifying posting of empty events
Added glfwSetCharModsCallback for receiving character events with modifiers
Added glfwGetWindowFrameSize for retrieving the size of the frame around
the client area of a window
Added GLFW_AUTO_ICONIFY for controlling whether full screen windows
automatically iconify (and restore the previous video mode) on focus loss
Added GLFW_DONT_CARE for indicating that any value is acceptable
Added GLFW_DOUBLEBUFFER for controlling whether to use double buffering
Added GLFW_CONTEXT_RELEASE_BEHAVIOR and values
GLFW_ANY_RELEASE_BEHAVIOR, GLFW_RELEASE_BEHAVIOR_FLUSH and
GLFW_RELEASE_BEHAVIOR_NONE for GL_KHR_context_flush_control support
Added GLFW_INCLUDE_ES31 for including the OpenGL ES 3.1 header
Added GLFW_FLOATING for creating always-on-top windowed mode windows
Added GLFW_FOCUSED window hint for controlling initial input focus
Added partial and experimental support for Wayland
Added partial and experimental support for Mir
Changed the window state attributes (focused, iconified and visible) to query
the system directly
Changed the default of GLFW_REFRESH_RATE to GLFW_DONT_CARE to maintain
the default behavior
Changed static library to build as position independent code for easier use
from the Rust language
Changed glfwGetCursorPos to query the system directly for all cursor modes
except captured mode
Bugfix: The debug context attribute was set from GL_ARB_debug_output even
when a debug context had not been requested
Bugfix: The particles example was not linked against the threading library
Bugfix: The cursor was not positioned over newly created full screen windows
Bugfix: The queried cursor position was not always up-to-date
Bugfix: glfwExtensionSupported always failed for OpenGL ES 3.0 and later if
the library was compiled for OpenGL ES
[Cocoa] Added _GLFW_USE_RETINA to control whether windows will use the full
resolution on Retina displays
[Cocoa] Made content view subclass of NSOpenGLView
[Cocoa] Bugfix: Using a 1x1 cursor for hidden mode caused some screen
recorders to fail
[Cocoa] Bugfix: Some Core Foundation objects were leaked during joystick
enumeration and termination
[Cocoa] Bugfix: One copy of each display name string was leaked
[Cocoa] Bugfix: Monitor enumeration caused a segfault if no NSScreen was
found for a given CGDisplay
[Cocoa] Bugfix: Modifier key events were lost if the corresponding modifier
bit field was unchanged
[Cocoa] Bugfix: Joystick enumeration took hundreds of ms on some systems
[Cocoa] Bugfix: The cursor was hidden when the user resized a GLFW window
[Cocoa] Bugfix: The 10.10 Yosemite OpenGL 4.1 profile token was not used
[Cocoa] Bugfix: The generic software OpenGL renderer could be selected under
certain conditions
[Cocoa] Bugfix: The virtual cursor jumped unpredictably when entering
disabled cursor mode
[Win32] Enabled generation of pkg-config file for MinGW
[Win32] Removed option to require explicitly linking against winmm.dll
[Win32] Bugfix: Failure to load winmm or its functions was not reported to
the error callback
[Win32] Bugfix: Some keys were reported based on the current layout instead
of their physical location
[Win32] Bugfix: Maximized hidden windows were restored by glfwShowWindow
[Win32] Bugfix: Context re-creation was not triggered by sRGB hint
[Win32] Bugfix: Full screen windows were incorrectly sized and placed on some
systems
[Win32] Bugfix: Gamma ramp functions acted on entire desktop instead of the
specified monitor
[Win32] Bugfix: The wrong incorrect physical size was returned for
non-primary monitors
[Win32] Bugfix: X-axis scroll offsets were inverted
[Win32] Bugfix: The Optimus HPG forcing variable was not correctly exported
[Win32] Bugfix: The iconified window state attribute was not always updated
[Win32] Bugfix: Previously focused windows with disabled cursor mode and that
had been iconified by Win+D were not visible when restored
[Win32] Bugfix: The virtual cursor jumped unpredictably when entering
disabled cursor mode
[X11] Added run-time support for systems lacking the XKB extension
[X11] Made GLX 1.3 the minimum supported version
[X11] Replaced XRRGetScreenResources with XRRGetScreenResourcesCurrent
for monitor property retrieval
[X11] Bugfix: The case of finding no usable CRTCs was not detected
[X11] Bugfix: Detection of broken Nvidia RandR gamma support did not verify
that at least one CRTC was present
[X11] Bugfix: A stale _NET_SUPPORTING_WM_CHECK root window property would
cause an uncaught BadWindow error
[X11] Bugfix: No check was made for the presence of GLX 1.3 when
GLX_SGIX_fbconfig was unavailable
[X11] Bugfix: The message type of ICCCM protocol events was not checked
[X11] Bugfix: glfwDestroyWindow did not flush the output buffer
[X11] Bugfix: Window frame interactions were reported as focus events
[X11] Bugfix: Workaround for legacy Compiz caused flickering during resize
[X11] Bugfix: The name pointer of joysticks were not cleared on disconnection
[X11] Bugfix: Video mode resolutions and monitor physical sizes were not
corrected for rotated CRTCs
[X11] Bugfix: Unicode character input ignored dead keys
[X11] Bugfix: X-axis scroll offsets were inverted
[X11] Bugfix: Full screen override redirect windows were not always
positioned over the specified monitor
[X11] Bugfix: Character input did not work for the default "C" locale
[X11] Bugfix: Joysticks connected after glfwInit were not detected
(temporary inotify solution until proper libudev solution)
Version 3.0.4
Released on
Added the GLFW_BUILD_DOCS CMake option for controlling whether the
documentation is built
Added the _GLFW_USE_CONFIG_H configuration macro for controlling whether to
include the configuration header
Moved version number macro to internal.h for easier manual compilation
Renamed configuration header to glfw_config.h to avoid conflicts
Bugfix: The glfw3.pc file did not respect the LIB_SUFFIX CMake option
Bugfix: The joysticks test would segfault if a controller had no axes
[Win32] Allowed swap interval to be explicitly set to zero on DWM systems
[Win32] Bugfix: Removed joystick axis value negation left over from GLFW 2
[Win32] Bugfix: Restoring windows using the Win+D hot key did not trigger the
focus callback
[Win32] Bugfix: The disabled cursor mode clip rectangle was updated for
unfocused windows
[Win32] Bugfix: Cursor was not properly re-centered over odd-sized windows
[Win32] Bugfix: Negative window positions were reported incorrectly
[Win32] Bugfix: The iconify callback was not triggered when switching away
from a full screen window using Alt+Tab
[Win32] Bugfix: Resizing a window with glfwSetWindowSize gave it focus
[Cocoa] Added dependency on CoreVideo framework for refresh rate retrieval
[Cocoa] Enabled Lion full screen for resizable windowed mode windows
[Cocoa] Moved to Cocoa API for application transformation and activation
[Cocoa] Bugfix: The GLFW_KEY_GRAVE_ACCENT key was reported as
GLFW_KEY_WORLD_1 and vice versa
[Cocoa] Bugfix: The GLFW_KEY_F13 key was reported as
GLFW_KEY_PRINT_SCREEN
[Cocoa] Bugfix: Implicit conversion from NSUInteger to int caused warnings
with Xcode 5
[Cocoa] Bugfix: Use of undeclared selectors with @selector caused warnings
with Xcode 5
[Cocoa] Bugfix: The cursor remained visible if moved onto client area after
having been set to hidden outside it
[Cocoa] Bugfix: The refresh rate was zero for all modes of certain monitors
[Cocoa] Bugfix: The install_name field of the dynamic library was not set
[Cocoa] Bugfix: Full screen windows were never reported as having focus
[Cocoa] Bugfix: A superfluous I/O flag test prevented video modes from being
listed for Thunderbolt monitor
[Cocoa] Bugfix: Retrieving the name of some external displays caused segfault
[Cocoa] Bugfix: The 10.9 SDK defines GLintptrARB and GLsizeiptrARB
differently from the Khronos glext.h
[Cocoa] Bugfix: Creating hidden windows would steal application focus
[Cocoa] Bugfix: Controllers were reported as having zero buttons and axes
[Cocoa] Bugfix: Removed joystick axis value negation left over from GLFW 2
[X11] Added setting of the WM_CLASS property to the initial window title
[X11] Added support for _NET_WM_BYPASS_COMPOSITOR
[X11] Bugfix: Removed joystick axis value negation left over from GLFW 2
[X11] Bugfix: The position of hidden windows was ignored by Metacity
and Compiz
[X11] Bugfix: The pthread.h header was not included by the GLX platform
header.
Version 3.0.3
Released on
[Win32] Bugfix: _WIN32_WINNT was not set to Windows XP or later
[Win32] Bugfix: Legacy MinGW needs WINVER and UNICODE before stddef.h
[Cocoa] Bugfix: Cursor was not visible in normal mode in full screen
[Cocoa] Bugfix: Cursor was not actually hidden in hidden mode
[Cocoa] Bugfix: Cursor modes were not applied to inactive windows
[X11] Bugfix: Events for mouse buttons 4 and above were not reported
[X11] Bugfix: CMake 2.8.7 does not set X11_Xinput_LIB even when found
Version 3.0.2
Released on
Allowed character callback to be triggered regardless of modifier keys
Bugfix: The -Wall flag was not used with Clang and other GCC compatibles
Bugfix: The default for GLFW_ALPHA_BITS was set to zero
Bugfix: glfwInit would segfault if monitor enumeration failed and no error
callback was set
[Win32] Added _GLFW_USE_DWM_SWAP_INTERVAL for forcing the swap interval
to be set even when DWM compositing is enabled
[Win32] Added support for forcing the use of the high-performance GPU
on nVidia Optimus systems
[Win32] Bugfix: The clipboard string was not freed on terminate
[Win32] Bugfix: Entry points for OpenGL 1.0 and 1.1 functions were not
returned by glfwGetProcAddress
[Win32] Bugfix: The user32 and dwmapi module handles were not freed on
library termination
[Cocoa] Added support for precise scrolling deltas on OS X 10.7 and later
[Cocoa] Enabled explicit creation of OpenGL 3.x and 4.x contexts as supported
by OS X 10.9
[Cocoa] Bugfix: The clipboard string was not freed on terminate
[Cocoa] Bugfix: Selectors were used that are not declared by the 10.6 SDK
[Cocoa] Bugfix: The position set by glfwSetWindowPos was incorrect
[X11] Bugfix: Override-redirect windows were resized to the desired instead
of the actual resolution of the selected video mode
[X11] Bugfix: Screensaver override for full screen windows had a possible
race condition
[X11] Bugfix: The reported window position did not account for the size of
the window frame on some WMs
[X11] Bugfix: The original video mode of a monitor was overwritten by calls
to glfwSetWindowSize
[X11] Bugfix: Key release events for GLFW_KEY_KP_5 were discarded.
Version 3.0.1
Released on
Bugfix: The wrong name was used for the CMake variable for the Xxf86vm
library
[Cocoa] Bugfix: glfwGetFramebufferSize return the size in screen
coordinates
[Cocoa] Bugfix: Messages not supported on Mac OS X 10.6 were used without
tests for precence
[Cocoa] Bugfix: Process transformation was not performed if menu bar
creation was disabled
[Win32] Bugfix: Context creation was attempted even if no valid pixel
formats had been found
[X11] Bugfix: Duplicate window position and window and framebuffer size
events were reported
Version 3.0
Released on
Added GLFWmonitor and updated monitor-related functions to take a monitor
handle
Added glfwGetMonitors and glfwGetPrimaryMonitor for enumerating available
monitors
Added glfwGetMonitorPos, glfwGetMonitorPhysicalSize and
glfwGetMonitorName for retrieving monitor properties
Added glfwSetMonitorCallback and GLFWmonitorfun for notification of
changes in the set of available monitors
Added GLFWwindow and updated window-related functions and callbacks to take
a window handle
Added glfwSetWindowShouldClose and glfwWindowShouldClose for setting and
retrieving the window close flag
Added glfwGetWindowPos for retrieving the position of a window
Added glfwDefaultWindowHints for resetting all window hints to their
default values
Added glfwMakeContextCurrent for making the context of the specified window
current
Added glfwSetErrorCallback, GLFWerrorfun and error type tokens for
receiving error notifications
Added glfwSetWindowUserPointer and glfwGetWindowUserPointer for
per-window user pointers
Added glfwGetVersionString for determining which code paths were enabled at
compile time
Added glfwGetWindowMonitor for querying the monitor, if any, of the
specified window
Added glfwGetFramebufferSize and glfwSetFramebufferSizeCallback for
receiving the current size, in pixels, of the framebuffer
Added glfwSetWindowPosCallback and GLFWwindowposfun for receiving window
position events
Added glfwSetWindowFocusCallback and GLFWwindowfocusfun for receiving
window focus events
Added glfwSetWindowIconifyCallback and GLFWwindowiconifyfun for receiving
window iconification events
Added glfwGetClipboardString and glfwSetClipboardString for interacting
with the system clipboard
Added glfwGetJoystickName for retrieving the name of a joystick
Added glfwGetCurrentContext for retrieving the window whose OpenGL context
is current
Added GLFW_SRGB_CAPABLE for requesting sRGB capable framebuffers
Added GLFW_CLIENT_API and its values GLFW_OPENGL_API and
GLFW_OPENGL_ES_API for selecting client API
Added GLFW_CONTEXT_ROBUSTNESS and values GLFW_NO_ROBUSTNESS,
GLFW_NO_RESET_NOTIFICATION and GLFW_LOSE_CONTEXT_ON_RESET for
GL_ARB_robustness support
Added GLFW_OPENGL_REVISION to make up for removal of glfwGetGLVersion
Added GLFW_INCLUDE_GLCOREARB macro for including GL/glcorearb.h instead of
GL/gl.h
Added GLFW_INCLUDE_ES1 macro for telling the GLFW header to use GLES/gl.h
instead of GL/gl.h
Added GLFW_INCLUDE_ES2 macro for telling the GLFW header to use
GLES2/gl2.h instead of GL/gl.h
Added GLFW_INCLUDE_NONE macro for telling the GLFW header to not include
any client API header
Added GLFW_VISIBLE window hint and parameter for controlling and polling
window visibility
Added GLFW_REPEAT key action for repeated keys
Added scancode parameter to key callback
Added refreshRate member to GLFWvidmode struct
Added key modifier parameter to key and mouse button callbacks
Added windows simple multi-window test program
Added sharing simple OpenGL object sharing test program
Added modes video mode enumeration and setting test program
Added threads simple multi-threaded rendering test program
Added glfw3native.h header and platform-specific functions for explicit
access to native display, window and context handles
Added glfwSetGamma, glfwSetGammaRamp and glfwGetGammaRamp functions and
GLFWgammaramp type for monitor gamma ramp control
Added window parameter to glfwSwapBuffers
Changed buffer bit depth parameters of glfwOpenWindow to window hints
Changed glfwCreateWindow and glfwSetWindowTitle to use UTF-8 encoded
strings
Changed glfwGetProcAddress to return a (generic) function pointer
Changed glfwGetVideoModes to return a dynamic, unlimited number of video
modes for the specified monitor
Changed cursor position to double-precision floating-point
Changed default cursor mode for fullscreen to normal
Renamed header directory GL to GLFW
Renamed glfw.h to glfw3.h to avoid conflicts with 2.x series
Renamed glfwOpenWindowHint to glfwWindowHint
Renamed glfwGetWindowParam to glfwGetWindowAttrib
Renamed GLFW_ACTIVE to GLFW_FOCUSED
Renamed GLFW_FSAA_SAMPLES to GLFW_SAMPLES
Renamed GLFW_WINDOW_NO_RESIZE to GLFW_RESIZABLE
Renamed GLFW_BUILD_DLL to _GLFW_BUILD_DLL
Renamed version test to glfwinfo
Renamed GLFW_NO_GLU to GLFW_INCLUDE_GLU and made it disabled by default
Renamed glfwGetJoystickPos to glfwGetJoystickAxes to match
glfwGetJoystickButtons
Renamed mouse position functions to cursor position equivalents
Replaced glfwOpenWindow and glfwCloseWindow with glfwCreateWindow and
glfwDestroyWindow
[Cocoa] Bugfix: The GLFW_WINDOW_NO_RESIZE window parameter was always zero
[Cocoa] Bugfix: glfwInit changed the current directory without a bundle
resource directory (backported from 3.0)
[Cocoa] Bugfix: glfwInit created a non-interactive menu bar (backported
from 3.0)
[Carbon] Bugfix: The GLFW_WINDOW_NO_RESIZE window parameter was always
zero
[Win32] Bugfix: The GLFW_WINDOW_NO_RESIZE window parameter was always zero
Version 2.7.3
Released on
Added GLFW_INCLUDE_GL3 macro for including the new gl3.h instead of gl.h
Bugfix: The returned desktop mode did not reflect the display mode as it was
before the window was opened.
Bugfix: The reference manual did not note that glfwSetMousePosCallback and
glfwSetMouseWheelCallback called the new callback before returning
[X11] Added the POSIX CLOCK_MONOTONIC time source as the preferred method
(backported from 3.0)
[X11] Bugfix: Added missing Requires: line to pkg-config file generation
[X11] Bugfix: Threading link flags were discarded before pkg-config file
generation
[X11] Bugfix: A synchronization point necessary for jitter-free locked
cursor mode was incorrectly removed
[Cocoa] Added cocoa-dist-install install target, intended for packagers
and language binding creators
[Cocoa] Bugfix: Permitted requests for OpenGL 3.0 and 3.1 despite the 3.2
context being forward-compatible
[Win32] Added Visual C++ 2010 project files for the GLFW tests and examples
[Win32] Replaced Cygwin cross-compile support with MSYS support due to
clearer separation between Cygwin and MSYS
[Win32] Bugfix: Alt+F4 hot key was not translated into WM_CLOSE
Version 2.7.2
Released on
Added library version check to dynamic linking test
[Cocoa] Added support for OpenGL 3.2 core profile in 10.7 Lion and above
[Cocoa] Made relevant CFLAGS overridable
[Cocoa] Bugfix: The OpenGL framework pointer was not retrieved, making
glfwGetProcAddress fail
[Cocoa] Bugfix: The Cocoa layer was not notified that the application may be
multithreaded
Version 2.7.1
Released on
Clarified language in the Reference Manual concerning window hint resetting
Bugfix: The OpenGL profile and forward-compatibility window parameters were
not set
Bugfix: The default OpenGL version in the version test was set to 1.1
Bugfix: The FSAA test did not check for the availability of
GL_ARB_multisample
Bugfix: The window could be left in a closed state but still be flagged as
open
Bugfix: glfwGetWindowSize did not check whether GLFW was initialized or
whether the window was open
[Cocoa] Bugfix: The loop condition for saving video modes used the wrong
index variable
[Cocoa] Bugfix: The iconified and active window states were not tracked
[X11] Cleaned up depdendencies for libglfw.pc file
[X11] Bugfix: The dlopen fallback method for glfwGetProcAddress had been
broken by unrelated edits
[X11] Bugfix: Calling glXCreateContextAttribsARB with an unavailable
OpenGL version caused the application to terminate with a BadMatch Xlib
error
[X11] Bugfix: GLFW_WINDOW_NO_RESIZE was honored in fullscreen mode
[Win32] Added Visual C++ 2010 project files for the GLFW DLL and static
library to the support/msvc100 directory
[Win32] Enabled _GLFW_NO_DLOAD_GDI32 and _GLFW_NO_DLOAD_WINMM for the
DLL build
[Win32] Bugfix: compile.bat used Unix-style line endings
[Win32] Bugfix: The WGLSWAPINTERVALEXT_T, WGLGETEXTENSIONSSTRINGARB_T
and WGLGETEXTENSIONSSTRINGEXT_T typedefs were declared under
WGL_ARB_pixel_format
[Win32] Bugfix: The array for WGL context attributes was too small and could
overflow
[Win32] Bugfix: Context creation using profiles did not check for the
availability of WGL_ARB_create_context_profile
[Win32] Bugfix: Context recreation logic was overly conservative, leading to
unnecessary recreations
[Win32] Bugfix: Window focus was not handled correctly when using
glfwInconifyWindow
Version 2.7
Released on
Added GLFW_OPENGL_VERSION_MAJOR and GLFW_OPENGL_VERSION_MINOR hints for
versioned context creation
Added GLFW_OPENGL_FORWARD_COMPAT hint for forward compatible context
creation
Added GLFW_OPENGL_DEBUG_CONTEXT hint for debug context creation
Added GLFW_OPENL_PROFILE hint for context creation using profiles
Added GLFW_NO_GLU macro for disabling the inclusion of the GLU header by the
GLFW header
Added platform-independent pixel format selection (not used on Mac OS X)
Added support and symbols for several additional keys, including
Windows/Command keys, Pause, Caps Lock and Menu
Added conservative value clamping to glfwOpenWindowHint
Added a number of test programs mostly useful to developers of GLFW
Added error messages and graceful failure to example programs
Added Cocoa port for Mac OS X 10.5 Leopard and later
Added vsync to all relevant example programs
Added a rudimentary OpenGL 3.2+ core profile example program
Updated Pascal (formerly Delphi) bindings to support more compilers
Clarified and expanded the User’s Guide and Reference Manual
Fixed a number of compiler warnings in the example programs
OpenGL version is now only parsed once, at window creation time
Changed glfwSwapBuffers to call glfwPollEventsafter buffer swap
Changed all comments in public header file to plain C style
Removed the keytest example program, as it was superseded by the events
test
Removed deprecated AmigaOS and DOS ports
Removed all FPS counters from example programs
Removed all unmaintained language bindings
Removed support for Pelles C
Removed broken Microsoft Visual C++ 6.0 build path
[X11] Added x11-dist-install install target, intended for packagers of
GLFW
[X11] Added x11-dist-clean build target, intended for developers of GLFW
[X11] Added support for GLX_SGIX_fbconfig
[X11] Added support for user-specified compilation flags via CFLAGS
[X11] Added documentation of configuration macros
[X11] Implemented support for GLFW_SYSTEM_KEYS
[X11] Improved configuration and makefile creation logic
[X11] Removed support for GLX version 1.2 and below
[X11] Removed unnecessary calls to XSync
[X11] Removed use of legacy window style atoms
[X11] Bugfix: Repeated keys would sometimes leak through despite key repeat
being disabled
[X11] Bugfix: Fullscreen window resizing would cause color buffer clearing
without taking framebuffer objects into account
[X11] Bugfix: AltGr was not reported as right Alt
[X11] Bugfix: Window colormap was not freed
[X11] Bugfix: Close callback was called for glfwCloseWindow
[X11] Bugfix: Misspelt struct member in XF86VidMode code path
[X11] Bugfix: Window decorations would not appear using certain versions of
Compiz on Intel hardware
[X11] Bugfix: Numeric keypad key symbols would change depending on Num Lock
state
[X11] Bugfix: Hidden cursor position snapped back when halfway from window
center to edge
[X11] Bugfix: Not properly verifying that the window was mapped before
making certain calls caused a BadMatch error
[X11] Bugfix: The response to _NET_WM_PING events was malformed
[X11] Bugfix: Hidden cursor mode interfered with other applications when
GLFW window was unfocused
[X11] Bugfix: The invisible cursor objects used for hidden cursor mode were
not freed
[X11] Bugfix: EWMH-compliant window managers were incorrectly detected
[X11] Bugfix: The EWMH code path for fullscreen windows did not present the
window using _NET_ACTIVE_WINDOW
[X11] Bugfix: The EWMH code path for fullscreen windows did not send
a _NET_WM_STATE client message
[Carbon] Added Universal Binary build targets for all examples
[Carbon] Renamed MacOSX port to Carbon
[Carbon] Removed support for 10.2 Jaguar
[Carbon] Deprecated Carbon port
[Carbon] Bugfix: Using the Dock or menu Quit command did not call the close
callback
[Carbon] Bugfix: Key repeat events were not caught on 10.5 Leopard
[Carbon] Bugfix: Certain keys were not reported
[Carbon] Bugfix: Missing -m32 flag caused build failure on 10.6 Snow
Leopard
[Carbon] Bugfix: Missing -mmacosx-version-min flag caused build failure on
10.5 Leopard
[Carbon] Bugfix: glfwOpenWindow did not call glClear
[Win32] Added Visual C++ project files for all examples and test programs
[Win32] Removed iterative context re-creation attempts for FSAA sample count
[Win32] Bugfix: The Visual C++ GLFW DLL project file did not use the correct
DEF file
[Win32] Bugfix: WGL extensions were not detected and/or used correctly
[Win32] Bugfix: Improper use of wParam for WM_SYSCOMMAND
[Win32] Bugfix: Derivatives of stream.c were not cleaned up by compile.bat
[Win32] Bugfix: Pointer for GetExtensionsStringARB was not initialized
[Win32] Bugfix: Makefiles contained the wrong GLFW API version
[Win32] Bugfix: Numeric keypad key symbols would change depending on Num
Lock state
[Win32] Bugfix: DllMain performed a number of forbidden actions (by
calling glfwTerminate)
Version 2.6
Released on
Added GLFW_FSAA_SAMPLES multisampling hint
Added GLFW_WINDOW_NO_RESIZE hint for non-resizable windows
Added install targets for all Unix-like build targets
Added glfwReadMemoryImage function for creating a GLFWImage object from an
image file in a memory buffer
Added glfwLoadMemoryTexture2D function for decoding an image file in
a memory buffer into a texture
Added glfwLoadTextureImage2D function for loading a GLFWImage object into
a texture
Added cross-compilation support for MinGW under a Unix-like host
D bindings updated and all examples ported to modern D
Delphi bindings updated to reflect API additions
Bugfix: The interaction between key repeat and window focus code caused
duplicate presses
Bugfix: The mouse position was not properly updated when re-enabling the mouse
cursor
[Win32] Added pkg-config file generation for Cygwin
[Win32] Added version number to window class name
[Win32] Added optional loading of user provided window icon resource
[Win32] Bugfix: Very small sleep periods were forced to higher value
[Win32] Bugfix: The nmake makefile did not handle paths with spaces
correctly
[X11] Bugfix: Window re-opening now works properly (including fullscreen
windows)
[X11] Bugfix: Potential crash bug in video mode matching code
[X11] Bugfix: Static buffers imposed an invisible limit on reported video
mode count
[X11] Bugfix: Interaction with certain window managers when setting input
focus would cause termination with a BadMatch error
[X11] Bugfix: Keypad keys did not trigger the character callback
[MacOSX] Added pkg-config file generation
[MacOSX] Added building of shared library
[MacOSX] Added building of Universal Binary libraries
[MacOSX] Replaced fullscreen code path with CGL version
[MacOSX] Bugfix: Binaries without bundles or resource forks now interact
properly with the WM
[MacOSX] Bugfix: Replaced Carbon event time source with gettimeofday
[MacOSX] Bugfix: Added code to minimize the dreaded OpenGL application
startup jump
[MacOSX] Bugfix: Fixed broken implementation of glfwSetMousePos for
windowed mode
[MacOSX] Bugfix: Fixed broken implementation of hidden cursor
[MacOSX] Bugfix: Capturing all displays and not just the main one
[AmigaOS] Obsoleted platform due to lack of maintainer and community
interest
[DOS] Obsoleted platform due to lack of maintainer and community interest
Version 2.5
Released on
Added the function glfwWaitEvents
Added window close callback, which enables a program to prevent a user from
closing a window with the window manager
Added window refresh callback, which is called when the window needs to be
refreshed
Added support for loading alpha textures (GLFW_ALPHA_MAP_BIT)
Added support for the Lua programming language
Added support for the D programming language
Added support for the Pelles C compiler for Windows
Added API level support for up to eight mouse buttons
[Win32] Added support for up to five mouse buttons
[Win32] Mouse down events capture mouse input
[Win32] Bugfix: The DLL now exports glfwSetTime
[Win32] Fix: The GLFW window is now placed in the upper left corner of the
desktop working area
[Win32/X11] Bugfix: More robust check for SwapInterval
[X11] Added support for USB joysticks under Linux (/dev/input/js*)
[X11] Bugfix: Added support for GLX extensions in glfwExtensionSupported
[X11] Bugfix: More robust fullscreen mode (?)
[X11] Bugfix: Runtime check of XF86VidMode support for the active display
[X11] Bugfix: Some mouse button events were reported incorrectly
[MacOSX] Added support for the input char callback.
[MacOSX] Added video mode validation and duplicate elimination.
[MacOSX] Switched to a new MakeBundle.sh script
[MacOSX] Added emulation of the window refresh callback.
[MacOSX] Bugfix: The window and its associated resources are now properly
released.
[MacOSX] Bugfix: Removed support for more than eight mouse buttons.
[x86 CPUs] Improved Intel mobile CPU detection (e.g. disables RDTSC timing
on Centrino systems)
Version 2.4.2
Released on
Preliminary native Mac OS X support (via the Carbon interface)
Preliminary DOS support (DJGPP + Mesa)
Changed license to the zlib license (almost identical to the previous GLFW
license), so now GLFW is OSI Certified
Rewrote the GLFW documentation in LaTeX, meaning several improvements (both
visual and practical)
Added the support folder to the distribution, which includes support for
various languages
[Win32] Added OpenWatcom compiler support (thanks Sebastian Schuberth!)
[Win32] Changed fallback timer from GetTickCount to timeGetTime, which
usually provides better resolution
[Win32] Bugfix: Accumulator buffer selection should be more robust
[Win32] Bugfix: If stereo rendering is requested, and no stereo pixel format
could be created, glfwOpenWindow now fails
[Win32] Bugfix: glfwSetWindowSize now sets the size of the client area,
NOT the entire window, meaning that there is a 1:1 relationship between
glfwSetWindowSize and glfwGetWindowSize
[X11] Added FreeBSD and QNX support
[X11] Added support for non-pthread capable systems
[X11] Hopefully more robust configuration script (compile.sh)
[X11] Bugfix: When mouse cursor is hidden, mouse sensitivity is no longer
degraded
[X11] Bugfix: Source files EOL was PC style (CR/LF) in Version 2.4.1 (blame my
WinCVS configuration)
[X11] Bugfix: When a GLFW window is closed, input focus is properly released
[X11] Bugfix: Iconification of fullscreen windows should now work properly
[x86 CPUs] Improved RDTSC timing (e.g. RDTSC support on single-CPU Intel
Hyper-Threading enabled systems)
[AmigaOS] Added joystick support
[AmigaOS] Mouse cursor positioning is now implemented
[AmigaOS] Added support for Geek Gadgets GCC
[AmigaOS] Bugfix: glfwGetWindowParam now returns proper values for all
parameters (except for GLFW_ACCELERATED)
Version 2.4.1
Released on
Added AmigaOS support (preliminary)
GLFW for the X Window System now works under Mac OS X
[Win32] Bugfix: glfwWaitCond treated the timeout as milliseconds instead
of seconds
[X11] Bugfix: GLFW should now compile under IRIX v5.3
[X11] Bugfix: GLFW should now compile with Kylix
Version 2.4
Released on
Major source code rearrangement - much code is now shared between different
platforms, and it should be easier to port GLFW to new platforms
Added a Unicode keyboard text input interface (CharCallback)
Keyboard key input is now slightly more internationalized: GLFW now uses 8-bit
ISO-8859-1 encoding for keys representing printable characters (e.g.
"Ö", "§", etc), as opposed to the previous 7-bit
US-ASCII encoding
Added more key constants (F13-F25, keypad ‘=’)
Added an enable/disable switch for automatic event polling from
glfwSwapBuffers
[X11] Added support for sysctl for querying the number of processors in the
system (if POSIX sysconf is not supported)
[X11] Bugfix: compile.sh now works with Sun sh (and hopefully others too)
[X11] Bugfix: compile.sh now detects the need for -ldl when dlopen is
used
[Win32] Bugfix: When closing a fullscreen window under Win 9x/NT4, the task
bar icon now disappears properly
[Win32] Bugfix: GLFW should now compile on a wider range of MSVC compilers
(e.g. .NET) - Thanks Tim Little!
Version 2.3.2
Released on
Removed the silly limitation of 100 threads (the thread information is now
kept in a linked list)
General source cleanup (window state is now kept in a single struct, plus some
other minor changes)
[X11] Added Solaris gethrtime support (not tested yet), which should give
an improved timer for Sun/Solaris stations
[X11] Some fixes to the compile.sh script (-O for non-gcc compilers and
make x11-gcc should now really force GCC)
Version 2.3.1
Released on
[X11] A minimalist configuration script was added that solves the issue with
glXGetProcAddressARB, and unifies all Unix/X11 Makefiles into one template
Makefile (well, one for GLFW, and one for the examples)
Version 2.3
Released on
Added OpenGL stereo rendering support
Added a function for parsing the OpenGL version string (glfwGetGLVersion)
[x86] Bugfix: Hopefully the CPU core clock dependent timer RDTSC will never
be used on CPUs with variable core frequencies anymore
[X11] Bugfix: GLFW could create stereo rendering capable windows, even if it
was not requested (GLFW 2.2.x did not support selection of stereo rendering)
[X11] Bugfix: glfwGetProcAddress returned NULL on most systems (even on
those that supported glXGetProcAddressARB). Now GLFW assumes that
glXGetProcAddressARB is supported on all systems, which solves the bug, but
may result in compiler errors on some systems (please let me know if you have
any related problems).
Version 2.2.3
Released on
Bugfix: Checking for GL_SGIS_generate_mipmap is more robust
Bugfix: glfwLoadTexture2D will now fail if no window is opened
[Win32] Bugfix: Right shift was not detected under Win 9x/ME (it is still
not as good as under NT/2K/XP, but at least you get right shifts)
[X11] Bugfix: Visuals are now selected more accurately. For instance,
glfwOpenWindow will no longer fail if you request a 24-bit color buffer if
only 16-bit color visuals are available (which means that pong3d should work
on 16-bit displays).
Version 2.2.2
Released on
[Win32] Bugfix: Windows did not always get focus (this was a tough one!)
[Win32] Bugfix: glfwGetWindowParam did not work with GLFW_ACCUM_\*_BITS
or GLFW_AUX_BUFFERS
[X11] Bugfix: Linux joystick Y axis positions were reversed
Version 2.2.1
Released on
[X11] Added joystick support for Linux
Version 2.2
Released on
Added joystick support (only supported under Windows so far)
Added joystick controls to pong3d.c (only 3 more lines of code)
Added glfwOpenWindowHint function
It is now possible to specify a desired vertical monitor refresh rate (for
fullscreen windows)
It is now possible to request an accumulator buffer and auxiliary buffers
Added glfwSetTime function
Added a GLFW conversion of the MESA/GLUT gears.c demo to the example programs
[Win32] gdi32.dll and winmm.dll are now loaded dynamically when glfwInit
is called. This means that there is no need to link with gdi32.lib or
winmm.lib when using the static version of GLFW, which should make GLFW usage
more convenient.
[Win32] Bugfix: glfwExtensionSupported now detects all WGL extensions
(e.g. WGL_ARB_pbuffer)
[Win32] Bugfix: Mouse cursor was not re-hidden when a GLFW window was
deselected and then selected again (with ALT+TAB)
[X11] Bugfix: Minor bug in the SGI timer - and ugly (unintended) SGI timer
debug info removed
[X11] Bugfix: glfwGetDesktopMode and glfwGetVideoModes no longer give
segmentation faults if no X server is available
Version 2.1
Released on
Added image and texture loading capabilities (support for the TGA file format
at the moment)
Added a new example program (mipmaps.c) for showing off the automatic mipmap
generation and texture loading capabilities of GLFW 2.1
Removed the separate TGA loader (tga.c in the examples directory) since
texture loading is supported natively by GLFW. Also updated the Pong3D demo to
use GLFW texture loading instead of tga.c.
Improved keyboard handling (e.g. numeric keypad keys can be detected)
Added a new example program, keytest.c
Changed the GLFWvidmode structure and the corresponding API functions to
report pure color bits instead of the confusing (and unportable) “BPP” field
Changed glfwSetWindowSize so that it operates in fullscreen mode too
Added mouse wheel support under Windows (not Win95) and X11
Added window iconification functions (glfwInconifyWindow and
glfwRestoreWindow)
Improved iconification and deactivation handling under both Windows and X11
Made it possible to turn on/off key repeat (the default is now no key repeat)
Added SGI hardware timer support (CLOCK_SGI_CYCLE) for improved timer
resolution for SGI computers
Added support for the free Borland C++ Builder 5.x compiler for Windows
Made it possible to compiler GLFW as a Windows DLL using any of the supported
compilers
Some constants have changed names (e.g. GLFW_REDBITS is now called
GLFW_RED_BITS)
Updated GLFW documentation (GLFW Users Guide and GLFW Reference Manual) to
reflect the changes in the API
[X11] Bugfix: Iconification/deactivation is now detected
[X11] Bugfix: Non-OpenGL visuals are not listed anymore
[XFree86] Bugfix: Undesired video mode changes are now prevented
Version 2.0.3
Released on
Added precise CPU cycle based timing support (RDTSC) for x86 CPUs (under both
Windows and Unix)
Added a makefile option for building for Windows with Cygwin
Corrected the CC for Unix/X11 makefiles (-Wall is usually not a supported
flag for CC, so it was removed from the CFLAGS list)
Version 2.0.2
Released on
Added a makefile option for building for X11 with ‘cc’ rather than ‘gcc’
(useful for IRIX users for instance)
[Win32] Bugfix: Mouse coordinates are now relative to the window upper left
corner, which also means that disabling the mouse cursor in windowed mode
should work much better
[X11] Bugfix: Added a bunch of more keys that are recognized by GLFW
[X11] Bugfix: glfwGetNumberOfProcessors now works for IRIX (earlier
versions of GLFW would not compile under IRIX)
Version 2.0.1
Released on
glfwTerminate will now be called automatically upon normal program
termination (using atexit)
[Win32] Bugfix: Buffer-swapping did not work if a window lost focus
[Win32] Bugfix: Top level Makefile did not work under Windows 9x
[Win32] Bugfix: NULL declaration in glfw.h was not MSVC 7.x compatible
[X11] Bugfix: GLFW would not build with C++ (e.g. g++)
Version 2.0
Released on
GLFW is no longer a single source file, but an entire link library
Added multi threading support
Added more window control
New distribution layout (both Win32 and X11 version in same archive)
Added GLFW Users Manual and GLFW Reference Manual as PDF files