Commit Graph

8706 Commits

Author SHA1 Message Date
Simonas Kazlauskas 1a886bc3c9 Improve docs for Path::methods 2016-02-03 01:16:58 +02:00
bors 2dc132e4d2 Auto merge of #31312 - alexcrichton:no-le-in-powerpc64le, r=alexcrichton
Currently the `mipsel-unknown-linux-gnu` target doesn't actually set the
`target_arch` value to `mipsel` but it rather uses `mips`. Alternatively the
`powerpc64le` target does indeed set the `target_arch` as `powerpc64le`,
causing a bit of inconsistency between theset two.

As these are just the same instance of one instruction set, let's use
`target_endian` to switch between them and only set the `target_arch` as one
value. This should cut down on the number of `#[cfg]` annotations necessary and
all around be a little more ergonomic.
2016-02-02 17:11:48 +00:00
bors ddd1bf594f Auto merge of #30991 - rthomas:master, r=Gankro
Using the test @bluss suggested in #30983
2016-02-02 10:45:06 +00:00
Ryan Thomas 8aae7f78ce Ensure capacity returned of HashMap is max(capacity, length).
r? @Gankro
2016-02-02 17:17:24 +11:00
Steve Klabnik 5f0d8ea1bd Rollup merge of #31345 - kamalmarhubi:book-docs-special-section-errors, r=steveklabnik
This matches the usage in the standard library's documentation.
2016-02-02 00:32:19 -05:00
Alex Crichton 8f803c2026 Remove "powerpc64le" and "mipsel" target_arch
Currently the `mipsel-unknown-linux-gnu` target doesn't actually set the
`target_arch` value to `mipsel` but it rather uses `mips`. Alternatively the
`powerpc64le` target does indeed set the `target_arch` as `powerpc64le`,
causing a bit of inconsistency between theset two.

As these are just the same instance of one instruction set, let's use
`target_endian` to switch between them and only set the `target_arch` as one
value. This should cut down on the number of `#[cfg]` annotations necessary and
all around be a little more ergonomic.
2016-02-01 20:39:07 -08:00
Kamal Marhubi 129a6239d2 docs: Standardize on 'Errors' header in std docs 2016-02-01 21:41:29 -05:00
Dirk Gadsden 76839221ff Minor corrections in docs for std::process::Child 2016-01-31 20:50:34 -08:00
Dirk Gadsden cee1695e08 Safety docs about std::process::Child going out of scope
There is no `Drop` implemented for `Child`, so if it goes out
of scope in Rust-land and gets deallocated, the child process
will continue to exist and execute. If users want a guarantee
that the process has finished running and exited they must
manually use `kill`, `wait`, or `wait_with_output`.

Fixes #31289.
2016-01-31 11:50:22 -08:00
bors 9041b93058 Auto merge of #31298 - japaric:mips-musl, r=alexcrichton
This target covers MIPS devices that run the trunk version of OpenWRT.

The x86_64-unknown-linux-musl target always links statically to C libraries. For
the mips(el)-unknown-linux-musl target, we opt for dynamic linking (like most of
other targets do) to keep binary size down.

As for the C compiler flags used in the build system, we use the same flags used
for the mips(el)-unknown-linux-gnu target.

r? @alexcrichton
2016-01-31 12:27:06 +00:00
Manish Goregaokar e31f65b010 Rollup merge of #31292 - alexcrichton:osx-dtors-in-dtors-in-dtors, r=aturon
This test has been deadlocking and causing problems on the bots basically since
its inception. Some memory safety issues were fixed in 987dc84b, but the
deadlocks remained afterwards unfortunately.

After some investigation, I've concluded that this is just a situation where OSX
is not guaranteed to run destructors. The fix in 987dc84b observed that OSX was
rewriting the backing TLS memory to its initial state during destruction while
we weren't looking, and this would have the effect of canceling the destructors
of any other initialized TLS slots.

While very difficult to pin down, this is basically what I assume is happening
here, so there doesn't seem to really be anythig we can do to ensure the test
robustly passes on OSX, so just ignore it for now.
2016-01-30 17:57:17 +05:30
bors 303892ee15 Auto merge of #30448 - alexcrichton:llvmup, r=nikomatsakis
These commits perform a few high-level changes with the goal of enabling i686 MSVC unwinding:

* LLVM is upgraded to pick up the new exception handling instructions and intrinsics for MSVC. This puts us somewhere along the 3.8 branch, but we should still be compatible with LLVM 3.7 for non-MSVC targets.
* All unwinding for MSVC targets (both 32 and 64-bit) are implemented in terms of this new LLVM support. I would like to also extend this to Windows GNU targets to drop the runtime dependencies we have on MinGW, but I'd like to land this first.
* Some tests were fixed up for i686 MSVC here and there where necessary. The full test suite should be passing now for that target.

In terms of landing this I plan to have this go through first, then verify that i686 MSVC works, then I'll enable `make check` on the bots for that target instead of just `make` as-is today.

Closes #25869
2016-01-30 00:25:44 +00:00
Alex Crichton 3e9589c0f4 trans: Reimplement unwinding on MSVC
This commit transitions the compiler to using the new exception handling
instructions in LLVM for implementing unwinding for MSVC. This affects both 32
and 64-bit MSVC as they're both now using SEH-based strategies. In terms of
standard library support, lots more details about how SEH unwinding is
implemented can be found in the commits.

In terms of trans, this change necessitated a few modifications:

* Branches were added to detect when the old landingpad instruction is used or
  the new cleanuppad instruction is used to `trans::cleanup`.
* The return value from `cleanuppad` is not stored in an `alloca` (because it
  cannot be).
* Each block in trans now has an `Option<LandingPad>` instead of `is_lpad: bool`
  for indicating whether it's in a landing pad or not. The new exception
  handling intrinsics require that on MSVC each `call` inside of a landing pad
  is annotated with which landing pad that it's in. This change to the basic
  block means that whenever a `call` or `invoke` instruction is generated we
  know whether to annotate it as part of a cleanuppad or not.
* Lots of modifications were made to the instruction builders to construct the
  new instructions as well as pass the tagging information for the call/invoke
  instructions.
* The translation of the `try` intrinsics for MSVC has been overhauled to use
  the new `catchpad` instruction. The filter function is now also a
  rustc-generated function instead of a purely libstd-defined function. The
  libstd definition still exists, it just has a stable ABI across architectures
  and leaves some of the really weird implementation details to the compiler
  (e.g. the `localescape` and `localrecover` intrinsics).
2016-01-29 16:25:20 -08:00
Jorge Aparicio 7b026f0355 add support for mips(el)-unknown-linux-musl
This target covers MIPS devices that run the trunk version of OpenWRT.

The x86_64-unknown-linux-musl target always links statically to C libraries. For
the mips(el)-unknown-linux-musl target, we opt for dynamic linking (like most of
other targets do) to keep binary size down.

As for the C compiler flags used in the build system, we use the same flags used
for the mips(el)-unknown-linux-gnu target.
2016-01-29 18:46:25 -05:00
Alex Crichton b960de0984 std: Ignore dtors_in_dtors_in_dtors on OSX
This test has been deadlocking and causing problems on the bots basically since
its inception. Some memory safety issues were fixed in 987dc84b, but the
deadlocks remained afterwards unfortunately.

After some investigation, I've concluded that this is just a situation where OSX
is not guaranteed to run destructors. The fix in 987dc84b observed that OSX was
rewriting the backing TLS memory to its initial state during destruction while
we weren't looking, and this would have the effect of canceling the destructors
of any other initialized TLS slots.

While very difficult to pin down, this is basically what I assume is happening
here, so there doesn't seem to really be anythig we can do to ensure the test
robustly passes on OSX, so just ignore it for now.
2016-01-29 13:46:47 -08:00
Alex Crichton acaf151ade std: Fix rumprun build
Looks like the rumprun build has bitrotted over time, so this includes some libc
fixes and some various libstd fixes which gets it back to bootstrapping.
2016-01-28 19:33:48 -08:00
bors a891c72976 Auto merge of #31171 - dirk:dirk/safety-section-in-cstring-docs, r=steveklabnik
Also a minor language tweak to the documentation of the `ffi::CString::from_raw` function.
2016-01-28 09:03:00 +00:00
Dirk Gadsden 9cfa1916fa Fix formatting in documentation of ffi::CString 2016-01-27 15:07:22 -08:00
bors 4b615854f0 Auto merge of #31120 - alexcrichton:attribute-deny-warnings, r=brson
This commit removes the `-D warnings` flag being passed through the makefiles to
all crates to instead be a crate attribute. We want these attributes always
applied for all our standard builds, and this is more amenable to Cargo-based
builds as well.

Note that all `deny(warnings)` attributes are gated with a `cfg(stage0)`
attribute currently to match the same semantics we have today
2016-01-26 22:10:10 +00:00
bors a9e139b66c Auto merge of #31081 - alexcrichton:stabilize-hasher, r=aturon
This commit implements the stabilization of the custom hasher support intended
for 1.7 but left out due to some last-minute questions that needed some
decisions. A summary of the actions done in this PR are:

Stable

* `std::hash::BuildHasher`
* `BuildHasher::Hasher`
* `BuildHasher::build_hasher`
* `std::hash::BuildHasherDefault`
* `HashMap::with_hasher`
* `HashMap::with_capacity_and_hasher`
* `HashSet::with_hasher`
* `HashSet::with_capacity_and_hasher`
* `std::collections::hash_map::RandomState`
* `RandomState::new`

Deprecated

* `std::collections::hash_state`
* `std::collections::hash_state::HashState` - this trait was also moved into
  `std::hash` with a reexport here to ensure that we can have a blanket impl to
  prevent immediate breakage on nightly. Note that this is unstable in both
  location.
* `HashMap::with_hash_state` - renamed
* `HashMap::with_capacity_and_hash_state` - renamed
* `HashSet::with_hash_state` - renamed
* `HashSet::with_capacity_and_hash_state` - renamed

Closes #27713
2016-01-26 19:30:54 +00:00
Alex Crichton cb343c33ac Fix warnings during tests
The deny(warnings) attribute is now enabled for tests so we need to weed out
these warnings as well.
2016-01-26 09:29:28 -08:00
bors 13b5edab63 Auto merge of #30402 - jooert:prettypanic, r=alexcrichton
This splits the output of panics into two lines as proposed in #15239 and adds a
note about how to get a backtrace. Because the default panic message consists of
multiple lines now, this changes the test runner's failure output to not indent
the first line anymore.

Fixes #15239 and fixes #11704.
2016-01-26 16:50:27 +00:00
Alex Crichton 1fa0be2bc0 std: Stabilize custom hasher support in HashMap
This commit implements the stabilization of the custom hasher support intended
for 1.7 but left out due to some last-minute questions that needed some
decisions. A summary of the actions done in this PR are:

Stable

* `std::hash::BuildHasher`
* `BuildHasher::Hasher`
* `BuildHasher::build_hasher`
* `std::hash::BuildHasherDefault`
* `HashMap::with_hasher`
* `HashMap::with_capacity_and_hasher`
* `HashSet::with_hasher`
* `HashSet::with_capacity_and_hasher`
* `std::collections::hash_map::RandomState`
* `RandomState::new`

Deprecated

* `std::collections::hash_state`
* `std::collections::hash_state::HashState` - this trait was also moved into
  `std::hash` with a reexport here to ensure that we can have a blanket impl to
  prevent immediate breakage on nightly. Note that this is unstable in both
  location.
* `HashMap::with_hash_state` - renamed
* `HashMap::with_capacity_and_hash_state` - renamed
* `HashSet::with_hash_state` - renamed
* `HashSet::with_capacity_and_hash_state` - renamed

Closes #27713
2016-01-26 08:39:07 -08:00
Johannes Oertel c07413c204 Add message about RUST_BACKTRACE to default output of panic!
The note will only be shown on the first panic.
2016-01-26 10:37:12 +01:00
Alex Crichton fee457d3af std: Fix some behavior without stdio handles
On all platforms, reading from stdin where the actual stdin isn't present should
return 0 bytes as having been read rather than the entire buffer.

On Windows, handle the case where we're inheriting stdio handles but one of them
isn't present. Currently the behavior is to fail returning an I/O error but
instead this commit corrects it to detecting this situation and propagating the
non-set handle.

Closes #31167
2016-01-25 17:48:27 -08:00
Alex Crichton 2273b52023 mk: Move from -D warnings to #![deny(warnings)]
This commit removes the `-D warnings` flag being passed through the makefiles to
all crates to instead be a crate attribute. We want these attributes always
applied for all our standard builds, and this is more amenable to Cargo-based
builds as well.

Note that all `deny(warnings)` attributes are gated with a `cfg(stage0)`
attribute currently to match the same semantics we have today
2016-01-24 20:35:55 -08:00
Dirk Gadsden 71b526bf94 Add section about memory safety to ffi::CString documentation
Also a minor language tweak to the documentation of the
`ffi::CString::from_raw` function.
2016-01-24 18:48:45 -05:00
bors ba356ffbc4 Auto merge of #31166 - geofft:process-comments, r=alexcrichton
The implementation changed in 33a2191d, but the comments did not change to match.

r? @alexcrichton
2016-01-24 23:27:10 +00:00
bors 4043c0247e Auto merge of #31093 - tshepang:misc-doc-improvements, r=steveklabnik 2016-01-24 20:13:14 +00:00
Geoffrey Thomas 73854b1619 sys/unix/process.rs: Update comments in make_argv and make_envp
The implementation changed in 33a2191d, but the comments did not change
to match.
2016-01-24 11:18:02 -05:00
Tshepang Lekhonkhobe 012d68a92e doc: miscellaneous OpenOptions:append improvements 2016-01-24 07:44:55 +02:00
Steve Klabnik feb2673654 Rollup merge of #31146 - angelsl:patch-1, r=steveklabnik 2016-01-23 09:38:44 -05:00
Steve Klabnik 4fcefee654 Rollup merge of #31090 - tshepang:improve-sentence, r=brson 2016-01-23 09:38:43 -05:00
Steve Klabnik 9ed27a402d Rollup merge of #31088 - tshepang:grammar, r=brson 2016-01-23 09:38:43 -05:00
Steve Klabnik 97f9e262fe Rollup merge of #31035 - nathankleyn:improve-visibility-of-entry-api, r=steveklabnik
Responding to [a thread of discussion on the Rust subreddit](https://www.reddit.com/r/rust/comments/3racik/mutable_lifetimes_are_too_long_when_matching_an/),
it was identified that the presence of the Entry API is not duly
publicised. This commit aims to add some reasonable examples of
common usages of this API to the main example secion of the `HashMap`
documentation.

This is part of issue #29348.
2016-01-23 09:38:41 -05:00
Steve Klabnik 03b4bf20f6 Rollup merge of #31019 - andreabedini:patch-1, r=alexcrichton
Documentation of `CStr::from_ptr` suggests using `str::from_utf8(slice.to_bytes()).unwrap()`
to obtain a `&str` but `CStr` has `CStr::to_str` that does exactly that.

(First PR, be nice :)
2016-01-23 09:38:41 -05:00
angelsl ac27ec2a48 Semaphore not sempahore 2016-01-23 22:15:59 +08:00
Dirk Gadsden 365deeb19a Simplify return for error::Error impl for string::ParseError 2016-01-22 14:34:39 -05:00
Dirk Gadsden 49e27f1c5f Implement error::Error and fmt::Display for string::ParseError
Fixes #31106.
2016-01-22 14:01:29 -05:00
bors 00ee90f0f0 Auto merge of #31070 - sfackler:bufreader-box-slice, r=alexcrichton
Saves a word, and also prevents the impl from accidentally changing the
buffer length.

r? @alexcrichton
2016-01-22 06:04:50 +00:00
bors 62c8256b9f Auto merge of #31068 - sfackler:bufwriter-panic, r=alexcrichton
We don't want to write the same data twice.

Closes #30888

r? @alexcrichton
2016-01-22 04:13:26 +00:00
Tshepang Lekhonkhobe 2a7bef640d doc: this sentence did not read well 2016-01-21 23:27:32 +02:00
Tshepang Lekhonkhobe 52c89eee74 doc: improve grammar 2016-01-21 23:14:47 +02:00
bors 038de0f95e Auto merge of #31057 - bluss:memrchr-fallback, r=alexcrichton
Use the fallback impl for memrchr on non-linux

The memrchr code was never used(!). This brings the memrchr improvements to
non-linux platforms (LineWriter / buffered stdout benefits).

Previous PR #30381
2016-01-21 13:31:43 +00:00
Steven Fackler b740c557e2 Use a Box<[u8]> in BufReader
Saves a word, and also prevents the impl from accidentally changing the
buffer length.
2016-01-20 22:40:25 -08:00
Steven Fackler 334bee3489 Don't flush in BufWriter destructor after a panic in write
We don't want to write the same data twice.

Closes #30888
2016-01-20 22:30:46 -08:00
bors 292af75f8d Auto merge of #30872 - pitdicker:expand_open_options, r=alexcrichton
Tracking issue: #30014

This implements the RFC and makes a few other changes.
I have added a few extra tests, and made the Windows and
Unix code as similar as possible.

Part of the RFC mentions the unstable OpenOptionsExt trait
on Windows (see #27720). I have added a few extra methods
to future-proof it for CreateFile2.
2016-01-20 17:19:21 +00:00
Ulrik Sverdrup 078a6231a7 std: Use the fallback impl for memrchr on non-linux
This code was never used(!). This brings the memrchr improvements to
non-linux platforms (LineWriter / buffered stdout benefits).
2016-01-20 18:00:34 +01:00
Paul Dicker ae30294771 Remove raw pointer from OpenOptions struct
Otherwise it is not Send and Sync anymore
2016-01-20 08:41:20 +01:00
bors 7561466948 Auto merge of #30894 - antrik:debug-mpsc, r=brson
Minimal fix for https://github.com/rust-lang/rust/issues/30563

This covers all the public structs I think; except for Iter and
IntoIter, which I don't know if or how they should be handled.
2016-01-20 03:28:54 +00:00