summaryrefslogtreecommitdiff
path: root/libs/glfw-3.3.8/docs/news.dox
diff options
context:
space:
mode:
Diffstat (limited to 'libs/glfw-3.3.8/docs/news.dox')
-rw-r--r--libs/glfw-3.3.8/docs/news.dox876
1 files changed, 876 insertions, 0 deletions
diff --git a/libs/glfw-3.3.8/docs/news.dox b/libs/glfw-3.3.8/docs/news.dox
new file mode 100644
index 0000000..1f016d3
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/news.dox
@@ -0,0 +1,876 @@
+/*!
+
+@page news Release notes
+
+@tableofcontents
+
+
+@section news_33 Release notes for version 3.3
+
+These are the release notes for version 3.3. For a more detailed view including
+all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
+
+Please review the caveats, deprecations and removals if your project was written
+against an earlier version of GLFW 3.
+
+
+@subsection features_33 New features in version 3.3
+
+@subsubsection gamepad_33 Gamepad input via SDL_GameControllerDB
+
+GLFW can now remap game controllers to a standard Xbox-like layout using
+a built-in copy of SDL_GameControllerDB. Call @ref glfwJoystickIsGamepad to
+check if a joystick has a mapping, @ref glfwGetGamepadState to retrieve its
+input state, @ref glfwUpdateGamepadMappings to add newer mappings and @ref
+glfwGetGamepadName and @ref glfwGetJoystickGUID for mapping related information.
+
+For more information see @ref gamepad.
+
+
+@subsubsection moltenvk_33 Support for Vulkan on macOS via MoltenVK
+
+GLFW now supports [MoltenVK](https://moltengl.com/moltenvk/), a Vulkan
+implementation on top of the Metal API, and its `VK_MVK_macos_surface` window
+surface creation extension. MoltenVK is included in the [macOS Vulkan
+SDK](https://vulkan.lunarg.com/).
+
+For more information see @ref vulkan_guide.
+
+
+@subsubsection content_scale_33 Content scale queries for DPI-aware rendering
+
+GLFW now provides content scales for windows and monitors, i.e. the ratio
+between their current DPI and the platform's default DPI, with @ref
+glfwGetWindowContentScale and @ref glfwGetMonitorContentScale.
+
+Changes of the content scale of a window can be received with the window content
+scale callback, set with @ref glfwSetWindowContentScaleCallback.
+
+The @ref GLFW_SCALE_TO_MONITOR window hint enables automatic resizing of a
+window by the content scale of the monitor it is placed, on platforms like
+Windows where this is necessary. This takes effect both on creation and when
+the window is moved between monitors. It is related to but different from
+[GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint).
+
+For more information see @ref window_scale.
+
+
+@subsubsection setwindowattrib_33 Support for updating window attributes
+
+GLFW now supports changing the [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),
+[GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),
+[GLFW_FLOATING](@ref GLFW_FLOATING_attrib),
+[GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and
+[GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib) attributes for existing
+windows with @ref glfwSetWindowAttrib.
+
+For more information see @ref window_attribs.
+
+
+@subsubsection raw_motion_33 Support for raw mouse motion
+
+GLFW now supports raw (unscaled and unaccelerated) mouse motion in disabled
+cursor mode with the [GLFW_RAW_MOUSE_MOTION](@ref GLFW_RAW_MOUSE_MOTION) input
+mode. Raw mouse motion input is not yet implemented on macOS. Call @ref
+glfwRawMouseMotionSupported to check if GLFW can provide raw mouse motion on the
+current system.
+
+For more information see @ref raw_mouse_motion.
+
+
+@subsubsection joysticks_33 Joystick hats
+
+GLFW can now return the state of hats (i.e. POVs or D-pads) of a joystick with
+@ref glfwGetJoystickHats. For compatibility, hats are also exposed as buttons.
+This can be disabled with the @ref GLFW_JOYSTICK_HAT_BUTTONS initialization
+hint.
+
+For more information see @ref joystick_hat.
+
+
+@subsubsection geterror_33 Error query
+
+GLFW now supports querying the last error code for the calling thread and its
+human-readable description with @ref glfwGetError. This can be used instead of
+or together with the error callback.
+
+For more information see @ref error_handling.
+
+
+@subsubsection init_hints_33 Support for initialization hints
+
+GLFW now supports setting library initialization hints with @ref glfwInitHint.
+These must be set before initialization to take effect. Some of these hints are
+platform specific but are safe to set on any platform.
+
+For more information see @ref init_hints.
+
+
+@subsubsection attention_33 User attention request
+
+GLFW now supports requesting user attention with @ref
+glfwRequestWindowAttention. Where possible this calls attention to the
+specified window. On platforms like macOS it calls attention to the whole
+application.
+
+For more information see @ref window_attention.
+
+
+@subsubsection maximize_33 Window maximization callback
+
+GLFW now supports notifying the application that the window has been maximized
+@ref glfwSetWindowMaximizeCallback. This is called both when the window was
+maximized by the user and when it was done with @ref glfwMaximizeWindow.
+
+For more information see @ref window_maximize.
+
+
+@subsubsection workarea_33 Query for the monitor work area
+
+GLFW now supports querying the work area of a monitor, i.e. the area not
+occupied by task bars or global menu bars, with @ref glfwGetMonitorWorkarea. On
+platforms that lack this concept, the whole area of the monitor is returned.
+
+For more information see @ref monitor_workarea.
+
+
+@subsubsection transparency_33 Transparent windows and framebuffers
+
+GLFW now supports the creation of windows with transparent framebuffers on
+systems with desktop compositing enabled with the @ref
+GLFW_TRANSPARENT_FRAMEBUFFER window hint and attribute. This hint must be set
+before window creation and leaves any window decorations opaque.
+
+GLFW now also supports whole window transparency with @ref glfwGetWindowOpacity
+and @ref glfwSetWindowOpacity. This value controls the opacity of the whole
+window including decorations and unlike framebuffer transparency can be changed
+at any time after window creation.
+
+For more information see @ref window_transparency.
+
+
+@subsubsection key_scancode_33 Query for the scancode of a key
+
+GLFW now supports querying the platform dependent scancode of any physical key
+with @ref glfwGetKeyScancode.
+
+For more information see @ref input_key.
+
+
+@subsubsection center_cursor_33 Cursor centering window hint
+
+GLFW now supports controlling whether the cursor is centered over newly created
+full screen windows with the [GLFW_CENTER_CURSOR](@ref GLFW_CENTER_CURSOR_hint)
+window hint. It is enabled by default.
+
+
+@subsubsection cursor_hover_33 Mouse cursor hover window attribute
+
+GLFW now supports polling whether the cursor is hovering over the window content
+area with the [GLFW_HOVERED](@ref GLFW_HOVERED_attrib) window attribute. This
+attribute corresponds to the [cursor enter/leave](@ref cursor_enter) event.
+
+
+@subsubsection focusonshow_33 Window hint and attribute for input focus on show
+
+GLFW now has the [GLFW_FOCUS_ON_SHOW](@ref GLFW_DECORATED_hint) window hint and
+attribute for controlling whether a window gets input focus when shown. It is
+enabled by default. It applies both when creating an visible window with @ref
+glfwCreateWindow and when showing it with @ref glfwShowWindow.
+
+This is a workaround for GLFW 3.0 lacking @ref glfwFocusWindow and will be
+corrected in the next major version.
+
+For more information see @ref window_hide.
+
+
+@subsubsection device_userptr_33 Monitor and joystick user pointers
+
+GLFW now supports setting and querying user pointers for connected monitors and
+joysticks with @ref glfwSetMonitorUserPointer, @ref glfwGetMonitorUserPointer,
+@ref glfwSetJoystickUserPointer and @ref glfwGetJoystickUserPointer.
+
+For more information see @ref monitor_userptr and @ref joystick_userptr.
+
+
+@subsubsection macos_nib_33 macOS menu bar from nib file
+
+GLFW will now load a `MainMenu.nib` file if found in the `Contents/Resources`
+directory of the application bundle, as a way to replace the GLFW menu bar
+without recompiling GLFW. This behavior can be disabled with the
+[GLFW_COCOA_MENUBAR](@ref GLFW_COCOA_MENUBAR_hint) initialization hint.
+
+
+@subsubsection glext_33 Support for more context creation extensions
+
+The context hint @ref GLFW_SRGB_CAPABLE now supports OpenGL ES via
+`WGL_EXT_colorspace`, the context hint @ref GLFW_CONTEXT_NO_ERROR now supports
+`WGL_ARB_create_context_no_error` and `GLX_ARB_create_context_no_error`, the
+context hint @ref GLFW_CONTEXT_RELEASE_BEHAVIOR now supports
+`EGL_KHR_context_flush_control` and @ref glfwGetProcAddress now supports
+`EGL_KHR_get_all_proc_addresses`.
+
+
+@subsubsection osmesa_33 OSMesa off-screen context creation support
+
+GLFW now supports creating off-screen OpenGL contexts using
+[OSMesa](https://www.mesa3d.org/osmesa.html) by setting
+[GLFW_CONTEXT_CREATION_API](@ref GLFW_CONTEXT_CREATION_API_hint) to
+`GLFW_OSMESA_CONTEXT_API`. Native access function have been added to retrieve
+the OSMesa color and depth buffers.
+
+There is also a new null backend that uses OSMesa as its native context
+creation API, intended for automated testing. This backend does not provide
+input.
+
+
+@subsection caveats_33 Caveats for version 3.3
+
+@subsubsection joystick_layout_33 Layout of joysticks have changed
+
+The way joystick elements are arranged have changed to match SDL2 in order to
+support SDL_GameControllerDB mappings. The layout of joysticks may
+change again if required for compatibility with SDL2. If you need a known and
+stable layout for game controllers, see if you can switch to @ref gamepad.
+
+Existing code that depends on a specific joystick layout will likely have to be
+updated.
+
+
+@subsubsection wait_events_33 No window required to wait for events
+
+The @ref glfwWaitEvents and @ref glfwWaitEventsTimeout functions no longer need
+a window to be created to wait for events. Before version 3.3 these functions
+would return immediately if there were no user-created windows. On platforms
+where only windows can receive events, an internal helper window is used.
+
+Existing code that depends on the earlier behavior will likely have to be
+updated.
+
+
+@subsubsection gamma_ramp_size_33 Gamma ramp size of 256 may be rejected
+
+The documentation for versions before 3.3 stated that a gamma ramp size of 256
+would always be accepted. This was never the case on X11 and could lead to
+artifacts on macOS. The @ref glfwSetGamma function has been updated to always
+generate a ramp of the correct size.
+
+Existing code that hardcodes a size of 256 should be updated to use the size of
+the current ramp of a monitor when setting a new ramp for that monitor.
+
+
+@subsubsection xinput_deadzone_33 Windows XInput deadzone removed
+
+GLFW no longer applies any deadzone to the input state received from the XInput
+API. This was never done for any other platform joystick API so this change
+makes the behavior more consistent but you will need to apply your own deadzone
+if desired.
+
+
+@subsubsection x11_clipboard_33 X11 clipboard transfer limits
+
+GLFW now supports reading clipboard text via the `INCR` method, which removes
+the limit on how much text can be read with @ref glfwGetClipboardString.
+However, writing via this method is not yet supported, so you may not be able to
+write a very large string with @ref glfwSetClipboardString even if you read it
+from the clipboard earlier.
+
+The exact size limit for writing to the clipboard is negotiated with each
+receiving application but is at least several tens of kilobytes. Note that only
+the read limit has changed. Any string that could be written before still can
+be.
+
+
+@subsubsection x11_linking_33 X11 extension libraries are loaded dynamically
+
+GLFW now loads all X11 extension libraries at initialization. The only X11
+library you need to link against is `libX11`. The header files for the
+extension libraries are still required for compilation.
+
+Existing projects and makefiles that link GLFW directly against the extension
+libraries should still build correctly but will add these libraries as load-time
+dependencies.
+
+
+@subsubsection cmake_version_33 CMake 3.0 or later is required
+
+The minimum CMake version has been raised from 2.8.12 to 3.0. This is only
+a requirement of the GLFW CMake files. The GLFW source files do not depend on
+CMake.
+
+
+@subsubsection caveat_fbtransparency_33 Framebuffer transparency requires DWM transparency
+
+GLFW no longer supports framebuffer transparency enabled via @ref
+GLFW_TRANSPARENT_FRAMEBUFFER on Windows 7 if DWM transparency is off
+(the Transparency setting under Personalization > Window Color).
+
+
+@subsubsection emptyevents_33 Empty events on X11 no longer roundtrip to server
+
+Starting with GLFW 3.3.7, events posted with @ref glfwPostEmptyEvent now use a separate
+unnamed pipe instead of sending an X11 client event to the helper window.
+
+
+@subsection deprecations_33 Deprecations in version 3.3
+
+@subsubsection charmods_callback_33 Character with modifiers callback
+
+The character with modifiers callback set with @ref glfwSetCharModsCallback has
+been deprecated and should if possible not be used.
+
+Existing code should still work but further bug fixes will likely not be made.
+The callback will be removed in the next major version.
+
+
+@subsubsection clipboard_window_33 Window parameter to clipboard functions
+
+The window parameter of the clipboard functions @ref glfwGetClipboardString and
+@ref glfwSetClipboardString has been deprecated and is no longer used on any
+platform. On platforms where the clipboard must be owned by a specific window,
+an internal helper window is used.
+
+Existing code should still work unless it depends on a specific window owning
+the clipboard. New code may pass `NULL` as the window argument. The parameter
+will be removed in a future release.
+
+
+@subsection removals_33 Removals in 3.3
+
+@subsubsection macos_options_33 macOS specific CMake options and macros
+
+The `GLFW_USE_RETINA`, `GLFW_USE_CHDIR` and `GLFW_USE_MENUBAR` CMake options and
+the `_GLFW_USE_RETINA`, `_GLFW_USE_CHDIR` and `_GLFW_USE_MENUBAR` compile-time
+macros have been removed.
+
+These options and macros are replaced by the window hint
+[GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)
+and the init hints
+[GLFW_COCOA_CHDIR_RESOURCES](@ref GLFW_COCOA_CHDIR_RESOURCES_hint) and
+[GLFW_COCOA_MENUBAR](@ref GLFW_COCOA_MENUBAR_hint).
+
+Existing projects and makefiles that set these options or define these macros
+during compilation of GLFW will still build but it will have no effect and the
+default behaviors will be used.
+
+
+@subsubsection vulkan_sdk_33 LunarG Vulkan SDK dependency
+
+The GLFW test programs that previously depended on the LunarG Vulkan SDK now
+instead uses a Vulkan loader generated by
+[glad2](https://github.com/Dav1dde/glad). This means the GLFW CMake files no
+longer look for the Vulkan SDK.
+
+Existing CMake projects that depended on the Vulkan SDK cache variables from
+GLFW will need to call `find_package(Vulkan)` themselves. CMake 3.7 and later
+already comes with a
+[Vulkan find module](https://cmake.org/cmake/help/latest/module/FindVulkan.html)
+similar to the one GLFW previously included.
+
+
+@subsubsection lib_suffix_33 CMake option LIB_SUFFIX
+
+The `LIB_SUFFIX` CMake option has been removed. GLFW now uses the
+GNUInstallDirs CMake package to handle platform specific details like the
+library directory suffix and the `LIB_SUFFIX` CMake option has been removed.
+
+Existing projects and makefiles that set the `LIB_SUFFIX` option will use the
+suffix chosen by the GNUInstallDirs package and the option will be ignored.
+
+
+@subsubsection wl_shell_33 Support for the wl_shell protocol
+
+Support for the wl_shell protocol has been removed and GLFW now only supports
+the XDG-Shell protocol. If your Wayland compositor does not support XDG-Shell
+then GLFW will fail to initialize.
+
+
+@subsubsection mir_removed_33 Mir support
+
+The experimental Mir support has been completely removed as the Mir project has
+implemented support for the Wayland protocol and is recommending that
+applications use that instead.
+
+Existing projects and makefiles that select Mir when compiling GLFW will fail.
+Use Wayland or X11 instead.
+
+
+@subsection symbols_33 New symbols in version 3.3
+
+@subsubsection functions_33 New functions in version 3.3
+
+ - @ref glfwInitHint
+ - @ref glfwGetError
+ - @ref glfwGetMonitorWorkarea
+ - @ref glfwGetMonitorContentScale
+ - @ref glfwGetMonitorUserPointer
+ - @ref glfwSetMonitorUserPointer
+ - @ref glfwWindowHintString
+ - @ref glfwGetWindowContentScale
+ - @ref glfwGetWindowOpacity
+ - @ref glfwSetWindowOpacity
+ - @ref glfwRequestWindowAttention
+ - @ref glfwSetWindowAttrib
+ - @ref glfwSetWindowMaximizeCallback
+ - @ref glfwSetWindowContentScaleCallback
+ - @ref glfwRawMouseMotionSupported
+ - @ref glfwGetKeyScancode
+ - @ref glfwGetJoystickHats
+ - @ref glfwGetJoystickGUID
+ - @ref glfwGetJoystickUserPointer
+ - @ref glfwSetJoystickUserPointer
+ - @ref glfwJoystickIsGamepad
+ - @ref glfwUpdateGamepadMappings
+ - @ref glfwGetGamepadName
+ - @ref glfwGetGamepadState
+
+
+@subsubsection types_33 New types in version 3.3
+
+ - @ref GLFWwindowmaximizefun
+ - @ref GLFWwindowcontentscalefun
+ - @ref GLFWgamepadstate
+
+
+@subsubsection constants_33 New constants in version 3.3
+
+ - @ref GLFW_NO_ERROR
+ - @ref GLFW_JOYSTICK_HAT_BUTTONS
+ - @ref GLFW_COCOA_CHDIR_RESOURCES
+ - @ref GLFW_COCOA_MENUBAR
+ - @ref GLFW_CENTER_CURSOR
+ - @ref GLFW_TRANSPARENT_FRAMEBUFFER
+ - @ref GLFW_HOVERED
+ - @ref GLFW_FOCUS_ON_SHOW
+ - @ref GLFW_SCALE_TO_MONITOR
+ - @ref GLFW_COCOA_RETINA_FRAMEBUFFER
+ - @ref GLFW_COCOA_FRAME_NAME
+ - @ref GLFW_COCOA_GRAPHICS_SWITCHING
+ - @ref GLFW_X11_CLASS_NAME
+ - @ref GLFW_X11_INSTANCE_NAME
+ - @ref GLFW_OSMESA_CONTEXT_API
+ - @ref GLFW_HAT_CENTERED
+ - @ref GLFW_HAT_UP
+ - @ref GLFW_HAT_RIGHT
+ - @ref GLFW_HAT_DOWN
+ - @ref GLFW_HAT_LEFT
+ - @ref GLFW_HAT_RIGHT_UP
+ - @ref GLFW_HAT_RIGHT_DOWN
+ - @ref GLFW_HAT_LEFT_UP
+ - @ref GLFW_HAT_LEFT_DOWN
+ - @ref GLFW_MOD_CAPS_LOCK
+ - @ref GLFW_MOD_NUM_LOCK
+ - @ref GLFW_LOCK_KEY_MODS
+ - @ref GLFW_RAW_MOUSE_MOTION
+ - @ref GLFW_GAMEPAD_BUTTON_A
+ - @ref GLFW_GAMEPAD_BUTTON_B
+ - @ref GLFW_GAMEPAD_BUTTON_X
+ - @ref GLFW_GAMEPAD_BUTTON_Y
+ - @ref GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
+ - @ref GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
+ - @ref GLFW_GAMEPAD_BUTTON_BACK
+ - @ref GLFW_GAMEPAD_BUTTON_START
+ - @ref GLFW_GAMEPAD_BUTTON_GUIDE
+ - @ref GLFW_GAMEPAD_BUTTON_LEFT_THUMB
+ - @ref GLFW_GAMEPAD_BUTTON_RIGHT_THUMB
+ - @ref GLFW_GAMEPAD_BUTTON_DPAD_UP
+ - @ref GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
+ - @ref GLFW_GAMEPAD_BUTTON_DPAD_DOWN
+ - @ref GLFW_GAMEPAD_BUTTON_DPAD_LEFT
+ - @ref GLFW_GAMEPAD_BUTTON_LAST
+ - @ref GLFW_GAMEPAD_BUTTON_CROSS
+ - @ref GLFW_GAMEPAD_BUTTON_CIRCLE
+ - @ref GLFW_GAMEPAD_BUTTON_SQUARE
+ - @ref GLFW_GAMEPAD_BUTTON_TRIANGLE
+ - @ref GLFW_GAMEPAD_AXIS_LEFT_X
+ - @ref GLFW_GAMEPAD_AXIS_LEFT_Y
+ - @ref GLFW_GAMEPAD_AXIS_RIGHT_X
+ - @ref GLFW_GAMEPAD_AXIS_RIGHT_Y
+ - @ref GLFW_GAMEPAD_AXIS_LEFT_TRIGGER
+ - @ref GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
+ - @ref GLFW_GAMEPAD_AXIS_LAST
+
+
+@section news_32 Release notes for 3.2
+
+These are the release notes for version 3.2. For a more detailed view including
+all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
+
+
+@subsection features_32 New features in version 3.2
+
+@subsubsection news_32_vulkan Support for Vulkan
+
+GLFW now supports basic integration with Vulkan with @ref glfwVulkanSupported,
+@ref glfwGetRequiredInstanceExtensions, @ref glfwGetInstanceProcAddress, @ref
+glfwGetPhysicalDevicePresentationSupport and @ref glfwCreateWindowSurface.
+Vulkan header inclusion can be selected with
+@ref GLFW_INCLUDE_VULKAN.
+
+
+@subsubsection news_32_setwindowmonitor Window mode switching
+
+GLFW now supports switching between windowed and full screen modes and updating
+the monitor and desired resolution and refresh rate of full screen windows with
+@ref glfwSetWindowMonitor.
+
+
+@subsubsection news_32_maximize Window maxmimization support
+
+GLFW now supports window maximization with @ref glfwMaximizeWindow and the
+@ref GLFW_MAXIMIZED window hint and attribute.
+
+
+@subsubsection news_32_focus Window input focus control
+
+GLFW now supports giving windows input focus with @ref glfwFocusWindow.
+
+
+@subsubsection news_32_sizelimits Window size limit support
+
+GLFW now supports setting both absolute and relative window size limits with
+@ref glfwSetWindowSizeLimits and @ref glfwSetWindowAspectRatio.
+
+
+@subsubsection news_32_keyname Localized key names
+
+GLFW now supports querying the localized name of printable keys with @ref
+glfwGetKeyName, either by key token or by scancode.
+
+
+@subsubsection news_32_waittimeout Wait for events with timeout
+
+GLFW now supports waiting for events for a set amount of time with @ref
+glfwWaitEventsTimeout.
+
+
+@subsubsection news_32_icon Window icon support
+
+GLFW now supports setting the icon of windows with @ref glfwSetWindowIcon.
+
+
+@subsubsection news_32_timer Raw timer access
+
+GLFW now supports raw timer values with @ref glfwGetTimerValue and @ref
+glfwGetTimerFrequency.
+
+
+@subsubsection news_32_joystick Joystick connection callback
+
+GLFW now supports notifying when a joystick has been connected or disconnected
+with @ref glfwSetJoystickCallback.
+
+
+@subsubsection news_32_noapi Context-less windows
+
+GLFW now supports creating windows without a OpenGL or OpenGL ES context by
+setting the [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_NO_API`.
+
+
+@subsubsection news_32_contextapi Run-time context creation API selection
+
+GLFW now supports selecting and querying the context creation API at run-time
+with the @ref GLFW_CONTEXT_CREATION_API hint and attribute.
+
+
+@subsubsection news_32_noerror Error-free context creation
+
+GLFW now supports creating and querying OpenGL and OpenGL ES contexts that do
+not emit errors with the @ref GLFW_CONTEXT_NO_ERROR hint, provided the machine
+supports the `GL_KHR_no_error` extension.
+
+
+@subsubsection news_32_cmake CMake config-file package support
+
+GLFW now supports being used as a
+[config-file package](@ref build_link_cmake_package) from other projects for
+easy linking with the library and its dependencies.
+
+
+@section news_31 Release notes for 3.1
+
+These are the release notes for version 3.1. For a more detailed view including
+all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
+
+
+@subsection features_31 New features in version 3.1
+
+@subsubsection news_31_cursor Custom mouse cursor images
+
+GLFW now supports creating and setting both custom cursor images and standard
+cursor shapes. They are created with @ref glfwCreateCursor or @ref
+glfwCreateStandardCursor, set with @ref glfwSetCursor and destroyed with @ref
+glfwDestroyCursor.
+
+@see @ref cursor_object
+
+
+@subsubsection news_31_drop Path drop event
+
+GLFW now provides a callback for receiving the paths of files and directories
+dropped onto GLFW windows. The callback is set with @ref glfwSetDropCallback.
+
+@see @ref path_drop
+
+
+@subsubsection news_31_emptyevent Main thread wake-up
+
+GLFW now provides the @ref glfwPostEmptyEvent function for posting an empty
+event from another thread to the main thread event queue, causing @ref
+glfwWaitEvents to return.
+
+@see @ref events
+
+
+@subsubsection news_31_framesize Window frame size query
+
+GLFW now supports querying the size, on each side, of the frame around the
+content area of a window, with @ref glfwGetWindowFrameSize.
+
+@see [Window size](@ref window_size)
+
+
+@subsubsection news_31_autoiconify Simultaneous multi-monitor rendering
+
+GLFW now supports disabling auto-iconification of full screen windows with
+the [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_hint) window hint. This is
+intended for people building multi-monitor installations, where you need windows
+to stay in full screen despite losing input focus.
+
+
+@subsubsection news_31_floating Floating windows
+
+GLFW now supports floating windows, also called topmost or always on top, for
+easier debugging with the @ref GLFW_FLOATING window hint and attribute.
+
+
+@subsubsection news_31_focused Initially unfocused windows
+
+GLFW now supports preventing a windowed mode window from gaining input focus on
+creation, with the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) window hint.
+
+
+@subsubsection news_31_direct Direct access for window attributes and cursor position
+
+GLFW now queries the window input focus, visibility and iconification attributes
+and the cursor position directly instead of returning cached data.
+
+
+@subsubsection news_31_charmods Character with modifiers callback
+
+GLFW now provides a callback for character events with modifier key bits. The
+callback is set with @ref glfwSetCharModsCallback. Unlike the regular character
+callback, this will report character events that will not result in a character
+being input, for example if the Control key is held down.
+
+@see @ref input_char
+
+
+@subsubsection news_31_single Single buffered framebuffers
+
+GLFW now supports the creation of single buffered windows, with the @ref
+GLFW_DOUBLEBUFFER hint.
+
+
+@subsubsection news_31_glext Macro for including extension header
+
+GLFW now includes the extension header appropriate for the chosen OpenGL or
+OpenGL ES header when @ref GLFW_INCLUDE_GLEXT is defined. GLFW does not provide
+these headers. They must be provided by your development environment or your
+OpenGL or OpenGL ES SDK.
+
+
+@subsubsection news_31_release Context release behaviors
+
+GLFW now supports controlling and querying whether the pipeline is flushed when
+a context is made non-current, with the @ref GLFW_CONTEXT_RELEASE_BEHAVIOR hint
+and attribute, provided the machine supports the `GL_KHR_context_flush_control`
+extension.
+
+
+@subsubsection news_31_wayland (Experimental) Wayland support
+
+GLFW now has an _experimental_ Wayland display protocol backend that can be
+selected on Linux with a CMake option.
+
+
+@subsubsection news_31_mir (Experimental) Mir support
+
+GLFW now has an _experimental_ Mir display server backend that can be selected
+on Linux with a CMake option.
+
+
+@section news_30 Release notes for 3.0
+
+These are the release notes for version 3.0. For a more detailed view including
+all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
+
+
+@subsection features_30 New features in version 3.0
+
+@subsubsection news_30_cmake CMake build system
+
+GLFW now uses the CMake build system instead of the various makefiles and
+project files used by earlier versions. CMake is available for all platforms
+supported by GLFW, is present in most package systems and can generate
+makefiles and/or project files for most popular development environments.
+
+For more information on how to use CMake, see the
+[CMake manual](https://cmake.org/cmake/help/documentation.html).
+
+
+@subsubsection news_30_multiwnd Multi-window support
+
+GLFW now supports the creation of multiple windows, each with their own OpenGL
+or OpenGL ES context, and all window functions now take a window handle. Event
+callbacks are now per-window and are provided with the handle of the window that
+received the event. The @ref glfwMakeContextCurrent function has been added to
+select which context is current on a given thread.
+
+
+@subsubsection news_30_multimon Multi-monitor support
+
+GLFW now explicitly supports multiple monitors. They can be enumerated with
+@ref glfwGetMonitors, queried with @ref glfwGetVideoModes, @ref
+glfwGetMonitorPos, @ref glfwGetMonitorName and @ref glfwGetMonitorPhysicalSize,
+and specified at window creation to make the newly created window full screen on
+that specific monitor.
+
+
+@subsubsection news_30_unicode Unicode support
+
+All string arguments to GLFW functions and all strings returned by GLFW now use
+the UTF-8 encoding. This includes the window title, error string, clipboard
+text, monitor and joystick names as well as the extension function arguments (as
+ASCII is a subset of UTF-8).
+
+
+@subsubsection news_30_clipboard Clipboard text I/O
+
+GLFW now supports reading and writing plain text to and from the system
+clipboard, with the @ref glfwGetClipboardString and @ref glfwSetClipboardString
+functions.
+
+
+@subsubsection news_30_gamma Gamma ramp support
+
+GLFW now supports setting and reading back the gamma ramp of monitors, with the
+@ref glfwGetGammaRamp and @ref glfwSetGammaRamp functions. There is also @ref
+glfwSetGamma, which generates a ramp from a gamma value and then sets it.
+
+
+@subsubsection news_30_gles OpenGL ES support
+
+GLFW now supports the creation of OpenGL ES contexts, by setting the
+[GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_OPENGL_ES_API`, where
+creation of such contexts are supported. Note that GLFW _does not implement_
+OpenGL ES, so your driver must provide support in a way usable by GLFW. Modern
+Nvidia and Intel drivers support creation of OpenGL ES context using the GLX and
+WGL APIs, while AMD provides an EGL implementation instead.
+
+
+@subsubsection news_30_egl (Experimental) EGL support
+
+GLFW now has an experimental EGL context creation back end that can be selected
+through CMake options.
+
+
+@subsubsection news_30_hidpi High-DPI support
+
+GLFW now supports high-DPI monitors on both Windows and macOS, giving windows
+full resolution framebuffers where other UI elements are scaled up. To achieve
+this, @ref glfwGetFramebufferSize and @ref glfwSetFramebufferSizeCallback have
+been added. These work with pixels, while the rest of the GLFW API works with
+screen coordinates. This is important as OpenGL uses pixels, not screen
+coordinates.
+
+
+@subsubsection news_30_error Error callback
+
+GLFW now has an error callback, which can provide your application with much
+more detailed diagnostics than was previously possible. The callback is passed
+an error code and a description string.
+
+
+@subsubsection news_30_wndptr Per-window user pointer
+
+Each window now has a user-defined pointer, retrieved with @ref
+glfwGetWindowUserPointer and set with @ref glfwSetWindowUserPointer, to make it
+easier to integrate GLFW into C++ code.
+
+
+@subsubsection news_30_iconifyfun Window iconification callback
+
+Each window now has a callback for iconification and restoration events,
+which is set with @ref glfwSetWindowIconifyCallback.
+
+
+@subsubsection news_30_wndposfun Window position callback
+
+Each window now has a callback for position events, which is set with @ref
+glfwSetWindowPosCallback.
+
+
+@subsubsection news_30_wndpos Window position query
+
+The position of a window can now be retrieved using @ref glfwGetWindowPos.
+
+
+@subsubsection news_30_focusfun Window focus callback
+
+Each windows now has a callback for focus events, which is set with @ref
+glfwSetWindowFocusCallback.
+
+
+@subsubsection news_30_enterleave Cursor enter/leave callback
+
+Each window now has a callback for when the mouse cursor enters or leaves its
+content area, which is set with @ref glfwSetCursorEnterCallback.
+
+
+@subsubsection news_30_wndtitle Initial window title
+
+The title of a window is now specified at creation time, as one of the arguments
+to @ref glfwCreateWindow.
+
+
+@subsubsection news_30_hidden Hidden windows
+
+Windows can now be hidden with @ref glfwHideWindow, shown using @ref
+glfwShowWindow and created initially hidden with the @ref GLFW_VISIBLE window
+hint and attribute. This allows for off-screen rendering in a way compatible
+with most drivers, as well as moving a window to a specific position before
+showing it.
+
+
+@subsubsection news_30_undecorated Undecorated windows
+
+Windowed mode windows can now be created without decorations, e.g. things like
+a frame, a title bar, with the @ref GLFW_DECORATED window hint and attribute.
+This allows for the creation of things like splash screens.
+
+
+@subsubsection news_30_keymods Modifier key bit masks
+
+[Modifier key bit mask](@ref mods) parameters have been added to the
+[mouse button](@ref GLFWmousebuttonfun) and [key](@ref GLFWkeyfun) callbacks.
+
+
+@subsubsection news_30_scancode Platform-specific scancodes
+
+A scancode parameter has been added to the [key callback](@ref GLFWkeyfun). Keys
+that don't have a [key token](@ref keys) still get passed on with the key
+parameter set to `GLFW_KEY_UNKNOWN`. These scancodes will vary between machines
+and are intended to be used for key bindings.
+
+
+@subsubsection news_30_jsname Joystick names
+
+The name of a joystick can now be retrieved using @ref glfwGetJoystickName.
+
+
+@subsubsection news_30_doxygen Doxygen documentation
+
+You are reading it.
+
+*/