Commit graph

9985 commits

Author SHA1 Message Date
Stjepan Glavina
d5c3becf00 Change to_owned to to_string in docs
We should teach conversion from `str` to `String` using `to_string`
rather than the legacy `to_owned`.
2017-01-13 01:57:48 +01:00
bors
2782e8f8fc Auto merge of #38867 - alexcrichton:ignore-test-on-windows, r=brson
std: Ignore close_read_wakes_up on Windows

It looks like in practice at least this test will not pass on Windows.
Empirically it is prone to blocking forever, presumably because a call to
`shutdown` doesn't actually wake up other threads on Windows.

We don't document this as a guarantee for `shutdown`, nor do we internally rely
on it. This test originated in a time long since passed when it was leveraged
for canceling I/O, but nowadays there's nothing fancy happening in the standard
library so it's not really a productive test anyway, hence just ignoring it on
Windows.

Closes #31657
2017-01-12 03:13:48 +00:00
Seo Sanghyeon
20c7dbc9b4 Rollup merge of #38839 - frewsxcv:osstr-to-str, r=GuillaumeGomez
Expand {Path,OsStr}::{to_str,to_string_lossy} doc examples.

None
2017-01-10 20:27:45 +09:00
Seo Sanghyeon
a62f1b536e Rollup merge of #38836 - ollie27:patch-1, r=steveklabnik
Fix typo in tuple docs

r? @steveklabnik
2017-01-10 20:27:44 +09:00
Seo Sanghyeon
25a9d91929 Rollup merge of #38799 - minaguib:patch-1, r=steveklabnik
Doc fix
2017-01-10 20:27:42 +09:00
Seo Sanghyeon
d350c9b15f Rollup merge of #38664 - apasel422:may-dangle, r=pnkfelix
Replace uses of `#[unsafe_destructor_blind_to_params]` with `#[may_dangle]`

CC #34761

r? @pnkfelix
2017-01-10 20:27:41 +09:00
bors
7aab3d38a0 Auto merge of #38866 - alexcrichton:try-wait, r=aturon
std: Add a nonblocking `Child::try_wait` method

This commit adds a new method to the `Child` type in the `std::process` module
called `try_wait`. This method is the same as `wait` except that it will not
block the calling thread and instead only attempt to collect the exit status. On
Unix this means that we call `waitpid` with the `WNOHANG` flag and on Windows it
just means that we pass a 0 timeout to `WaitForSingleObject`.

Currently it's possible to build this method out of tree, but it's unfortunately
tricky to do so. Specifically on Unix you essentially lose ownership of the pid
for the process once a call to `waitpid` has succeeded. Although `Child` tracks
this state internally to be resilient to multiple calls to `wait` or a `kill`
after a successful wait, if the child is waited on externally then the state
inside of `Child` is not updated. This means that external implementations of
this method must be extra careful to essentially not use a `Child`'s methods
after a call to `waitpid` has succeeded (even in a nonblocking fashion).

By adding this functionality to the standard library it should help canonicalize
these external implementations and ensure they can continue to robustly reuse
the `Child` type from the standard library without worrying about pid ownership.
2017-01-09 07:01:10 +00:00
bors
e350c44e0c Auto merge of #38797 - abhijeetbhagat:master, r=petrochenkov
Fix process module tests to run on Windows

Fixes #38565
r? @retep998
2017-01-08 13:40:46 +00:00
bors
7ac9d337dc Auto merge of #38679 - alexcrichton:always-deny-warnings, r=nrc
Remove not(stage0) from deny(warnings)

Historically this was done to accommodate bugs in lints, but there hasn't been a
bug in a lint since this feature was added which the warnings affected. Let's
completely purge warnings from all our stages by denying warnings in all stages.
This will also assist in tracking down `stage0` code to be removed whenever
we're updating the bootstrap compiler.
2017-01-08 08:22:06 +00:00
bors
e1dfe3d678 Auto merge of #38469 - tbu-:pr_writeln_no_args, r=brson
Allow `writeln!` without arguments, in symmetry with `println!`

CC #36825.
2017-01-07 10:59:46 +00:00
bors
b9637f79e2 Auto merge of #38327 - Yamakaky:into-ipaddr, r=brson
Impl From<Ipv4Addr, Ipv6Addr> for IpAddr.

Fixes https://github.com/rust-lang/rfcs/issues/1816.
2017-01-07 09:00:52 +00:00
Alex Crichton
abb9189083 std: Add a nonblocking Child::try_wait method
This commit adds a new method to the `Child` type in the `std::process` module
called `try_wait`. This method is the same as `wait` except that it will not
block the calling thread and instead only attempt to collect the exit status. On
Unix this means that we call `waitpid` with the `WNOHANG` flag and on Windows it
just means that we pass a 0 timeout to `WaitForSingleObject`.

Currently it's possible to build this method out of tree, but it's unfortunately
tricky to do so. Specifically on Unix you essentially lose ownership of the pid
for the process once a call to `waitpid` has succeeded. Although `Child` tracks
this state internally to be resilient to multiple calls to `wait` or a `kill`
after a successful wait, if the child is waited on externally then the state
inside of `Child` is not updated. This means that external implementations of
this method must be extra careful to essentially not use a `Child`'s methods
after a call to `waitpid` has succeeded (even in a nonblocking fashion).

By adding this functionality to the standard library it should help canonicalize
these external implementations and ensure they can continue to robustly reuse
the `Child` type from the standard library without worrying about pid ownership.
2017-01-06 21:20:39 -08:00
bors
7e38a89a7b Auto merge of #38835 - alexcrichton:less-overlapped, r=brson
std: Don't pass overlapped handles to processes

This commit fixes a mistake introduced in #31618 where overlapped handles were
leaked to child processes on Windows. On Windows once a handle is in overlapped
mode it should always have I/O executed with an instance of `OVERLAPPED`. Most
child processes, however, are not prepared to have their stdio handles in
overlapped mode as they don't use `OVERLAPPED` on reads/writes to the handle.

Now we haven't had any odd behavior in Rust up to this point, and the original
bug was introduced almost a year ago. I believe this is because it turns out
that if you *don't* pass an `OVERLAPPED` then the system will [supply one for
you][link]. In this case everything will go awry if you concurrently operate on
the handle. In Rust, however, the stdio handles are always locked, and there's
no way to not use them unlocked in libstd. Due to that change we've always had
synchronized access to these handles, which means that Rust programs typically
"just work".

Conversely, though, this commit fixes the test case included, which exhibits
behavior that other programs Rust spawns may attempt to execute. Namely, the
stdio handles may be concurrently used and having them in overlapped mode wreaks
havoc.

[link]: https://blogs.msdn.microsoft.com/oldnewthing/20121012-00/?p=6343

Closes #38811
2017-01-06 23:49:57 +00:00
Alex Crichton
7eb43f1b20 std: Ignore close_read_wakes_up on Windows
It looks like in practice at least this test will not pass on Windows.
Empirically it is prone to blocking forever, presumably because a call to
`shutdown` doesn't actually wake up other threads on Windows.

We don't document this as a guarantee for `shutdown`, nor do we internally rely
on it. This test originated in a time long since passed when it was leveraged
for canceling I/O, but nowadays there's nothing fancy happening in the standard
library so it's not really a productive test anyway, hence just ignoring it on
Windows.

Closes #31657
2017-01-05 22:58:37 -08:00
Steven Fackler
eb5e9ab145 Deprecate TcpListener::set_only_v6
This was supposed to have been removed in #33124 but snuck through :(
2017-01-05 21:36:27 -08:00
Corey Farwell
4794f95683 Expand {Path,OsStr}::{to_str,to_string_lossy} doc examples. 2017-01-05 09:52:14 -05:00
Oliver Middleton
8d076ce0a6 Fix typo in tuple docs 2017-01-05 01:16:37 +00:00
Alex Crichton
5148918db6 std: Don't pass overlapped handles to processes
This commit fixes a mistake introduced in #31618 where overlapped handles were
leaked to child processes on Windows. On Windows once a handle is in overlapped
mode it should always have I/O executed with an instance of `OVERLAPPED`. Most
child processes, however, are not prepared to have their stdio handles in
overlapped mode as they don't use `OVERLAPPED` on reads/writes to the handle.

Now we haven't had any odd behavior in Rust up to this point, and the original
bug was introduced almost a year ago. I believe this is because it turns out
that if you *don't* pass an `OVERLAPPED` then the system will [supply one for
you][link]. In this case everything will go awry if you concurrently operate on
the handle. In Rust, however, the stdio handles are always locked, and there's
no way to not use them unlocked in libstd. Due to that change we've always had
synchronized access to these handles, which means that Rust programs typically
"just work".

Conversely, though, this commit fixes the test case included, which exhibits
behavior that other programs Rust spawns may attempt to execute. Namely, the
stdio handles may be concurrently used and having them in overlapped mode wreaks
havoc.

[link]: https://blogs.msdn.microsoft.com/oldnewthing/20121012-00/?p=6343

Closes #38811
2017-01-04 15:37:12 -08:00
abhijeetbhagat
7152bce192 Fix formatting 2017-01-04 14:39:16 +05:30
abhijeetbhagat
e1e6a7aa7a Fix formatting 2017-01-04 14:27:19 +05:30
bors
01677eeef2 Auto merge of #38707 - redox-os:master, r=brson
Add socket timeout and ttl support in `sys::redox`

This adds support for `read_timeout`, `write_timeout`, and `ttl` on `TcpStream`, `TcpListener`, and `UdpSocket` in the `sys::redox` module.

The DNS lookup has been set to use a 5 second timeout by default.
2017-01-04 04:28:15 +00:00
Mina Naguib
ae23f036f0 Doc fix 2017-01-03 14:52:14 -05:00
abhijeetbhagat
d910837e78 Fix process module tests to run on Windows 2017-01-03 17:50:30 +05:30
Clar Charr
8ffc3e7790 Reword 'stupid' and 'crazy' in docs. 2017-01-02 16:29:19 -05:00
bors
07191e2b11 Auto merge of #38548 - GuillaumeGomez:thread_struct_docs, r=frewsxcv
Add missing example for Thread struct

r? @frewsxcv
2017-01-01 22:45:02 +00:00
Seo Sanghyeon
b14785d3d0 Merge branch 'master' into sparc64 2017-01-01 12:40:10 +09:00
Guillaume Gomez
3312febf22 Add missing example for Thread struct 2016-12-31 13:10:44 +01:00
Jorge Aparicio
728ec85e9a sparc64-linux support 2016-12-30 20:46:19 -05:00
Jeremy Soller
57950faeb6 Add socket timeout and ttl support 2016-12-30 10:38:53 -07:00
est31
85ec09187c Make rustdoc aware of the primitive i128 type
Many thanks to ollie27 for spotting all the places.
2016-12-30 15:17:27 +01:00
Simonas Kazlauskas
b0e55a83a8 Such large. Very 128. Much bits.
This commit introduces 128-bit integers. Stage 2 builds and produces a working compiler which
understands and supports 128-bit integers throughout.

The general strategy used is to have rustc_i128 module which provides aliases for iu128, equal to
iu64 in stage9 and iu128 later. Since nowhere in rustc we rely on large numbers being supported,
this strategy is good enough to get past the first bootstrap stages to end up with a fully working
128-bit capable compiler.

In order for this strategy to work, number of locations had to be changed to use associated
max_value/min_value instead of MAX/MIN constants as well as the min_value (or was it max_value?)
had to be changed to use xor instead of shift so both 64-bit and 128-bit based consteval works
(former not necessarily producing the right results in stage1).

This commit includes manual merge conflict resolution changes from a rebase by @est31.
2016-12-30 15:15:44 +01:00
Alex Crichton
9b0b5b45db Remove not(stage0) from deny(warnings)
Historically this was done to accommodate bugs in lints, but there hasn't been a
bug in a lint since this feature was added which the warnings affected. Let's
completely purge warnings from all our stages by denying warnings in all stages.
This will also assist in tracking down `stage0` code to be removed whenever
we're updating the bootstrap compiler.
2016-12-29 21:07:20 -08:00
Jonathan A. Kollasch
eda889c5bf libstd: define std::env::consts::ARCH for sparc64 2016-12-29 21:30:01 -05:00
Alex Crichton
8623907410 Rollup merge of #38622 - alexcrichton:read-lengths, r=sfackler
std: Clamp max read/write sizes on Unix

Turns out that even though all these functions take a `size_t` they don't
actually work that well with anything larger than the maximum value of
`ssize_t`, the return value. Furthermore it looks like OSX rejects any
read/write requests larger than `INT_MAX - 1`. Handle all these cases by just
clamping the maximum size of a read/write on Unix to a platform-specific value.

Closes #38590
2016-12-29 17:26:21 -08:00
Alex Crichton
26f28ec96d Rollup merge of #38491 - GuillaumeGomez:builder_docs, r=frewsxcv
Builder docs

r? @frewsxcv
2016-12-29 17:26:13 -08:00
Andrew Paseltiner
ca9b07bbc9
Replace uses of #[unsafe_destructor_blind_to_params] with #[may_dangle]
CC #34761
2016-12-28 17:47:10 -05:00
Jeremy Soller
88df0e3918 Fix arguments on Redox 2016-12-27 10:55:41 -07:00
bors
86896ba0be Auto merge of #38577 - redox-os:master, r=alexcrichton
Add Debug to OpenOptions and DirBuilder

This fixes the build on Redox as the platform independent structs now implement Debug.
2016-12-27 14:15:29 +00:00
bors
77f7c7aaf5 Auto merge of #38274 - elahn:windows-readconsole-ctrl-z, r=alexcrichton
Ctrl-Z returns from Stdin.read() when reading from the console on Windows

Fixes #19914.
Fixes read(), read_to_string(), read_to_end(), etc.

r? @alexcrichton
2016-12-26 23:33:21 +00:00
Alex Crichton
917a9affc1 std: Clamp max read/write sizes on Unix
Turns out that even though all these functions take a `size_t` they don't
actually work that well with anything larger than the maximum value of
`ssize_t`, the return value. Furthermore it looks like OSX rejects any
read/write requests larger than `INT_MAX - 1`. Handle all these cases by just
clamping the maximum size of a read/write on Unix to a platform-specific value.

Closes #38590
2016-12-26 15:08:53 -08:00
bors
8493dbed6c Auto merge of #38536 - retep998:flauschige-kaninchen, r=petrochenkov
Fix fs tests on Windows systems with non-english locales.

Fixes https://github.com/rust-lang/rust/issues/34628

r? @alexcrichton
2016-12-26 10:52:56 +00:00
Yamakaky
2d365c6b7a
Impl From<inner> for IpAddr and SocketAddr.
Fixes https://github.com/rust-lang/rfcs/issues/1816.
2016-12-25 18:10:03 -05:00
Yamakaky
40053a46ff
Impl From<Ipv4Addr, Ipv6Addr> for IpAddr.
Fixes https://github.com/rust-lang/rfcs/issues/1816.
2016-12-24 23:32:54 -05:00
bors
e60aa62ffe Auto merge of #38594 - steveklabnik:rollup, r=steveklabnik
Rollup of 14 pull requests

- Successful merges: #37956, #38013, #38297, #38480, #38497, #38502, #38505, #38513, #38521, #38549, #38554, #38557, #38568, #38572
- Failed merges:
2016-12-24 21:14:17 +00:00
Steve Klabnik
df63b0ce72 Rollup merge of #38572 - GuillaumeGomez:join_handle_docs, r=frewsxcv
Add JoinHandle missing examples

r? @frewsxcv
2016-12-24 14:29:34 -05:00
Steve Klabnik
e9a2a77746 Rollup merge of #38521 - jxson:remove-magenta-warnings, r=sfackler
Removes magenta build warning.

Small bug fix to remove an unused type in the magenta process code that causes build failures for magenta's rustc.

r? @alexcrichton

@tedsta @raphlinus
2016-12-24 14:29:29 -05:00
Steve Klabnik
67bef48739 Rollup merge of #38513 - GuillaumeGomez:thread_fn_docs, r=frewsxcv
Add missing examples in some thread functions

r? @frewsxcv
2016-12-24 14:29:28 -05:00
Steve Klabnik
3c26ff450c Rollup merge of #38505 - estebank:why-lines, r=frewsxcv
Docs: Explain why/when `.lines()` returns an error

Fix #37744.
2016-12-24 14:29:26 -05:00
bors
00e61d4185 Auto merge of #38443 - frewsxcv:file-docs, r=brson
Improve the API examples for `std::fs::File`.

Fixes https://github.com/rust-lang/rust/issues/35875.
2016-12-24 18:00:45 +00:00
bors
d86cf13316 Auto merge of #38062 - alexcrichton:fix-line-writer, r=brson
std: Fix partial writes in LineWriter

Previously the `LineWriter` could successfully write some bytes but then fail to
report that it has done so. Additionally, an erroneous flush after a successful
write was permanently ignored. This commit fixes these two issues by (a)
maintaining a `need_flush` flag to indicate whether a flush should be the first
operation in `LineWriter::write` and (b) avoiding returning an error once some
bytes have been successfully written.

Closes #37807
2016-12-24 13:28:37 +00:00