about summary refs log tree commit diff
path: root/src/libstd
AgeCommit message (Collapse)AuthorLines
2018-08-28split paragraphRalf Jung-3/+5
2018-08-28Auto merge of #53404 - oconnor663:current_dir_behavior, r=alexcrichtonbors-0/+10
document the platform-specific behavior of Command::current_dir See also https://github.com/rust-lang/rust/issues/37868. Here's my initial wording: > Note that if the program path is relative (e.g. `"./script.sh"`), the interaction between that path and `current_dir` varies across platforms. Windows currently ignores `current_dir` when locating the program, but Unix-like systems interpret the program path relative to `current_dir`. These implementation details aren't considered stable, and it's recommended to call `canonicalize` to get an absolute program path instead of using relative paths and `current_dir` together. I'd like to get feedback on: - _Should_ we consider those details stable? It might be disruptive to change them, regardless of what I can get away with claiming in docs :) - Is `canonicalize` an appropriate recommendation? As discussed in #37868 above, there are reasons it's not called automatically in the `Command` implementation.
2018-08-28Auto merge of #53272 - mark-i-m:anon_param_error_now, r=nikomatsakisbors-1/+8
Warn on anon params in 2015 edition cc #41686 https://github.com/rust-lang/rfcs/pull/2522 cc @Centril @nikomatsakis TODO: - [x] Make sure the tests pass. - [x] Make sure there is rustfix-able suggestion. Current plan is to just suggest `_ : Foo` - [x] Add a rustfix ui test. EDIT: It seems I already did the last two in #48309
2018-08-27Auto merge of #53227 - nivkner:pin_move, r=RalfJungbors-3/+5
move the Pin API into its own module for centralized documentation This implements the change proposed by @withoutboats in #49150, as suggested by @RalfJung in the review of #53104, along with the documentation that was originally in it, that was deemed more appropriate in module-level documentation. r? @RalfJung
2018-08-27fix a typo: taget_env -> target_envJack O'Connor-27/+27
This typo was introduced in https://github.com/rust-lang/rust/pull/47334. A couple tests bitrotted as a result, so we fix those too, and move them to a more sensible place.
2018-08-27Auto merge of #53441 - toidiu:ak-fix53419, r=nikomatsakisbors-0/+1
fix for late-bound regions Fix for https://github.com/rust-lang/rust/issues/53419 r? @nikomatsakis
2018-08-27Fix anon param + make it allow-by-defMark Mansi-1/+8
2018-08-27Auto merge of #53640 - alexcrichton:more-symbol-tweaks, r=michaelwoeristerbors-4/+4
rustc: Continue to tweak "std internal symbols" In investigating [an issue][1] with `panic_implementation` defined in an executable that's optimized I once again got to rethinking a bit about the `rustc_std_internal_symbol` attribute as well as weak lang items. We've sort of been non-stop tweaking these items ever since their inception, and this continues to the trend. The crux of the bug was that in the reachability we have a [different branch][2] for non-library builds which meant that weak lang items (and std internal symbols) weren't considered reachable, causing them to get eliminiated by ThinLTO passes. The fix was to basically tweak that branch to consider these symbols to ensure that they're propagated all the way to the linker. Along the way I've attempted to erode the distinction between std internal symbols and weak lang items by having weak lang items automatically configure fields of `CodegenFnAttrs`. That way most code no longer even considers weak lang items and they're simply considered normal functions with attributes about the ABI. In the end this fixes the final comment of #51342 [1]: https://github.com/rust-lang/rust/issues/51342#issuecomment-414368019 [2]: https://github.com/rust-lang/rust/blob/35bf1ae25799a4e62131159f052e0a3cbd27c960/src/librustc/middle/reachable.rs#L225-L238
2018-08-26rustc: Continue to tweak "std internal symbols"Alex Crichton-4/+4
In investigating [an issue][1] with `panic_implementation` defined in an executable that's optimized I once again got to rethinking a bit about the `rustc_std_internal_symbol` attribute as well as weak lang items. We've sort of been non-stop tweaking these items ever since their inception, and this continues to the trend. The crux of the bug was that in the reachability we have a [different branch][2] for non-library builds which meant that weak lang items (and std internal symbols) weren't considered reachable, causing them to get eliminiated by ThinLTO passes. The fix was to basically tweak that branch to consider these symbols to ensure that they're propagated all the way to the linker. Along the way I've attempted to erode the distinction between std internal symbols and weak lang items by having weak lang items automatically configure fields of `CodegenFnAttrs`. That way most code no longer even considers weak lang items and they're simply considered normal functions with attributes about the ABI. In the end this fixes the final comment of #51342 [1]: https://github.com/rust-lang/rust/issues/51342#issuecomment-414368019 [2]: https://github.com/rust-lang/rust/blob/35bf1ae25799a4e62131159f052e0a3cbd27c960/src/librustc/middle/reachable.rs#L225-L238
2018-08-26Reduce number of syscalls in `rand`Tobias Bucher-39/+57
In case that it is statically known that the OS doesn't support `getrandom` (non-Linux) or becomes clear at runtime that `getrandom` isn't available (`ENOSYS`), the opened fd ("/dev/urandom") isn't closed after the function, so that future calls can reuse it. This saves repeated `open`/`close` system calls at the cost of one permanently open fd. Additionally, this skips the initial zero-length `getrandom` call and directly hands the user buffer to the operating system, saving one `getrandom` syscall.
2018-08-26Rollup merge of #53651 - GuillaumeGomez:struct-keyword, r=QuietMisdreavusGuillaume Gomez-0/+21
Add struct keyword doc Slowly, one keyword at a time. r? @QuietMisdreavus
2018-08-26Auto merge of #53619 - japaric:panic-handler, r=SimonSapinbors-2/+4
add #[panic_handler]; deprecate #[panic_implementation] r? @SimonSapin cc #44489
2018-08-24check that adding infer-outlives requirement to all crates worksNiko Matsakis-0/+1
2018-08-24Auto merge of #53662 - kennytm:rollup, r=kennytmbors-0/+2
Rollup of 16 pull requests Successful merges: - #53311 (Window Mutex: Document that we properly initialize the SRWLock) - #53503 (Discourage overuse of mem::forget) - #53545 (Fix #50865: ICE on impl-trait returning functions reaching private items) - #53559 (add macro check for lint) - #53562 (Lament the invincibility of the Turbofish) - #53563 (use String::new() instead of String::from(""), "".to_string(), "".to_owned() or "".into()) - #53592 (docs: minor stylistic changes to str/string docs) - #53594 (Update RELEASES.md to include clippy-preview) - #53600 (Fix a grammatical mistake in "expected generic arguments" errors) - #53614 (update nomicon and book) - #53617 (tidy: Stop requiring a license header) - #53618 (Add missing fmt examples) - #53636 (Prefer `.nth(n)` over `.skip(n).next()`.) - #53644 (Use SmallVec for SmallCStr) - #53664 (Remove unnecessary closure in rustc_mir/build/mod.rs) - #53666 (Added rustc_codegen_llvm to compiler documentation.)
2018-08-24Rollup merge of #53311 - RalfJung:windows-mutex, r=retep998kennytm-0/+2
Window Mutex: Document that we properly initialize the SRWLock See https://github.com/rust-lang/rust/issues/35836
2018-08-23Stabilize 'attr_literals' feature.Sergio Benitez-1/+0
2018-08-23Add struct keyword docGuillaume Gomez-0/+21
2018-08-23add #[panic_handler]; deprecate #[panic_implementation]Jorge Aparicio-2/+4
2018-08-23move pin module to liballoc and reexport thatNiv Kaminer-97/+2
2018-08-23add top-level documentation to the std pin moduleNiv Kaminer-1/+80
2018-08-23move PinBox into pin module and export through stdNiv Kaminer-0/+2
2018-08-23move PinMut into pin module and export through stdNiv Kaminer-3/+19
2018-08-22Allow panicking with string literal messages inside constantsOliver Schneider-0/+1
2018-08-21Rollup merge of #53329 - frewsxcv:frewsxcv-ptr-add-sub, r=RalfJungkennytm-4/+4
Replace usages of ptr::offset with ptr::{add,sub}. Rust provides these helper methods – so let's use them!
2018-08-21Rollup merge of #53496 - matthiaskrgr:codespell_08_2018, r=varkorkennytm-6/+6
Fix typos found by codespell.
2018-08-21Rollup merge of #53370 - jkozlowski:stabilize-macro_vis_matcher, r=cramertjkennytm-1/+1
Stabilize macro_vis_matcher This PR should stabilize [macro_vis_matcher](https://github.com/rust-lang/rust/issues/41022) feature. - [ ] "reference" book changes: https://github.com/rust-lang-nursery/reference/pull/400 - [ ] "Rust by example" book changes: https://github.com/rust-lang/rust-by-example/pull/1096 - [ ] "clippy" changes: https://github.com/rust-lang-nursery/rust-clippy/pull/3055 r? @cramertj
2018-08-21Add doc for impl From for AddrSon-0/+8
2018-08-21Correctly parenthesize dyn Error + 'static.Without Boats-1/+1
2018-08-20Fix feature name.Without Boats-1/+1
2018-08-20document the platform-specific behavior of Command::current_dirJack O'Connor-0/+10
2018-08-20Add Error::source method per RFC 2504.Without Boats-1/+66
2018-08-21Rollup merge of #53213 - tmccombs:stable-ipconstructors, r=KodrAuskennytm-20/+5
Stabilize IP associated constants Fixes #44582
2018-08-20Replace usages of ptr::offset with ptr::{add,sub}.Corey Farwell-4/+4
2018-08-20Add doc for impl From for ErrorSon-0/+6
2018-08-19Stabilize macro_vis_matcherJakub Kozlowski-1/+1
2018-08-19Fix typos found by codespell.Matthias Krüger-6/+6
2018-08-18Auto merge of #53436 - cuviper:trace_fn-stop, r=alexcrichtonbors-24/+30
std: stop backtracing when the frames are full This is a defensive measure to mitigate the infinite unwind loop seen in #53372. That case will still repeatedly unwind `__rust_try`, but now it will at least stop when `cx.frames` is full. r? @alexcrichton
2018-08-17Stabilize `use_extern_macros`Vadim Petrochenkov-1/+1
2018-08-16std: stop backtracing when the frames are fullJosh Stone-24/+30
2018-08-17Rollup merge of #53395 - varkor:__Nonexhaustive-to-non_exhaustive, r=shepmasterkennytm-19/+11
Use #[non_exhaustive] on internal enums This replaces `__Nonexhaustive` variants (and variants thereof) with `#[non_exhaustive]`. These were mostly unstable previously, with the exception of the `cloudabi` enums and `Level` in proc_macro: these were `#[doc(hidden)]`, so clearly intended not to be used directly. It should be safe to replace all of these.
2018-08-17Rollup merge of #53377 - cuviper:pointer-elf_size, r=alexcrichtonkennytm-1/+2
std: Use target_pointer_width for BACKTRACE_ELF_SIZE The former code used `target.contains("64")` to detect Elf64 targets, but this is inaccurate in a few cases: - `s390x-unknown-linux-gnu` is 64-bit - `sparcv9-sun-solaris` is 64-bit - `x86_64-unknown-linux-gnux32` is 32-bit Instead the `std` build script can use `CARGO_CFG_TARGET_POINTER_WIDTH` to reliably detect 64-bit targets for libbacktrace. Also update to backtrace-sys 0.1.24 for alexcrichton/backtrace-rs#122.
2018-08-15Start adding an `aarch64-pc-windows-msvc` targetAlex Crichton-4/+94
This commit adds the necessary definitions for target specs and such as well as the necessary support in libstd to compile basic `aarch64-pc-windows-msvc` binaries. The target is not currently built on CI, but it can be built locally with: ./configure --target=aarch64-pc-windows-msvc --set rust.lld ./x.py build src/libstd --target aarch64-pc-windows-msvc Currently this fails to build `libtest` due to a linker bug (seemingly in LLD?) which hasn't been investigate yet. Otherwise though with libstd you can build a hello world program (linked with LLD). I've not tried to execute it yet, but it at least links! Full support for this target is still a long road ahead, but this is hopefully a good stepping stone to get started. Points of note about this target are: * Currently defaults to `panic=abort` as support is still landing in LLVM for SEH on AArch64. * Currently defaults to LLD as a linker as I was able to get farther with it than I was with `link.exe`
2018-08-15Make cloudapi enums #[non_exhaustive]varkor-9/+9
2018-08-15Make std::io::Error #[non_exhaustive]varkor-10/+2
2018-08-15document effect of join on memory orderingRalf Jung-1/+5
2018-08-14Stabilize IP associated constantsThayne McCombs-20/+5
Fixes #44582
2018-08-14std: Use target_pointer_width for BACKTRACE_ELF_SIZEJosh Stone-1/+2
The former code used `target.contains("64")` to detect Elf64 targets, but this is inaccurate in a few cases: - `s390x-unknown-linux-gnu` is 64-bit - `sparcv9-sun-solaris` is 64-bit - `x86_64-unknown-linux-gnux32` is 32-bit Instead the `std` build script can use `CARGO_CFG_TARGET_POINTER_WIDTH` to reliably detect 64-bit targets for libbacktrace. Also update to backtrace-sys 0.1.24 for alexcrichton/backtrace-rs#122.
2018-08-14Cross reference io::copy and fs::copy in docs.Corey Farwell-0/+11
Fixes https://github.com/rust-lang/rust/issues/52524.
2018-08-14Auto merge of #52936 - felixrabe:patch-1, r=alexcrichtonbors-0/+28
Document #39364 – Panic in mpsc::Receiver::recv_timeout I can still reproduce #39364 with the example code at https://github.com/rust-lang/rust/issues/39364#issuecomment-320637702. I'm opening this PR in an attempt to document this bug as a known issue in [libstd/sync/mpsc/mod.rs](https://github.com/rust-lang/rust/blob/master/src/libstd/sync/mpsc/mod.rs). Inputs very much welcome. ([Nightly docs for `recv_timeout`.](https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Receiver.html?search=#method.recv_timeout))
2018-08-14Rollup merge of #53257 - faern:ip-method-idiomatic-improvement, r=TimNNkennytm-47/+50
Idiomatic improvements to IP method Since match ergonomics and slice patterns are stable this might be more idiomatic modern Rust implementations of these methods? Or well, slice patterns with `..` are not stabilized yet, so maybe we want to specify all fields but with `_`?