Commit Graph

61058 Commits

Author SHA1 Message Date
Corey Farwell
8163b4b1f2 Rollup merge of #39107 - llogiq:branchless_filter_count, r=alexcrichton
branchless .filter(_).count()

I found that the branchless version is only slower if we have little to no branch misses, which usually isn't the case. I notice speedups between -5% (perfect prediction) and 60% (real world data).
2017-02-05 09:14:40 -05:00
Corey Farwell
4f8ce9efb9 Rollup merge of #39009 - canndrew:default-unit-warnings, r=nikomatsakis
Add warning for () to ! switch

With feature(never_type) enabled diverging type variables will default to `!` instead of `()`. This can cause breakages where a trait is resolved on such a type.

This PR emits a future-compatibility warning when it sees this happen.
2017-02-05 09:14:39 -05:00
Corey Farwell
ca202fe181 Rollup merge of #38983 - APTy:udp-peek, r=aturon
Add peek APIs to std::net

Adds "peek" APIs to `std::net` sockets, including:
- `UdpSocket.peek()`
- `UdpSocket.peek_from()`
- `TcpStream.peek()`

These methods enable socket reads without side-effects. That is, repeated calls to `peek()` return identical data. This is accomplished by providing the POSIX flag `MSG_PEEK` to the underlying socket read operations.

This also moves the current implementation of `recv_from` out of the platform-independent `sys_common` and into respective `sys/windows` and `sys/unix` implementations. This allows for more platform-dependent implementations where necessary.

Fixes #38980
2017-02-05 09:14:38 -05:00
Corey Farwell
c4c6c49e52 Rollup merge of #38959 - Amanieu:atomic128, r=alexcrichton
Add 128-bit atomics

This is currently only supported on AArch64 since that is the only target which unconditionally supports 128-bit atomic operations.

cc #35118
2017-02-05 09:14:37 -05:00
Corey Farwell
6a4c906f7a Rollup merge of #38921 - chris-morgan:windows-unprivileged-symlink-creation, r=alexcrichton
Support unprivileged symlink creation in Windows

Symlink creation on Windows has in the past basically required admin; it’s being opened up a bit in the Creators Update, so that at least people who have put their computers into Developer Mode will be able to create symlinks without special privileges. (It’s unclear from what Microsoft has said whether Developer Mode will be required in the final Creators Update release, but sadly I expect it still will be, so this *still* won’t be as helpful as I’d like.)

Because of compatibility concerns, they’ve hidden this new functionality behind a new flag in the CreateSymbolicLink dwFlags: `SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE`. So we add this flag in order to join the party.

Sources:

- https://blogs.windows.com/buildingapps/2016/12/02/symlinks-windows-10/ is the official announcement (search for CreateSymbolicLink)

- https://news.ycombinator.com/item?id=13096354 on why the new flag.
2017-02-05 09:14:36 -05:00
Corey Farwell
001bfb9e56 Rollup merge of #38518 - nagisa:exec-doc, r=alexcrichton
Expand documentation of process::exit and exec

Show a conventional way to use process::exit when destructors are considered important and also
mention that the same caveats wrt destructors apply to exec as well.
2017-02-05 09:14:34 -05:00
bors
696f5c1fc6 Auto merge of #38161 - durka:rustdoc-crate-attrs, r=alexcrichton
rustdoc: fix doctests with non-feature crate attrs

Fixes #38129.

The book says that any top-level crate attributes at the beginning of a doctest are moved outside the generated `fn main`, but it was only checking for `#![feature`, not `#![`.

These attributes previously caused warnings but were then ignored, so in theory this could change the behavior of doctests in the wild.
2017-02-05 05:54:44 +00:00
bors
d7777ae682 Auto merge of #38103 - zackmdavis:lint_errors_resulting_from_lint_groups_or_warnings_meta-lint_obscure_the_original_lint_name, r=nikomatsakis
note individual lint name in messages set via lint group attribute

![lint_errors_resulting_from_lint_groups_obscure](https://cloud.githubusercontent.com/assets/1076988/20783614/c107d5c8-b749-11e6-85de-eada7f67c986.png)

Resolves #36846.

r? @jonathandturner

-----

***Update*** 16 December (new commits):
![lint_group_makeover_party](https://cloud.githubusercontent.com/assets/1076988/21284540/ff1ae2fc-c3d2-11e6-93be-d0689f5fa7a8.png)
2017-02-05 01:22:54 +00:00
bors
ea7a6486a2 Auto merge of #38426 - vadimcn:nobundle, r=alexcrichton
Implement kind="static-nobundle" (RFC 1717)

This implements the "static-nobundle" library kind (last item from #37403).

Rustc handles "static-nobundle" libs very similarly to dylibs, except that on Windows, uses of their symbols do not get marked with "dllimport".  Which is the whole point of this feature.
2017-02-04 21:13:07 +00:00
Tyler Julian
a40be0857c libstd/net: Add peek APIs to UdpSocket and TcpStream
These methods enable socket reads without side-effects. That is,
repeated calls to peek() return identical data. This is accomplished
by providing the POSIX flag MSG_PEEK to the underlying socket read
operations.

This also moves the current implementation of recv_from out of the
platform-independent sys_common and into respective sys/windows and
sys/unix implementations. This allows for more platform-dependent
implementations.
2017-02-04 12:00:19 -08:00
Zack M. Davis
72af42e897 note wording: lint implied by lint group, not lint group implies lint 2017-02-04 10:51:11 -08:00
Zack M. Davis
778958f256 make lint-group-style test a UI rather than a compile-fail test
As suggested by Niko Matsakis in review
(https://github.com/rust-lang/rust/pull/38103#discussion_r94460982) regarding
the endeavor prompted by #36846.
2017-02-04 10:51:11 -08:00
Zack M. Davis
93014467f8 note lint group set on command line triggering individual lint
Previously, the note/message for the source of a lint being the command
line unconditionally named the individual lint, even if the actual
command specified a lint group (e.g., `-D warnings`); here, we take note
of the actual command options so we can be more specific.

This remains in the matter of #36846.
2017-02-04 10:51:11 -08:00
Zack M. Davis
65b0554143 note individual lint name set via lint group attribute in notes
Warning or error messages set via a lint group attribute
(e.g. `#[deny(warnings)]`) should still make it clear which individual
lint (by name) was triggered, similarly to how we include "on by
default" language for default lints. This—and, while we're here, the
existing "on by default" language—can be tucked into a note rather than
cluttering the main error message. This occasions the slightest of
refactorings (we now have to get the diagnostic-builder with the main
message first, before matching on the lint source).

This is in the matter of #36846.
2017-02-04 10:44:22 -08:00
bors
eb5cb9545c Auto merge of #39424 - nikomatsakis:incr-comp-skip-typeck-3, r=mw
rewrite the predecessors code to create a reduced graph

The old code created a flat listing of "HIR -> WorkProduct" edges.
While perfectly general, this could lead to a lot of repetition if the
same HIR nodes affect many work-products. This is set to be a problem
when we start to skip typeck, since we will be adding a lot more
"work-product"-like nodes.

The newer code uses an alternative strategy: it "reduces" the graph
instead. Basically we walk the dep-graph and convert it to a DAG, where
we only keep intermediate nodes if they are used by multiple
work-products.

This DAG does not contain the same set of nodes as the original graph,
but it is guaranteed that (a) every output node is included in the graph
and (b) the set of input nodes that can reach each output node is
unchanged.

(Input nodes are basically HIR nodes and foreign metadata; output nodes
are nodes that have assocaited state which we will persist to disk in
some way. These are assumed to be disjoint sets.)

r? @michaelwoerister

Fixes #39494
2017-02-04 18:38:56 +00:00
bors
8967085617 Auto merge of #39533 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 3 pull requests

- Successful merges: #39486, #39506, #39517
- Failed merges:
2017-02-04 16:04:08 +00:00
Guillaume Gomez
e204987bdb Rollup merge of #39517 - brson:relnotes-151, r=alexcrichton
Update relnotes for 1.15.1

I already checked this into stable, but it needs to be on master/beta too.
2017-02-04 14:41:25 +01:00
Guillaume Gomez
2ce93c1cd2 Rollup merge of #39506 - GuillaumeGomez:hashmap_docs, r=frewsxcv
Add missing urls in HashMap

r? @frewsxcv
2017-02-04 14:41:24 +01:00
Guillaume Gomez
d81b440e92 Rollup merge of #39486 - phungleson:tiny-doc-wording-change, r=alexcrichton
Tiny doc wording change

Fix https://github.com/rust-lang/rust/issues/39366
2017-02-04 14:41:23 +01:00
bors
e4eea73306 Auto merge of #39434 - nikomatsakis:incr-comp-skip-typeck-2, r=eddyb
Miscellaneous refactors around how lints and typeck interact

This is preparation for making incr. comp. skip typeck. The main gist of is trying to rationalize the outputs from typeck that are not part of tables:

- one bit of output is the `used_trait_imports` set, which becomes something we track for dependencies
- the other big of output are various lints; we used to store these into a table on sess, but this work stores them into the`TypeckTables`, and then makes the lint pass consult that
    - I think it probably makes sense to handle errors similarly, eventually, but that's not necessary now

r? @eddyb

Fixes #39495
2017-02-04 12:38:13 +00:00
Niko Matsakis
b3096e25c0 pacify the mercilous tidy, improve cycle unit test 2017-02-04 06:09:19 -05:00
bors
8568fdc499 Auto merge of #39440 - F001:SpecializeCow, r=bluss
std: Add ToString trait specialization for Cow<'a, str> and String

There is a specialized version of ToString for str type in std. I think there are other types can also benefit from specialization. `Cow` and `String` are the most obvious one.

r? @bluss
2017-02-04 10:04:06 +00:00
bors
7df5c0f17b Auto merge of #39425 - jakllsch:netbsd-a, r=alexcrichton
Don't build gcc_personality_v0.c on NetBSD either
2017-02-04 07:29:28 +00:00
Andrew Cann
42f3ac5ea6 Expand defaulted unit test 2017-02-04 14:17:58 +08:00
Andrew Cann
7444d07154 Fix test 2017-02-04 14:03:28 +08:00
bors
1b5c7ac833 Auto merge of #39399 - clarcharr:iter_rfind, r=alexcrichton
Add Iterator::rfind.

I found it weird that `Iterator` has `rpostition` but not `rfind`. This adds that method.
2017-02-04 04:53:53 +00:00
Vadim Chugunov
7504897e6b Don't link "nobundle" libs which had already been included in upstream crate. 2017-02-03 18:25:45 -08:00
Niko Matsakis
2fc15868a2 go back to the older model of coherence collect 2017-02-03 21:13:59 -05:00
bors
c781fc4a6a Auto merge of #36320 - GuillaumeGomez:rustdoc_test_info, r=alexcrichton
Add information in case of markdown block code test failure

r? @steveklabnik

cc @jonathandturner
2017-02-04 01:32:21 +00:00
Brian Anderson
d650cf5c38 Update relnotes for 1.15.1
I already checked this into stable, but it needs to be on master/beta too.
2017-02-04 01:12:39 +00:00
bors
0648517faf Auto merge of #39463 - alexcrichton:update-bootstrap, r=alexcrichton
Bump version, upgrade bootstrap

This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 22:55:28 +00:00
Guillaume Gomez
2a8ee8c804 Add missing urls in HashMap 2017-02-03 22:38:44 +01:00
Alex Crichton
626e754473 Bump version, upgrade bootstrap
This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 13:25:46 -08:00
bors
86d9ed6c82 Auto merge of #39356 - krdln:format-with-capacity, r=aturon
Use `String::with_capacity` in `format!`

Add an `Arguments::estimated_capacity` to estimate the length of formatted text and use it in `std::fmt::format` as the initial capacity of the buffer.

The capacity is calculated based on the literal parts of format string, see the details in the implementation.

Some benches:
```rust
empty:       format!("{}", black_box(""))
literal:     format!("Literal")
long:        format!("Hello Hello Hello Hello, {}!", black_box("world"))
long_rev:    format!("{}, hello hello hello hello!", black_box("world"))
long_rev_2:  format!("{}{}, hello hello hello hello!", 1, black_box("world"))
short:       format!("Hello, {}!", black_box("world"))
short_rev:   format!("{}, hello!", black_box("world"))
short_rev_2: format!("{}{}, hello!", 1, black_box("world"))
surround:    format!("aaaaa{}ccccc{}eeeee", black_box("bbbbb"), black_box("eeeee"))
two_spaced:  format!("{} {}", black_box("bbbbb"), black_box("eeeee"))
worst_case:  format!("{} a long piece...", black_box("and even longer argument. not sure why it has to be so long"))
```
```
 empty        25            28                      3   12.00%
 literal      35            29                     -6  -17.14%
 long         80            46                    -34  -42.50%
 long_rev     79            45                    -34  -43.04%
 long_rev_2   111           66                    -45  -40.54%
 short        73            46                    -27  -36.99%
 short_rev    74            76                      2    2.70%
 short_rev_2  107           108                     1    0.93%
 surround     142           65                    -77  -54.23%
 two_spaced   111           115                     4    3.60%
 worst_case   89            101                    12   13.48%
```
2017-02-03 20:09:36 +00:00
Niko Matsakis
7abab8aee0 add a comment about optimality that somehow got removed 2017-02-03 12:42:18 -05:00
Michał Krasnoborski
0267529681 Merge remote-tracking branch 'upstream/master' into format-with-capacity 2017-02-03 17:48:07 +01:00
Son
3c020df3e9 tiny doc wording change 2017-02-04 00:16:56 +11:00
Guillaume Gomez
b7f1d7a4bd Update to last cargo version 2017-02-03 13:55:18 +01:00
bors
aed6410a7b Auto merge of #39418 - redox-os:redox_fs_ext, r=brson
Add dev and ino to MetadataExt

This adds .dev() and .ino() to MetadataExt on Redox
2017-02-03 11:42:32 +00:00
Niko Matsakis
afbf6c8246 s/in_index/input_index/ 2017-02-03 06:09:47 -05:00
Niko Matsakis
ef9ae8581f make dirty process O(dirty)
The old algorithm was O(graph)
2017-02-03 06:08:27 -05:00
Andrew Cann
40c9538d2c Fix test 2017-02-03 18:48:15 +08:00
Andrew Cann
6a99573513 Fix test 2017-02-03 18:48:15 +08:00
Andrew Cann
5c90dd7978 Use a proper future-compatibility lint 2017-02-03 18:48:15 +08:00
Andrew Cann
085f046c28 Add is_defaulted_unit helper method 2017-02-03 18:48:15 +08:00
Andrew Cann
5dbaefb608 Hash TyTuple's defaulted flag 2017-02-03 18:48:15 +08:00
Andrew Cann
c570cd6636 Fix make tidy 2017-02-03 18:48:15 +08:00
Andrew Cann
2cc84df44c Add warning for () to ! switch 2017-02-03 18:48:15 +08:00
Guillaume Gomez
723eed3228 Update cargo version to last master 2017-02-03 11:08:20 +01:00
Guillaume Gomez
7c4b79c80a Update run-make/issue-22131 to new rustdoc --test format 2017-02-03 11:08:20 +01:00