Commit graph

196 commits

Author SHA1 Message Date
bors
9cb01365ee Auto merge of #36762 - achanda:sockaddr_type, r=alexcrichton
Add two functions to check type of SockAddr

These can be used to determine the type of the underlying IP
address

r? @alexcrichton
2016-10-12 11:28:53 -07:00
bors
ead9212c33 Auto merge of #36707 - achanda:ip_type, r=alexcrichton
Add two functions to check type of given address

The is_v4 function returns true if the given IP is v4. The is_v6
function returns true if the IP is v6.
2016-10-10 17:18:01 -07:00
Manish Goregaokar
d25aeb0ef1 Rollup merge of #36902 - ollie27:stab_impls, r=alexcrichton
std: Correct stability attributes for some implementations

These are displayed by rustdoc so should be correct.
2016-10-04 15:24:02 +05:30
Abhishek Chanda
d9e6430185 Add two functions to check type of SockAddr
These can be used to determine the type of the underlying IP
address
2016-10-03 21:12:37 -07:00
Abhishek Chanda
80a7a3cb0b Add two functions to check type of given address
The is_v4 function returns true if the given IP is v4. The is_v6
function returns true if the IP is v6.
2016-10-03 21:11:19 -07:00
Brian Anderson
29e0235415 Add a platform-abstraction tidy script
This is intended to maintain existing standards of code organization
in hopes that the standard library will continue to be refactored to
isolate platform-specific bits, making porting easier; where "standard
library" roughly means "all the dependencies of the std and test
crates".

This generally means placing restrictions on where `cfg(unix)`,
`cfg(windows)`, `cfg(target_os)` and `cfg(target_env)` may appear,
the basic objective being to isolate platform-specific code to the
platform-specific `std::sys` modules, and to the allocation,
unwinding, and libc crates.

Following are the basic rules, though there are currently
exceptions:

- core may not have platform-specific code
- liballoc_system may have platform-specific code
- liballoc_jemalloc may have platform-specific code
- libpanic_abort may have platform-specific code
- libpanic_unwind may have platform-specific code
- other crates in the std facade may not
- std may have platform-specific code in the following places
  - sys/unix/
  - sys/windows/
  - os/

There are plenty of exceptions today though, noted in the whitelist.
2016-10-02 14:52:15 -07:00
Oliver Middleton
06a7dcd355 std: Correct stability attributes for some implementations
These are displayed by rustdoc so should be correct.
2016-10-01 23:58:14 +01:00
Brian Anderson
096670ca41 Ignore various entire test modules on emscripten 2016-09-30 14:02:56 -07:00
Brian Anderson
183b2ddce4 Ignore entire test modules on emscripten instead of individual tests 2016-09-30 14:02:52 -07:00
Brian Anderson
9c4a01ee9e Ignore lots and lots of std tests on emscripten 2016-09-30 14:02:48 -07:00
Jonathan Turner
b60fc5d16a Rollup merge of #36423 - GuillaumeGomez:eq_impl, r=pnkfelix
Add missing Eq implementations

Part of #36301.
2016-09-22 11:25:01 -07:00
Guillaume Gomez
b4c739dbdd Add missing Eq implementations 2016-09-18 14:26:49 +02:00
Corey Farwell
fae439b92f Add doc examples for std::net::IpAddr construction. 2016-09-13 22:07:38 -04:00
Tshepang Lekhonkhobe
c36ccf7912 doc: make TcpListener example more simple 2016-08-30 06:42:56 +02:00
Jeffrey Seyfried
9a2c8783d9 Use #[prelude_import] in libstd. 2016-08-24 22:12:48 +00:00
Alex Crichton
afeeadeae5 std: Stabilize APIs for the 1.12 release
Stabilized

* `Cell::as_ptr`
* `RefCell::as_ptr`
* `IpAddr::is_{unspecified,loopback,multicast}`
* `Ipv6Addr::octets`
* `LinkedList::contains`
* `VecDeque::contains`
* `ExitStatusExt::from_raw` - both on Unix and Windows
* `Receiver::recv_timeout`
* `RecvTimeoutError`
* `BinaryHeap::peek_mut`
* `PeekMut`
* `iter::Product`
* `iter::Sum`
* `OccupiedEntry::remove_entry`
* `VacantEntry::into_key`

Deprecated

* `Cell::as_unsafe_cell`
* `RefCell::as_unsafe_cell`
* `OccupiedEntry::remove_pair`

Closes #27708
cc #27709
Closes #32313
Closes #32630
Closes #32713
Closes #34029
Closes #34392
Closes #34285
Closes #34529
2016-08-19 11:59:56 -07:00
Corey Farwell
f2d8db15df Link to relevant method/struct for std::net::Shutdown docs. 2016-08-01 20:21:08 -04:00
Corey Farwell
57e3b9eb71 Indicate where the std::net::Incoming struct is created. 2016-08-01 20:16:56 -04:00
bors
9d5965a5e8 Auto merge of #34694 - mathphreak:master, r=alexcrichton
Add IpAddr common methods

Per https://github.com/rust-lang/rfcs/pull/1668#issuecomment-230867962 no RFC is needed here.

The generated documentation for these methods is being weird. It shows a deprecation message referencing #27709 for each of them even though two of the referenced methods were stabilized as part of that issue. I don't know how best to address that.
2016-07-20 07:10:09 -07:00
Ben Stern
cd487db63f Mark Ipv4Addr is_unspecified as stable and provide reference. 2016-07-11 23:47:45 -04:00
Matt Horn
58da5dd51e Add links to Ipv*Addr methods in docs
per https://github.com/rust-lang/rust/pull/34694#issuecomment-231126489
2016-07-07 11:15:25 -06:00
Matt Horn
fee5b492fe Properly mark new methods as unstable 2016-07-06 22:10:12 -06:00
Matt Horn
211c655c97 Mark new methods as unstable 2016-07-06 20:47:47 -06:00
Matt Horn
b8141049da Add IpAddr common methods 2016-07-06 16:59:32 -06:00
Tobias Bucher
6aa0182520 Update documentation to reflect ignoring of unknown addresses 2016-06-29 11:44:33 +02:00
Tobias Bucher
d6237cefcb Ignore unknown address types when looking up hosts
Previously, any function using a `ToSocketAddrs` input would fail if
passed a hostname that resolves to an address type different from the
ones recognized by Rust.

This also changes the `LookupHost` iterator to only include the known
address types, as a result, it doesn't have to return `Result`s any
more, which are likely misinterpreted as failed name lookups.
2016-06-29 11:39:56 +02:00
Oliver Middleton
61043fd3c1 Improve IP reserved address docs
- Add links to all RFCs to make it clear these are not Rust RFCs.
- Correct RFC numbers to match the numbers in [RFC 6890](https://tools.ietf.org/html/rfc6890)
- Clean up formatting to show addresses and ranges in parentheses like (255.255.255.255)
2016-06-13 23:49:04 +01:00
Alexander Polyakov
7ba0016030 Make Ipv4Addr cmp() faster 2016-05-26 22:38:33 +03:00
Steve Klabnik
b68254fbb8 Rollup merge of #33439 - birkenfeld:ip-rfc-refs, r=steveklabnik
doc: make RFC references consistent

Always add a space and end sentence with a full stop.
2016-05-07 15:35:19 -04:00
Georg Brandl
10599e4641 doc: make RFC references consistent 2016-05-05 21:15:15 +02:00
Georg Brandl
26eb2bef25 Fix some some duplicate words. 2016-05-05 21:12:37 +02:00
Manish Goregaokar
3dc0b55a47 Rollup merge of #33200 - sfackler:nonblocking-docs, r=alexcrichton
Fix reference to TCP in UDP docs

Closees #33195
2016-04-26 01:44:52 +05:30
Manish Goregaokar
4c0fdebe7b Rollup merge of #33167 - benaryorg:master, r=alexcrichton
clarify documentation of TcpStream::connect() for multiple valid addresses

I am not sure how the UDP part of the stdlib behaves when passing multiple valid addresses, but it should be mentioned as there are legit use cases for [`impl<'a> ToSocketAddrs for &'a [SocketAddr]`](http://doc.rust-lang.org/nightly/std/net/trait.ToSocketAddrs.html), a TCP fallback only being one.

Just a little example program for anyone willing to enhance the documentation further:

```rust
use std::net::SocketAddr;
use std::net::ToSocketAddrs;
use std::net::TcpStream;

fn main()
{
	let v: Vec<SocketAddr> = vec!
	[
		"127.0.0.1:1338".to_socket_addrs().unwrap().next().unwrap(),
		"127.0.0.1:1337".to_socket_addrs().unwrap().next().unwrap(),
		"127.0.0.1:1339".to_socket_addrs().unwrap().next().unwrap(),
	];

	let stream = TcpStream::connect(&v[..]).unwrap();
}
```
2016-04-26 01:44:51 +05:30
Steven Fackler
379e6fc5be Fix reference to TCP in UDP docs
Closees #33195
2016-04-25 09:12:51 -07:00
benaryorg
68a18c4dbc
clarify documentation of TcpStream::connect() for multiple valid addresses
Signed-off-by: benaryorg <binary@benary.org>
2016-04-23 17:51:22 +02:00
Steven Fackler
c6480e8b6b Remove IPV6_V6ONLY functionality
These settings can only be adjusted before bind time, which doesn't make
sense in the current set of functionality. These methods are stable, but
haven't hit a stable release yet.

Closes #33052

[breaking-change]
2016-04-20 21:42:19 -07:00
Alex Crichton
552eda70d3 std: Stabilize APIs for the 1.9 release
This commit applies all stabilizations, renamings, and deprecations that the
library team has decided on for the upcoming 1.9 release. All tracking issues
have gone through a cycle-long "final comment period" and the specific APIs
stabilized/deprecated are:

Stable

* `std::panic`
* `std::panic::catch_unwind` (renamed from `recover`)
* `std::panic::resume_unwind` (renamed from `propagate`)
* `std::panic::AssertUnwindSafe` (renamed from `AssertRecoverSafe`)
* `std::panic::UnwindSafe` (renamed from `RecoverSafe`)
* `str::is_char_boundary`
* `<*const T>::as_ref`
* `<*mut T>::as_ref`
* `<*mut T>::as_mut`
* `AsciiExt::make_ascii_uppercase`
* `AsciiExt::make_ascii_lowercase`
* `char::decode_utf16`
* `char::DecodeUtf16`
* `char::DecodeUtf16Error`
* `char::DecodeUtf16Error::unpaired_surrogate`
* `BTreeSet::take`
* `BTreeSet::replace`
* `BTreeSet::get`
* `HashSet::take`
* `HashSet::replace`
* `HashSet::get`
* `OsString::with_capacity`
* `OsString::clear`
* `OsString::capacity`
* `OsString::reserve`
* `OsString::reserve_exact`
* `OsStr::is_empty`
* `OsStr::len`
* `std::os::unix::thread`
* `RawPthread`
* `JoinHandleExt`
* `JoinHandleExt::as_pthread_t`
* `JoinHandleExt::into_pthread_t`
* `HashSet::hasher`
* `HashMap::hasher`
* `CommandExt::exec`
* `File::try_clone`
* `SocketAddr::set_ip`
* `SocketAddr::set_port`
* `SocketAddrV4::set_ip`
* `SocketAddrV4::set_port`
* `SocketAddrV6::set_ip`
* `SocketAddrV6::set_port`
* `SocketAddrV6::set_flowinfo`
* `SocketAddrV6::set_scope_id`
* `<[T]>::copy_from_slice`
* `ptr::read_volatile`
* `ptr::write_volatile`
* The `#[deprecated]` attribute
* `OpenOptions::create_new`

Deprecated

* `std::raw::Slice` - use raw parts of `slice` module instead
* `std::raw::Repr` - use raw parts of `slice` module instead
* `str::char_range_at` - use slicing plus `chars()` plus `len_utf8`
* `str::char_range_at_reverse` - use slicing plus `chars().rev()` plus `len_utf8`
* `str::char_at` - use slicing plus `chars()`
* `str::char_at_reverse` - use slicing plus `chars().rev()`
* `str::slice_shift_char` - use `chars()` plus `Chars::as_str`
* `CommandExt::session_leader` - use `before_exec` instead.

Closes #27719
cc #27751 (deprecating the `Slice` bits)
Closes #27754
Closes #27780
Closes #27809
Closes #27811
Closes #27830
Closes #28050
Closes #29453
Closes #29791
Closes #29935
Closes #30014
Closes #30752
Closes #31262
cc #31398 (still need to deal with `before_exec`)
Closes #31405
Closes #31572
Closes #31755
Closes #31756
2016-04-11 08:57:53 -07:00
bors
211c35afcb Auto merge of #32334 - tbu-:pr_ipv6_octets, r=aturon
Add functions to convert IPv6 addresses from and to octets

See also #32313.
2016-04-01 20:38:52 -07:00
mitaa
6a76872d71 Extend linkchecker with anchor checking
This adds checks to ensure that:
* link anchors refer to existing id's on the target page
* id's are unique within an html document
* page redirects are valid
2016-03-27 00:21:00 +01:00
bors
98f0a9128f Auto merge of #32454 - eddyb:rollup, r=eddyb
Rollup of 11 pull requests

- Successful merges: #32404, #32420, #32423, #32425, #32429, #32430, #32431, #32434, #32437, #32441, #32443
- Failed merges:
2016-03-23 12:33:04 -07:00
Jorge Aparicio
0f02309e4b try! -> ?
Automated conversion using the untry tool [1] and the following command:

```
$ find -name '*.rs' -type f | xargs untry
```

at the root of the Rust repo.

[1]: https://github.com/japaric/untry
2016-03-22 22:01:37 -05:00
Alex Crichton
88506ce5cd std: Store flowinfo/scope_id in host byte order
Apparently these aren't supposed to be stored in network byte order, so doing so
ends up causing failures when it would otherwise succeed when stored in the host
byte order.

Closes #32424
2016-03-22 09:33:36 -07:00
bors
10bdd808b5 Auto merge of #32050 - achanda:from-slice-v4, r=alexcrichton
Add an impl for From trait

Converts a u8 slice to a Ipv4Addr
More discussion on this here: https://github.com/rust-lang/rfcs/pull/1498#issuecomment-191921655
2016-03-18 17:30:22 -07:00
Tobias Bucher
e3146d77ec Add functions to convert IPv6 addresses from and to octets
See also #32313.
2016-03-19 01:24:22 +01:00
Abhishek Chanda
aa22b4e7c8 Add is_documentation for IPv6
This function returns true if the given IPv6 is reserved for
documentation. Also, reject this block in the is_global check
2016-03-13 18:56:20 -07:00
bors
74b886ab14 Auto merge of #32211 - achanda:ipv6-global, r=alexcrichton
Reject unspecified IP from global

Also fixed the test
2016-03-13 16:53:09 -07:00
Abhishek Chanda
534bd19d25 Reject unspecified and loopback IP from global 2016-03-12 14:51:45 -08:00
Alex Crichton
b53764c73b std: Clean out deprecated APIs
Removes all unstable and deprecated APIs prior to the 1.8 release. All APIs that
are deprecated in the 1.8 release are sticking around for the rest of this
cycle.

Some notable changes are:

* The `dynamic_lib` module was moved into `rustc_back` as the compiler still
  relies on a few bits and pieces.
* The `DebugTuple` formatter now special-cases an empty struct name with only
  one field to append a trailing comma.
2016-03-12 12:31:13 -08:00
bors
0b9995b24c Auto merge of #31618 - alexcrichton:no-thread-spawns, r=brson
Optimize some functions in std::process

* Be sure that `read_to_end` gets directed towards `read_to_end_uninitialized` for all handles
* When spawning a child that guaranteed doesn't need a stdin, don't actually create a stdin pipe for that process, instead just redirect it to /dev/null
* When calling `wait_with_output`, don't spawn threads to read out the pipes of the child. Instead drain all pipes on the calling thread and *then* wait on the process.

Functionally, it is intended that nothing changes as part of this PR

---

Note that this was the same as #31613, and even after that it turned out that fixing Windows was easier than I thought! To copy a comment from over there:

> As some rationale for this as well, it's always bothered me that we've spawned threads in the standard library for this (seems a bit overkill), and I've also been curious lately as to our why our build times for Windows are so much higher than Unix (on the buildbots we have). I have done basically 0 investigation into why, but I figured it can't help to try to optimize Command::output which I believe is called quite a few times during the test suite.
2016-03-09 18:18:10 -08:00
Alex Crichton
d46c99abe8 std: Funnel read_to_end through to one location
This pushes the implementation detail of proxying `read_to_end` through to
`read_to_end_uninitialized` all the way down to the `FileDesc` and `Handle`
implementations on Unix/Windows. This way intermediate layers will also be able
to take advantage of this optimized implementation.

This commit also adds the optimized implementation for `ChildStdout` and
`ChildStderr`.
2016-03-08 17:45:44 -08:00