Commit graph

11927 commits

Author SHA1 Message Date
kennytm
ee18e92684
Rollup merge of #51014 - GuillaumeGomez:env_docs, r=QuietMisdreavus
Add documentation about env! second argument

Fixes #48044.

r? @QuietMisdreavus
2018-05-26 19:32:20 +08:00
Guillaume Gomez
fe9a19580c Add documentation about env! second argument 2018-05-24 20:08:10 +02:00
Nicolas Koch
3f392abdfb Implement suggestions from the PR
- Move loading of atomic bool outside the loop
  - Add comment about TryFrom for future improvement
2018-05-24 14:51:59 +02:00
Tobias Bucher
2a900e2b84 Update the Once docs to use Once::new 2018-05-24 14:09:42 +02:00
Tobias Bucher
1c2abda671 Add Once::new as a way of constructing a Once 2018-05-24 14:08:47 +02:00
Cory Sherman
f7c4a33f32 remove collections::range::RangeArgument
was already moved to ops::RangeBounds (see #30877)
2018-05-24 05:01:40 -07:00
Mark Simulacrum
9e3432447a Switch to 1.26 bootstrap compiler 2018-05-17 08:47:25 -06:00
Nicolas Koch
09d03bc245 Store ENOSYS in a global to avoid unnecessary system calls 2018-05-17 14:10:14 +02:00
kennytm
8366780164
Rollup merge of #50170 - burtonageo:more_cow_from, r=alexcrichton
Implement From for more types on Cow

This is basically https://github.com/rust-lang/rust/pull/48191, except that it should be implemented in a way that doesn't break third party crates.
2018-05-17 05:22:07 +08:00
kennytm
02aedec722
Rollup merge of #50808 - SimonSapin:nonzero, r=alexcrichton
Stabilize num::NonZeroU*

Tracking issue: https://github.com/rust-lang/rust/issues/49137
2018-05-17 05:18:21 +08:00
kennytm
06e6173868
Rollup merge of #50736 - udoprog:env-try-op, r=shepmaster
env: remove unwrap in examples in favor of try op
2018-05-17 05:18:09 +08:00
kennytm
fc6c08e799
Rollup merge of #50726 - udoprog:read2-inner-fn, r=alexcrichton
read2: Use inner function instead of closure

Very minor thing, but there doesn't appear to be a reason to use a closure here.

Generated code is identical in my tests, but I believe it's clearer that nothing from the environment is being used.
2018-05-17 05:18:06 +08:00
Simon Sapin
89d9ca9b50 Stabilize num::NonZeroU*
Tracking issue: https://github.com/rust-lang/rust/issues/49137
2018-05-16 19:11:31 +02:00
Simon Sapin
c536639c1e Remove unstable deprecated num::NonZeroI* types 2018-05-16 19:09:03 +02:00
kennytm
d623f45a40
Rollup merge of #50638 - tbu-:pr_open_cloexec_once, r=nagisa
Don't unconditionally set CLOEXEC twice on every fd we open on Linux

Previously, every `open64` was accompanied by a `ioctl(…, FIOCLEX)`,
because some old Linux version would ignore the `O_CLOEXEC` flag we pass
to the `open64` function.

Now, we check whether the `CLOEXEC` flag is set on the first file we
open – if it is, we won't do extra syscalls for every opened file. If it
is not set, we fall back to the old behavior of unconditionally calling
`ioctl(…, FIOCLEX)` on newly opened files.

On old Linuxes, this amounts to one extra syscall per process, namely
the `fcntl(…, F_GETFD)` call to check the `CLOEXEC` flag.

On new Linuxes, this reduces the number of syscalls per opened file by
one, except for the first file, where it does the same number of
syscalls as before (`fcntl(…, F_GETFD)` to check the flag instead of
`ioctl(…, FIOCLEX)` to set it).
2018-05-16 23:22:45 +08:00
Nicolas Koch
a5e2942861 Fix large file copies on 32 bit platforms 2018-05-16 10:35:19 +02:00
Nicolas Koch
f4c2825c8f Adjust len in every iteration 2018-05-16 10:27:14 +02:00
Nicolas Koch
b605923cc8 Add clarifying comment about offset argument 2018-05-16 10:21:34 +02:00
Nicolas Koch
00ec3cf2a0 Use copy_file_range on android also 2018-05-16 10:17:06 +02:00
Nicolas Koch
834ef9f08a fs: use copy_file_range on linux 2018-05-15 15:25:09 +02:00
Tobias Bucher
6d1da82329 Don't unconditionally set CLOEXEC twice on every fd we open on Linux
Previously, every `open64` was accompanied by a `ioctl(…, FIOCLEX)`,
because some old Linux version would ignore the `O_CLOEXEC` flag we pass
to the `open64` function.

Now, we check whether the `CLOEXEC` flag is set on the first file we
open – if it is, we won't do extra syscalls for every opened file. If it
is not set, we fall back to the old behavior of unconditionally calling
`ioctl(…, FIOCLEX)` on newly opened files.

On old Linuxes, this amounts to one extra syscall per process, namely
the `fcntl(…, F_GETFD)` call to check the `CLOEXEC` flag.

On new Linuxes, this reduces the number of syscalls per opened file by
one, except for the first file, where it does the same number of
syscalls as before (`fcntl(…, F_GETFD)` to check the flag instead of
`ioctl(…, FIOCLEX)` to set it).
2018-05-14 13:20:39 +02:00
John-John Tedro
f73c4a4768 env: remove unwrap in examples in favor of try op 2018-05-14 12:56:18 +02:00
John-John Tedro
56f505e6c6 read2: Use inner function instead of closure 2018-05-14 03:23:32 +02:00
Corey Farwell
2c4b152356 Add “Examples” section header in f32/f64 doc comments.
This is recommend by [RFC 0505] and as far as I know, the only primitive
types without this heading.

[RFC 0505]: c892139be6/text/0505-api-comment-conventions.md (using-markdown)
2018-05-13 15:54:40 -04:00
Tobias Bucher
5d015e1366 Do not silently truncate offsets for read_at/write_at on emscripten
Generate an IO error if the offset is out of bounds for the system call.
2018-05-12 08:39:05 -06:00
Aaron DeVore
bf6804b79c fs::write: Add example writing a &str 2018-05-12 08:39:05 -06:00
Mark Simulacrum
bf832c2a89
Rollup merge of #50602 - Screwtapello:update-canonicalize-docs, r=cramertj
Update canonicalize docs

I was recently working with file-paths in Rust, and I felt let down by the `std::fs::canonicalize` docs, so I figured I should submit a PR with some suggestions.

I was looking for a method to turn a relative path into an absolute path. The `canonicalize` docs didn't mention the words "relative" or "absolute", but they did mention resolving symlinks (which is a kind of canonicalisation and does not imply converting to absolute), so I assumed that's all it did. To remedy this, I've added the word "absolute" to the description of both `std::fs::canonicalize` and `std::path::Path::canonicalize`.

After calling `canonicalize` on Windows, I ran into a bunch of other problems I would not have expected from the function's behaviour on Linux. Specifically, if you call `canonicalize` on a path:

  - it's allowed to be much longer than it otherwise would
  - `.join("a/slash/delimited/path")` gives you a broken path that Windows can't use, where the same operation would have worked perfectly without `canonicalize` (if the path were short enough)
  - the resulting path may confuse other Windows programs if you pass it to them on the command-line, or write it to a config file that they read, etc.

...so I tried to summarize those behaviours too.

If I understand correctly, those behaviours are a side-effect of calling `GetFinalPathNameByHandle`, and the documentation says `canonicalize` might not call that function in future, so maybe those side-effects shouldn't be part of the function's documentation. However, I bet there's a lot of applications deliberately calling `canonicalize` just for the path-length-extension alone, so that particular side-effect is de-facto part of the `canonicalize` interface.
2018-05-12 07:32:29 -06:00
Mark Simulacrum
d7f5e1f5d1
Rollup merge of #50550 - llogiq:fmt-result, r=petrochenkov
use fmt::Result where applicable

This is a quite boring PR, but I think the type alias improves readability, so why not use it?
2018-05-12 07:32:27 -06:00
bors
a006328126 Auto merge of #50611 - alexcrichton:rollup, r=alexcrichton
Rollup of 18 pull requests

Successful merges:

 - #49423 (Extend tests for RFC1598 (GAT))
 - #50010 (Give SliceIndex impls a test suite of girth befitting the implementation (and fix a UTF8 boundary check))
 - #50447 (Fix update-references for tests within subdirectories.)
 - #50514 (Pull in a wasm fix from LLVM upstream)
 - #50524 (Make DepGraph::previous_work_products immutable)
 - #50532 (Don't use Lock for heavily accessed CrateMetadata::cnum_map.)
 - #50538 ( Make CrateNum allocation more thread-safe. )
 - #50564 (Inline `Span` methods.)
 - #50565 (Use SmallVec for DepNodeIndex within dep_graph.)
 - #50569 (Allow for specifying a linker plugin for cross-language LTO)
 - #50572 (Clarify in the docs that `mul_add` is not always faster.)
 - #50574 (add fn `into_inner(self) -> (Idx, Idx)` to RangeInclusive (#49022))
 - #50575 (std: Avoid `ptr::copy` if unnecessary in `vec::Drain`)
 - #50588 (Move "See also" disambiguation links for primitive types to top)
 - #50590 (Fix tuple struct field spans)
 - #50591 (Restore RawVec::reserve* documentation)
 - #50598 (Remove unnecessary mutable borrow and resizing in DepGraph::serialize)
 - #50606 (Retry when downloading the Docker cache.)

Failed merges:

 - #50161 (added missing implementation hint)
 - #50558 (Remove all reference to DepGraph::work_products)
2018-05-10 23:33:13 +00:00
bors
acd3871ba1 Auto merge of #50331 - MartinHusemann:master, r=Kimundi
Map the stack guard page with max protection on NetBSD

On NetBSD the initial mmap() protection of a mapping can not be made
less restrictive with mprotect().

So when mapping a stack guard page, use the maximum protection
we ever want to use, then mprotect() it to the permission we
want it to have initially.

Fixes #50313
2018-05-10 21:02:24 +00:00
Alex Crichton
c798cbbb2c
Rollup merge of #50588 - ExpHP:i-can-see-my-house-from-here, r=frewsxcv
Move "See also" disambiguation links for primitive types to top

Closes #50384.

<details>
<summary>Images</summary>

![rust-slice](https://user-images.githubusercontent.com/1411280/39843148-caa41c3e-53b7-11e8-8123-b57c25a4d9e0.png)

![rust-isize](https://user-images.githubusercontent.com/1411280/39843146-ca94b384-53b7-11e8-85f3-3f5e5d353a05.png)

</details>

r? @steveklabnik
2018-05-10 11:35:33 -05:00
Alex Crichton
be6fab8ca8
Rollup merge of #50572 - frewsxcv:frewsxcv-fma, r=sfackler
Clarify in the docs that `mul_add` is not always faster.

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

Other resources:

- https://users.rust-lang.org/t/why-does-the-mul-add-method-produce-a-more-accurate-result-with-better-performance/1626
- https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_operation
2018-05-10 11:35:29 -05:00
Tim Allen
8720314c02 fs::canonicalize has some important portability concerns. 2018-05-10 18:06:47 +10:00
Tim Allen
9d7eda96ee Mention that fs::canonicalize makes paths absolute. 2018-05-10 18:05:29 +10:00
Michael Lamparski
b8eb91a5ad make std::str link into See also link
also make a drive-by typo fix
2018-05-09 18:30:32 -04:00
Michael Lamparski
8010604b2d move See also links to top 2018-05-09 18:30:32 -04:00
Corey Farwell
0ba1c101dc Clarify in the docs that mul_add is not always faster.
Fixes https://github.com/rust-lang/rust/issues/49842.

Other resources:

- https://users.rust-lang.org/t/why-does-the-mul-add-method-produce-a-more-accurate-result-with-better-performance/1626
- https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_operation
2018-05-09 06:47:37 -07:00
kennytm
4924fea202
Rollup merge of #50511 - Manishearth:must-use, r=QuietMisdreavus
Add some explanations for #[must_use]

`#[must_use]` can be given a string argument which is shown whilst warning for things.

We should add a string argument to most of the user-exposed ones.

I added these for everything but the operators, mostly because I'm not sure what to write there or if we need anything there.
2018-05-09 20:29:46 +08:00
kennytm
bb690c600c
Rollup merge of #49988 - clarcharr:never_docs, r=steveklabnik
Mention Result<!, E> in never docs.

Fixes #48096.
2018-05-09 17:25:04 +08:00
George Burton
7c0f664f15
Fix typo 2018-05-09 07:32:50 +01:00
George Burton
17e262880c Update features to 1.28.0 2018-05-09 07:23:02 +01:00
Andre Bogus
e333725664 use fmt::Result where applicable 2018-05-09 02:01:37 +02:00
Manish Goregaokar
f8b774fbf1 Add explanation for #[must_use] on mutex guards 2018-05-07 10:26:28 -07:00
kennytm
02f6a0335f
Some final touches to ensure ./x.py test --stage 0 src/lib* works 2018-05-06 02:34:07 +08:00
Clar Charr
fc6d6c98de Fixed typos 2018-05-05 00:18:10 -04:00
Josh Stone
b539936845 Remove the deprecated std::net::{lookup_host,LookupHost}
These are unstable, and were deprecated by #47510, since Rust 1.25.  The
internal `sys` implementations are still kept to support the call in the
common `resolve_socket_addr`.
2018-05-03 16:24:21 -07:00
kennytm
4cc4a67cea
Rollup merge of #50406 - ExpHP:concat-nonzero-idents, r=dtolnay
Forbid constructing empty identifiers from concat_idents

The empty identifier is a [reserved identifier](8a37c75a3a/src/libsyntax_pos/symbol.rs (L300-L305)) in rust, apparently used for black magicks like representing the crate root or somesuch... and therefore, being able to construct it is Ungood.  Presumably.

...even if the macro that lets you construct it is so useless that you can't actually do any damage with it. (and believe me, I tried)

Fixes #50403.

**Note:** I noticed that when you try to do something similar with `proc_macro::Term`, the compiler actually catches it and flags the identifier as reserved.  Perhaps a better solution would be to somehow have that same check applied here.
2018-05-04 02:16:39 +08:00
Michael Lamparski
8e38d02d98 update concat_idents doc stubs 2018-05-03 06:49:30 -04:00
Alex Crichton
f6841470f1 Revert "Implement FromStr for PathBuf"
This reverts commit 05a9acc3b8.
2018-05-02 16:39:54 -07:00
Martin Husemann
244e24a312 Add comments and unify guard page setup.
While currently only NetBSD seems to be affected, all systems
implementing PAX MPROTECT in strict mode need this treatment,
and it does not hurt others.
2018-05-02 10:00:33 +02:00