The format is based on Keep a Changelog.
The sections should follow the order Added
, Changed
, Deprecated
,
Removed
, and Fixed
.
Platform specific changed should be added to the end of the section and grouped
by platform name. Common API additions should have , implemented
at the end
for platforms where the API was initially implemented. See the following example
on how to add them:
### Added
- Add `Window::turbo()`, implemented on X11, Wayland, and Web.
- On X11, add `Window::some_rare_api`.
- On X11, add `Window::even_more_rare_api`.
- On Wayland, add `Window::common_api`.
- On Windows, add `Window::some_rare_api`.
When the change requires non-trivial amount of work for users to comply with it, the migration guide should be added below the entry, like:
- Deprecate `Window` creation outside of `EventLoop::run`
This was done to simply migration in the future. Consider the
following code:
// Code snippet.
To migrate it we should do X, Y, and then Z, for example:
// Code snippet.
The migration guide could reference other migration examples in the current changelog entry.
-
Add
ActiveEventLoop::create_proxy()
. -
On Web, add
ActiveEventLoopExtWeb::is_cursor_lock_raw()
to determine ifDeviceEvent::MouseMotion
is returning raw data, not OS accelerated, when usingCursorGrabMode::Locked
. -
On Web, implement
MonitorHandle
andVideoModeHandle
.Without prompting the user for permission, only the current monitor is returned. But when prompting and being granted permission through
ActiveEventLoop::request_detailed_monitor_permission()
, access to all monitors and their details is available. Handles created with "detailed monitor permissions" can be used inWindow::set_fullscreen()
as well.Keep in mind that handles do not auto-upgrade after permissions are granted and have to be re-created to make full use of this feature.
-
Add
Touch::finger_id
with a new typeFingerId
. -
On Web and Windows, add
FingerIdExt*::is_primary()
, exposing a way to determine the primary finger in a multi-touch interaction. -
Implement
Clone
,Copy
,Debug
,Deserialize
,Eq
,Hash
,Ord
,PartialEq
,PartialOrd
andSerialize
on many types. -
Add
MonitorHandle::current_video_mode()
. -
Add basic iOS IME support. The soft keyboard can now be shown using
Window::set_ime_allowed
.
-
Change
ActiveEventLoop
to be a trait. -
ApplicationHandler
now usesdyn ActiveEventLoop
. -
On Web, let events wake up event loop immediately when using
ControlFlow::Poll
. -
Bump MSRV from
1.70
to1.73
. -
Changed
ApplicationHandler::user_event
touser_wake_up
, removing the generic user event.Winit will now only indicate that wake up happened, you will have to pair this with an external mechanism like
std::sync::mpsc::channel
if you want to send specific data to be processed on the main thread. -
Changed
EventLoopProxy::send_event
toEventLoopProxy::wake_up
, it now only wakes up the loop. -
On X11, implement smooth resizing through the sync extension API.
-
ApplicationHandler::create|destroy_surfaces()
was split off fromApplicationHandler::resumed/suspended()
.ApplicationHandler::can_create_surfaces()
should, for portability reasons to Android, be the only place to create render surfaces.ApplicationHandler::resumed/suspended()
are now only emitted by iOS and Web and now signify actually resuming/suspending the application. -
Rename
platform::web::*ExtWebSys
to*ExtWeb
. -
Change signature of
EventLoop::run_app
,EventLoopExtPumpEvents::pump_app_events
andEventLoopExtRunOnDemand::run_app_on_demand
to accept aimpl ApplicationHandler
directly, instead of requiring a&mut
reference to it. -
On Web,
Window::canvas()
now returns a reference. -
On Web,
CursorGrabMode::Locked
now letsDeviceEvent::MouseMotion
return raw data, not OS accelerated, if the browser supports it. -
(Active)EventLoop::create_custom_cursor()
now returns aResult<CustomCursor, ExternalError>
. -
Changed how
ModifiersState
is serialized by Serde. -
VideoModeHandle::refresh_rate_millihertz()
andbit_depth()
now return aOption<NonZero*>
. -
MonitorHandle::position()
now returns anOption
. -
On iOS and macOS, remove custom application delegates. You are now allowed to override the application delegate yourself.
-
On iOS, no longer act as-if the application successfully open all URLs. Override
application:didFinishLaunchingWithOptions:
and provide the desired behaviour yourself.
-
Remove
Event
. -
Remove already deprecated APIs:
EventLoop::create_window()
EventLoop::run
.EventLoopBuilder::new()
EventLoopExtPumpEvents::pump_events
.EventLoopExtRunOnDemand::run_on_demand
.VideoMode
WindowAttributes::new()
Window::set_cursor_icon()
-
On iOS, remove
platform::ios::EventLoopExtIOS
and relatedplatform::ios::Idiom
type.This feature was incomplete, and the equivalent functionality can be trivially achieved outside of
winit
usingobjc2-ui-kit
and callingUIDevice::currentDevice().userInterfaceIdiom()
. -
On Web, remove unused
platform::web::CustomCursorError::Animation
. -
Remove the
rwh_04
andrwh_05
cargo feature and the correspondingraw-window-handle
v0.4 and v0.5 support. v0.6 remains in place and is enabled by default. -
Remove
DeviceEvent::Added
andDeviceEvent::Removed
. -
Remove
DeviceEvent::Motion
andWindowEvent::AxisMotion
. -
Remove
Touch::id
in favor ofTouch::finger_id
. -
Remove
MonitorHandle::size()
andrefresh_rate_millihertz()
in favor ofMonitorHandle::current_video_mode()
. -
On Android, remove all
MonitorHandle
support instead of emitting false data.
- On Orbital,
MonitorHandle::name()
now returnsNone
instead of a dummy name.