Closed
Description
socket2 0.5.5
depends onwindows-sys 0.48
socket2 0.5.6, 0.5.7
depend onwindows-sys 0.52
This is a breaking change because windows_sys::Win32::Networking::WinSock::SOCKADDR_STORAGE
is reexported as the sockaddr_storage
type, making it a part of the public API: https://github.com/rust-lang/socket2/blob/master/src/sys/windows.rs#L63
This can lead to build failures from a seemingly innocuous cargo update
:
error[E0308]: mismatched types
--> ffi\src\external_net.rs:44:24
|
44 | sockaddr_out.write(sockaddr.as_storage());
| ----- ^^^^^^^^^^^^^^^^^^^^^ expected `SOCKADDR_STORAGE`, found a different `SOCKADDR_STORAGE`
| |
| arguments to this method are incorrect
|
= note: `SOCKADDR_STORAGE` and `SOCKADDR_STORAGE` have similar names, but are actually distinct types
note: `SOCKADDR_STORAGE` is defined in crate `windows_sys`
--> C:\Users\runneradmin\.cargo\registry\src\index.crates.io-6f17d22bba15001f\windows-sys-0.52.0\src\Windows\Win32\Networking\WinSock\mod.rs:5109:1
|
5109 | pub struct SOCKADDR_STORAGE {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: `SOCKADDR_STORAGE` is defined in crate `windows_sys`
--> C:\Users\runneradmin\.cargo\registry\src\index.crates.io-6f17d22bba15001f\windows-sys-0.48.0\src\Windows\Win32\Networking\WinSock\mod.rs:6988:1
|
6988 | pub struct SOCKADDR_STORAGE {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: method defined here
--> /rustc/051478957371ee0084a7c0913941d2a8c4757bb9\library\core\src\ptr\mut_ptr.rs:1586:25
0.5.6
should have been released as 0.6.0
.
Resolution
- If this reexport is semver-exempt, it needs to be clarified in the documentation. Users need to be advised to pin the
socket2
version. - If this reexport is not semver-exempt, the
windows-sys
dependency should be marked with a warning inCargo.toml
not to bump it in a patch release.
We've already worked around the breakage, so I don't really care what happens to the released version.
Metadata
Metadata
Assignees
Labels
No labels