rust-windowing/glutin

Glutin-winit is not compatible with winit 0.29.0-beta.0

fredizzimo opened this issue · 7 comments

I tried to update Neovide to use winit 0.29.0-beta.0, but I'm unable to do so because no matter what I do glutin-winit refuses to use the 0.29 version, and I get two different versions in the lockfile. I even tried the patch section of Cargo.toml, but it still won't work.

So I think the only way is to to have a new glutin-winit release that supports both 0.28 and 0.29, or alternatively a a beta release of that as well.

That's correct the versions are incompatible, the release of glutin-winit will be done after the winit stable release. I don't see any point in this crate to have betas as well, unless there will be a huge demand for whatever reason.

Most users use glutin directly, so they don't depend on the shim crate, since glutin-winit is a shim mostly for examples.

Yes, but as it's now, Neovide can't use Winit 0.29 at all. We have to pin to a commit that uses 0.28. Or alternatively fork glutin-winit or write the same functionality ourselves.

None of those alternatives sounds very attractive to me.

There's no need to release a beta of glutin-winit if it's still compatible with 0.29, like it probably is, since i used it just fine up until the 0.29 version was released, a new version with the requirement winit >=0.28.6, <0.30 would work.

There's no need to release a beta of glutin-winit if it's still compatible with 0.29, like it probably is, since i used it just fine up until the 0.29 version was released, a new version with the requirement winit >=0.28.6, <0.30 would work.

The issue is that winit is used in the public API, so each change to either winit or glutin is a breaking change for this crate, so the only way is to do betas, because each beta release is a breaking change.

I know that we in alacrattiy don't depend on this crate due to exact this very reason to not end up in the situation like that.

The only solution is to do betas, if you really want me to do betas, then it's probably fine.

But shouldn't each 0.xx version winit be completely API compatible? So a new release should only be needed when the 0.xx version changes.

And the dependency you have right now 0.28.6 is the same as >=0.28.6, <0.29 according to https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html. So I don't see much difference between that and specifying the range manually. In this case it's additionally compatible with winit 0.29 so the range can be extended, of course providing that it remains compatible when it's actually released.

But yes, if you don't want or can do that, due to something I'm missing, a beta version would be preferred.

0.29.0 is not compatible with 0.28.0, because the crate is pre 1.0, so it's semver incompatibly, because minors differ. Winit could also break internal APIs, so it'll break.

It's anyway, that the next glutin-winit is a breaking change, I can't do a patch bump at this point due to other breaking changes to the crate.

Ok, I understand, thanks for the release.

From the Neovide point of view there doesn't appear to be any breaking changes, at least it compiles and appears to work as before.

I guess you haven't used the ApiPreference since it was renamed. Anyway, all the changes are in the glutin-winit CHANGELOG.

There will be a breaking release of glutin as well at some point, but I have no clue when...