Permalink
Switch branches/tags
Nothing to show
Commits on Jan 13, 2017
  1. update mailmap

    steveklabnik committed Jan 13, 2017
  2. Auto merge of #38890 - petrochenkov:noresolve, r=nrc

    resolve: Do not use "resolve"/"resolution" in error messages
    
    Use less jargon-y wording instead.
    `cannot find <struct> <S> in <this scope>` and `cannot find <struct> <S> in <module a::b>` are used for base messages (this also harmonizes nicely with "you can import it into scope" suggestions) and `not found in <this scope>` and `not found in <a::b>` are used for short labels in fall-back case.
    I tweaked some other diagnostics to avoid using "resolve" (see, e.g., `librustc_resolve/macros.rs`), but haven't touched messages for imports.
    
    Closes rust-lang#38750
    r? @nrc
    bors committed Jan 13, 2017
  3. Auto merge of #38909 - clarcharr:char_struct_display, r=alexcrichton

    Implement Display for char Escape*, To*case.
    
    See: rust-lang/rfcs#1848.
    
    A good example of where this is useful would be in the example `print!("{}", 'ß'.to_uppercase())`.
    
    Not sure if this requires a formal RFC, but I decided to write the code for it anyway regardless.
    bors committed Jan 13, 2017
  4. Auto merge of #38748 - alexcrichton:upload, r=brson

    travis: Start uploading artifacts on commits
    
    This commit starts adding the infrastructure for uploading release artifacts
    from AppVeyor/Travis on each commit. The idea is that eventually we'll upload a
    full release to AppVeyor/Travis in accordance with plans [outlined earlier].
    
    Right now this configures Travis/Appveyor to upload all tarballs in the `dist`
    directory, and various images are updated to actually produce tarballs in these
    directories. These are nowhere near ready to be actual release artifacts, but
    this should allow us to play around with it and test it out. Once this commit
    lands we should start seeing artifacts uploaded on each commit.
    
    [outlined earlier]: https://internals.rust-lang.org/t/rust-ci-release-infrastructure-changes/4489
    bors committed Jan 13, 2017
  5. Auto merge of #38675 - infinity0:more-jemalloc-fixes, r=alexcrichton

    More jemalloc fixes
    
    - Disable jemalloc on s390x as well (closes #38596)
    - Disable jemalloc tests on platforms where it is disabled (closes #38612)
    bors committed Jan 13, 2017
Commits on Jan 12, 2017
  1. travis: Start uploading artifacts on commits

    This commit starts adding the infrastructure for uploading release artifacts
    from AppVeyor/Travis on each commit. The idea is that eventually we'll upload a
    full release to AppVeyor/Travis in accordance with plans [outlined earlier].
    
    Right now this configures Travis/Appveyor to upload all tarballs in the `dist`
    directory, and various images are updated to actually produce tarballs in these
    directories. These are nowhere near ready to be actual release artifacts, but
    this should allow us to play around with it and test it out. Once this commit
    lands we should start seeing artifacts uploaded on each commit.
    
    [outlined earlier]: https://internals.rust-lang.org/t/rust-ci-release-infrastructure-changes/4489
    alexcrichton committed Jan 1, 2017
  2. Auto merge of #38650 - infinity0:master, r=alexcrichton

    Detect mips CPUs in ./configure
    
    This mirrors existing logic already in src/bootstrap/bootstrap.py
    bors committed Jan 12, 2017
  3. Auto merge of #38814 - Ralith:cfg-fields, r=jseyfried

    syntax: enable attributes and cfg on struct fields
    
    This enables conditional compilation of field initializers in a struct literal, simplifying construction of structs whose fields are themselves conditionally present. For example, the intializer for the constant in the following becomes legal, and has the intuitive effect:
    
    ```rust
    struct Foo {
        #[cfg(unix)]
        bar: (),
    }
    
    const FOO: Foo = Foo {
        #[cfg(unix)]
        bar: (),
    };
    ```
    
    It's not clear to me whether this calls for the full RFC process, but the implementation was simple enough that I figured I'd begin the conversation with code.
    bors committed Jan 12, 2017
  4. Detect mips CPUs in ./configure

    This mirrors existing logic already in src/bootstrap/bootstrap.py
    infinity0 committed Dec 28, 2016
  5. Disable jemalloc on s390x as well (closes #38596)

    See also #37320 and #37392
    infinity0 committed Dec 29, 2016
  6. Auto merge of #38569 - chris-morgan:rustdoc-highlight-kw-2, r=stevekl…

    …abnik
    
    Fix rustdoc highlighting of `&` and `*`
    
    Whitespace tokens were included, so the span check used with `&` was incorrect, and it was never highlighted as kw-2 (RefKeyword).
    
    The `*` in `*foo` and `*const T` should also be highlighted kw-2, so I added them. Note that this *will* cause mishighlighting of code like `1*2`, but that should have been written `1 * 2`. Same deal with `1&2`.
    bors committed Jan 12, 2017
  7. Auto merge of #38779 - Craig-Macomber:bench, r=alexcrichton

    Do not run outer setup part of benchmarks multiple times to Fix issue 20142
    
    Fix #20142
    
    This is my first real rust code, so I expect the quality is quite bad. Please let me know in which ways it is horrible and I'll fix it.
    
    Previously the whole benchmark function was rerun many times, but with this change, only the callback passed to iter is rerun. This improves performances by saving benchmark startup time. The setup used to be called a minimum of 101 times, and now only runs once.
    
    I wasn't sure exactly what should be done for the case where iter is never called, so I left a FIXME for that: currently it does not error, and I added tests to cover that.
    
    I have left the algorithm and statistics unchanged: I don't like how the minimum number of runs is 301 (that's bad for very slow benchmarks) but I consider such changes out of scope for this fix.
    bors committed Jan 12, 2017
  8. Auto merge of #38654 - alexcrichton:rustbuild-destdir, r=brson

    rustbuild: Implement DESTDIR support
    
    This commit primarily starts supporting the `DESTDIR` environment variable like
    the old build system. Along the way this brings `config.toml` up to date with
    support in `config.mk` with install options supported.
    
    Closes #38441
    bors committed Jan 12, 2017
  9. Auto merge of #37926 - bluss:from-utf8-small-simplification, r=sfackler

    UTF-8 validation: Compute block end upfront
    
    Simplify the conditional used for ensuring that the whole word loop is
    only used if there are at least two whole words left to read.
    
    This makes the function slightly smaller and simpler, a 0-5% reduction
    in runtime for various test cases.
    bors committed Jan 12, 2017
  10. Auto merge of #38867 - alexcrichton:ignore-test-on-windows, r=brson

    std: Ignore close_read_wakes_up on Windows
    
    It looks like in practice at least this test will not pass on Windows.
    Empirically it is prone to blocking forever, presumably because a call to
    `shutdown` doesn't actually wake up other threads on Windows.
    
    We don't document this as a guarantee for `shutdown`, nor do we internally rely
    on it. This test originated in a time long since passed when it was leveraged
    for canceling I/O, but nowadays there's nothing fancy happening in the standard
    library so it's not really a productive test anyway, hence just ignoring it on
    Windows.
    
    Closes #31657
    bors committed Jan 12, 2017
  11. Auto merge of #38605 - estebank:fix-38371, r=nikomatsakis

    Suggest solutions for `fn foo(&foo: Foo)`
    
    For a given file:
    
    ```rust
    struct Foo {}
    
    fn foo(&foo: Foo) {}
    ```
    
    suggest:
    
    ```
    error[E0308]: mismatched types
     --> file.rs:3:8
      |
    3 | fn foo(&foo: Foo) {}
      |        ^^^^ expected struct `Foo`, found reference
      |
      = note: expected type `Foo`
      = note:    found type `&_`
      = help: did you mean `foo: &Foo`?
    ```
    
    Fix #38371.
    bors committed Jan 12, 2017
Commits on Jan 11, 2017
  1. Auto merge of #38313 - jseyfried:self_imports, r=nrc

    resolve: clean up the semantics of `self` in an import list
    
    Change `self` in an import list `use foo::bar::{self, ...};` to import `bar` only in the type namespace. Today, `bar` is imported in every namespace in which `foo::bar` is defined.
    
    This is a [breaking-change], see rust-lang#38293 (comment) for examples of code that would break.
    
    Fixes #38293.
    r? @nrc
    bors committed Jan 11, 2017
  2. Auto merge of #38989 - arielb1:constant-mir-overflow2, r=eddyb

    fix function arguments in constant promotion
    
    we can't create the target block until *after* we promote the arguments - otherwise the arguments will be promoted into the target block. oops.
    
    Fixes #38985.
    
    This is a regression introduced in the beta-nominated #38833, so beta-nominating this one too (sorry @brson).
    
    r? @eddyb
    bors committed Jan 11, 2017
  3. Auto merge of #38984 - alexcrichton:less-debuginfo, r=brson

    rustbuild: Don't enable debuginfo in rustc
    
    In #37280 we enabled line number debugging information in release artifacts,
    primarily to close out #36452 where debugging information was critical for MSVC
    builds of Rust to be useful in production. This commit, however, apparently had
    some unfortunate side effects.
    
    Namely it was noticed in #37477 that if `RUST_BACKTRACE=1` was set then any
    compiler error would take a very long time for the compiler to exit. The cause
    of the problem here was somewhat deep:
    
    * For all compiler errors, the compiler will `panic!` with a known value. This
      tears down the main compiler thread and allows cleaning up all the various
      resources. By default, however, this panic output is suppressed for "normal"
      compiler errors.
    * When `RUST_BACKTRACE=1` was set this caused every compiler error to generate a
      backtrace.
    * The libbacktrace library hits a pathological case where it spends a very long
      time in its custom allocation function, `backtrace_alloc`, because the
      compiler has so much debugging information. More information about this can be
      found in #29293 with a summary at the end of #37477.
    
    To solve this problem this commit simply removes debuginfo from the compiler but
    not from the standard library. This should allow us to keep #36452 closed while
    also closing #37477. I've measured the difference to be orders of magnitude
    faster than it was before, so we should see a much quicker time-to-exit after a
    compile error when `RUST_BACKTRACE=1` is set.
    
    Closes #37477
    Closes #37571
    bors committed Jan 11, 2017
  4. Auto merge of #38925 - petrochenkov:varass, r=jseyfried

    Fix ICE when variant is used as a part of associated path
    
    Fixes rust-lang#38862
    r? @jseyfried
    bors committed Jan 11, 2017
  5. fix function arguments in constant promotion

    we can't create the target block until *after* we promote the arguments
    - otherwise the arguments will be promoted into the target block. oops.
    
    Fixes #38985.
    arielb1 committed Jan 11, 2017
  6. Auto merge of #38916 - estebank:pad-suggestion-list, r=nikomatsakis

    Teach diagnostics to correct margin of multiline messages
    
    Make the suggestion list have a correct padding:
    
    ```
    error[E0308]: mismatched types
     --> file.rs:3:20
      |
    3 |     let x: usize = "";
      |                    ^^ expected usize, found reference
      |
      = note: expected type `usize`
      = note:    found type `&'static str`
      = help: here are some functions which might fulfill your needs:
              - .len()
              - .foo()
              - .bar()
    ```
    bors committed Jan 11, 2017
  7. rustbuild: Don't enable debuginfo in rustc

    In #37280 we enabled line number debugging information in release artifacts,
    primarily to close out #36452 where debugging information was critical for MSVC
    builds of Rust to be useful in production. This commit, however, apparently had
    some unfortunate side effects.
    
    Namely it was noticed in #37477 that if `RUST_BACKTRACE=1` was set then any
    compiler error would take a very long time for the compiler to exit. The cause
    of the problem here was somewhat deep:
    
    * For all compiler errors, the compiler will `panic!` with a known value. This
      tears down the main compiler thread and allows cleaning up all the various
      resources. By default, however, this panic output is suppressed for "normal"
      compiler errors.
    * When `RUST_BACKTRACE=1` was set this caused every compiler error to generate a
      backtrace.
    * The libbacktrace library hits a pathological case where it spends a very long
      time in its custom allocation function, `backtrace_alloc`, because the
      compiler has so much debugging information. More information about this can be
      found in #29293 with a summary at the end of #37477.
    
    To solve this problem this commit simply removes debuginfo from the compiler but
    not from the standard library. This should allow us to keep #36452 closed while
    also closing #37477. I've measured the difference to be orders of magnitude
    faster than it was before, so we should see a much quicker time-to-exit after a
    compile error when `RUST_BACKTRACE=1` is set.
    
    Closes #37477
    Closes #37571
    alexcrichton committed Jan 11, 2017
  8. Auto merge of #38960 - arielb1:blake-endian, r=michaelwoerister

    Use little-endian encoding for Blake2 hashing on all architectures
    
    Like many hash functions, the blake2 hash is mathematically defined on
    a sequence of 64-bit words. As Rust's hash interface operates on
    sequences of octets, some encoding must be used to bridge that
    difference.
    
    The Blake2 RFC (RFC 7693) specifies that:
    ```
       Byte (octet) streams are interpreted as words in little-endian order,
       with the least-significant byte first.
    ```
    
    So use that encoding consistently.
    
    Fixes #38891.
    
    Beta-nominating since this is a regression since 1.15.
    
    r? @michaelwoerister
    bors committed Jan 11, 2017
Commits on Jan 10, 2017
  1. Auto merge of #38580 - shepmaster:result-sum, r=alexcrichton

    Implement `iter::Sum` and `iter::Product` for `Result`
    
    This introduces a private iterator adapter `ResultShunt`, which allows
    treating an iterator of `Result<T, E>` as an iterator of `T`.
    bors committed Jan 10, 2017
  2. Auto merge of #38843 - Manishearth:proposed, r=GuillaumeGomez

    Improved rustdoc rendering for unstable features
    
    This replaces "unstable" with "this is an experimental API", and uses a `<details>` tag to expand to the reason.
    
    The `<details>` tag renders as a regular div (with the details show) on browsers which don't support it, On browsers which do support it, it shows only the summary line with an expandy-arrow next to it, and on clicking it the details will turn up below it.
    
    This is somewhat a strawman proposal. The main issue is that we need to improve our messaging around unstable APIs. Since they turn up in the docs, we should be clearer that they are experimental (and perhaps add something about nightly-only). I'm making this PR to kickstart discussion on this.
    
    Example rendering: http://manishearth.github.io/rust-internals-docs/std/io/trait.Read.html#method.chars
    
    <img width="375" alt="screen shot 2017-01-04 at 10 15 37 pm" src="https://cloud.githubusercontent.com/assets/1617736/21670712/5a96c7de-d2cb-11e6-86a6-87f70818d634.png">
    
    expands to
    
    <img width="799" alt="screen shot 2017-01-04 at 10 15 43 pm" src="https://cloud.githubusercontent.com/assets/1617736/21670714/5db88bb4-d2cb-11e6-8fcc-5cf11d198b75.png">
    
    cc @steveklabnik @jdub
    bors committed Jan 10, 2017
  3. Implement `iter::Sum` and `iter::Product` for `Result`

    This introduces a private iterator adapter `ResultShunt`, which allows
    treating an iterator of `Result<T, E>` as an iterator of `T`.
    shepmaster committed Dec 23, 2016
  4. Use little-endian encoding for Blake2 hashing on all architectures

    Like many hash functions, the blake2 hash is mathematically defined on
    a sequence of 64-bit words. As Rust's hash interface operates on
    sequences of octets, some encoding must be used to bridge that
    difference.
    
    The Blake2 RFC (RFC 7693) specifies that:
       Byte (octet) streams are interpreted as words in little-endian order,
       with the least-significant byte first.
    
    So use that encoding consistently.
    
    Fixes #38891.
    arielb1 committed Jan 10, 2017