Commit graph

10207 commits

Author SHA1 Message Date
Corey Farwell
d7a09d4e65 Rollup merge of #40503 - swgillespie:thread-hack-removal, r=sfackler
std: remove a workaround for privacy limitations

`std:🧵:Thread` implements a non-exported `NewThread` trait to allow for internal-only use of `Thread::new`. Nowadays we have `pub(crate)`, which accomplishes the same thing but much more idiomatically.

Rustdoc handles this correctly (I checked and I didn't see `Thread::new` on the rustdoc entry for `Thread` with this change), and the stage1 `rustc` emits the correct error still (I'm assuming that the stage1 compiler uses my `libstd`?):

```
$ ./build/x86_64-apple-darwin/stage1/bin/rustc test.rs
error: method `new` is private
 --> test.rs:4:18
  |
4 |     let thread = thread::Thread::new(None);
  |                  ^^^^^^^^^^^^^^^^^^^

error: aborting due to previous error
```
2017-03-17 08:49:02 -04:00
Corey Farwell
695d7ecd05 Rollup merge of #40458 - frewsxcv:frewsxcv-osstr, r=GuillaumeGomez
Add doc examples for `OsStr`, `OsString`.

None
2017-03-17 08:48:53 -04:00
Corey Farwell
dee6989b43 Rollup merge of #40457 - frewsxcv:frewsxcv-macos, r=steveklabnik
Update usages of 'OSX' (and other old names) to 'macOS'.

As of last year with version 'Sierra', the Mac operating system is now
called 'macOS'.
2017-03-17 08:48:52 -04:00
Corey Farwell
69717170a4 Rollup merge of #40456 - frewsxcv:frewsxcv-docs-function-parens, r=GuillaumeGomez
Remove function invokation parens from documentation links.

This was never established as a convention we should follow in the 'More
API Documentation Conventions' RFC:

https://github.com/rust-lang/rfcs/blob/master/text/1574-more-api-documentation-conventions.md
2017-03-17 08:48:51 -04:00
Corey Farwell
bc6eecd0c2 Merge branch 'master' into frewsxcv-osstr 2017-03-16 21:56:52 -04:00
bors
71d7b29475 Auto merge of #40009 - clarcharr:box_to_buf, r=alexcrichton
Leftovers from #39594; From<Box> impls

These are a few more impls that follow the same reasoning as those from #39594.

What's included:
* `From<Box<str>> for String`
* `From<Box<[T]>> for Vec<T>`
* `From<Box<CStr>> for CString`
* `From<Box<OsStr>> for OsString`
* `From<Box<Path>> for PathBuf`
* `Into<Box<str>> for String`
* `Into<Box<[T]>> for Vec<T>`
* `Into<Box<CStr>> for CString`
* `Into<Box<OsStr>> for OsString`
* `Into<Box<Path>> for PathBuf`
* `<Box<CStr>>::into_c_string`
* `<Box<OsStr>>::into_os_string`
* `<Box<Path>>::into_path_buf`
* Tracking issue for latter three methods + three from previous PR.

Currently, the opposite direction isn't doable with `From` (only `Into`) because of the separation between `liballoc` and `libcollections`. I'm holding off on those for a later PR.
2017-03-15 04:24:10 +00:00
Corey Farwell
6adbbfc6ba Add doc example for OsString::into_boxed_os_str. 2017-03-14 09:30:18 -04:00
Corey Farwell
bda57dbc05 Add doc example for OsString::shrink_to_fit. 2017-03-14 09:30:00 -04:00
Corey Farwell
5537955b17 Add doc example for OsString::reserve_exact. 2017-03-14 09:29:38 -04:00
Corey Farwell
4d57d92f07 Add doc example for OsString::reserve. 2017-03-14 09:29:09 -04:00
Corey Farwell
9a7b789c37 Add doc example for OsStr::to_os_string. 2017-03-14 09:28:30 -04:00
Corey Farwell
e7b0f2badf Remove function invokation parens from documentation links.
This was never established as a convention we should follow in the 'More
API Documentation Conventions' RFC:

https://github.com/rust-lang/rfcs/blob/master/text/1574-more-api-documentation-conventions.md
2017-03-13 21:43:18 -04:00
Sean Gillespie
1545f4e2a3 std: remove a workaround for privacy limitations that isn't necessary anymore 2017-03-13 18:42:23 -07:00
Corey Farwell
97a1b6a055 Update usages of 'OSX' (and other old names) to 'macOS'.
As of last year with version 'Sierra', the Mac operating system is now
called 'macOS'.
2017-03-12 14:59:04 -04:00
Charlie Fan
584c79888b Implement placement-in protocol for HashMap 2017-03-11 21:08:18 +08:00
Alex Crichton
f4b4e097a6 Rollup merge of #40410 - clarcharr:os_string_shrink_to_fit, r=alexcrichton
OsString::shrink_to_fit.

Considering how the other capacity-related methods are there, I found it odd that this one wasn't included.

Will create a tracking issue once I get an OK on this.
2017-03-10 20:05:06 -08:00
Alex Crichton
d0da85d725 Rollup merge of #40386 - tbu-:pr_display_frombyteswithnulerror, r=alexcrichton
Distinguish the ways `CStr::from_bytes_with_nul` can fail
2017-03-10 20:05:02 -08:00
Clar Charr
560944b982 Add From<Box<..>> implementations. 2017-03-10 14:57:57 -05:00
Clar Charr
83814fd8ab OsString::shrink_to_fit. 2017-03-10 12:15:30 -05:00
Petr Hosek
9a8461104e travis: Fuchsia builder
This change introduces a Dockerfile and script which builds a complete
Fuchsia toolchain which can be used to build Rust distribution for
Fuchsia. We only support cross-compiling at the moment, hence only
setting the target.
2017-03-10 08:28:40 -08:00
Tobias Bucher
da6e7c8f3a Distinguish the ways CStr::from_bytes_with_nul can fail 2017-03-09 13:31:55 +01:00
Ariel Ben-Yehuda
5070403f2d Rollup merge of #40283 - oconnor663:args_docs, r=alexcrichton
clarify docs for Args and ArgsOs

The args() and args_os() docs include a line about how the first element
is usually the program name. Include that line in the struct docs too.
2017-03-08 20:53:58 +02:00
Ariel Ben-Yehuda
2c252ff1fb Rollup merge of #40237 - arthurprs:hm-adapt2, r=alexcrichton
Reduce size overhead of adaptative hashmap

Exposes a boolean flag in RawTable and use it instead of a bool field in HashMap.

Taking a bit from capacity or length would make overflow handling tricky.

Fixes: #40042
2017-03-08 20:53:52 +02:00
Jack O'Connor
03b83a01ad clarify docs for Args and ArgsOs
The args() and args_os() docs include a line about how the first element
is usually the program name. Include that line in the struct docs too.
2017-03-05 16:39:26 -05:00
Jorge Aparicio
872a0ebf21 cleanup: remove the *san Cargo features from std
these belong to a previous iteration of the sanitizer implementation
2017-03-05 14:25:47 -05:00
Vadim Petrochenkov
428f063fcd Automate timestamp creation and build skipping for native libraries
Add comments
2017-03-04 21:38:26 +03:00
Vadim Petrochenkov
aeadc81ddc Build compiler-rt and sanitizers only once 2017-03-04 21:38:26 +03:00
Vadim Petrochenkov
f2187093f8 Add/remove rerun-if-changed when necessary 2017-03-04 21:38:26 +03:00
arthurprs
3273003912 Reduce size overhead of adaptative hashmap
Exposes a boolean flag in RawTable and use it
instead of a bool field in HashMap.

Fixes: #40042
2017-03-03 23:59:46 +01:00
bors
1476105dd3 Auto merge of #40189 - SimonSapin:one-width, r=alexcrichton
Reduce std_unicode’s public API

 * Only keep one copy of the `UTF8_CHAR_WIDTH` table instead of one of each of libcore and libstd_unicode.
* Move the `utf8_char_width` function to `core::str` under the `str_internals` unstable feature.
* Remove `std_unicode::str::is_utf16`. It was only accessible through the `#[unstable]` crate std_unicode. It has never been used in the compiler or standard library since 47e7a05 added it in 2012 “for OS API interop”. It can be replaced with a one-liner:

   ```rust
   fn is_utf16(slice: &[u16]) -> bool {
       std::char::decode_utf16(s).all(|r| r.is_ok())
   }
   ```
2017-03-03 09:57:57 +00:00
Corey Farwell
05e0d740a2 Rollup merge of #40139 - tedsta:fuchsia_std_process_fix, r=alexcrichton
std::process for fuchsia: updated to latest liblaunchpad

Our liblaunchpad changed a bit and so fuchsia's std::process impl needs to change a bit.

@raphlinus
2017-03-02 14:53:49 -05:00
Guillaume Gomez
5d08775051 Rollup merge of #40081 - GuillaumeGomez:poison-docs, r=frewsxcv
Add missing url in sync structs

r? @frewsxcv
2017-03-02 11:29:35 +01:00
Simon Sapin
031f9b15df Only keep one copy of the UTF8_CHAR_WIDTH table.
… instead of one of each of libcore and libstd_unicode.

Move the `utf8_char_width` function to `core::str`
under the `str_internals` unstable feature.
2017-03-01 23:25:27 +01:00
Corey Farwell
06a0233ab3 Rollup merge of #39960 - lukaramu:issue-39925, r=alexcrichton
added Error and Display impl for std::ffi::FromBytesWithNulError

Fixes #39925.

This is my first PR, so I wasn't quite sure about the stability annotation.
2017-02-28 22:55:29 -05:00
Theodore DeRego
2123d6a278 std::process for fuchsia: updated to latest liblaunchpad 2017-02-28 10:28:46 -08:00
Corey Farwell
6ac7bf5c67 Rollup merge of #40122 - robinst:process-add-example-for-writing-to-stdin, r=alexcrichton
Example for how to provide stdin using std::process::Command

Spawning a child process and writing to its stdin is a bit tricky due to
`as_mut` and having to use a limited borrow. An example for this might
help newer users.

r? @steveklabnik
2017-02-28 08:33:07 -05:00
Corey Farwell
5be0d9ff04 Rollup merge of #40033 - GuillaumeGomez:condvar-docs, r=frewsxcv
Add missing urls and examples for Condvar docs

r? @frewsxcv
2017-02-28 08:33:01 -05:00
Guillaume Gomez
992dd205dd Add missing url in sync structs 2017-02-28 11:22:30 +01:00
bors
4be034e622 Auto merge of #38165 - Yamakaky:better-backtrace, r=petrochenkov
Improve backtrace formating while panicking.

Fixes #37783.

Done:

- Fix alignment of file paths for better readability
- `RUST_BACKTRACE=full` prints all the informations (current behaviour)
- `RUST_BACKTRACE=(short|yes)` is the default and does:
  - Skip irrelevant frames at the beginning and the end
  - Remove function address
  - Remove the current directory from the absolute paths
  - Remove `::hfabe6541873` at the end of the symbols
- `RUST_BACKTRACE=(0|no)` disables the backtrace.
- `RUST_BACKTRACE=<everything else>` is equivalent to `short` for
  backward compatibility.
- doc
- More uniform printing across platforms.

Removed, TODO in a new PR:

- Remove path prefix for libraries and libstd

Example of short backtrace:
```rust
fn fail() {
    panic!();
}

fn main() {
    let closure = || fail();
    closure();
}
```
Short:
```
thread 'main' panicked at 'explicit panic', t.rs:2
Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: t::fail
            at ./t.rs:2
   1: t::main::{{closure}}
            at ./t.rs:6
   2: t::main
            at ./t.rs:7
```
Full:
```
thread 'main' panicked at 'This function never returns!', t.rs:2
stack backtrace:
   0:     0x558ddf666478 - std::sys:👿:backtrace::tracing:👿:unwind_backtrace::hec84c9dd8389cc5d
                               at /home/yamakaky/dev/rust/rust/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1:     0x558ddf65d90e - std::sys_common::backtrace::_print::hfa25f8b31f4b4353
                               at /home/yamakaky/dev/rust/rust/src/libstd/sys_common/backtrace.rs:71
   2:     0x558ddf65cb5e - std::sys_common::backtrace::print::h9b711e11ac3ba805
                               at /home/yamakaky/dev/rust/rust/src/libstd/sys_common/backtrace.rs:60
   3:     0x558ddf66796e - std::panicking::default_hook::{{closure}}::h736d216e74748044
                               at /home/yamakaky/dev/rust/rust/src/libstd/panicking.rs:355
   4:     0x558ddf66743c - std::panicking::default_hook::h16baff397e46ea10
                               at /home/yamakaky/dev/rust/rust/src/libstd/panicking.rs:371
   5:     0x558ddf6682bc - std::panicking::rust_panic_with_hook::h6d5a9bb4eca42c80
                               at /home/yamakaky/dev/rust/rust/src/libstd/panicking.rs:559
   6:     0x558ddf64ea93 - std::panicking::begin_panic::h17dc549df2f10b99
                               at /home/yamakaky/dev/rust/rust/src/libstd/panicking.rs:521
   7:     0x558ddf64ec42 - t::diverges::he6bc43fc925905f5
                               at /tmp/p/t.rs:2
   8:     0x558ddf64ec5a - t::main::h0ffc20356b8a69c0
                               at /tmp/p/t.rs:6
   9:     0x558ddf6687f5 - core::ops::FnOnce::call_once::hce41f19c0db56f93
  10:     0x558ddf667cde - std::panicking::try::do_call::hd4c8c97efb4291df
                               at /home/yamakaky/dev/rust/rust/src/libstd/panicking.rs:464
  11:     0x558ddf698d77 - __rust_try
  12:     0x558ddf698c57 - __rust_maybe_catch_panic
                               at /home/yamakaky/dev/rust/rust/src/libpanic_unwind/lib.rs:98
  13:     0x558ddf667adb - std::panicking::try::h2c56ed2a59ec1d12
                               at /home/yamakaky/dev/rust/rust/src/libstd/panicking.rs:440
  14:     0x558ddf66cc9a - std::panic::catch_unwind::h390834e0251cc9af
                               at /home/yamakaky/dev/rust/rust/src/libstd/panic.rs:361
  15:     0x558ddf6809ee - std::rt::lang_start::hb73087428e233982
                               at /home/yamakaky/dev/rust/rust/src/libstd/rt.rs:57
  16:     0x558ddf64ec92 - main
  17:     0x7fecb869e290 - __libc_start_main
  18:     0x558ddf64e8b9 - _start
  19:                0x0 - <unknown>
```
2017-02-27 17:21:37 +00:00
Robin Stocker
8079bf35c5 Example for how to provide stdin using std::process::Command
Spawning a child process and writing to its stdin is a bit tricky due to
`as_mut` and having to use a limited borrow. An example for this might
help newer users.
2017-02-27 17:04:18 +11:00
Yamakaky
52bed53e99
Also ignore std::panic 2017-02-26 20:39:08 -05:00
Yamakaky
d0fe018cd4
Remove unused 2017-02-26 15:53:55 -05:00
Vadim Petrochenkov
9e054cf59d Fix tests on Windows in Debug configuration (#4) 2017-02-26 09:39:25 -05:00
Yamakaky
c8b17427c2
typo 2017-02-25 16:12:51 -05:00
Vadim Petrochenkov
53a5d56435 Fix tests on ARM Linux (#3) 2017-02-25 09:18:17 -05:00
Eduard-Mihai Burtescu
32af4ceb04 Rollup merge of #40024 - raphlinus:readdir, r=alexcrichton
Switch Fuchsia to readdir (instead of readdir_r)

The readdir_r function is deprecated on newer Posix systems because of
various problems, and not implemented at all for Fuchsia. There are
already implementations using both, and this patch switches Fuchsia
over to the readdir-based one.

Fixes #40021 for Fuchsia, but that issue also contains discussion of
what should happen for other Posix systems.
2017-02-25 14:13:32 +02:00
Eduard-Mihai Burtescu
3ece892490 Rollup merge of #40020 - alexcrichton:fix-unwind-safe, r=sfackler
std: Relax UnwindSafe impl for Unique

Add the `?Sized` bound as we don't require the type to be sized.

Closes #40011
2017-02-25 14:13:31 +02:00
Eduard-Mihai Burtescu
d78a7fcea4 Rollup merge of #39988 - arthurprs:hm-adapt2, r=alexcrichton
Simplify/fix adaptive hashmap

Please see https://github.com/rust-lang/rust/pull/38368#issuecomment-280957863 for context.

The shift length math is broken. It turns out that checking for the shift length is complicated. Using simulations it's possible to see that a value of 2000 will only get probabilities down to ~1e-7 when the hashmap load factor is 90% (rust goes up to 90.9% as of today). That's probably not good enough to go into the stdlib with pluggable hashers.

So this PR simplify the adaptive behavior to only consider displacement, which is much safer and very useful by itself.

There's two comments because one of them is already being tested to be merged by bors.
2017-02-25 14:13:26 +02:00
Eduard-Mihai Burtescu
ef043a7c43 Rollup merge of #39961 - redox-os:redox, r=alexcrichton
Fix compilation on Redox

This updates the Redox sys module to fix compilation.

The functions peek and peek_from are added to TcpStream and UdpSocket as stubs. The sys::backtrace module is now included correctly
2017-02-25 14:13:24 +02:00
Eduard-Mihai Burtescu
a8ab222fd5 Rollup merge of #39914 - raphlinus:mx_handle_wait, r=alexcrichton
Follow rename of mx_handle_wait Magenta syscalls

The mx_handle_wait_* syscalls in Magenta were renamed to
mx_object_wait. The syscall is used in the Magenta/Fuchsia
implementation of std::process, to wait on child processes.

In addition, this patch enables the use of the system provided
libbacktrace library on Fuchsia targets. Symbolization is not yet
working, but at least it allows printing hex addresses in a backtrace
and makes building succeed when the backtrace feature is not disabled.
2017-02-25 14:13:20 +02:00