Open
Description
The below is a list of methods left to be stabilized under the ip
feature. The path forward today is unclear; if you'd like to push through any method on here the libs team is interested in a PR with links to the associated RFCs or other official documentation. Let us know!
-
Ipv4Addr::is_shared
RemoveIpv4Addr::is_ietf_protocol_assignment
Ipv4Addr::is_ietf_protocol_assignment
#86439-
Ipv4Addr::is_benchmarking
-
Ipv4Addr::is_reserved
-
Ipv6Addr::is_unicast_global
-
Ipv6Addr::is_unicast_link_local
RemoveIpv6Addr::is_unicast_link_local_strict
Ipv6Addr::is_unicast_link_local_strict
#85819RemoveIpv6Addr::is_unicast_site_local
Ipv6Addr::is_unicast_site_local
#85820-
Ipv6Addr::is_unique_local
-
Ipv6Addr::multicast_scope
-
Ipv6Addr::is_ipv4_mapped
-
Ipv6Addr::to_ipv4_mapped
StabilizeIpv6Addr::to_ipv4_mapped
#96906 -
Ipv6Addr::to_canonical
Stabilize{IpAddr, Ipv6Addr}::to_canonical
#115955 -
IpAddr::to_canonical
Stabilize{IpAddr, Ipv6Addr}::to_canonical
#115955
Steps
- Implementation std: Add a
net
module for TCP/UDP #22015 - Implementation Add IpAddr common methods #34694
- Stabilization attempt stabilize the "ip" feature #66584
- Stabilization attempt Stabilize the "IP" feature #76098
- Stabilization PR(s)
Subsets of the listed methods can be stabilized, rather than attempting to stabilize everything at once.
Unresolved Questions
-
is_documentation
is not up to dateIpv6Addr::is_documentation
should be expanded to include RFC 9637's3ffff::/20
#137821 - Differences between Rust and other languages Stabilize the "IP" feature #76098 (comment)
- More specific case of the above: does the IPv6 unicast interface do what we expect? IPv6 Unicast Interface #85604
- Do the provided methods pass ipcheck? https://github.com/rust-lang/libs-team/tree/93b78eef2e0d455a3e69c05333cd8f276e4e95f1/tools/ipcheck. Last known run: Stabilize the "IP" feature #76098 (comment)
From @KodrAus in #76098 (comment):
- Should we replace the
Ipv6Addr::is_unicast_*
methods with aIpv6Addr::unicast_scope
method that returns aIpv6UnicastScope
enum (Stabilize the "IP" feature #76098 (comment))? - Should we change the behavior of
Ipv6Addr::to_ipv4
to ignore deprecated IPv4-compatible addresses, or deprecate the whole method in favor of the more correctIpv6Addr::to_ipv4_mapped
method (Stabilize the "IP" feature #76098 (comment))? - Are we ok with
Ipv6Addr::is_*
methods now properly considering mapped (non-deprecated) IPv4 addresses? I'd personally be comfortable considering the old behavior a bug. - Are there any behavioral differences between other language implementations that we should investigate? (Stabilize the "IP" feature #76098 (comment))
Metadata
Metadata
Assignees
Labels
Area: `std::io`, `std::fs`, `std::net` and `std::path`Blocker: Implemented in the nightly compiler and unstable.Category: An issue tracking the progress of sth. like the implementation of an RFCLibs issues that are tracked on the team's project board.Relevant to the library API team, which will review and decide on the PR/issue.