Commit graph

13421 commits

Author SHA1 Message Date
bors
25c375413a Auto merge of #56394 - cuviper:interrupted-timeout, r=sfackler
Deal with EINTR in net timeout tests

We've seen sporadic QE failures in the timeout tests on this assertion:

    assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);

So there's an error, but not either of the expected kinds.  Adding a
format to show the kind revealed `ErrorKind::Interrupted` (`EINTR`).

For the cases that were using `read`, we can just use `read_exact` to
keep trying after interruption.  For those using `recv_from`, we have to
manually loop until we get a non-interrupted result.
2018-12-03 07:10:15 +00:00
bors
8660eba2b9 Auto merge of #56275 - RalfJung:win-mutex, r=SimonSapin
use MaybeUninit instead of mem::uninitialized for Windows Mutex

I hope this builds, I do not have a Windows machine to test...
2018-12-02 13:45:22 +00:00
Ralf Jung
bd20718c8f make the C part of compiler-builtins opt-out 2018-12-02 13:56:10 +01:00
Ralf Jung
d605e1d055 explicitly control compiler_builts/c feature from libstd 2018-12-02 13:27:12 +01:00
Ralf Jung
f9fb8d6435 no reason to use mutable references here at all 2018-12-02 12:16:43 +01:00
Hidehito Yabuuchi
1e18cc916f Update issue number of shrink_to methods to point the tracking issue 2018-12-02 16:08:08 +09:00
Mark Mansi
e7e96921c2 remove some uses of try! 2018-12-01 15:48:55 -06:00
Mazdak Farrokhzad
f4cde5bc4e stabilize std::dbg!(...) 2018-12-01 02:54:09 +01:00
Josh Stone
f107514aef Deal with EINTR in net timeout tests
We've seen sporadic QE failures in the timeout tests on this assertion:

    assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);

So there's an error, but not either of the expected kinds.  Adding a
format to show the kind revealed `ErrorKind::Interrupted` (`EINTR`).

For the cases that were using `read`, we can just use `read_exact` to
keep trying after interruption.  For those using `recv_from`, we have to
manually loop until we get a non-interrupted result.
2018-11-30 15:33:40 -08:00
kennytm
ecfe721620
Rollup merge of #56324 - Zoxc:int-ext, r=nikomatsakis
Use raw_entry for more efficient interning

Fixes https://github.com/rust-lang/rust/issues/56308#issuecomment-442492744
2018-12-01 02:29:45 +08:00
kennytm
2584d9216d
Rollup merge of #55011 - vi:panic_immediate_abort, r=alexcrichton
Add libstd Cargo feature "panic_immediate_abort"

It stop asserts and panics from libstd to automatically
include string output and formatting code.

Use case: developing static executables smaller than 50 kilobytes,
where usual formatting code is excessive while keeping debuggability
in debug mode.

May resolve #54981.
2018-12-01 02:25:46 +08:00
John Kåre Alsaker
946ea1453d Inline things 2018-11-30 08:14:22 +01:00
Nathan West
7c05ef5db0
Typo 2018-11-29 20:53:37 -05:00
Nathan West
697b83b307
Removed unnecessary buf subscript 2018-11-29 20:53:13 -05:00
Nathan West
f59d645a9b
Defactored Bytes::read
Removed unneeded refactoring of read_one_byte, which removed the unneeded dynamic dispatch (`dyn Read`) used by that function.
2018-11-29 20:36:32 -05:00
Vitaly _Vi Shukela
f18a8c6163
Fix exceeding line width limit 2018-11-30 02:37:04 +03:00
Vitaly _Vi Shukela
d3f9788e59
panic_immediate_abort: Fix issues from review 2018-11-30 02:17:05 +03:00
Vitaly _Vi Shukela
fdef3848a0
Add libstd and libcore Cargo features "panic_immediate_abort"
It stop asserts and panics from libstd to automatically
include string output and formatting code.

Use case: developing static executables smaller than 50 kilobytes,
where usual formatting code is excessive while keeping debuggability
in debug mode.

May resolve #54981.
2018-11-30 00:56:41 +03:00
bors
3e90a12a8a Auto merge of #49878 - dlrobertson:va_list_pt0, r=eddyb
libcore: Add VaList and variadic arg handling intrinsics

## Summary

 - Add intrinsics for `va_start`, `va_end`, `va_copy`, and `va_arg`.
 - Add `core::va_list::VaList` to `libcore`.

Part 1 of (at least) 3 for #44930

Comments and critiques are very much welcomed 😄
2018-11-29 19:28:21 +00:00
Guillaume Gomez
79f02e4b33
Rollup merge of #56319 - RalfJung:async-mutable-ref, r=cramertj
fix futures creating aliasing mutable and shared ref

Fixes the problem described in https://github.com/solson/miri/issues/532#issuecomment-442552764: `set_task_waker` takes a shared reference and puts a copy into the TLS (in a `NonNull`), but `get_task_waker` gets it back out as a mutable reference. That violates "mutable references must not alias anything"!
2018-11-29 13:10:50 +01:00
Guillaume Gomez
ad6434ecad
Rollup merge of #56294 - polyfloyd:fix-typo-ffi-doc, r=sfackler
Fix a typo in the documentation of std::ffi
2018-11-29 13:10:48 +01:00
Guillaume Gomez
e3635f2298
Rollup merge of #56289 - marius:patch-1, r=cramertj
Fix small typo in comment of thread::stack_size
2018-11-29 13:10:46 +01:00
Guillaume Gomez
40ec109888
Rollup merge of #56149 - ariasuni:improve-amctime-doc, r=TimNN
Make std::os::unix/linux::fs::MetadataExt::a/m/ctime* documentation clearer

I was confused by this API so I clarified what they are doing.

I was wondering if I should try to unify more documentation and examples between `unix` and `linux` (e.g. “of the file” is used in `unix` to refer to the file these metadata is for, “of this file” in `linux`, “of the underlying file” in `std::fs::File`).
2018-11-29 13:10:38 +01:00
Guillaume Gomez
3ed113cece
Rollup merge of #56124 - antoine-de:fix_read_to_end_doc_mistake, r=TimNN
Fix small doc mistake on std::io::read::read_to_end

The std::io::read main documentation can lead to error because the buffer is prefilled with 10 zeros that will pad the response.
Using an empty vector is better.

The `read_to_end` documentation is already correct though.

This is my first rust PR, don't hesitate to tell me if I did something wrong.
2018-11-29 13:10:34 +01:00
Ralf Jung
46a683111d fix futures aliasing mutable and shared ref 2018-11-28 19:30:11 +01:00
Ralf Jung
dd593d3ab8 get_ref -> get_mut 2018-11-28 12:49:11 +01:00
Ralf Jung
965fdb0294 fix build 2018-11-28 10:35:56 +01:00
Ralf Jung
12d90aa949 put the MaybeUninit inside the UnsafeCell 2018-11-28 09:29:56 +01:00
polyfloyd
e63bd91895 Fix a typo in the documentation of std::ffi 2018-11-27 22:33:46 +01:00
Marius Nuennerich
73b656bbb3
Fix small typo in comment 2018-11-27 18:57:55 +01:00
Ralf Jung
a4f12344c6 add comments explaining our uses of get_ref/get_mut for MaybeUninit 2018-11-27 16:12:08 +01:00
Ralf Jung
2f2f37983d add missing feature 2018-11-27 16:11:45 +01:00
Ralf Jung
a810275150 fix build 2018-11-27 13:48:40 +01:00
Ralf Jung
f2af41ab8c use MaybeUninit instead of mem::uninitialized for Windows Mutex 2018-11-27 09:32:00 +01:00
Dan Robertson
08140878fe
libcore: Add va_list lang item and intrinsics
- Add the llvm intrinsics used to manipulate a va_list.
 - Add the va_list lang item in order to allow implementing
   VaList in libcore.
2018-11-26 22:56:19 +00:00
bors
6acbb5b65c Auto merge of #55527 - sgeisler:time-checked-add, r=sfackler
Implement checked_add_duration for SystemTime

[Original discussion on the rust user forum](https://users.rust-lang.org/t/std-systemtime-misses-a-checked-add-function/21785)

Since `SystemTime` is opaque there is no way to check if the result of an addition will be in bounds. That makes the `Add<Duration>` trait completely unusable with untrusted data. This is a big problem because adding a `Duration` to `UNIX_EPOCH` is the standard way of constructing a `SystemTime` from a unix timestamp.

This PR implements `checked_add_duration(&self, &Duration) -> Option<SystemTime>` for `std::time::SystemTime` and as a prerequisite also for all platform specific time structs. This also led to the refactoring of many `add_duration(&self, &Duration) -> SystemTime` functions to avoid redundancy (they now unwrap the result of `checked_add_duration`).

Some basic unit tests for the newly introduced function were added too.

I wasn't sure which stabilization attribute to add to the newly introduced function, so I just chose `#[stable(feature = "time_checked_add", since = "1.32.0")]` for now to make it compile. Please let me know how I should change it or if I violated any other conventions.

P.S.: I could only test on Linux so far, so I don't necessarily expect it to compile for all platforms.
2018-11-25 19:01:35 +00:00
Pietro Albini
989678e525
Rollup merge of #56151 - alexcrichton:move-out-flaky-test, r=nagisa
Move a flaky process test out of libstd

This test ensures that everything in `env::vars()` is inherited but
that's not actually true because other tests may add env vars after we
spawn the process, causing the test to be flaky! This commit moves the
test to a run-pass test where it can execute in isolation.

Along the way this removes a lot of the platform specificity of the
test, using iteslf to print the environment instead of a foreign process.
2018-11-25 17:05:05 +01:00
Pietro Albini
6398df1520
Rollup merge of #56101 - frewsxcv:frewsxcv-dyn, r=steveklabnik
Incorporate `dyn` into more comments and docs.

r? @rust-lang/docs
2018-11-25 17:05:03 +01:00
Corey Farwell
ebb1a48b41
Merge branch 'master' into frewsxcv-dyn 2018-11-23 14:09:08 -05:00
Ralf Jung
7b6ad7a960 make park/unpark example more realistic 2018-11-23 11:04:16 +01:00
Steven Fackler
d0f99ddefa Fix the tracking issue for hash_raw_entry
It used to point to the implementation PR.
2018-11-22 09:52:24 -07:00
Ralf Jung
2d46ae7c37 expand thread::park explanation 2018-11-22 10:54:04 +01:00
Guillaume Gomez
89e0fcee40
Rollup merge of #55784 - meltinglava:master, r=KodrAus
Clarifying documentation for collections::hash_map::Entry::or_insert

Previous version does not show that or_insert does not insert the passed value, as the passed value was the same value as what was already in the map.
2018-11-22 10:37:46 +01:00
Alex Crichton
d1cd4e8d0d Move a flaky process test out of libstd
This test ensures that everything in `env::vars()` is inherited but
that's not actually true because other tests may add env vars after we
spawn the process, causing the test to be flaky! This commit moves the
test to a run-pass test where it can execute in isolation.

Along the way this removes a lot of the platform specificity of the
test, using iteslf to print the environment instead of a foreign process.
2018-11-21 21:56:23 -08:00
ariasuni
ec3ac112e1 Make std::os::unix/linux::fs::MetadataExt::a/m/ctime* documentation clearer 2018-11-22 02:36:11 +01:00
Lyndon Brown
a1e9c7fc2e OsStr: clarify len() method documentation 2018-11-21 18:30:46 +00:00
Lyndon Brown
0591ff7525 OsString: mention storage form in discussion
Helps users to understand capacity related values, which may surpise on
Windows.

Also is a step towards clarifying understanding of `OsStr`'s len() return
value.
2018-11-21 18:30:45 +00:00
Bastian Gruber
7933628de5 Remove trailing whitespace 2018-11-21 13:57:56 +01:00
Bastian Gruber
e8dafbaf10 Adjust doc comments 2018-11-21 13:06:22 +01:00
Steve Klabnik
d7b3f5c6ae update various stdlib docs 2018-11-21 06:50:17 -05:00